@wordpress/block-editor 15.1.0 → 15.1.1-next.0f6f9d12c.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/build/components/block-settings-menu/block-settings-dropdown.js +6 -2
  2. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  3. package/build/components/block-toolbar/block-toolbar-menu.native.js +2 -2
  4. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  5. package/build/components/border-radius-control/constants.js +41 -0
  6. package/build/components/border-radius-control/constants.js.map +1 -0
  7. package/build/components/border-radius-control/index.js +49 -58
  8. package/build/components/border-radius-control/index.js.map +1 -1
  9. package/build/components/border-radius-control/linked-button.js +1 -1
  10. package/build/components/border-radius-control/linked-button.js.map +1 -1
  11. package/build/components/border-radius-control/single-input-control.js +204 -0
  12. package/build/components/border-radius-control/single-input-control.js.map +1 -0
  13. package/build/components/border-radius-control/utils.js +161 -4
  14. package/build/components/border-radius-control/utils.js.map +1 -1
  15. package/build/components/global-styles/border-panel.js +12 -1
  16. package/build/components/global-styles/border-panel.js.map +1 -1
  17. package/build/components/global-styles/hooks.js +1 -1
  18. package/build/components/global-styles/hooks.js.map +1 -1
  19. package/build/components/global-styles/utils.js +5 -3
  20. package/build/components/global-styles/utils.js.map +1 -1
  21. package/build/components/rich-text/index.js +9 -4
  22. package/build/components/rich-text/index.js.map +1 -1
  23. package/build/components/rich-text/use-format-types.js +19 -8
  24. package/build/components/rich-text/use-format-types.js.map +1 -1
  25. package/build/hooks/duotone.js +2 -2
  26. package/build/hooks/duotone.js.map +1 -1
  27. package/build/hooks/utils.js +4 -3
  28. package/build/hooks/utils.js.map +1 -1
  29. package/build/private-apis.js +2 -1
  30. package/build/private-apis.js.map +1 -1
  31. package/build/store/private-keys.js +2 -1
  32. package/build/store/private-keys.js.map +1 -1
  33. package/build-module/components/block-settings-menu/block-settings-dropdown.js +6 -2
  34. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  35. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -3
  36. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  37. package/build-module/components/border-radius-control/constants.js +34 -0
  38. package/build-module/components/border-radius-control/constants.js.map +1 -0
  39. package/build-module/components/border-radius-control/index.js +53 -62
  40. package/build-module/components/border-radius-control/index.js.map +1 -1
  41. package/build-module/components/border-radius-control/linked-button.js +1 -1
  42. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  43. package/build-module/components/border-radius-control/single-input-control.js +197 -0
  44. package/build-module/components/border-radius-control/single-input-control.js.map +1 -0
  45. package/build-module/components/border-radius-control/utils.js +154 -4
  46. package/build-module/components/border-radius-control/utils.js.map +1 -1
  47. package/build-module/components/global-styles/border-panel.js +12 -1
  48. package/build-module/components/global-styles/border-panel.js.map +1 -1
  49. package/build-module/components/global-styles/hooks.js +1 -1
  50. package/build-module/components/global-styles/hooks.js.map +1 -1
  51. package/build-module/components/global-styles/utils.js +5 -3
  52. package/build-module/components/global-styles/utils.js.map +1 -1
  53. package/build-module/components/rich-text/index.js +9 -4
  54. package/build-module/components/rich-text/index.js.map +1 -1
  55. package/build-module/components/rich-text/use-format-types.js +19 -8
  56. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  57. package/build-module/hooks/duotone.js +3 -3
  58. package/build-module/hooks/duotone.js.map +1 -1
  59. package/build-module/hooks/utils.js +4 -3
  60. package/build-module/hooks/utils.js.map +1 -1
  61. package/build-module/private-apis.js +3 -2
  62. package/build-module/private-apis.js.map +1 -1
  63. package/build-module/store/private-keys.js +1 -0
  64. package/build-module/store/private-keys.js.map +1 -1
  65. package/build-style/style-rtl.css +16 -18
  66. package/build-style/style.css +16 -18
  67. package/package.json +34 -34
  68. package/src/components/block-settings-menu/block-settings-dropdown.js +22 -14
  69. package/src/components/block-toolbar/block-toolbar-menu.native.js +3 -3
  70. package/src/components/border-radius-control/constants.js +46 -0
  71. package/src/components/border-radius-control/index.js +71 -72
  72. package/src/components/border-radius-control/linked-button.js +1 -1
  73. package/src/components/border-radius-control/single-input-control.js +277 -0
  74. package/src/components/border-radius-control/style.scss +16 -21
  75. package/src/components/border-radius-control/utils.js +178 -5
  76. package/src/components/global-styles/border-panel.js +12 -1
  77. package/src/components/global-styles/hooks.js +1 -0
  78. package/src/components/global-styles/utils.js +6 -1
  79. package/src/components/rich-text/index.js +19 -10
  80. package/src/components/rich-text/use-format-types.js +42 -19
  81. package/src/hooks/duotone.js +11 -3
  82. package/src/hooks/utils.js +4 -0
  83. package/src/private-apis.js +2 -0
  84. package/src/store/private-keys.js +1 -0
  85. package/build/components/border-radius-control/all-input-control.js +0 -65
  86. package/build/components/border-radius-control/all-input-control.js.map +0 -1
  87. package/build/components/border-radius-control/input-controls.js +0 -82
  88. package/build/components/border-radius-control/input-controls.js.map +0 -1
  89. package/build-module/components/border-radius-control/all-input-control.js +0 -58
  90. package/build-module/components/border-radius-control/all-input-control.js.map +0 -1
  91. package/build-module/components/border-radius-control/input-controls.js +0 -75
  92. package/build-module/components/border-radius-control/input-controls.js.map +0 -1
  93. package/src/components/border-radius-control/all-input-control.js +0 -67
  94. package/src/components/border-radius-control/input-controls.js +0 -91
@@ -1 +1 @@
1
- {"version":3,"names":["Button","link","linkOff","__","jsx","_jsx","LinkedButton","isLinked","props","label","className","size","icon","iconSize"],"sources":["@wordpress/block-editor/src/components/border-radius-control/linked-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { link, linkOff } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\nexport default function LinkedButton( { isLinked, ...props } ) {\n\tconst label = isLinked ? __( 'Unlink radii' ) : __( 'Link radii' );\n\n\treturn (\n\t\t<Button\n\t\t\t{ ...props }\n\t\t\tclassName=\"component-border-radius-control__linked-button\"\n\t\t\tsize=\"small\"\n\t\t\ticon={ isLinked ? link : linkOff }\n\t\t\ticonSize={ 24 }\n\t\t\tlabel={ label }\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,IAAI,EAAEC,OAAO,QAAQ,kBAAkB;AAChD,SAASC,EAAE,QAAQ,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAErC,eAAe,SAASC,YAAYA,CAAE;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAG;EAC9D,MAAMC,KAAK,GAAGF,QAAQ,GAAGJ,EAAE,CAAE,cAAe,CAAC,GAAGA,EAAE,CAAE,YAAa,CAAC;EAElE,oBACCE,IAAA,CAACL,MAAM;IAAA,GACDQ,KAAK;IACVE,SAAS,EAAC,gDAAgD;IAC1DC,IAAI,EAAC,OAAO;IACZC,IAAI,EAAGL,QAAQ,GAAGN,IAAI,GAAGC,OAAS;IAClCW,QAAQ,EAAG,EAAI;IACfJ,KAAK,EAAGA;EAAO,CACf,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["Button","link","linkOff","__","jsx","_jsx","LinkedButton","isLinked","props","label","className","size","icon","iconSize"],"sources":["@wordpress/block-editor/src/components/border-radius-control/linked-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { link, linkOff } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\nexport default function LinkedButton( { isLinked, ...props } ) {\n\tconst label = isLinked ? __( 'Unlink radii' ) : __( 'Link radii' );\n\n\treturn (\n\t\t<Button\n\t\t\t{ ...props }\n\t\t\tclassName=\"components-border-radius-control__linked-button\"\n\t\t\tsize=\"small\"\n\t\t\ticon={ isLinked ? link : linkOff }\n\t\t\ticonSize={ 24 }\n\t\t\tlabel={ label }\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,IAAI,EAAEC,OAAO,QAAQ,kBAAkB;AAChD,SAASC,EAAE,QAAQ,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAErC,eAAe,SAASC,YAAYA,CAAE;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAG;EAC9D,MAAMC,KAAK,GAAGF,QAAQ,GAAGJ,EAAE,CAAE,cAAe,CAAC,GAAGA,EAAE,CAAE,YAAa,CAAC;EAElE,oBACCE,IAAA,CAACL,MAAM;IAAA,GACDQ,KAAK;IACVE,SAAS,EAAC,iDAAiD;IAC3DC,IAAI,EAAC,OAAO;IACZC,IAAI,EAAGL,QAAQ,GAAGN,IAAI,GAAGC,OAAS;IAClCW,QAAQ,EAAG,EAAI;IACfJ,KAAK,EAAGA;EAAO,CACf,CAAC;AAEJ","ignoreList":[]}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue, __experimentalUnitControl as UnitControl, __experimentalHStack as HStack, Icon, Tooltip, RangeControl, Button, CustomSelectControl } from '@wordpress/components';
5
+ import { __ } from '@wordpress/i18n';
6
+ import { useState } from '@wordpress/element';
7
+ import { settings } from '@wordpress/icons';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { getAllValue, getCustomValueFromPreset, getPresetValueFromControlValue, getPresetValueFromCustomValue, getSliderValueFromPreset, isValuePreset, convertPresetsToCustomValues } from './utils';
13
+ import { CORNERS, ICONS, MIN_BORDER_RADIUS_VALUE, MAX_BORDER_RADIUS_VALUES, RANGE_CONTROL_MAX_SIZE } from './constants';
14
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
+ export default function SingleInputControl({
16
+ corner,
17
+ onChange,
18
+ selectedUnits,
19
+ setSelectedUnits,
20
+ values: valuesProp,
21
+ units,
22
+ presets
23
+ }) {
24
+ const changeCornerValue = validatedValue => {
25
+ if (corner === 'all') {
26
+ onChange({
27
+ topLeft: validatedValue,
28
+ topRight: validatedValue,
29
+ bottomLeft: validatedValue,
30
+ bottomRight: validatedValue
31
+ });
32
+ } else {
33
+ onChange({
34
+ ...values,
35
+ [corner]: validatedValue
36
+ });
37
+ }
38
+ };
39
+ const onChangeValue = next => {
40
+ if (!onChange) {
41
+ return;
42
+ }
43
+
44
+ // Filter out CSS-unit-only values to prevent invalid styles.
45
+ const isNumeric = !isNaN(parseFloat(next));
46
+ const nextValue = isNumeric ? next : undefined;
47
+ changeCornerValue(nextValue);
48
+ };
49
+ const onChangeUnit = next => {
50
+ const newUnits = {
51
+ ...selectedUnits
52
+ };
53
+ if (corner === 'all') {
54
+ newUnits.topLeft = next;
55
+ newUnits.topRight = next;
56
+ newUnits.bottomLeft = next;
57
+ newUnits.bottomRight = next;
58
+ } else {
59
+ newUnits[corner] = next;
60
+ }
61
+ setSelectedUnits(newUnits);
62
+ };
63
+
64
+ // For shorthand style & backwards compatibility, handle flat string value.
65
+ const values = typeof valuesProp !== 'string' ? valuesProp : {
66
+ topLeft: valuesProp,
67
+ topRight: valuesProp,
68
+ bottomLeft: valuesProp,
69
+ bottomRight: valuesProp
70
+ };
71
+
72
+ // For 'all' corner, convert presets to custom values before calling getAllValue
73
+ // For individual corners, check if the value should be converted to a preset
74
+ let value;
75
+ if (corner === 'all') {
76
+ const convertedValues = convertPresetsToCustomValues(values, presets);
77
+ const customValue = getAllValue(convertedValues);
78
+ value = getPresetValueFromCustomValue(customValue, presets);
79
+ } else {
80
+ value = getPresetValueFromCustomValue(values[corner], presets);
81
+ }
82
+ const resolvedPresetValue = isValuePreset(value) ? getCustomValueFromPreset(value, presets) : value;
83
+ const [parsedQuantity, parsedUnit] = parseQuantityAndUnitFromRawValue(resolvedPresetValue);
84
+ const computedUnit = value ? parsedUnit : selectedUnits[corner] || selectedUnits.flat || 'px';
85
+ const unitConfig = units && units.find(item => item.value === computedUnit);
86
+ const step = unitConfig?.step || 1;
87
+ const [showCustomValueControl, setShowCustomValueControl] = useState(value !== undefined && !isValuePreset(value));
88
+ const showRangeControl = presets.length <= RANGE_CONTROL_MAX_SIZE;
89
+ const presetIndex = getSliderValueFromPreset(value, presets);
90
+ const rangeTooltip = newValue => value === undefined ? undefined : presets[newValue]?.name;
91
+ const marks = presets.slice(1, presets.length - 1).map((_newValue, index) => ({
92
+ value: index + 1,
93
+ label: undefined
94
+ }));
95
+ const hasPresets = marks.length > 0;
96
+ let options = [];
97
+ if (!showRangeControl) {
98
+ options = [...presets, {
99
+ name: __('Custom'),
100
+ slug: 'custom',
101
+ size: resolvedPresetValue
102
+ }].map((size, index) => ({
103
+ key: index,
104
+ name: size.name
105
+ }));
106
+ }
107
+ const icon = ICONS[corner];
108
+ const handleSliderChange = next => {
109
+ const val = next !== undefined ? `${next}${computedUnit}` : undefined;
110
+ changeCornerValue(val);
111
+ };
112
+
113
+ // Controls are wrapped in tooltips as visible labels aren't desired here.
114
+ // Tooltip rendering also requires the UnitControl to be wrapped. See:
115
+ // https://github.com/WordPress/gutenberg/pull/24966#issuecomment-685875026
116
+ return /*#__PURE__*/_jsxs(HStack, {
117
+ children: [icon && /*#__PURE__*/_jsx(Icon, {
118
+ className: "components-border-radius-control__icon",
119
+ icon: icon,
120
+ size: 24
121
+ }), (!hasPresets || showCustomValueControl) && /*#__PURE__*/_jsxs("div", {
122
+ className: "components-border-radius-control__input-controls-wrapper",
123
+ children: [/*#__PURE__*/_jsx(Tooltip, {
124
+ text: CORNERS[corner],
125
+ placement: "top",
126
+ children: /*#__PURE__*/_jsx("div", {
127
+ className: "components-border-radius-control__tooltip-wrapper",
128
+ children: /*#__PURE__*/_jsx(UnitControl, {
129
+ className: "components-border-radius-control__unit-control",
130
+ "aria-label": CORNERS[corner],
131
+ value: [parsedQuantity, computedUnit].join(''),
132
+ onChange: onChangeValue,
133
+ onUnitChange: onChangeUnit,
134
+ size: "__unstable-large",
135
+ min: MIN_BORDER_RADIUS_VALUE,
136
+ units: units
137
+ })
138
+ })
139
+ }), /*#__PURE__*/_jsx(RangeControl, {
140
+ __next40pxDefaultSize: true,
141
+ label: __('Border radius'),
142
+ hideLabelFromVision: true,
143
+ className: "components-border-radius-control__range-control",
144
+ value: parsedQuantity !== null && parsedQuantity !== void 0 ? parsedQuantity : '',
145
+ min: MIN_BORDER_RADIUS_VALUE,
146
+ max: MAX_BORDER_RADIUS_VALUES[computedUnit],
147
+ initialPosition: 0,
148
+ withInputField: false,
149
+ onChange: handleSliderChange,
150
+ step: step,
151
+ __nextHasNoMarginBottom: true
152
+ })]
153
+ }), hasPresets && showRangeControl && !showCustomValueControl && /*#__PURE__*/_jsx(RangeControl, {
154
+ __next40pxDefaultSize: true,
155
+ className: "components-border-radius-control__range-control",
156
+ value: presetIndex,
157
+ onChange: newSize => {
158
+ changeCornerValue(getPresetValueFromControlValue(newSize, 'range', presets));
159
+ },
160
+ withInputField: false,
161
+ "aria-valuenow": presetIndex,
162
+ "aria-valuetext": presets[presetIndex]?.name,
163
+ renderTooltipContent: rangeTooltip,
164
+ min: 0,
165
+ max: presets.length - 1,
166
+ marks: marks,
167
+ label: CORNERS[corner],
168
+ hideLabelFromVision: true,
169
+ __nextHasNoMarginBottom: true
170
+ }), !showRangeControl && !showCustomValueControl && /*#__PURE__*/_jsx(CustomSelectControl, {
171
+ className: "components-border-radius-control__custom-select-control",
172
+ value: options.find(option => option.key === presetIndex) || options[options.length - 1],
173
+ onChange: selection => {
174
+ if (selection.selectedItem.key === options.length - 1) {
175
+ setShowCustomValueControl(true);
176
+ } else {
177
+ changeCornerValue(getPresetValueFromControlValue(selection.selectedItem.key, 'selectList', presets));
178
+ }
179
+ },
180
+ options: options,
181
+ label: CORNERS[corner],
182
+ hideLabelFromVision: true,
183
+ size: "__unstable-large"
184
+ }), hasPresets && /*#__PURE__*/_jsx(Button, {
185
+ label: showCustomValueControl ? __('Use border radius preset') : __('Set custom border radius'),
186
+ icon: settings,
187
+ onClick: () => {
188
+ setShowCustomValueControl(!showCustomValueControl);
189
+ },
190
+ isPressed: showCustomValueControl,
191
+ size: "small",
192
+ className: "components-border-radius-control__custom-toggle",
193
+ iconSize: 24
194
+ })]
195
+ });
196
+ }
197
+ //# sourceMappingURL=single-input-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","__experimentalUnitControl","UnitControl","__experimentalHStack","HStack","Icon","Tooltip","RangeControl","Button","CustomSelectControl","__","useState","settings","getAllValue","getCustomValueFromPreset","getPresetValueFromControlValue","getPresetValueFromCustomValue","getSliderValueFromPreset","isValuePreset","convertPresetsToCustomValues","CORNERS","ICONS","MIN_BORDER_RADIUS_VALUE","MAX_BORDER_RADIUS_VALUES","RANGE_CONTROL_MAX_SIZE","jsx","_jsx","jsxs","_jsxs","SingleInputControl","corner","onChange","selectedUnits","setSelectedUnits","values","valuesProp","units","presets","changeCornerValue","validatedValue","topLeft","topRight","bottomLeft","bottomRight","onChangeValue","next","isNumeric","isNaN","parseFloat","nextValue","undefined","onChangeUnit","newUnits","value","convertedValues","customValue","resolvedPresetValue","parsedQuantity","parsedUnit","computedUnit","flat","unitConfig","find","item","step","showCustomValueControl","setShowCustomValueControl","showRangeControl","length","presetIndex","rangeTooltip","newValue","name","marks","slice","map","_newValue","index","label","hasPresets","options","slug","size","key","icon","handleSliderChange","val","children","className","text","placement","join","onUnitChange","min","__next40pxDefaultSize","hideLabelFromVision","max","initialPosition","withInputField","__nextHasNoMarginBottom","newSize","renderTooltipContent","option","selection","selectedItem","onClick","isPressed","iconSize"],"sources":["@wordpress/block-editor/src/components/border-radius-control/single-input-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalHStack as HStack,\n\tIcon,\n\tTooltip,\n\tRangeControl,\n\tButton,\n\tCustomSelectControl,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { settings } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetAllValue,\n\tgetCustomValueFromPreset,\n\tgetPresetValueFromControlValue,\n\tgetPresetValueFromCustomValue,\n\tgetSliderValueFromPreset,\n\tisValuePreset,\n\tconvertPresetsToCustomValues,\n} from './utils';\nimport {\n\tCORNERS,\n\tICONS,\n\tMIN_BORDER_RADIUS_VALUE,\n\tMAX_BORDER_RADIUS_VALUES,\n\tRANGE_CONTROL_MAX_SIZE,\n} from './constants';\n\nexport default function SingleInputControl( {\n\tcorner,\n\tonChange,\n\tselectedUnits,\n\tsetSelectedUnits,\n\tvalues: valuesProp,\n\tunits,\n\tpresets,\n} ) {\n\tconst changeCornerValue = ( validatedValue ) => {\n\t\tif ( corner === 'all' ) {\n\t\t\tonChange( {\n\t\t\t\ttopLeft: validatedValue,\n\t\t\t\ttopRight: validatedValue,\n\t\t\t\tbottomLeft: validatedValue,\n\t\t\t\tbottomRight: validatedValue,\n\t\t\t} );\n\t\t} else {\n\t\t\tonChange( {\n\t\t\t\t...values,\n\t\t\t\t[ corner ]: validatedValue,\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst onChangeValue = ( next ) => {\n\t\tif ( ! onChange ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Filter out CSS-unit-only values to prevent invalid styles.\n\t\tconst isNumeric = ! isNaN( parseFloat( next ) );\n\t\tconst nextValue = isNumeric ? next : undefined;\n\t\tchangeCornerValue( nextValue );\n\t};\n\n\tconst onChangeUnit = ( next ) => {\n\t\tconst newUnits = { ...selectedUnits };\n\t\tif ( corner === 'all' ) {\n\t\t\tnewUnits.topLeft = next;\n\t\t\tnewUnits.topRight = next;\n\t\t\tnewUnits.bottomLeft = next;\n\t\t\tnewUnits.bottomRight = next;\n\t\t} else {\n\t\t\tnewUnits[ corner ] = next;\n\t\t}\n\t\tsetSelectedUnits( newUnits );\n\t};\n\n\t// For shorthand style & backwards compatibility, handle flat string value.\n\tconst values =\n\t\ttypeof valuesProp !== 'string'\n\t\t\t? valuesProp\n\t\t\t: {\n\t\t\t\t\ttopLeft: valuesProp,\n\t\t\t\t\ttopRight: valuesProp,\n\t\t\t\t\tbottomLeft: valuesProp,\n\t\t\t\t\tbottomRight: valuesProp,\n\t\t\t };\n\n\t// For 'all' corner, convert presets to custom values before calling getAllValue\n\t// For individual corners, check if the value should be converted to a preset\n\tlet value;\n\tif ( corner === 'all' ) {\n\t\tconst convertedValues = convertPresetsToCustomValues( values, presets );\n\t\tconst customValue = getAllValue( convertedValues );\n\t\tvalue = getPresetValueFromCustomValue( customValue, presets );\n\t} else {\n\t\tvalue = getPresetValueFromCustomValue( values[ corner ], presets );\n\t}\n\tconst resolvedPresetValue = isValuePreset( value )\n\t\t? getCustomValueFromPreset( value, presets )\n\t\t: value;\n\tconst [ parsedQuantity, parsedUnit ] =\n\t\tparseQuantityAndUnitFromRawValue( resolvedPresetValue );\n\tconst computedUnit = value\n\t\t? parsedUnit\n\t\t: selectedUnits[ corner ] || selectedUnits.flat || 'px';\n\tconst unitConfig =\n\t\tunits && units.find( ( item ) => item.value === computedUnit );\n\tconst step = unitConfig?.step || 1;\n\tconst [ showCustomValueControl, setShowCustomValueControl ] = useState(\n\t\tvalue !== undefined && ! isValuePreset( value )\n\t);\n\tconst showRangeControl = presets.length <= RANGE_CONTROL_MAX_SIZE;\n\tconst presetIndex = getSliderValueFromPreset( value, presets );\n\tconst rangeTooltip = ( newValue ) =>\n\t\tvalue === undefined ? undefined : presets[ newValue ]?.name;\n\tconst marks = presets\n\t\t.slice( 1, presets.length - 1 )\n\t\t.map( ( _newValue, index ) => ( {\n\t\t\tvalue: index + 1,\n\t\t\tlabel: undefined,\n\t\t} ) );\n\tconst hasPresets = marks.length > 0;\n\tlet options = [];\n\tif ( ! showRangeControl ) {\n\t\toptions = [\n\t\t\t...presets,\n\t\t\t{\n\t\t\t\tname: __( 'Custom' ),\n\t\t\t\tslug: 'custom',\n\t\t\t\tsize: resolvedPresetValue,\n\t\t\t},\n\t\t].map( ( size, index ) => ( {\n\t\t\tkey: index,\n\t\t\tname: size.name,\n\t\t} ) );\n\t}\n\tconst icon = ICONS[ corner ];\n\n\tconst handleSliderChange = ( next ) => {\n\t\tconst val =\n\t\t\tnext !== undefined ? `${ next }${ computedUnit }` : undefined;\n\t\tchangeCornerValue( val );\n\t};\n\n\t// Controls are wrapped in tooltips as visible labels aren't desired here.\n\t// Tooltip rendering also requires the UnitControl to be wrapped. See:\n\t// https://github.com/WordPress/gutenberg/pull/24966#issuecomment-685875026\n\treturn (\n\t\t<HStack>\n\t\t\t{ icon && (\n\t\t\t\t<Icon\n\t\t\t\t\tclassName=\"components-border-radius-control__icon\"\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tsize={ 24 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ( ! hasPresets || showCustomValueControl ) && (\n\t\t\t\t<div className=\"components-border-radius-control__input-controls-wrapper\">\n\t\t\t\t\t<Tooltip text={ CORNERS[ corner ] } placement=\"top\">\n\t\t\t\t\t\t<div className=\"components-border-radius-control__tooltip-wrapper\">\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\tclassName=\"components-border-radius-control__unit-control\"\n\t\t\t\t\t\t\t\taria-label={ CORNERS[ corner ] }\n\t\t\t\t\t\t\t\tvalue={ [ parsedQuantity, computedUnit ].join(\n\t\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonChange={ onChangeValue }\n\t\t\t\t\t\t\t\tonUnitChange={ onChangeUnit }\n\t\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t\tmin={ MIN_BORDER_RADIUS_VALUE }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Border radius' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tclassName=\"components-border-radius-control__range-control\"\n\t\t\t\t\t\tvalue={ parsedQuantity ?? '' }\n\t\t\t\t\t\tmin={ MIN_BORDER_RADIUS_VALUE }\n\t\t\t\t\t\tmax={ MAX_BORDER_RADIUS_VALUES[ computedUnit ] }\n\t\t\t\t\t\tinitialPosition={ 0 }\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tonChange={ handleSliderChange }\n\t\t\t\t\t\tstep={ step }\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ hasPresets && showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<RangeControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tclassName=\"components-border-radius-control__range-control\"\n\t\t\t\t\tvalue={ presetIndex }\n\t\t\t\t\tonChange={ ( newSize ) => {\n\t\t\t\t\t\tchangeCornerValue(\n\t\t\t\t\t\t\tgetPresetValueFromControlValue(\n\t\t\t\t\t\t\t\tnewSize,\n\t\t\t\t\t\t\t\t'range',\n\t\t\t\t\t\t\t\tpresets\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\twithInputField={ false }\n\t\t\t\t\taria-valuenow={ presetIndex }\n\t\t\t\t\taria-valuetext={ presets[ presetIndex ]?.name }\n\t\t\t\t\trenderTooltipContent={ rangeTooltip }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tmax={ presets.length - 1 }\n\t\t\t\t\tmarks={ marks }\n\t\t\t\t\tlabel={ CORNERS[ corner ] }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<CustomSelectControl\n\t\t\t\t\tclassName=\"components-border-radius-control__custom-select-control\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\toptions.find(\n\t\t\t\t\t\t\t( option ) => option.key === presetIndex\n\t\t\t\t\t\t) || options[ options.length - 1 ]\n\t\t\t\t\t}\n\t\t\t\t\tonChange={ ( selection ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tselection.selectedItem.key ===\n\t\t\t\t\t\t\toptions.length - 1\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tsetShowCustomValueControl( true );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tchangeCornerValue(\n\t\t\t\t\t\t\t\tgetPresetValueFromControlValue(\n\t\t\t\t\t\t\t\t\tselection.selectedItem.key,\n\t\t\t\t\t\t\t\t\t'selectList',\n\t\t\t\t\t\t\t\t\tpresets\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\toptions={ options }\n\t\t\t\t\tlabel={ CORNERS[ corner ] }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasPresets && (\n\t\t\t\t<Button\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tshowCustomValueControl\n\t\t\t\t\t\t\t? __( 'Use border radius preset' )\n\t\t\t\t\t\t\t: __( 'Set custom border radius' )\n\t\t\t\t\t}\n\t\t\t\t\ticon={ settings }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetShowCustomValueControl( ! showCustomValueControl );\n\t\t\t\t\t} }\n\t\t\t\t\tisPressed={ showCustomValueControl }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tclassName=\"components-border-radius-control__custom-toggle\"\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</HStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -62,7 +62,7 @@ export function getAllValue(values = {}) {
62
62
  const allUnits = parsedQuantitiesAndUnits.map(value => value[1]);
63
63
  const value = allValues.every(v => v === allValues[0]) ? allValues[0] : '';
64
64
  const unit = mode(allUnits);
65
- const allValue = value === 0 || value ? `${value}${unit}` : undefined;
65
+ const allValue = value === 0 || value ? `${value}${unit || ''}` : undefined;
66
66
  return allValue;
67
67
  }
68
68
 
@@ -73,9 +73,21 @@ export function getAllValue(values = {}) {
73
73
  * @return {boolean} Whether values are mixed.
74
74
  */
75
75
  export function hasMixedValues(values = {}) {
76
- const allValue = getAllValue(values);
77
- const isMixed = typeof values === 'string' ? false : isNaN(parseFloat(allValue));
78
- return isMixed;
76
+ if (typeof values === 'string') {
77
+ return false;
78
+ }
79
+ if (!values || typeof values !== 'object') {
80
+ return false;
81
+ }
82
+ const cornerValues = Object.values(values);
83
+ if (cornerValues.length === 0) {
84
+ return false;
85
+ }
86
+ const firstValue = cornerValues[0];
87
+
88
+ // Check if all values are exactly the same (including undefined)
89
+ const allSame = cornerValues.every(value => value === firstValue);
90
+ return !allSame;
79
91
  }
80
92
 
81
93
  /**
@@ -101,4 +113,142 @@ export function hasDefinedValues(values) {
101
113
  });
102
114
  return !!filteredValues.length;
103
115
  }
116
+
117
+ /**
118
+ * Checks is given value is a radius preset.
119
+ *
120
+ * @param {string} value Value to check
121
+ *
122
+ * @return {boolean} Return true if value is string in format var:preset|border-radius|.
123
+ */
124
+ export function isValuePreset(value) {
125
+ if (!value?.includes) {
126
+ return false;
127
+ }
128
+ return value === '0' || value.includes('var:preset|border-radius|');
129
+ }
130
+
131
+ /**
132
+ * Returns the slug section of the given preset string.
133
+ *
134
+ * @param {string} value Value to extract slug from.
135
+ *
136
+ * @return {string|undefined} The int value of the slug from given preset.
137
+ */
138
+ export function getPresetSlug(value) {
139
+ if (!value) {
140
+ return;
141
+ }
142
+ if (value === '0' || value === 'default') {
143
+ return value;
144
+ }
145
+ const slug = value.match(/var:preset\|border-radius\|(.+)/);
146
+ return slug ? slug[1] : undefined;
147
+ }
148
+
149
+ /**
150
+ * Converts radius preset value into a Range component value .
151
+ *
152
+ * @param {string} presetValue Value to convert to Range value.
153
+ * @param {Array} presets Array of current radius preset value objects.
154
+ *
155
+ * @return {number} The int value for use in Range control.
156
+ */
157
+ export function getSliderValueFromPreset(presetValue, presets) {
158
+ if (presetValue === undefined) {
159
+ return 0;
160
+ }
161
+ const slug = parseFloat(presetValue, 10) === 0 ? '0' : getPresetSlug(presetValue);
162
+ const sliderValue = presets.findIndex(size => {
163
+ return String(size.slug) === slug;
164
+ });
165
+
166
+ // Returning NaN rather than undefined as undefined makes range control thumb sit in center
167
+ return sliderValue !== -1 ? sliderValue : NaN;
168
+ }
169
+
170
+ /**
171
+ * Converts a preset into a custom value.
172
+ *
173
+ * @param {string} value Value to convert
174
+ * @param {Array} presets Array of the current radius preset objects
175
+ *
176
+ * @return {string} Mapping of the radius preset to its equivalent custom value.
177
+ */
178
+ export function getCustomValueFromPreset(value, presets) {
179
+ if (!isValuePreset(value)) {
180
+ return value;
181
+ }
182
+ const slug = parseFloat(value, 10) === 0 ? '0' : getPresetSlug(value);
183
+ const radiusSize = presets.find(size => String(size.slug) === slug);
184
+ return radiusSize?.size;
185
+ }
186
+
187
+ /**
188
+ * Converts a control value into a preset value.
189
+ *
190
+ * @param {number} controlValue to convert to preset value.
191
+ * @param {string} controlType Type of control
192
+ * @param {Array} presets Array of current radius preset value objects.
193
+ *
194
+ * @return {string} The custom value for use in Range control.
195
+ */
196
+ export function getPresetValueFromControlValue(controlValue, controlType, presets) {
197
+ const size = parseInt(controlValue, 10);
198
+ if (controlType === 'selectList') {
199
+ if (size === 0) {
200
+ return undefined;
201
+ }
202
+ } else if (size === 0) {
203
+ return '0';
204
+ }
205
+ return `var:preset|border-radius|${presets[controlValue]?.slug}`;
206
+ }
207
+
208
+ /**
209
+ * Converts a custom value to preset value if one can be found.
210
+ *
211
+ * Returns value as-is if no match is found.
212
+ *
213
+ * @param {string} value Value to convert
214
+ * @param {Array} presets Array of the current border radius preset objects
215
+ *
216
+ * @return {string} The preset value if it can be found.
217
+ */
218
+ export function getPresetValueFromCustomValue(value, presets) {
219
+ // Return value as-is if it is undefined or is already a preset, or '0';
220
+ if (!value || isValuePreset(value) || value === '0') {
221
+ return value;
222
+ }
223
+ const spacingMatch = presets.find(size => String(size.size) === String(value));
224
+ if (spacingMatch?.slug) {
225
+ return `var:preset|border-radius|${spacingMatch.slug}`;
226
+ }
227
+ return value;
228
+ }
229
+
230
+ /**
231
+ * Converts all preset values in a values object to their custom equivalents.
232
+ *
233
+ * @param {Object} values Values object to convert
234
+ * @param {Array} presets Array of current border radius preset objects
235
+ *
236
+ * @return {Object} Values with presets converted to custom values
237
+ */
238
+ export function convertPresetsToCustomValues(values, presets) {
239
+ if (!values || typeof values !== 'object') {
240
+ return values;
241
+ }
242
+ const converted = {};
243
+ Object.keys(values).forEach(key => {
244
+ const value = values[key];
245
+ if (isValuePreset(value)) {
246
+ const customValue = getCustomValueFromPreset(value, presets);
247
+ converted[key] = customValue !== undefined ? customValue : value;
248
+ } else {
249
+ converted[key] = value;
250
+ }
251
+ });
252
+ return converted;
253
+ }
104
254
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","mode","inputArray","arr","sort","a","b","filter","v","length","shift","getAllUnit","selectedUnits","flat","cornerUnits","Object","values","Boolean","getAllValue","parsedQuantitiesAndUnits","map","value","allValues","_value$","allUnits","every","unit","allValue","undefined","hasMixedValues","isMixed","isNaN","parseFloat","hasDefinedValues","filteredValues"],"sources":["@wordpress/block-editor/src/components/border-radius-control/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue } from '@wordpress/components';\n\n/**\n * Gets the (non-undefined) item with the highest occurrence within an array\n * Based in part on: https://stackoverflow.com/a/20762713\n *\n * Undefined values are always sorted to the end by `sort`, so this function\n * returns the first element, to always prioritize real values over undefined\n * values.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#description\n *\n * @param {Array<any>} inputArray Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nexport function mode( inputArray ) {\n\tconst arr = [ ...inputArray ];\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tinputArray.filter( ( v ) => v === b ).length -\n\t\t\t\tinputArray.filter( ( v ) => v === a ).length\n\t\t)\n\t\t.shift();\n}\n\n/**\n * Returns the most common CSS unit from the current CSS unit selections.\n *\n * - If a single flat border radius is set, its unit will be used\n * - If individual corner selections, the most common of those will be used\n * - Failing any unit selections a default of 'px' is returned.\n *\n * @param {Object} selectedUnits Unit selections for flat radius & each corner.\n * @return {string} Most common CSS unit from current selections. Default: `px`.\n */\nexport function getAllUnit( selectedUnits = {} ) {\n\tconst { flat, ...cornerUnits } = selectedUnits;\n\treturn (\n\t\tflat || mode( Object.values( cornerUnits ).filter( Boolean ) ) || 'px'\n\t);\n}\n\n/**\n * Gets the 'all' input value and unit from values data.\n *\n * @param {Object|string} values Radius values.\n * @return {string} A value + unit for the 'all' input.\n */\nexport function getAllValue( values = {} ) {\n\t/**\n\t * Border radius support was originally a single pixel value.\n\t *\n\t * To maintain backwards compatibility treat this case as the all value.\n\t */\n\tif ( typeof values === 'string' ) {\n\t\treturn values;\n\t}\n\n\tconst parsedQuantitiesAndUnits = Object.values( values ).map( ( value ) =>\n\t\tparseQuantityAndUnitFromRawValue( value )\n\t);\n\n\tconst allValues = parsedQuantitiesAndUnits.map(\n\t\t( value ) => value[ 0 ] ?? ''\n\t);\n\tconst allUnits = parsedQuantitiesAndUnits.map( ( value ) => value[ 1 ] );\n\n\tconst value = allValues.every( ( v ) => v === allValues[ 0 ] )\n\t\t? allValues[ 0 ]\n\t\t: '';\n\tconst unit = mode( allUnits );\n\n\tconst allValue = value === 0 || value ? `${ value }${ unit }` : undefined;\n\n\treturn allValue;\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasMixedValues( values = {} ) {\n\tconst allValue = getAllValue( values );\n\tconst isMixed =\n\t\ttypeof values === 'string' ? false : isNaN( parseFloat( allValue ) );\n\n\treturn isMixed;\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasDefinedValues( values ) {\n\tif ( ! values ) {\n\t\treturn false;\n\t}\n\n\t// A string value represents a shorthand value.\n\tif ( typeof values === 'string' ) {\n\t\treturn true;\n\t}\n\n\t// An object represents longhand border radius values, if any are set\n\t// flag values as being defined.\n\tconst filteredValues = Object.values( values ).filter( ( value ) => {\n\t\treturn !! value || value === 0;\n\t} );\n\n\treturn !! filteredValues.length;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,8CAA8C,IAAIC,gCAAgC,QAAQ,uBAAuB;;AAE1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAAEC,UAAU,EAAG;EAClC,MAAMC,GAAG,GAAG,CAAE,GAAGD,UAAU,CAAE;EAC7B,OAAOC,GAAG,CACRC,IAAI,CACJ,CAAEC,CAAC,EAAEC,CAAC,KACLJ,UAAU,CAACK,MAAM,CAAIC,CAAC,IAAMA,CAAC,KAAKF,CAAE,CAAC,CAACG,MAAM,GAC5CP,UAAU,CAACK,MAAM,CAAIC,CAAC,IAAMA,CAAC,KAAKH,CAAE,CAAC,CAACI,MACxC,CAAC,CACAC,KAAK,CAAC,CAAC;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAEC,aAAa,GAAG,CAAC,CAAC,EAAG;EAChD,MAAM;IAAEC,IAAI;IAAE,GAAGC;EAAY,CAAC,GAAGF,aAAa;EAC9C,OACCC,IAAI,IAAIZ,IAAI,CAAEc,MAAM,CAACC,MAAM,CAAEF,WAAY,CAAC,CAACP,MAAM,CAAEU,OAAQ,CAAE,CAAC,IAAI,IAAI;AAExE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAEF,MAAM,GAAG,CAAC,CAAC,EAAG;EAC1C;AACD;AACA;AACA;AACA;EACC,IAAK,OAAOA,MAAM,KAAK,QAAQ,EAAG;IACjC,OAAOA,MAAM;EACd;EAEA,MAAMG,wBAAwB,GAAGJ,MAAM,CAACC,MAAM,CAAEA,MAAO,CAAC,CAACI,GAAG,CAAIC,KAAK,IACpErB,gCAAgC,CAAEqB,KAAM,CACzC,CAAC;EAED,MAAMC,SAAS,GAAGH,wBAAwB,CAACC,GAAG,CAC3CC,KAAK;IAAA,IAAAE,OAAA;IAAA,QAAAA,OAAA,GAAMF,KAAK,CAAE,CAAC,CAAE,cAAAE,OAAA,cAAAA,OAAA,GAAI,EAAE;EAAA,CAC9B,CAAC;EACD,MAAMC,QAAQ,GAAGL,wBAAwB,CAACC,GAAG,CAAIC,KAAK,IAAMA,KAAK,CAAE,CAAC,CAAG,CAAC;EAExE,MAAMA,KAAK,GAAGC,SAAS,CAACG,KAAK,CAAIjB,CAAC,IAAMA,CAAC,KAAKc,SAAS,CAAE,CAAC,CAAG,CAAC,GAC3DA,SAAS,CAAE,CAAC,CAAE,GACd,EAAE;EACL,MAAMI,IAAI,GAAGzB,IAAI,CAAEuB,QAAS,CAAC;EAE7B,MAAMG,QAAQ,GAAGN,KAAK,KAAK,CAAC,IAAIA,KAAK,GAAG,GAAIA,KAAK,GAAKK,IAAI,EAAG,GAAGE,SAAS;EAEzE,OAAOD,QAAQ;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,cAAcA,CAAEb,MAAM,GAAG,CAAC,CAAC,EAAG;EAC7C,MAAMW,QAAQ,GAAGT,WAAW,CAAEF,MAAO,CAAC;EACtC,MAAMc,OAAO,GACZ,OAAOd,MAAM,KAAK,QAAQ,GAAG,KAAK,GAAGe,KAAK,CAAEC,UAAU,CAAEL,QAAS,CAAE,CAAC;EAErE,OAAOG,OAAO;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,gBAAgBA,CAAEjB,MAAM,EAAG;EAC1C,IAAK,CAAEA,MAAM,EAAG;IACf,OAAO,KAAK;EACb;;EAEA;EACA,IAAK,OAAOA,MAAM,KAAK,QAAQ,EAAG;IACjC,OAAO,IAAI;EACZ;;EAEA;EACA;EACA,MAAMkB,cAAc,GAAGnB,MAAM,CAACC,MAAM,CAAEA,MAAO,CAAC,CAACT,MAAM,CAAIc,KAAK,IAAM;IACnE,OAAO,CAAC,CAAEA,KAAK,IAAIA,KAAK,KAAK,CAAC;EAC/B,CAAE,CAAC;EAEH,OAAO,CAAC,CAAEa,cAAc,CAACzB,MAAM;AAChC","ignoreList":[]}
1
+ {"version":3,"names":["__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","mode","inputArray","arr","sort","a","b","filter","v","length","shift","getAllUnit","selectedUnits","flat","cornerUnits","Object","values","Boolean","getAllValue","parsedQuantitiesAndUnits","map","value","allValues","_value$","allUnits","every","unit","allValue","undefined","hasMixedValues","cornerValues","firstValue","allSame","hasDefinedValues","filteredValues","isValuePreset","includes","getPresetSlug","slug","match","getSliderValueFromPreset","presetValue","presets","parseFloat","sliderValue","findIndex","size","String","NaN","getCustomValueFromPreset","radiusSize","find","getPresetValueFromControlValue","controlValue","controlType","parseInt","getPresetValueFromCustomValue","spacingMatch","convertPresetsToCustomValues","converted","keys","forEach","key","customValue"],"sources":["@wordpress/block-editor/src/components/border-radius-control/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue } from '@wordpress/components';\n\n/**\n * Gets the (non-undefined) item with the highest occurrence within an array\n * Based in part on: https://stackoverflow.com/a/20762713\n *\n * Undefined values are always sorted to the end by `sort`, so this function\n * returns the first element, to always prioritize real values over undefined\n * values.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#description\n *\n * @param {Array<any>} inputArray Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nexport function mode( inputArray ) {\n\tconst arr = [ ...inputArray ];\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tinputArray.filter( ( v ) => v === b ).length -\n\t\t\t\tinputArray.filter( ( v ) => v === a ).length\n\t\t)\n\t\t.shift();\n}\n\n/**\n * Returns the most common CSS unit from the current CSS unit selections.\n *\n * - If a single flat border radius is set, its unit will be used\n * - If individual corner selections, the most common of those will be used\n * - Failing any unit selections a default of 'px' is returned.\n *\n * @param {Object} selectedUnits Unit selections for flat radius & each corner.\n * @return {string} Most common CSS unit from current selections. Default: `px`.\n */\nexport function getAllUnit( selectedUnits = {} ) {\n\tconst { flat, ...cornerUnits } = selectedUnits;\n\treturn (\n\t\tflat || mode( Object.values( cornerUnits ).filter( Boolean ) ) || 'px'\n\t);\n}\n\n/**\n * Gets the 'all' input value and unit from values data.\n *\n * @param {Object|string} values Radius values.\n * @return {string} A value + unit for the 'all' input.\n */\nexport function getAllValue( values = {} ) {\n\t/**\n\t * Border radius support was originally a single pixel value.\n\t *\n\t * To maintain backwards compatibility treat this case as the all value.\n\t */\n\tif ( typeof values === 'string' ) {\n\t\treturn values;\n\t}\n\n\tconst parsedQuantitiesAndUnits = Object.values( values ).map( ( value ) =>\n\t\tparseQuantityAndUnitFromRawValue( value )\n\t);\n\n\tconst allValues = parsedQuantitiesAndUnits.map(\n\t\t( value ) => value[ 0 ] ?? ''\n\t);\n\tconst allUnits = parsedQuantitiesAndUnits.map( ( value ) => value[ 1 ] );\n\n\tconst value = allValues.every( ( v ) => v === allValues[ 0 ] )\n\t\t? allValues[ 0 ]\n\t\t: '';\n\tconst unit = mode( allUnits );\n\n\tconst allValue =\n\t\tvalue === 0 || value ? `${ value }${ unit || '' }` : undefined;\n\n\treturn allValue;\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasMixedValues( values = {} ) {\n\tif ( typeof values === 'string' ) {\n\t\treturn false;\n\t}\n\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn false;\n\t}\n\n\tconst cornerValues = Object.values( values );\n\n\tif ( cornerValues.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tconst firstValue = cornerValues[ 0 ];\n\n\t// Check if all values are exactly the same (including undefined)\n\tconst allSame = cornerValues.every( ( value ) => value === firstValue );\n\n\treturn ! allSame;\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasDefinedValues( values ) {\n\tif ( ! values ) {\n\t\treturn false;\n\t}\n\n\t// A string value represents a shorthand value.\n\tif ( typeof values === 'string' ) {\n\t\treturn true;\n\t}\n\n\t// An object represents longhand border radius values, if any are set\n\t// flag values as being defined.\n\tconst filteredValues = Object.values( values ).filter( ( value ) => {\n\t\treturn !! value || value === 0;\n\t} );\n\n\treturn !! filteredValues.length;\n}\n\n/**\n * Checks is given value is a radius preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|border-radius|.\n */\nexport function isValuePreset( value ) {\n\tif ( ! value?.includes ) {\n\t\treturn false;\n\t}\n\treturn value === '0' || value.includes( 'var:preset|border-radius|' );\n}\n\n/**\n * Returns the slug section of the given preset string.\n *\n * @param {string} value Value to extract slug from.\n *\n * @return {string|undefined} The int value of the slug from given preset.\n */\nexport function getPresetSlug( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tif ( value === '0' || value === 'default' ) {\n\t\treturn value;\n\t}\n\n\tconst slug = value.match( /var:preset\\|border-radius\\|(.+)/ );\n\n\treturn slug ? slug[ 1 ] : undefined;\n}\n\n/**\n * Converts radius preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, presets ) {\n\tif ( presetValue === undefined ) {\n\t\treturn 0;\n\t}\n\tconst slug =\n\t\tparseFloat( presetValue, 10 ) === 0\n\t\t\t? '0'\n\t\t\t: getPresetSlug( presetValue );\n\tconst sliderValue = presets.findIndex( ( size ) => {\n\t\treturn String( size.slug ) === slug;\n\t} );\n\n\t// Returning NaN rather than undefined as undefined makes range control thumb sit in center\n\treturn sliderValue !== -1 ? sliderValue : NaN;\n}\n\n/**\n * Converts a preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} presets Array of the current radius preset objects\n *\n * @return {string} Mapping of the radius preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, presets ) {\n\tif ( ! isValuePreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = parseFloat( value, 10 ) === 0 ? '0' : getPresetSlug( value );\n\tconst radiusSize = presets.find( ( size ) => String( size.slug ) === slug );\n\n\treturn radiusSize?.size;\n}\n\n/**\n * Converts a control value into a preset value.\n *\n * @param {number} controlValue to convert to preset value.\n * @param {string} controlType Type of control\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {string} The custom value for use in Range control.\n */\nexport function getPresetValueFromControlValue(\n\tcontrolValue,\n\tcontrolType,\n\tpresets\n) {\n\tconst size = parseInt( controlValue, 10 );\n\tif ( controlType === 'selectList' ) {\n\t\tif ( size === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t} else if ( size === 0 ) {\n\t\treturn '0';\n\t}\n\treturn `var:preset|border-radius|${ presets[ controlValue ]?.slug }`;\n}\n\n/**\n * Converts a custom value to preset value if one can be found.\n *\n * Returns value as-is if no match is found.\n *\n * @param {string} value Value to convert\n * @param {Array} presets Array of the current border radius preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, presets ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValuePreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = presets.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|border-radius|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts all preset values in a values object to their custom equivalents.\n *\n * @param {Object} values Values object to convert\n * @param {Array} presets Array of current border radius preset objects\n *\n * @return {Object} Values with presets converted to custom values\n */\nexport function convertPresetsToCustomValues( values, presets ) {\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn values;\n\t}\n\n\tconst converted = {};\n\tObject.keys( values ).forEach( ( key ) => {\n\t\tconst value = values[ key ];\n\t\tif ( isValuePreset( value ) ) {\n\t\t\tconst customValue = getCustomValueFromPreset( value, presets );\n\t\t\tconverted[ key ] = customValue !== undefined ? customValue : value;\n\t\t} else {\n\t\t\tconverted[ key ] = value;\n\t\t}\n\t} );\n\n\treturn converted;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -124,7 +124,17 @@ export default function BorderPanel({
124
124
 
125
125
  // Border radius.
126
126
  const showBorderRadius = useHasBorderRadiusControl(settings);
127
- const borderRadiusValues = decodeValue(border?.radius);
127
+ const borderRadiusValues = useMemo(() => {
128
+ if (typeof border?.radius !== 'object') {
129
+ return decodeValue(border?.radius);
130
+ }
131
+ return {
132
+ topLeft: decodeValue(border?.radius?.topLeft),
133
+ topRight: decodeValue(border?.radius?.topRight),
134
+ bottomLeft: decodeValue(border?.radius?.bottomLeft),
135
+ bottomRight: decodeValue(border?.radius?.bottomRight)
136
+ };
137
+ }, [border?.radius, decodeValue]);
128
138
  const setBorderRadius = newBorderRadius => setBorder({
129
139
  ...border,
130
140
  radius: newBorderRadius
@@ -231,6 +241,7 @@ export default function BorderPanel({
231
241
  isShownByDefault: defaultControls.radius,
232
242
  panelId: panelId,
233
243
  children: /*#__PURE__*/_jsx(BorderRadiusControl, {
244
+ presets: settings?.border?.radiusSizes,
234
245
  values: borderRadiusValues,
235
246
  onChange: newValue => {
236
247
  setBorderRadius(newValue || undefined);
@@ -1 +1 @@
1
- {"version":3,"names":["BorderBoxControl","__experimentalHasSplitBorders","hasSplitBorders","__experimentalIsDefinedBorder","isDefinedBorder","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","BaseControl","useCallback","useMemo","__","BorderRadiusControl","useColorsPerOrigin","getValueFromVariable","useToolsPanelDropdownMenuProps","setImmutably","useBorderPanelLabel","ShadowPopover","useShadowPresets","jsx","_jsx","jsxs","_jsxs","useHasBorderPanel","settings","controls","Object","values","useHasBorderPanelControls","some","Boolean","hasBorderColor","useHasBorderColorControl","hasBorderRadius","useHasBorderRadiusControl","hasBorderStyle","useHasBorderStyleControl","hasBorderWidth","useHasBorderWidthControl","hasShadow","useHasShadowControl","border","color","radius","style","width","shadows","shadow","length","BorderToolsPanel","resetAllFilter","onChange","value","panelId","children","label","dropdownMenuProps","resetAll","updatedValue","DEFAULT_CONTROLS","BorderPanel","as","Wrapper","inheritedValue","name","defaultControls","_settings$shadow$pres","_ref","_ref2","_shadowPresets$custom","colors","decodeValue","rawValue","encodeColorValue","colorValue","allColors","flatMap","originColors","colorObject","find","slug","borderValue","forEach","side","undefined","setBorder","newBorder","showBorderColor","showBorderStyle","showBorderWidth","showBorderRadius","borderRadiusValues","setBorderRadius","newBorderRadius","borderValues","entries","hasShadowControl","shadowPresets","presets","mergedShadowPresets","custom","theme","default","setShadow","newValue","shadowName","resetShadow","resetBorder","onBorderChange","updatedBorder","previousValue","showBorderByDefault","hasBorderControl","blockName","hasValue","onDeselect","isShownByDefault","enableAlpha","enableStyle","popoverOffset","popoverPlacement","__experimentalIsRenderedInSidebar","size","hideLabelFromVision","VisualLabel","onShadowChange"],"sources":["@wordpress/block-editor/src/components/global-styles/border-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBorderBoxControl,\n\t__experimentalHasSplitBorders as hasSplitBorders,\n\t__experimentalIsDefinedBorder as isDefinedBorder,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tBaseControl,\n} from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BorderRadiusControl from '../border-radius-control';\nimport { useColorsPerOrigin } from './hooks';\nimport { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport { useBorderPanelLabel } from '../../hooks/border';\nimport { ShadowPopover, useShadowPresets } from './shadow-panel-components';\n\nexport function useHasBorderPanel( settings ) {\n\tconst controls = Object.values( useHasBorderPanelControls( settings ) );\n\treturn controls.some( Boolean );\n}\n\nexport function useHasBorderPanelControls( settings ) {\n\tconst controls = {\n\t\thasBorderColor: useHasBorderColorControl( settings ),\n\t\thasBorderRadius: useHasBorderRadiusControl( settings ),\n\t\thasBorderStyle: useHasBorderStyleControl( settings ),\n\t\thasBorderWidth: useHasBorderWidthControl( settings ),\n\t\thasShadow: useHasShadowControl( settings ),\n\t};\n\n\treturn controls;\n}\n\nfunction useHasBorderColorControl( settings ) {\n\treturn settings?.border?.color;\n}\n\nfunction useHasBorderRadiusControl( settings ) {\n\treturn settings?.border?.radius;\n}\n\nfunction useHasBorderStyleControl( settings ) {\n\treturn settings?.border?.style;\n}\n\nfunction useHasBorderWidthControl( settings ) {\n\treturn settings?.border?.width;\n}\n\nfunction useHasShadowControl( settings ) {\n\tconst shadows = useShadowPresets( settings );\n\treturn !! settings?.shadow && shadows.length > 0;\n}\n\nfunction BorderToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\tlabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ label }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tradius: true,\n\tcolor: true,\n\twidth: true,\n\tshadow: true,\n};\n\nexport default function BorderPanel( {\n\tas: Wrapper = BorderToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tname,\n\tdefaultControls = DEFAULT_CONTROLS,\n} ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst decodeValue = useCallback(\n\t\t( rawValue ) => getValueFromVariable( { settings }, '', rawValue ),\n\t\t[ settings ]\n\t);\n\tconst encodeColorValue = ( colorValue ) => {\n\t\tconst allColors = colors.flatMap(\n\t\t\t( { colors: originColors } ) => originColors\n\t\t);\n\t\tconst colorObject = allColors.find(\n\t\t\t( { color } ) => color === colorValue\n\t\t);\n\t\treturn colorObject\n\t\t\t? 'var:preset|color|' + colorObject.slug\n\t\t\t: colorValue;\n\t};\n\tconst border = useMemo( () => {\n\t\tif ( hasSplitBorders( inheritedValue?.border ) ) {\n\t\t\tconst borderValue = { ...inheritedValue?.border };\n\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\tborderValue[ side ] = {\n\t\t\t\t\t...borderValue[ side ],\n\t\t\t\t\tcolor: decodeValue( borderValue[ side ]?.color ),\n\t\t\t\t};\n\t\t\t} );\n\t\t\treturn borderValue;\n\t\t}\n\t\treturn {\n\t\t\t...inheritedValue?.border,\n\t\t\tcolor: inheritedValue?.border?.color\n\t\t\t\t? decodeValue( inheritedValue?.border?.color )\n\t\t\t\t: undefined,\n\t\t};\n\t}, [ inheritedValue?.border, decodeValue ] );\n\tconst setBorder = ( newBorder ) =>\n\t\tonChange( { ...value, border: newBorder } );\n\tconst showBorderColor = useHasBorderColorControl( settings );\n\tconst showBorderStyle = useHasBorderStyleControl( settings );\n\tconst showBorderWidth = useHasBorderWidthControl( settings );\n\n\t// Border radius.\n\tconst showBorderRadius = useHasBorderRadiusControl( settings );\n\tconst borderRadiusValues = decodeValue( border?.radius );\n\tconst setBorderRadius = ( newBorderRadius ) =>\n\t\tsetBorder( { ...border, radius: newBorderRadius } );\n\tconst hasBorderRadius = () => {\n\t\tconst borderValues = value?.border?.radius;\n\t\tif ( typeof borderValues === 'object' ) {\n\t\t\treturn Object.entries( borderValues ).some( Boolean );\n\t\t}\n\t\treturn !! borderValues;\n\t};\n\tconst hasShadowControl = useHasShadowControl( settings );\n\n\t// Shadow\n\tconst shadow = decodeValue( inheritedValue?.shadow );\n\tconst shadowPresets = settings?.shadow?.presets ?? {};\n\tconst mergedShadowPresets =\n\t\tshadowPresets.custom ??\n\t\tshadowPresets.theme ??\n\t\tshadowPresets.default ??\n\t\t[];\n\tconst setShadow = ( newValue ) => {\n\t\tconst slug = mergedShadowPresets?.find(\n\t\t\t( { shadow: shadowName } ) => shadowName === newValue\n\t\t)?.slug;\n\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'shadow' ],\n\t\t\t\tslug ? `var:preset|shadow|${ slug }` : newValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasShadow = () => !! value?.shadow;\n\tconst resetShadow = () => setShadow( undefined );\n\n\tconst resetBorder = () => {\n\t\tif ( hasBorderRadius() ) {\n\t\t\treturn setBorder( { radius: value?.border?.radius } );\n\t\t}\n\n\t\tsetBorder( undefined );\n\t};\n\n\tconst onBorderChange = ( newBorder ) => {\n\t\t// Ensure we have a visible border style when a border width or\n\t\t// color is being selected.\n\t\tconst updatedBorder = { ...newBorder };\n\n\t\tif ( hasSplitBorders( updatedBorder ) ) {\n\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\tif ( updatedBorder[ side ] ) {\n\t\t\t\t\tupdatedBorder[ side ] = {\n\t\t\t\t\t\t...updatedBorder[ side ],\n\t\t\t\t\t\tcolor: encodeColorValue( updatedBorder[ side ]?.color ),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t} else if ( updatedBorder ) {\n\t\t\tupdatedBorder.color = encodeColorValue( updatedBorder.color );\n\t\t}\n\n\t\t// As radius is maintained separately to color, style, and width\n\t\t// maintain its value. Undefined values here will be cleaned when\n\t\t// global styles are saved.\n\t\tsetBorder( { radius: border?.radius, ...updatedBorder } );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tborder: undefined,\n\t\t\tshadow: undefined,\n\t\t};\n\t}, [] );\n\n\tconst showBorderByDefault =\n\t\tdefaultControls?.color || defaultControls?.width;\n\n\tconst hasBorderControl =\n\t\tshowBorderColor ||\n\t\tshowBorderStyle ||\n\t\tshowBorderWidth ||\n\t\tshowBorderRadius;\n\n\tconst label = useBorderPanelLabel( {\n\t\tblockName: name,\n\t\thasShadowControl,\n\t\thasBorderControl,\n\t} );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t\tlabel={ label }\n\t\t>\n\t\t\t{ ( showBorderWidth || showBorderColor ) && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => isDefinedBorder( value?.border ) }\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\tonDeselect={ () => resetBorder() }\n\t\t\t\t\tisShownByDefault={ showBorderByDefault }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BorderBoxControl\n\t\t\t\t\t\tcolors={ colors }\n\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t\tenableStyle={ showBorderStyle }\n\t\t\t\t\t\tonChange={ onBorderChange }\n\t\t\t\t\t\tpopoverOffset={ 40 }\n\t\t\t\t\t\tpopoverPlacement=\"left-start\"\n\t\t\t\t\t\tvalue={ border }\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\thideLabelFromVision={ ! hasShadowControl }\n\t\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showBorderRadius && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasBorderRadius }\n\t\t\t\t\tlabel={ __( 'Radius' ) }\n\t\t\t\t\tonDeselect={ () => setBorderRadius( undefined ) }\n\t\t\t\t\tisShownByDefault={ defaultControls.radius }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BorderRadiusControl\n\t\t\t\t\t\tvalues={ borderRadiusValues }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tsetBorderRadius( newValue || undefined );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasShadowControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Shadow' ) }\n\t\t\t\t\thasValue={ hasShadow }\n\t\t\t\t\tonDeselect={ resetShadow }\n\t\t\t\t\tisShownByDefault={ defaultControls.shadow }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ hasBorderControl ? (\n\t\t\t\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t\t\t\t{ __( 'Shadow' ) }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t) : null }\n\n\t\t\t\t\t<ShadowPopover\n\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\tonShadowChange={ setShadow }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BorderBoxControl","__experimentalHasSplitBorders","hasSplitBorders","__experimentalIsDefinedBorder","isDefinedBorder","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","BaseControl","useCallback","useMemo","__","BorderRadiusControl","useColorsPerOrigin","getValueFromVariable","useToolsPanelDropdownMenuProps","setImmutably","useBorderPanelLabel","ShadowPopover","useShadowPresets","jsx","_jsx","jsxs","_jsxs","useHasBorderPanel","settings","controls","Object","values","useHasBorderPanelControls","some","Boolean","hasBorderColor","useHasBorderColorControl","hasBorderRadius","useHasBorderRadiusControl","hasBorderStyle","useHasBorderStyleControl","hasBorderWidth","useHasBorderWidthControl","hasShadow","useHasShadowControl","border","color","radius","style","width","shadows","shadow","length","BorderToolsPanel","resetAllFilter","onChange","value","panelId","children","label","dropdownMenuProps","resetAll","updatedValue","DEFAULT_CONTROLS","BorderPanel","as","Wrapper","inheritedValue","name","defaultControls","_settings$shadow$pres","_ref","_ref2","_shadowPresets$custom","colors","decodeValue","rawValue","encodeColorValue","colorValue","allColors","flatMap","originColors","colorObject","find","slug","borderValue","forEach","side","undefined","setBorder","newBorder","showBorderColor","showBorderStyle","showBorderWidth","showBorderRadius","borderRadiusValues","topLeft","topRight","bottomLeft","bottomRight","setBorderRadius","newBorderRadius","borderValues","entries","hasShadowControl","shadowPresets","presets","mergedShadowPresets","custom","theme","default","setShadow","newValue","shadowName","resetShadow","resetBorder","onBorderChange","updatedBorder","previousValue","showBorderByDefault","hasBorderControl","blockName","hasValue","onDeselect","isShownByDefault","enableAlpha","enableStyle","popoverOffset","popoverPlacement","__experimentalIsRenderedInSidebar","size","hideLabelFromVision","radiusSizes","VisualLabel","onShadowChange"],"sources":["@wordpress/block-editor/src/components/global-styles/border-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBorderBoxControl,\n\t__experimentalHasSplitBorders as hasSplitBorders,\n\t__experimentalIsDefinedBorder as isDefinedBorder,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tBaseControl,\n} from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BorderRadiusControl from '../border-radius-control';\nimport { useColorsPerOrigin } from './hooks';\nimport { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport { useBorderPanelLabel } from '../../hooks/border';\nimport { ShadowPopover, useShadowPresets } from './shadow-panel-components';\n\nexport function useHasBorderPanel( settings ) {\n\tconst controls = Object.values( useHasBorderPanelControls( settings ) );\n\treturn controls.some( Boolean );\n}\n\nexport function useHasBorderPanelControls( settings ) {\n\tconst controls = {\n\t\thasBorderColor: useHasBorderColorControl( settings ),\n\t\thasBorderRadius: useHasBorderRadiusControl( settings ),\n\t\thasBorderStyle: useHasBorderStyleControl( settings ),\n\t\thasBorderWidth: useHasBorderWidthControl( settings ),\n\t\thasShadow: useHasShadowControl( settings ),\n\t};\n\n\treturn controls;\n}\n\nfunction useHasBorderColorControl( settings ) {\n\treturn settings?.border?.color;\n}\n\nfunction useHasBorderRadiusControl( settings ) {\n\treturn settings?.border?.radius;\n}\n\nfunction useHasBorderStyleControl( settings ) {\n\treturn settings?.border?.style;\n}\n\nfunction useHasBorderWidthControl( settings ) {\n\treturn settings?.border?.width;\n}\n\nfunction useHasShadowControl( settings ) {\n\tconst shadows = useShadowPresets( settings );\n\treturn !! settings?.shadow && shadows.length > 0;\n}\n\nfunction BorderToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\tlabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ label }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tradius: true,\n\tcolor: true,\n\twidth: true,\n\tshadow: true,\n};\n\nexport default function BorderPanel( {\n\tas: Wrapper = BorderToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tname,\n\tdefaultControls = DEFAULT_CONTROLS,\n} ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst decodeValue = useCallback(\n\t\t( rawValue ) => getValueFromVariable( { settings }, '', rawValue ),\n\t\t[ settings ]\n\t);\n\tconst encodeColorValue = ( colorValue ) => {\n\t\tconst allColors = colors.flatMap(\n\t\t\t( { colors: originColors } ) => originColors\n\t\t);\n\t\tconst colorObject = allColors.find(\n\t\t\t( { color } ) => color === colorValue\n\t\t);\n\t\treturn colorObject\n\t\t\t? 'var:preset|color|' + colorObject.slug\n\t\t\t: colorValue;\n\t};\n\tconst border = useMemo( () => {\n\t\tif ( hasSplitBorders( inheritedValue?.border ) ) {\n\t\t\tconst borderValue = { ...inheritedValue?.border };\n\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\tborderValue[ side ] = {\n\t\t\t\t\t...borderValue[ side ],\n\t\t\t\t\tcolor: decodeValue( borderValue[ side ]?.color ),\n\t\t\t\t};\n\t\t\t} );\n\t\t\treturn borderValue;\n\t\t}\n\t\treturn {\n\t\t\t...inheritedValue?.border,\n\t\t\tcolor: inheritedValue?.border?.color\n\t\t\t\t? decodeValue( inheritedValue?.border?.color )\n\t\t\t\t: undefined,\n\t\t};\n\t}, [ inheritedValue?.border, decodeValue ] );\n\tconst setBorder = ( newBorder ) =>\n\t\tonChange( { ...value, border: newBorder } );\n\tconst showBorderColor = useHasBorderColorControl( settings );\n\tconst showBorderStyle = useHasBorderStyleControl( settings );\n\tconst showBorderWidth = useHasBorderWidthControl( settings );\n\n\t// Border radius.\n\tconst showBorderRadius = useHasBorderRadiusControl( settings );\n\tconst borderRadiusValues = useMemo( () => {\n\t\tif ( typeof border?.radius !== 'object' ) {\n\t\t\treturn decodeValue( border?.radius );\n\t\t}\n\t\treturn {\n\t\t\ttopLeft: decodeValue( border?.radius?.topLeft ),\n\t\t\ttopRight: decodeValue( border?.radius?.topRight ),\n\t\t\tbottomLeft: decodeValue( border?.radius?.bottomLeft ),\n\t\t\tbottomRight: decodeValue( border?.radius?.bottomRight ),\n\t\t};\n\t}, [ border?.radius, decodeValue ] );\n\tconst setBorderRadius = ( newBorderRadius ) =>\n\t\tsetBorder( { ...border, radius: newBorderRadius } );\n\tconst hasBorderRadius = () => {\n\t\tconst borderValues = value?.border?.radius;\n\t\tif ( typeof borderValues === 'object' ) {\n\t\t\treturn Object.entries( borderValues ).some( Boolean );\n\t\t}\n\t\treturn !! borderValues;\n\t};\n\tconst hasShadowControl = useHasShadowControl( settings );\n\n\t// Shadow\n\tconst shadow = decodeValue( inheritedValue?.shadow );\n\tconst shadowPresets = settings?.shadow?.presets ?? {};\n\tconst mergedShadowPresets =\n\t\tshadowPresets.custom ??\n\t\tshadowPresets.theme ??\n\t\tshadowPresets.default ??\n\t\t[];\n\tconst setShadow = ( newValue ) => {\n\t\tconst slug = mergedShadowPresets?.find(\n\t\t\t( { shadow: shadowName } ) => shadowName === newValue\n\t\t)?.slug;\n\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'shadow' ],\n\t\t\t\tslug ? `var:preset|shadow|${ slug }` : newValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasShadow = () => !! value?.shadow;\n\tconst resetShadow = () => setShadow( undefined );\n\n\tconst resetBorder = () => {\n\t\tif ( hasBorderRadius() ) {\n\t\t\treturn setBorder( { radius: value?.border?.radius } );\n\t\t}\n\n\t\tsetBorder( undefined );\n\t};\n\n\tconst onBorderChange = ( newBorder ) => {\n\t\t// Ensure we have a visible border style when a border width or\n\t\t// color is being selected.\n\t\tconst updatedBorder = { ...newBorder };\n\n\t\tif ( hasSplitBorders( updatedBorder ) ) {\n\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\tif ( updatedBorder[ side ] ) {\n\t\t\t\t\tupdatedBorder[ side ] = {\n\t\t\t\t\t\t...updatedBorder[ side ],\n\t\t\t\t\t\tcolor: encodeColorValue( updatedBorder[ side ]?.color ),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t} else if ( updatedBorder ) {\n\t\t\tupdatedBorder.color = encodeColorValue( updatedBorder.color );\n\t\t}\n\n\t\t// As radius is maintained separately to color, style, and width\n\t\t// maintain its value. Undefined values here will be cleaned when\n\t\t// global styles are saved.\n\t\tsetBorder( { radius: border?.radius, ...updatedBorder } );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tborder: undefined,\n\t\t\tshadow: undefined,\n\t\t};\n\t}, [] );\n\n\tconst showBorderByDefault =\n\t\tdefaultControls?.color || defaultControls?.width;\n\n\tconst hasBorderControl =\n\t\tshowBorderColor ||\n\t\tshowBorderStyle ||\n\t\tshowBorderWidth ||\n\t\tshowBorderRadius;\n\n\tconst label = useBorderPanelLabel( {\n\t\tblockName: name,\n\t\thasShadowControl,\n\t\thasBorderControl,\n\t} );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t\tlabel={ label }\n\t\t>\n\t\t\t{ ( showBorderWidth || showBorderColor ) && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => isDefinedBorder( value?.border ) }\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\tonDeselect={ () => resetBorder() }\n\t\t\t\t\tisShownByDefault={ showBorderByDefault }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BorderBoxControl\n\t\t\t\t\t\tcolors={ colors }\n\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t\tenableStyle={ showBorderStyle }\n\t\t\t\t\t\tonChange={ onBorderChange }\n\t\t\t\t\t\tpopoverOffset={ 40 }\n\t\t\t\t\t\tpopoverPlacement=\"left-start\"\n\t\t\t\t\t\tvalue={ border }\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\thideLabelFromVision={ ! hasShadowControl }\n\t\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showBorderRadius && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasBorderRadius }\n\t\t\t\t\tlabel={ __( 'Radius' ) }\n\t\t\t\t\tonDeselect={ () => setBorderRadius( undefined ) }\n\t\t\t\t\tisShownByDefault={ defaultControls.radius }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BorderRadiusControl\n\t\t\t\t\t\tpresets={ settings?.border?.radiusSizes }\n\t\t\t\t\t\tvalues={ borderRadiusValues }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tsetBorderRadius( newValue || undefined );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasShadowControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Shadow' ) }\n\t\t\t\t\thasValue={ hasShadow }\n\t\t\t\t\tonDeselect={ resetShadow }\n\t\t\t\t\tisShownByDefault={ defaultControls.shadow }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ hasBorderControl ? (\n\t\t\t\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t\t\t\t{ __( 'Shadow' ) }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t) : null }\n\n\t\t\t\t\t<ShadowPopover\n\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\tonShadowChange={ setShadow }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -22,7 +22,7 @@ const EMPTY_CONFIG = {
22
22
  settings: {},
23
23
  styles: {}
24
24
  };
25
- const VALID_SETTINGS = ['appearanceTools', 'useRootPaddingAwareAlignments', 'background.backgroundImage', 'background.backgroundRepeat', 'background.backgroundSize', 'background.backgroundPosition', 'border.color', 'border.radius', 'border.style', 'border.width', 'shadow.presets', 'shadow.defaultPresets', 'color.background', 'color.button', 'color.caption', 'color.custom', 'color.customDuotone', 'color.customGradient', 'color.defaultDuotone', 'color.defaultGradients', 'color.defaultPalette', 'color.duotone', 'color.gradients', 'color.heading', 'color.link', 'color.palette', 'color.text', 'custom', 'dimensions.aspectRatio', 'dimensions.minHeight', 'layout.contentSize', 'layout.definitions', 'layout.wideSize', 'lightbox.enabled', 'lightbox.allowEditing', 'position.fixed', 'position.sticky', 'spacing.customSpacingSize', 'spacing.defaultSpacingSizes', 'spacing.spacingSizes', 'spacing.spacingScale', 'spacing.blockGap', 'spacing.margin', 'spacing.padding', 'spacing.units', 'typography.fluid', 'typography.customFontSize', 'typography.defaultFontSizes', 'typography.dropCap', 'typography.fontFamilies', 'typography.fontSizes', 'typography.fontStyle', 'typography.fontWeight', 'typography.letterSpacing', 'typography.lineHeight', 'typography.textAlign', 'typography.textColumns', 'typography.textDecoration', 'typography.textTransform', 'typography.writingMode'];
25
+ const VALID_SETTINGS = ['appearanceTools', 'useRootPaddingAwareAlignments', 'background.backgroundImage', 'background.backgroundRepeat', 'background.backgroundSize', 'background.backgroundPosition', 'border.color', 'border.radius', 'border.style', 'border.width', 'border.radiusSizes', 'shadow.presets', 'shadow.defaultPresets', 'color.background', 'color.button', 'color.caption', 'color.custom', 'color.customDuotone', 'color.customGradient', 'color.defaultDuotone', 'color.defaultGradients', 'color.defaultPalette', 'color.duotone', 'color.gradients', 'color.heading', 'color.link', 'color.palette', 'color.text', 'custom', 'dimensions.aspectRatio', 'dimensions.minHeight', 'layout.contentSize', 'layout.definitions', 'layout.wideSize', 'lightbox.enabled', 'lightbox.allowEditing', 'position.fixed', 'position.sticky', 'spacing.customSpacingSize', 'spacing.defaultSpacingSizes', 'spacing.spacingSizes', 'spacing.spacingScale', 'spacing.blockGap', 'spacing.margin', 'spacing.padding', 'spacing.units', 'typography.fluid', 'typography.customFontSize', 'typography.defaultFontSizes', 'typography.dropCap', 'typography.fontFamilies', 'typography.fontSizes', 'typography.fontStyle', 'typography.fontWeight', 'typography.letterSpacing', 'typography.lineHeight', 'typography.textAlign', 'typography.textColumns', 'typography.textDecoration', 'typography.textTransform', 'typography.writingMode'];
26
26
  export const useGlobalStylesReset = () => {
27
27
  const {
28
28
  user,