UNPKG

@wordpress/block-editor

Version:
90 lines (85 loc) 2.67 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getActiveStyle = getActiveStyle; exports.getDefaultStyle = getDefaultStyle; exports.getRenderedStyles = getRenderedStyles; exports.replaceActiveStyle = replaceActiveStyle; var _tokenList = _interopRequireDefault(require("@wordpress/token-list")); var _i18n = require("@wordpress/i18n"); /** * WordPress dependencies */ /** * Returns the active style from the given className. * * @param {Array} styles Block styles. * @param {string} className Class name * * @return {?Object} The active style. */ function getActiveStyle(styles, className) { for (const style of new _tokenList.default(className).values()) { if (style.indexOf('is-style-') === -1) { continue; } const potentialStyleName = style.substring(9); const activeStyle = styles?.find(({ name }) => name === potentialStyleName); if (activeStyle) { return activeStyle; } } return getDefaultStyle(styles); } /** * Replaces the active style in the block's className. * * @param {string} className Class name. * @param {?Object} activeStyle The replaced style. * @param {Object} newStyle The replacing style. * * @return {string} The updated className. */ function replaceActiveStyle(className, activeStyle, newStyle) { const list = new _tokenList.default(className); if (activeStyle) { list.remove('is-style-' + activeStyle.name); } list.add('is-style-' + newStyle.name); return list.value; } /** * Returns a collection of styles that can be represented on the frontend. * The function checks a style collection for a default style. If none is found, it adds one to * act as a fallback for when there is no active style applied to a block. The default item also serves * as a switch on the frontend to deactivate non-default styles. * * @param {Array} styles Block styles. * * @return {Array<Object?>} The style collection. */ function getRenderedStyles(styles) { if (!styles || styles.length === 0) { return []; } return getDefaultStyle(styles) ? styles : [{ name: 'default', label: (0, _i18n._x)('Default', 'block style'), isDefault: true }, ...styles]; } /** * Returns a style object from a collection of styles where that style object is the default block style. * * @param {Array} styles Block styles. * * @return {?Object} The default style object, if found. */ function getDefaultStyle(styles) { return styles?.find(style => style.isDefault); } //# sourceMappingURL=utils.js.map