UNPKG

@wordpress/block-editor

Version:
163 lines (161 loc) 6.11 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; 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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // packages/block-editor/src/components/font-appearance-control/index.js var font_appearance_control_exports = {}; __export(font_appearance_control_exports, { default: () => FontAppearanceControl }); module.exports = __toCommonJS(font_appearance_control_exports); var import_components = require("@wordpress/components"); var import_deprecated = __toESM(require("@wordpress/deprecated")); var import_element = require("@wordpress/element"); var import_i18n = require("@wordpress/i18n"); var import_get_font_styles_and_weights = require("../../utils/get-font-styles-and-weights"); var import_jsx_runtime = require("react/jsx-runtime"); var getFontAppearanceLabel = (hasFontStyles, hasFontWeights) => { if (!hasFontStyles) { return (0, import_i18n.__)("Font weight"); } if (!hasFontWeights) { return (0, import_i18n.__)("Font style"); } return (0, import_i18n.__)("Appearance"); }; function FontAppearanceControl(props) { const { /** Start opting into the larger default height that will become the default size in a future version. */ __next40pxDefaultSize = false, onChange, hasFontStyles = true, hasFontWeights = true, fontFamilyFaces, value: { fontStyle, fontWeight }, ...otherProps } = props; const hasStylesOrWeights = hasFontStyles || hasFontWeights; const label = getFontAppearanceLabel(hasFontStyles, hasFontWeights); const defaultOption = { key: "default", name: (0, import_i18n.__)("Default"), style: { fontStyle: void 0, fontWeight: void 0 } }; const { fontStyles, fontWeights, combinedStyleAndWeightOptions } = (0, import_get_font_styles_and_weights.getFontStylesAndWeights)(fontFamilyFaces); const combineOptions = () => { const combinedOptions = [defaultOption]; if (combinedStyleAndWeightOptions) { combinedOptions.push(...combinedStyleAndWeightOptions); } return combinedOptions; }; const styleOptions = () => { const combinedOptions = [defaultOption]; fontStyles.forEach(({ name, value }) => { combinedOptions.push({ key: value, name, style: { fontStyle: value, fontWeight: void 0 } }); }); return combinedOptions; }; const weightOptions = () => { const combinedOptions = [defaultOption]; fontWeights.forEach(({ name, value }) => { combinedOptions.push({ key: value, name, style: { fontStyle: void 0, fontWeight: value } }); }); return combinedOptions; }; const selectOptions = (0, import_element.useMemo)(() => { if (hasFontStyles && hasFontWeights) { return combineOptions(); } return hasFontStyles ? styleOptions() : weightOptions(); }, [ props.options, fontStyles, fontWeights, combinedStyleAndWeightOptions ]); const currentSelection = selectOptions.find( (option) => option.style.fontStyle === fontStyle && option.style.fontWeight === fontWeight ) || selectOptions[0]; const getDescribedBy = () => { if (!currentSelection) { return (0, import_i18n.__)("No selected font appearance"); } if (!hasFontStyles) { return (0, import_i18n.sprintf)( // translators: %s: Currently selected font weight. (0, import_i18n.__)("Currently selected font weight: %s"), currentSelection.name ); } if (!hasFontWeights) { return (0, import_i18n.sprintf)( // translators: %s: Currently selected font style. (0, import_i18n.__)("Currently selected font style: %s"), currentSelection.name ); } return (0, import_i18n.sprintf)( // translators: %s: Currently selected font appearance. (0, import_i18n.__)("Currently selected font appearance: %s"), currentSelection.name ); }; if (!__next40pxDefaultSize && (otherProps.size === void 0 || otherProps.size === "default")) { (0, import_deprecated.default)( `36px default size for wp.blockEditor.__experimentalFontAppearanceControl`, { since: "6.8", version: "7.1", hint: "Set the `__next40pxDefaultSize` prop to true to start opting into the new default size, which will become the default in a future version." } ); } return hasStylesOrWeights && /* @__PURE__ */ (0, import_jsx_runtime.jsx)( import_components.CustomSelectControl, { ...otherProps, className: "components-font-appearance-control", __next40pxDefaultSize, __shouldNotWarnDeprecated36pxSize: true, label, describedBy: getDescribedBy(), options: selectOptions, value: currentSelection, onChange: ({ selectedItem }) => onChange(selectedItem.style) } ); } //# sourceMappingURL=index.js.map