UNPKG

@wordpress/block-editor

Version:
41 lines (39 loc) 1.57 kB
/** * WordPress dependencies */ import { useMemo } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; /** * Internal dependencies */ import { useSettings } from '../../use-settings'; import { RANGE_CONTROL_MAX_SIZE } from '../utils'; const EMPTY_ARRAY = []; const compare = new Intl.Collator('und', { numeric: true }).compare; export default function useSpacingSizes() { const [customSpacingSizes, themeSpacingSizes, defaultSpacingSizes, defaultSpacingSizesEnabled] = useSettings('spacing.spacingSizes.custom', 'spacing.spacingSizes.theme', 'spacing.spacingSizes.default', 'spacing.defaultSpacingSizes'); const customSizes = customSpacingSizes !== null && customSpacingSizes !== void 0 ? customSpacingSizes : EMPTY_ARRAY; const themeSizes = themeSpacingSizes !== null && themeSpacingSizes !== void 0 ? themeSpacingSizes : EMPTY_ARRAY; const defaultSizes = defaultSpacingSizes && defaultSpacingSizesEnabled !== false ? defaultSpacingSizes : EMPTY_ARRAY; return useMemo(() => { const sizes = [{ name: __('None'), slug: '0', size: 0 }, ...customSizes, ...themeSizes, ...defaultSizes]; // Using numeric slugs opts-in to sorting by slug. if (sizes.every(({ slug }) => /^[0-9]/.test(slug))) { sizes.sort((a, b) => compare(a.slug, b.slug)); } return sizes.length > RANGE_CONTROL_MAX_SIZE ? [{ name: __('Default'), slug: 'default', size: undefined }, ...sizes] : sizes; }, [customSizes, themeSizes, defaultSizes]); } //# sourceMappingURL=use-spacing-sizes.js.map