@wordpress/block-editor
Version:
50 lines (45 loc) • 1.4 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import { createElement } from "@wordpress/element";
/**
* WordPress dependencies
*/
import { __experimentalUnitControl as BaseUnitControl } from '@wordpress/components';
/**
* Internal dependencies
*/
import useEditorFeature from '../use-editor-feature';
export default function UnitControl({
units: unitsProp,
...props
}) {
const units = useCustomUnits(unitsProp);
return createElement(BaseUnitControl, _extends({
units: units
}, props));
}
/**
* Filters available units based on values defined by settings.
*
* @param {Array} settings Collection of preferred units.
* @param {Array} units Collection of available units.
*
* @return {Array} Filtered units based on settings.
*/
function filterUnitsWithSettings(settings = [], units = []) {
return units.filter(unit => {
return settings.includes(unit.value);
});
}
/**
* Custom hook to retrieve and consolidate units setting from add_theme_support().
*
* @param {Array} units Collection of available units.
*
* @return {Array} Filtered units based on settings.
*/
export function useCustomUnits(units) {
const availableUnits = useEditorFeature('spacing.units');
const usedUnits = filterUnitsWithSettings(!availableUnits ? [] : availableUnits, units);
return usedUnits.length === 0 ? false : usedUnits;
}
//# sourceMappingURL=index.js.map