UNPKG

@wordpress/block-editor

Version:
77 lines (64 loc) 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = DefaultStylePicker; var _element = require("@wordpress/element"); var _blocks = require("@wordpress/blocks"); var _i18n = require("@wordpress/i18n"); var _components = require("@wordpress/components"); var _data = require("@wordpress/data"); var _store = require("../../store"); var _utils = require("../block-styles/utils"); /** * WordPress dependencies */ /** * Internal dependencies */ function DefaultStylePicker({ blockName }) { const { preferredStyle, onUpdatePreferredStyleVariations, styles } = (0, _data.useSelect)(select => { var _preferredStyleVariat; const settings = select(_store.store).getSettings(); const preferredStyleVariations = settings.__experimentalPreferredStyleVariations; return { preferredStyle: preferredStyleVariations?.value?.[blockName], onUpdatePreferredStyleVariations: (_preferredStyleVariat = preferredStyleVariations?.onChange) !== null && _preferredStyleVariat !== void 0 ? _preferredStyleVariat : null, styles: select(_blocks.store).getBlockStyles(blockName) }; }, [blockName]); const selectOptions = (0, _element.useMemo)(() => [{ label: (0, _i18n.__)('Not set'), value: '' }, ...styles.map(({ label, name }) => ({ label, value: name }))], [styles]); const defaultStyleName = (0, _element.useMemo)(() => (0, _utils.getDefaultStyle)(styles)?.name, [styles]); const selectOnChange = (0, _element.useCallback)(blockStyle => { onUpdatePreferredStyleVariations(blockName, blockStyle); }, [blockName, onUpdatePreferredStyleVariations]); // Until the functionality is migrated to global styles, // only show the default style picker if a non-default style has already been selected. if (!preferredStyle || preferredStyle === defaultStyleName) { return null; } return onUpdatePreferredStyleVariations && (0, _element.createElement)("div", { className: "default-style-picker__default-switcher" }, (0, _element.createElement)(_components.SelectControl, { __nextHasNoMarginBottom: true, options: selectOptions, value: preferredStyle || '', label: (0, _i18n.__)('Default Style'), onChange: selectOnChange })); } //# sourceMappingURL=index.js.map