Security upgrades
This commit is contained in:
139
node_modules/@material-ui/system/esm/spacing.js
generated
vendored
Normal file
139
node_modules/@material-ui/system/esm/spacing.js
generated
vendored
Normal file
@@ -0,0 +1,139 @@
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import responsivePropType from './responsivePropType';
|
||||
import { handleBreakpoints } from './breakpoints';
|
||||
import merge from './merge';
|
||||
import memoize from './memoize';
|
||||
var properties = {
|
||||
m: 'margin',
|
||||
p: 'padding'
|
||||
};
|
||||
var directions = {
|
||||
t: 'Top',
|
||||
r: 'Right',
|
||||
b: 'Bottom',
|
||||
l: 'Left',
|
||||
x: ['Left', 'Right'],
|
||||
y: ['Top', 'Bottom']
|
||||
};
|
||||
var aliases = {
|
||||
marginX: 'mx',
|
||||
marginY: 'my',
|
||||
paddingX: 'px',
|
||||
paddingY: 'py'
|
||||
}; // memoize() impact:
|
||||
// From 300,000 ops/sec
|
||||
// To 350,000 ops/sec
|
||||
|
||||
var getCssProperties = memoize(function (prop) {
|
||||
// It's not a shorthand notation.
|
||||
if (prop.length > 2) {
|
||||
if (aliases[prop]) {
|
||||
prop = aliases[prop];
|
||||
} else {
|
||||
return [prop];
|
||||
}
|
||||
}
|
||||
|
||||
var _prop$split = prop.split(''),
|
||||
_prop$split2 = _slicedToArray(_prop$split, 2),
|
||||
a = _prop$split2[0],
|
||||
b = _prop$split2[1];
|
||||
|
||||
var property = properties[a];
|
||||
var direction = directions[b] || '';
|
||||
return Array.isArray(direction) ? direction.map(function (dir) {
|
||||
return property + dir;
|
||||
}) : [property + direction];
|
||||
});
|
||||
var spacingKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY'];
|
||||
export function createUnarySpacing(theme) {
|
||||
var themeSpacing = theme.spacing || 8;
|
||||
|
||||
if (typeof themeSpacing === 'number') {
|
||||
return function (abs) {
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
if (typeof abs !== 'number') {
|
||||
console.error("Material-UI: Expected spacing argument to be a number, got ".concat(abs, "."));
|
||||
}
|
||||
}
|
||||
|
||||
return themeSpacing * abs;
|
||||
};
|
||||
}
|
||||
|
||||
if (Array.isArray(themeSpacing)) {
|
||||
return function (abs) {
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
if (abs > themeSpacing.length - 1) {
|
||||
console.error(["Material-UI: The value provided (".concat(abs, ") overflows."), "The supported values are: ".concat(JSON.stringify(themeSpacing), "."), "".concat(abs, " > ").concat(themeSpacing.length - 1, ", you need to add the missing values.")].join('\n'));
|
||||
}
|
||||
}
|
||||
|
||||
return themeSpacing[abs];
|
||||
};
|
||||
}
|
||||
|
||||
if (typeof themeSpacing === 'function') {
|
||||
return themeSpacing;
|
||||
}
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
console.error(["Material-UI: The `theme.spacing` value (".concat(themeSpacing, ") is invalid."), 'It should be a number, an array or a function.'].join('\n'));
|
||||
}
|
||||
|
||||
return function () {
|
||||
return undefined;
|
||||
};
|
||||
}
|
||||
|
||||
function getValue(transformer, propValue) {
|
||||
if (typeof propValue === 'string') {
|
||||
return propValue;
|
||||
}
|
||||
|
||||
var abs = Math.abs(propValue);
|
||||
var transformed = transformer(abs);
|
||||
|
||||
if (propValue >= 0) {
|
||||
return transformed;
|
||||
}
|
||||
|
||||
if (typeof transformed === 'number') {
|
||||
return -transformed;
|
||||
}
|
||||
|
||||
return "-".concat(transformed);
|
||||
}
|
||||
|
||||
function getStyleFromPropValue(cssProperties, transformer) {
|
||||
return function (propValue) {
|
||||
return cssProperties.reduce(function (acc, cssProperty) {
|
||||
acc[cssProperty] = getValue(transformer, propValue);
|
||||
return acc;
|
||||
}, {});
|
||||
};
|
||||
}
|
||||
|
||||
function spacing(props) {
|
||||
var theme = props.theme;
|
||||
var transformer = createUnarySpacing(theme);
|
||||
return Object.keys(props).map(function (prop) {
|
||||
// Using a hash computation over an array iteration could be faster, but with only 28 items,
|
||||
// it's doesn't worth the bundle size.
|
||||
if (spacingKeys.indexOf(prop) === -1) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var cssProperties = getCssProperties(prop);
|
||||
var styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);
|
||||
var propValue = props[prop];
|
||||
return handleBreakpoints(props, propValue, styleFromPropValue);
|
||||
}).reduce(merge, {});
|
||||
}
|
||||
|
||||
spacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce(function (obj, key) {
|
||||
obj[key] = responsivePropType;
|
||||
return obj;
|
||||
}, {}) : {};
|
||||
spacing.filterProps = spacingKeys;
|
||||
export default spacing;
|
||||
Reference in New Issue
Block a user