UNPKG

@wordpress/block-editor

Version:
128 lines (126 loc) 4.56 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // packages/block-editor/src/components/gradients/use-gradient.js var use_gradient_exports = {}; __export(use_gradient_exports, { __experimentalGetGradientClass: () => __experimentalGetGradientClass, __experimentalGetGradientObjectByGradientValue: () => __experimentalGetGradientObjectByGradientValue, __experimentalUseGradient: () => __experimentalUseGradient, getGradientSlugByValue: () => getGradientSlugByValue, getGradientValueBySlug: () => getGradientValueBySlug }); module.exports = __toCommonJS(use_gradient_exports); var import_element = require("@wordpress/element"); var import_data = require("@wordpress/data"); var import_block_edit = require("../block-edit"); var import_use_settings = require("../use-settings"); var import_store = require("../../store"); function __experimentalGetGradientClass(gradientSlug) { if (!gradientSlug) { return void 0; } return `has-${gradientSlug}-gradient-background`; } function getGradientValueBySlug(gradients, slug) { const gradient = gradients?.find((g) => g.slug === slug); return gradient && gradient.gradient; } function __experimentalGetGradientObjectByGradientValue(gradients, value) { const gradient = gradients?.find((g) => g.gradient === value); return gradient; } function getGradientSlugByValue(gradients, value) { const gradient = __experimentalGetGradientObjectByGradientValue( gradients, value ); return gradient && gradient.slug; } function __experimentalUseGradient({ gradientAttribute = "gradient", customGradientAttribute = "customGradient" } = {}) { const { clientId } = (0, import_block_edit.useBlockEditContext)(); const [ userGradientPalette, themeGradientPalette, defaultGradientPalette ] = (0, import_use_settings.useSettings)( "color.gradients.custom", "color.gradients.theme", "color.gradients.default" ); const allGradients = (0, import_element.useMemo)( () => [ ...userGradientPalette || [], ...themeGradientPalette || [], ...defaultGradientPalette || [] ], [userGradientPalette, themeGradientPalette, defaultGradientPalette] ); const { gradient, customGradient } = (0, import_data.useSelect)( (select) => { const { getBlockAttributes } = select(import_store.store); const attributes = getBlockAttributes(clientId) || {}; return { customGradient: attributes[customGradientAttribute], gradient: attributes[gradientAttribute] }; }, [clientId, gradientAttribute, customGradientAttribute] ); const { updateBlockAttributes } = (0, import_data.useDispatch)(import_store.store); const setGradient = (0, import_element.useCallback)( (newGradientValue) => { const slug = getGradientSlugByValue( allGradients, newGradientValue ); if (slug) { updateBlockAttributes(clientId, { [gradientAttribute]: slug, [customGradientAttribute]: void 0 }); return; } updateBlockAttributes(clientId, { [gradientAttribute]: void 0, [customGradientAttribute]: newGradientValue }); }, [allGradients, clientId, updateBlockAttributes] ); const gradientClass = __experimentalGetGradientClass(gradient); let gradientValue; if (gradient) { gradientValue = getGradientValueBySlug(allGradients, gradient); } else { gradientValue = customGradient; } return { gradientClass, gradientValue, setGradient }; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { __experimentalGetGradientClass, __experimentalGetGradientObjectByGradientValue, __experimentalUseGradient, getGradientSlugByValue, getGradientValueBySlug }); //# sourceMappingURL=use-gradient.js.map