@wordpress/components
Version:
UI components for WordPress.
84 lines (69 loc) • 3.49 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.withGlobalStyles = exports.useGlobalStyles = exports.getMergedGlobalStyles = exports.default = void 0;
var _element = require("@wordpress/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _utils = require("./utils");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const GlobalStylesContext = (0, _element.createContext)({
style: {}
});
GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES = _utils.BLOCK_STYLE_ATTRIBUTES;
const getMergedGlobalStyles = (baseGlobalStyles, globalStyle, wrapperPropsStyle, blockAttributes, defaultColors, blockName, fontSizes) => {
var _baseGlobalStyles$ele, _baseGlobalStyles$blo;
// Current support for general styles and blocks.
const baseGlobalColors = {
baseColors: {
color: baseGlobalStyles === null || baseGlobalStyles === void 0 ? void 0 : baseGlobalStyles.color,
typography: baseGlobalStyles === null || baseGlobalStyles === void 0 ? void 0 : baseGlobalStyles.typography,
elements: {
link: baseGlobalStyles === null || baseGlobalStyles === void 0 ? void 0 : (_baseGlobalStyles$ele = baseGlobalStyles.elements) === null || _baseGlobalStyles$ele === void 0 ? void 0 : _baseGlobalStyles$ele.link
},
blocks: {
'core/button': baseGlobalStyles === null || baseGlobalStyles === void 0 ? void 0 : (_baseGlobalStyles$blo = baseGlobalStyles.blocks) === null || _baseGlobalStyles$blo === void 0 ? void 0 : _baseGlobalStyles$blo['core/button']
}
}
};
const blockStyleAttributes = Object.fromEntries(Object.entries(blockAttributes !== null && blockAttributes !== void 0 ? blockAttributes : {}).filter(_ref => {
let [key] = _ref;
return _utils.BLOCK_STYLE_ATTRIBUTES.includes(key);
})); // This prevents certain wrapper styles from being applied to blocks that
// don't support them yet.
const wrapperPropsStyleFiltered = Object.fromEntries(Object.entries(wrapperPropsStyle !== null && wrapperPropsStyle !== void 0 ? wrapperPropsStyle : {}).filter(_ref2 => {
let [key] = _ref2;
return _utils.BLOCK_STYLE_ATTRIBUTES.includes(key);
}));
const mergedStyle = { ...baseGlobalColors,
...globalStyle,
...wrapperPropsStyleFiltered
};
const blockColors = (0, _utils.getBlockColors)(blockStyleAttributes, defaultColors, blockName, baseGlobalStyles);
const blockPaddings = (0, _utils.getBlockPaddings)(mergedStyle, wrapperPropsStyle, blockStyleAttributes, blockColors);
const blockTypography = (0, _utils.getBlockTypography)(blockStyleAttributes, fontSizes, blockName, baseGlobalStyles);
return { ...mergedStyle,
...blockPaddings,
...blockColors,
...blockTypography
};
};
exports.getMergedGlobalStyles = getMergedGlobalStyles;
const useGlobalStyles = () => {
const globalStyles = (0, _element.useContext)(GlobalStylesContext);
return globalStyles;
};
exports.useGlobalStyles = useGlobalStyles;
const withGlobalStyles = WrappedComponent => props => (0, _element.createElement)(GlobalStylesContext.Consumer, null, globalStyles => (0, _element.createElement)(WrappedComponent, (0, _extends2.default)({}, props, {
globalStyles: globalStyles
})));
exports.withGlobalStyles = withGlobalStyles;
var _default = GlobalStylesContext;
exports.default = _default;
//# sourceMappingURL=index.native.js.map