UNPKG

@wordpress/block-editor

Version:
110 lines (87 loc) 2.88 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.FontFamilyEdit = FontFamilyEdit; exports.useIsFontFamilyDisabled = useIsFontFamilyDisabled; exports.FONT_FAMILY_SUPPORT_KEY = void 0; var _element = require("@wordpress/element"); var _lodash = require("lodash"); var _blocks = require("@wordpress/blocks"); var _utils = require("./utils"); var _useEditorFeature = _interopRequireDefault(require("../components/use-editor-feature")); var _fontFamily = _interopRequireDefault(require("../components/font-family")); /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const FONT_FAMILY_SUPPORT_KEY = '__experimentalFontFamily'; exports.FONT_FAMILY_SUPPORT_KEY = FONT_FAMILY_SUPPORT_KEY; const getFontFamilyFromAttributeValue = (fontFamilies, value) => { const attributeParsed = /var:preset\|font-family\|(.+)/.exec(value); if (attributeParsed && attributeParsed[1]) { const fontFamilyObject = (0, _lodash.find)(fontFamilies, ({ slug }) => { return slug === attributeParsed[1]; }); if (fontFamilyObject) { return fontFamilyObject.fontFamily; } } return value; }; function FontFamilyEdit({ name, setAttributes, attributes: { style = {} } }) { var _style$typography; const fontFamilies = (0, _useEditorFeature.default)('typography.fontFamilies'); const isDisable = useIsFontFamilyDisabled({ name }); if (isDisable) { return null; } const value = getFontFamilyFromAttributeValue(fontFamilies, (_style$typography = style.typography) === null || _style$typography === void 0 ? void 0 : _style$typography.fontFamily); function onChange(newValue) { const predefinedFontFamily = (0, _lodash.find)(fontFamilies, ({ fontFamily }) => fontFamily === newValue); setAttributes({ style: (0, _utils.cleanEmptyObject)({ ...style, typography: { ...(style.typography || {}), fontFamily: predefinedFontFamily ? `var:preset|font-family|${predefinedFontFamily.slug}` : newValue || undefined } }) }); } return (0, _element.createElement)(_fontFamily.default, { className: "block-editor-hooks-font-family-control", fontFamilies: fontFamilies, value: value, onChange: onChange }); } /** * Custom hook that checks if font-family functionality is disabled. * * @param {string} name The name of the block. * @return {boolean} Whether setting is disabled. */ function useIsFontFamilyDisabled({ name }) { const fontFamilies = (0, _useEditorFeature.default)('typography.fontFamilies'); return !fontFamilies || fontFamilies.length === 0 || !(0, _blocks.hasBlockSupport)(name, FONT_FAMILY_SUPPORT_KEY); } //# sourceMappingURL=font-family.js.map