UNPKG

@wordpress/components

Version:
263 lines (262 loc) 5.34 kB
import { __ } from "@wordpress/i18n"; import deprecated from "@wordpress/deprecated"; const CUSTOM_VALUE_SETTINGS = { px: { max: 300, step: 1 }, "%": { max: 100, step: 1 }, vw: { max: 100, step: 1 }, vh: { max: 100, step: 1 }, em: { max: 10, step: 0.1 }, rm: { max: 10, step: 0.1 }, svw: { max: 100, step: 1 }, lvw: { max: 100, step: 1 }, dvw: { max: 100, step: 1 }, svh: { max: 100, step: 1 }, lvh: { max: 100, step: 1 }, dvh: { max: 100, step: 1 }, vi: { max: 100, step: 1 }, svi: { max: 100, step: 1 }, lvi: { max: 100, step: 1 }, dvi: { max: 100, step: 1 }, vb: { max: 100, step: 1 }, svb: { max: 100, step: 1 }, lvb: { max: 100, step: 1 }, dvb: { max: 100, step: 1 }, vmin: { max: 100, step: 1 }, svmin: { max: 100, step: 1 }, lvmin: { max: 100, step: 1 }, dvmin: { max: 100, step: 1 }, vmax: { max: 100, step: 1 }, svmax: { max: 100, step: 1 }, lvmax: { max: 100, step: 1 }, dvmax: { max: 100, step: 1 } }; const LABELS = { all: __("All sides"), top: __("Top side"), bottom: __("Bottom side"), left: __("Left side"), right: __("Right side"), vertical: __("Top and bottom sides"), horizontal: __("Left and right sides") }; const DEFAULT_VALUES = { top: void 0, right: void 0, bottom: void 0, left: void 0 }; const ALL_SIDES = ["top", "right", "bottom", "left"]; function mode(arr) { return arr.sort((a, b) => arr.filter((v) => v === a).length - arr.filter((v) => v === b).length).pop(); } function getMergedValue(values = {}, availableSides = ALL_SIDES) { const sides = normalizeSides(availableSides); if (sides.every((side) => values[side] === values[sides[0]])) { return values[sides[0]]; } return void 0; } function isValueMixed(values = {}, availableSides = ALL_SIDES) { const sides = normalizeSides(availableSides); return sides.some((side) => values[side] !== values[sides[0]]); } function getAllUnitFallback(selectedUnits) { if (!selectedUnits || typeof selectedUnits !== "object") { return void 0; } const filteredUnits = Object.values(selectedUnits).filter(Boolean); return mode(filteredUnits); } function isValuesDefined(values) { return values && Object.values(values).filter( // Switching units when input is empty causes values only // containing units. This gives false positive on mixed values // unless filtered. (value) => !!value && /\d/.test(value) ).length > 0; } function getInitialSide(isLinked, splitOnAxis) { let initialSide = "all"; if (!isLinked) { initialSide = splitOnAxis ? "vertical" : "top"; } return initialSide; } function normalizeSides(sides) { const filteredSides = []; if (!sides?.length) { return ALL_SIDES; } if (sides.includes("vertical")) { filteredSides.push(...["top", "bottom"]); } else if (sides.includes("horizontal")) { filteredSides.push(...["left", "right"]); } else { const newSides = ALL_SIDES.filter((side) => sides.includes(side)); filteredSides.push(...newSides); } return filteredSides; } function applyValueToSides(currentValues, newValue, sides) { deprecated("applyValueToSides", { since: "6.8", version: "7.0" }); const newValues = { ...currentValues }; if (sides?.length) { sides.forEach((side) => { if (side === "vertical") { newValues.top = newValue; newValues.bottom = newValue; } else if (side === "horizontal") { newValues.left = newValue; newValues.right = newValue; } else { newValues[side] = newValue; } }); } else { ALL_SIDES.forEach((side) => newValues[side] = newValue); } return newValues; } function getAllowedSides(sides) { const allowedSides = new Set(!sides ? ALL_SIDES : []); sides?.forEach((allowedSide) => { if (allowedSide === "vertical") { allowedSides.add("top"); allowedSides.add("bottom"); } else if (allowedSide === "horizontal") { allowedSides.add("right"); allowedSides.add("left"); } else { allowedSides.add(allowedSide); } }); return allowedSides; } function isValuePreset(value, presetKey) { return value.startsWith(`var:preset|${presetKey}|`); } function getPresetIndexFromValue(value, presetKey, presets) { if (!isValuePreset(value, presetKey)) { return void 0; } const match = value.match(new RegExp(`^var:preset\\|${presetKey}\\|(.+)$`)); if (!match) { return void 0; } const slug = match[1]; const index = presets.findIndex((preset) => { return preset.slug === slug; }); return index !== -1 ? index : void 0; } function getPresetValueFromIndex(index, presetKey, presets) { const preset = presets[index]; return `var:preset|${presetKey}|${preset.slug}`; } export { ALL_SIDES, CUSTOM_VALUE_SETTINGS, DEFAULT_VALUES, LABELS, applyValueToSides, getAllUnitFallback, getAllowedSides, getInitialSide, getMergedValue, getPresetIndexFromValue, getPresetValueFromIndex, isValueMixed, isValuePreset, isValuesDefined, normalizeSides }; //# sourceMappingURL=utils.js.map