UNPKG

@wordpress/style-engine

Version:
85 lines (78 loc) 3.06 kB
/** * Internal dependencies */ import { generateRule, generateBoxRules, upperFirst } from '../utils'; const color = { name: 'color', generate: function (style, options) { let path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ['border', 'color']; let ruleKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'borderColor'; return generateRule(style, options, path, ruleKey); } }; const radius = { name: 'radius', generate: (style, options) => { return generateBoxRules(style, options, ['border', 'radius'], { default: 'borderRadius', individual: 'border%sRadius' }, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']); } }; const borderStyle = { name: 'style', generate: function (style, options) { let path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ['border', 'style']; let ruleKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'borderStyle'; return generateRule(style, options, path, ruleKey); } }; const width = { name: 'width', generate: function (style, options) { let path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ['border', 'width']; let ruleKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'borderWidth'; return generateRule(style, options, path, ruleKey); } }; const borderDefinitionsWithIndividualStyles = [color, borderStyle, width]; /** * Returns a curried generator function with the individual border property ('top' | 'right' | 'bottom' | 'left') baked in. * * @param individualProperty Individual border property ('top' | 'right' | 'bottom' | 'left'). * * @return StyleDefinition[ 'generate' ] */ const createBorderGenerateFunction = individualProperty => (style, options) => { var _style$border; const styleValue = style === null || style === void 0 ? void 0 : (_style$border = style.border) === null || _style$border === void 0 ? void 0 : _style$border[individualProperty]; if (!styleValue) { return []; } return borderDefinitionsWithIndividualStyles.reduce((acc, borderDefinition) => { const key = borderDefinition.name; if (styleValue.hasOwnProperty(key) && typeof borderDefinition.generate === 'function') { const ruleKey = `border${upperFirst(individualProperty)}${upperFirst(key)}`; acc.push(...borderDefinition.generate(style, options, ['border', individualProperty, key], ruleKey)); } return acc; }, []); }; const borderTop = { name: 'borderTop', generate: createBorderGenerateFunction('top') }; const borderRight = { name: 'borderRight', generate: createBorderGenerateFunction('right') }; const borderBottom = { name: 'borderBottom', generate: createBorderGenerateFunction('bottom') }; const borderLeft = { name: 'borderLeft', generate: createBorderGenerateFunction('left') }; export default [...borderDefinitionsWithIndividualStyles, radius, borderTop, borderRight, borderBottom, borderLeft]; //# sourceMappingURL=index.js.map