@wordpress/block-editor
Version:
64 lines (52 loc) • 1.69 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = UnitControl;
exports.useCustomUnits = useCustomUnits;
var _element = require("@wordpress/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _components = require("@wordpress/components");
var _useEditorFeature = _interopRequireDefault(require("../use-editor-feature"));
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function UnitControl({
units: unitsProp,
...props
}) {
const units = useCustomUnits(unitsProp);
return (0, _element.createElement)(_components.__experimentalUnitControl, (0, _extends2.default)({
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.
*/
function useCustomUnits(units) {
const availableUnits = (0, _useEditorFeature.default)('spacing.units');
const usedUnits = filterUnitsWithSettings(!availableUnits ? [] : availableUnits, units);
return usedUnits.length === 0 ? false : usedUnits;
}
//# sourceMappingURL=index.js.map