@wordpress/block-editor 15.0.1-next.46f643fa0.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 (102) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-settings-menu/block-settings-dropdown.js +6 -2
  3. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  4. package/build/components/block-toolbar/block-toolbar-menu.native.js +2 -2
  5. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  6. package/build/components/border-radius-control/constants.js +41 -0
  7. package/build/components/border-radius-control/constants.js.map +1 -0
  8. package/build/components/border-radius-control/index.js +49 -58
  9. package/build/components/border-radius-control/index.js.map +1 -1
  10. package/build/components/border-radius-control/linked-button.js +1 -1
  11. package/build/components/border-radius-control/linked-button.js.map +1 -1
  12. package/build/components/border-radius-control/single-input-control.js +204 -0
  13. package/build/components/border-radius-control/single-input-control.js.map +1 -0
  14. package/build/components/border-radius-control/utils.js +161 -4
  15. package/build/components/border-radius-control/utils.js.map +1 -1
  16. package/build/components/global-styles/border-panel.js +12 -1
  17. package/build/components/global-styles/border-panel.js.map +1 -1
  18. package/build/components/global-styles/hooks.js +1 -1
  19. package/build/components/global-styles/hooks.js.map +1 -1
  20. package/build/components/global-styles/utils.js +5 -3
  21. package/build/components/global-styles/utils.js.map +1 -1
  22. package/build/components/rich-text/index.js +9 -4
  23. package/build/components/rich-text/index.js.map +1 -1
  24. package/build/components/rich-text/use-format-types.js +19 -8
  25. package/build/components/rich-text/use-format-types.js.map +1 -1
  26. package/build/components/url-popover/image-url-input-ui.js +2 -1
  27. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  28. package/build/hooks/duotone.js +2 -2
  29. package/build/hooks/duotone.js.map +1 -1
  30. package/build/hooks/utils.js +4 -3
  31. package/build/hooks/utils.js.map +1 -1
  32. package/build/private-apis.js +2 -1
  33. package/build/private-apis.js.map +1 -1
  34. package/build/store/private-keys.js +2 -1
  35. package/build/store/private-keys.js.map +1 -1
  36. package/build-module/components/block-settings-menu/block-settings-dropdown.js +6 -2
  37. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  38. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -3
  39. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  40. package/build-module/components/border-radius-control/constants.js +34 -0
  41. package/build-module/components/border-radius-control/constants.js.map +1 -0
  42. package/build-module/components/border-radius-control/index.js +53 -62
  43. package/build-module/components/border-radius-control/index.js.map +1 -1
  44. package/build-module/components/border-radius-control/linked-button.js +1 -1
  45. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  46. package/build-module/components/border-radius-control/single-input-control.js +197 -0
  47. package/build-module/components/border-radius-control/single-input-control.js.map +1 -0
  48. package/build-module/components/border-radius-control/utils.js +154 -4
  49. package/build-module/components/border-radius-control/utils.js.map +1 -1
  50. package/build-module/components/global-styles/border-panel.js +12 -1
  51. package/build-module/components/global-styles/border-panel.js.map +1 -1
  52. package/build-module/components/global-styles/hooks.js +1 -1
  53. package/build-module/components/global-styles/hooks.js.map +1 -1
  54. package/build-module/components/global-styles/utils.js +5 -3
  55. package/build-module/components/global-styles/utils.js.map +1 -1
  56. package/build-module/components/rich-text/index.js +9 -4
  57. package/build-module/components/rich-text/index.js.map +1 -1
  58. package/build-module/components/rich-text/use-format-types.js +19 -8
  59. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  60. package/build-module/components/url-popover/image-url-input-ui.js +2 -1
  61. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  62. package/build-module/hooks/duotone.js +3 -3
  63. package/build-module/hooks/duotone.js.map +1 -1
  64. package/build-module/hooks/utils.js +4 -3
  65. package/build-module/hooks/utils.js.map +1 -1
  66. package/build-module/private-apis.js +3 -2
  67. package/build-module/private-apis.js.map +1 -1
  68. package/build-module/store/private-keys.js +1 -0
  69. package/build-module/store/private-keys.js.map +1 -1
  70. package/build-style/style-rtl.css +17 -23
  71. package/build-style/style.css +17 -23
  72. package/package.json +34 -34
  73. package/src/components/block-settings-menu/block-settings-dropdown.js +22 -14
  74. package/src/components/block-toolbar/block-toolbar-menu.native.js +3 -3
  75. package/src/components/block-variation-transforms/style.scss +1 -0
  76. package/src/components/border-radius-control/constants.js +46 -0
  77. package/src/components/border-radius-control/index.js +71 -72
  78. package/src/components/border-radius-control/linked-button.js +1 -1
  79. package/src/components/border-radius-control/single-input-control.js +277 -0
  80. package/src/components/border-radius-control/style.scss +16 -21
  81. package/src/components/border-radius-control/utils.js +178 -5
  82. package/src/components/global-styles/border-panel.js +12 -1
  83. package/src/components/global-styles/hooks.js +1 -0
  84. package/src/components/global-styles/utils.js +6 -1
  85. package/src/components/media-replace-flow/style.scss +0 -6
  86. package/src/components/rich-text/index.js +19 -10
  87. package/src/components/rich-text/use-format-types.js +42 -19
  88. package/src/components/url-popover/image-url-input-ui.js +2 -1
  89. package/src/hooks/duotone.js +11 -3
  90. package/src/hooks/utils.js +4 -0
  91. package/src/private-apis.js +2 -0
  92. package/src/store/private-keys.js +1 -0
  93. package/build/components/border-radius-control/all-input-control.js +0 -65
  94. package/build/components/border-radius-control/all-input-control.js.map +0 -1
  95. package/build/components/border-radius-control/input-controls.js +0 -82
  96. package/build/components/border-radius-control/input-controls.js.map +0 -1
  97. package/build-module/components/border-radius-control/all-input-control.js +0 -58
  98. package/build-module/components/border-radius-control/all-input-control.js.map +0 -1
  99. package/build-module/components/border-radius-control/input-controls.js +0 -75
  100. package/build-module/components/border-radius-control/input-controls.js.map +0 -1
  101. package/src/components/border-radius-control/all-input-control.js +0 -67
  102. package/src/components/border-radius-control/input-controls.js +0 -91
@@ -19,7 +19,7 @@ function LinkedButton({
19
19
  const label = isLinked ? (0, _i18n.__)('Unlink radii') : (0, _i18n.__)('Link radii');
20
20
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
21
21
  ...props,
22
- className: "component-border-radius-control__linked-button",
22
+ className: "components-border-radius-control__linked-button",
23
23
  size: "small",
24
24
  icon: isLinked ? _icons.link : _icons.linkOff,
25
25
  iconSize: 24,
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_icons","_i18n","_jsxRuntime","LinkedButton","isLinked","props","label","__","jsx","Button","className","size","icon","link","linkOff","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":";;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAAqC,IAAAG,WAAA,GAAAH,OAAA;AALrC;AACA;AACA;;AAKe,SAASI,YAAYA,CAAE;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAG;EAC9D,MAAMC,KAAK,GAAGF,QAAQ,GAAG,IAAAG,QAAE,EAAE,cAAe,CAAC,GAAG,IAAAA,QAAE,EAAE,YAAa,CAAC;EAElE,oBACC,IAAAL,WAAA,CAAAM,GAAA,EAACV,WAAA,CAAAW,MAAM;IAAA,GACDJ,KAAK;IACVK,SAAS,EAAC,gDAAgD;IAC1DC,IAAI,EAAC,OAAO;IACZC,IAAI,EAAGR,QAAQ,GAAGS,WAAI,GAAGC,cAAS;IAClCC,QAAQ,EAAG,EAAI;IACfT,KAAK,EAAGA;EAAO,CACf,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_icons","_i18n","_jsxRuntime","LinkedButton","isLinked","props","label","__","jsx","Button","className","size","icon","link","linkOff","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":";;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAAqC,IAAAG,WAAA,GAAAH,OAAA;AALrC;AACA;AACA;;AAKe,SAASI,YAAYA,CAAE;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAG;EAC9D,MAAMC,KAAK,GAAGF,QAAQ,GAAG,IAAAG,QAAE,EAAE,cAAe,CAAC,GAAG,IAAAA,QAAE,EAAE,YAAa,CAAC;EAElE,oBACC,IAAAL,WAAA,CAAAM,GAAA,EAACV,WAAA,CAAAW,MAAM;IAAA,GACDJ,KAAK;IACVK,SAAS,EAAC,iDAAiD;IAC3DC,IAAI,EAAC,OAAO;IACZC,IAAI,EAAGR,QAAQ,GAAGS,WAAI,GAAGC,cAAS;IAClCC,QAAQ,EAAG,EAAI;IACfT,KAAK,EAAGA;EAAO,CACf,CAAC;AAEJ","ignoreList":[]}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = SingleInputControl;
7
+ var _components = require("@wordpress/components");
8
+ var _i18n = require("@wordpress/i18n");
9
+ var _element = require("@wordpress/element");
10
+ var _icons = require("@wordpress/icons");
11
+ var _utils = require("./utils");
12
+ var _constants = require("./constants");
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ /**
15
+ * WordPress dependencies
16
+ */
17
+
18
+ /**
19
+ * Internal dependencies
20
+ */
21
+
22
+ function SingleInputControl({
23
+ corner,
24
+ onChange,
25
+ selectedUnits,
26
+ setSelectedUnits,
27
+ values: valuesProp,
28
+ units,
29
+ presets
30
+ }) {
31
+ const changeCornerValue = validatedValue => {
32
+ if (corner === 'all') {
33
+ onChange({
34
+ topLeft: validatedValue,
35
+ topRight: validatedValue,
36
+ bottomLeft: validatedValue,
37
+ bottomRight: validatedValue
38
+ });
39
+ } else {
40
+ onChange({
41
+ ...values,
42
+ [corner]: validatedValue
43
+ });
44
+ }
45
+ };
46
+ const onChangeValue = next => {
47
+ if (!onChange) {
48
+ return;
49
+ }
50
+
51
+ // Filter out CSS-unit-only values to prevent invalid styles.
52
+ const isNumeric = !isNaN(parseFloat(next));
53
+ const nextValue = isNumeric ? next : undefined;
54
+ changeCornerValue(nextValue);
55
+ };
56
+ const onChangeUnit = next => {
57
+ const newUnits = {
58
+ ...selectedUnits
59
+ };
60
+ if (corner === 'all') {
61
+ newUnits.topLeft = next;
62
+ newUnits.topRight = next;
63
+ newUnits.bottomLeft = next;
64
+ newUnits.bottomRight = next;
65
+ } else {
66
+ newUnits[corner] = next;
67
+ }
68
+ setSelectedUnits(newUnits);
69
+ };
70
+
71
+ // For shorthand style & backwards compatibility, handle flat string value.
72
+ const values = typeof valuesProp !== 'string' ? valuesProp : {
73
+ topLeft: valuesProp,
74
+ topRight: valuesProp,
75
+ bottomLeft: valuesProp,
76
+ bottomRight: valuesProp
77
+ };
78
+
79
+ // For 'all' corner, convert presets to custom values before calling getAllValue
80
+ // For individual corners, check if the value should be converted to a preset
81
+ let value;
82
+ if (corner === 'all') {
83
+ const convertedValues = (0, _utils.convertPresetsToCustomValues)(values, presets);
84
+ const customValue = (0, _utils.getAllValue)(convertedValues);
85
+ value = (0, _utils.getPresetValueFromCustomValue)(customValue, presets);
86
+ } else {
87
+ value = (0, _utils.getPresetValueFromCustomValue)(values[corner], presets);
88
+ }
89
+ const resolvedPresetValue = (0, _utils.isValuePreset)(value) ? (0, _utils.getCustomValueFromPreset)(value, presets) : value;
90
+ const [parsedQuantity, parsedUnit] = (0, _components.__experimentalParseQuantityAndUnitFromRawValue)(resolvedPresetValue);
91
+ const computedUnit = value ? parsedUnit : selectedUnits[corner] || selectedUnits.flat || 'px';
92
+ const unitConfig = units && units.find(item => item.value === computedUnit);
93
+ const step = unitConfig?.step || 1;
94
+ const [showCustomValueControl, setShowCustomValueControl] = (0, _element.useState)(value !== undefined && !(0, _utils.isValuePreset)(value));
95
+ const showRangeControl = presets.length <= _constants.RANGE_CONTROL_MAX_SIZE;
96
+ const presetIndex = (0, _utils.getSliderValueFromPreset)(value, presets);
97
+ const rangeTooltip = newValue => value === undefined ? undefined : presets[newValue]?.name;
98
+ const marks = presets.slice(1, presets.length - 1).map((_newValue, index) => ({
99
+ value: index + 1,
100
+ label: undefined
101
+ }));
102
+ const hasPresets = marks.length > 0;
103
+ let options = [];
104
+ if (!showRangeControl) {
105
+ options = [...presets, {
106
+ name: (0, _i18n.__)('Custom'),
107
+ slug: 'custom',
108
+ size: resolvedPresetValue
109
+ }].map((size, index) => ({
110
+ key: index,
111
+ name: size.name
112
+ }));
113
+ }
114
+ const icon = _constants.ICONS[corner];
115
+ const handleSliderChange = next => {
116
+ const val = next !== undefined ? `${next}${computedUnit}` : undefined;
117
+ changeCornerValue(val);
118
+ };
119
+
120
+ // Controls are wrapped in tooltips as visible labels aren't desired here.
121
+ // Tooltip rendering also requires the UnitControl to be wrapped. See:
122
+ // https://github.com/WordPress/gutenberg/pull/24966#issuecomment-685875026
123
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
124
+ children: [icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Icon, {
125
+ className: "components-border-radius-control__icon",
126
+ icon: icon,
127
+ size: 24
128
+ }), (!hasPresets || showCustomValueControl) && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
129
+ className: "components-border-radius-control__input-controls-wrapper",
130
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Tooltip, {
131
+ text: _constants.CORNERS[corner],
132
+ placement: "top",
133
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
134
+ className: "components-border-radius-control__tooltip-wrapper",
135
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalUnitControl, {
136
+ className: "components-border-radius-control__unit-control",
137
+ "aria-label": _constants.CORNERS[corner],
138
+ value: [parsedQuantity, computedUnit].join(''),
139
+ onChange: onChangeValue,
140
+ onUnitChange: onChangeUnit,
141
+ size: "__unstable-large",
142
+ min: _constants.MIN_BORDER_RADIUS_VALUE,
143
+ units: units
144
+ })
145
+ })
146
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.RangeControl, {
147
+ __next40pxDefaultSize: true,
148
+ label: (0, _i18n.__)('Border radius'),
149
+ hideLabelFromVision: true,
150
+ className: "components-border-radius-control__range-control",
151
+ value: parsedQuantity !== null && parsedQuantity !== void 0 ? parsedQuantity : '',
152
+ min: _constants.MIN_BORDER_RADIUS_VALUE,
153
+ max: _constants.MAX_BORDER_RADIUS_VALUES[computedUnit],
154
+ initialPosition: 0,
155
+ withInputField: false,
156
+ onChange: handleSliderChange,
157
+ step: step,
158
+ __nextHasNoMarginBottom: true
159
+ })]
160
+ }), hasPresets && showRangeControl && !showCustomValueControl && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.RangeControl, {
161
+ __next40pxDefaultSize: true,
162
+ className: "components-border-radius-control__range-control",
163
+ value: presetIndex,
164
+ onChange: newSize => {
165
+ changeCornerValue((0, _utils.getPresetValueFromControlValue)(newSize, 'range', presets));
166
+ },
167
+ withInputField: false,
168
+ "aria-valuenow": presetIndex,
169
+ "aria-valuetext": presets[presetIndex]?.name,
170
+ renderTooltipContent: rangeTooltip,
171
+ min: 0,
172
+ max: presets.length - 1,
173
+ marks: marks,
174
+ label: _constants.CORNERS[corner],
175
+ hideLabelFromVision: true,
176
+ __nextHasNoMarginBottom: true
177
+ }), !showRangeControl && !showCustomValueControl && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.CustomSelectControl, {
178
+ className: "components-border-radius-control__custom-select-control",
179
+ value: options.find(option => option.key === presetIndex) || options[options.length - 1],
180
+ onChange: selection => {
181
+ if (selection.selectedItem.key === options.length - 1) {
182
+ setShowCustomValueControl(true);
183
+ } else {
184
+ changeCornerValue((0, _utils.getPresetValueFromControlValue)(selection.selectedItem.key, 'selectList', presets));
185
+ }
186
+ },
187
+ options: options,
188
+ label: _constants.CORNERS[corner],
189
+ hideLabelFromVision: true,
190
+ size: "__unstable-large"
191
+ }), hasPresets && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
192
+ label: showCustomValueControl ? (0, _i18n.__)('Use border radius preset') : (0, _i18n.__)('Set custom border radius'),
193
+ icon: _icons.settings,
194
+ onClick: () => {
195
+ setShowCustomValueControl(!showCustomValueControl);
196
+ },
197
+ isPressed: showCustomValueControl,
198
+ size: "small",
199
+ className: "components-border-radius-control__custom-toggle",
200
+ iconSize: 24
201
+ })]
202
+ });
203
+ }
204
+ //# sourceMappingURL=single-input-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_components","require","_i18n","_element","_icons","_utils","_constants","_jsxRuntime","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","convertPresetsToCustomValues","customValue","getAllValue","getPresetValueFromCustomValue","resolvedPresetValue","isValuePreset","getCustomValueFromPreset","parsedQuantity","parsedUnit","parseQuantityAndUnitFromRawValue","computedUnit","flat","unitConfig","find","item","step","showCustomValueControl","setShowCustomValueControl","useState","showRangeControl","length","RANGE_CONTROL_MAX_SIZE","presetIndex","getSliderValueFromPreset","rangeTooltip","newValue","name","marks","slice","map","_newValue","index","label","hasPresets","options","__","slug","size","key","icon","ICONS","handleSliderChange","val","jsxs","__experimentalHStack","children","jsx","Icon","className","Tooltip","text","CORNERS","placement","__experimentalUnitControl","join","onUnitChange","min","MIN_BORDER_RADIUS_VALUE","RangeControl","__next40pxDefaultSize","hideLabelFromVision","max","MAX_BORDER_RADIUS_VALUES","initialPosition","withInputField","__nextHasNoMarginBottom","newSize","getPresetValueFromControlValue","renderTooltipContent","CustomSelectControl","option","selection","selectedItem","Button","settings","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":";;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAUA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAKA,IAAAI,MAAA,GAAAJ,OAAA;AASA,IAAAK,UAAA,GAAAL,OAAA;AAMqB,IAAAM,WAAA,GAAAN,OAAA;AAnCrB;AACA;AACA;;AAeA;AACA;AACA;;AAkBe,SAASO,kBAAkBA,CAAE;EAC3CC,MAAM;EACNC,QAAQ;EACRC,aAAa;EACbC,gBAAgB;EAChBC,MAAM,EAAEC,UAAU;EAClBC,KAAK;EACLC;AACD,CAAC,EAAG;EACH,MAAMC,iBAAiB,GAAKC,cAAc,IAAM;IAC/C,IAAKT,MAAM,KAAK,KAAK,EAAG;MACvBC,QAAQ,CAAE;QACTS,OAAO,EAAED,cAAc;QACvBE,QAAQ,EAAEF,cAAc;QACxBG,UAAU,EAAEH,cAAc;QAC1BI,WAAW,EAAEJ;MACd,CAAE,CAAC;IACJ,CAAC,MAAM;MACNR,QAAQ,CAAE;QACT,GAAGG,MAAM;QACT,CAAEJ,MAAM,GAAIS;MACb,CAAE,CAAC;IACJ;EACD,CAAC;EAED,MAAMK,aAAa,GAAKC,IAAI,IAAM;IACjC,IAAK,CAAEd,QAAQ,EAAG;MACjB;IACD;;IAEA;IACA,MAAMe,SAAS,GAAG,CAAEC,KAAK,CAAEC,UAAU,CAAEH,IAAK,CAAE,CAAC;IAC/C,MAAMI,SAAS,GAAGH,SAAS,GAAGD,IAAI,GAAGK,SAAS;IAC9CZ,iBAAiB,CAAEW,SAAU,CAAC;EAC/B,CAAC;EAED,MAAME,YAAY,GAAKN,IAAI,IAAM;IAChC,MAAMO,QAAQ,GAAG;MAAE,GAAGpB;IAAc,CAAC;IACrC,IAAKF,MAAM,KAAK,KAAK,EAAG;MACvBsB,QAAQ,CAACZ,OAAO,GAAGK,IAAI;MACvBO,QAAQ,CAACX,QAAQ,GAAGI,IAAI;MACxBO,QAAQ,CAACV,UAAU,GAAGG,IAAI;MAC1BO,QAAQ,CAACT,WAAW,GAAGE,IAAI;IAC5B,CAAC,MAAM;MACNO,QAAQ,CAAEtB,MAAM,CAAE,GAAGe,IAAI;IAC1B;IACAZ,gBAAgB,CAAEmB,QAAS,CAAC;EAC7B,CAAC;;EAED;EACA,MAAMlB,MAAM,GACX,OAAOC,UAAU,KAAK,QAAQ,GAC3BA,UAAU,GACV;IACAK,OAAO,EAAEL,UAAU;IACnBM,QAAQ,EAAEN,UAAU;IACpBO,UAAU,EAAEP,UAAU;IACtBQ,WAAW,EAAER;EACb,CAAC;;EAEL;EACA;EACA,IAAIkB,KAAK;EACT,IAAKvB,MAAM,KAAK,KAAK,EAAG;IACvB,MAAMwB,eAAe,GAAG,IAAAC,mCAA4B,EAAErB,MAAM,EAAEG,OAAQ,CAAC;IACvE,MAAMmB,WAAW,GAAG,IAAAC,kBAAW,EAAEH,eAAgB,CAAC;IAClDD,KAAK,GAAG,IAAAK,oCAA6B,EAAEF,WAAW,EAAEnB,OAAQ,CAAC;EAC9D,CAAC,MAAM;IACNgB,KAAK,GAAG,IAAAK,oCAA6B,EAAExB,MAAM,CAAEJ,MAAM,CAAE,EAAEO,OAAQ,CAAC;EACnE;EACA,MAAMsB,mBAAmB,GAAG,IAAAC,oBAAa,EAAEP,KAAM,CAAC,GAC/C,IAAAQ,+BAAwB,EAAER,KAAK,EAAEhB,OAAQ,CAAC,GAC1CgB,KAAK;EACR,MAAM,CAAES,cAAc,EAAEC,UAAU,CAAE,GACnC,IAAAC,0DAAgC,EAAEL,mBAAoB,CAAC;EACxD,MAAMM,YAAY,GAAGZ,KAAK,GACvBU,UAAU,GACV/B,aAAa,CAAEF,MAAM,CAAE,IAAIE,aAAa,CAACkC,IAAI,IAAI,IAAI;EACxD,MAAMC,UAAU,GACf/B,KAAK,IAAIA,KAAK,CAACgC,IAAI,CAAIC,IAAI,IAAMA,IAAI,CAAChB,KAAK,KAAKY,YAAa,CAAC;EAC/D,MAAMK,IAAI,GAAGH,UAAU,EAAEG,IAAI,IAAI,CAAC;EAClC,MAAM,CAAEC,sBAAsB,EAAEC,yBAAyB,CAAE,GAAG,IAAAC,iBAAQ,EACrEpB,KAAK,KAAKH,SAAS,IAAI,CAAE,IAAAU,oBAAa,EAAEP,KAAM,CAC/C,CAAC;EACD,MAAMqB,gBAAgB,GAAGrC,OAAO,CAACsC,MAAM,IAAIC,iCAAsB;EACjE,MAAMC,WAAW,GAAG,IAAAC,+BAAwB,EAAEzB,KAAK,EAAEhB,OAAQ,CAAC;EAC9D,MAAM0C,YAAY,GAAKC,QAAQ,IAC9B3B,KAAK,KAAKH,SAAS,GAAGA,SAAS,GAAGb,OAAO,CAAE2C,QAAQ,CAAE,EAAEC,IAAI;EAC5D,MAAMC,KAAK,GAAG7C,OAAO,CACnB8C,KAAK,CAAE,CAAC,EAAE9C,OAAO,CAACsC,MAAM,GAAG,CAAE,CAAC,CAC9BS,GAAG,CAAE,CAAEC,SAAS,EAAEC,KAAK,MAAQ;IAC/BjC,KAAK,EAAEiC,KAAK,GAAG,CAAC;IAChBC,KAAK,EAAErC;EACR,CAAC,CAAG,CAAC;EACN,MAAMsC,UAAU,GAAGN,KAAK,CAACP,MAAM,GAAG,CAAC;EACnC,IAAIc,OAAO,GAAG,EAAE;EAChB,IAAK,CAAEf,gBAAgB,EAAG;IACzBe,OAAO,GAAG,CACT,GAAGpD,OAAO,EACV;MACC4C,IAAI,EAAE,IAAAS,QAAE,EAAE,QAAS,CAAC;MACpBC,IAAI,EAAE,QAAQ;MACdC,IAAI,EAAEjC;IACP,CAAC,CACD,CAACyB,GAAG,CAAE,CAAEQ,IAAI,EAAEN,KAAK,MAAQ;MAC3BO,GAAG,EAAEP,KAAK;MACVL,IAAI,EAAEW,IAAI,CAACX;IACZ,CAAC,CAAG,CAAC;EACN;EACA,MAAMa,IAAI,GAAGC,gBAAK,CAAEjE,MAAM,CAAE;EAE5B,MAAMkE,kBAAkB,GAAKnD,IAAI,IAAM;IACtC,MAAMoD,GAAG,GACRpD,IAAI,KAAKK,SAAS,GAAG,GAAIL,IAAI,GAAKoB,YAAY,EAAG,GAAGf,SAAS;IAC9DZ,iBAAiB,CAAE2D,GAAI,CAAC;EACzB,CAAC;;EAED;EACA;EACA;EACA,oBACC,IAAArE,WAAA,CAAAsE,IAAA,EAAC7E,WAAA,CAAA8E,oBAAM;IAAAC,QAAA,GACJN,IAAI,iBACL,IAAAlE,WAAA,CAAAyE,GAAA,EAAChF,WAAA,CAAAiF,IAAI;MACJC,SAAS,EAAC,wCAAwC;MAClDT,IAAI,EAAGA,IAAM;MACbF,IAAI,EAAG;IAAI,CACX,CACD,EACC,CAAE,CAAEJ,UAAU,IAAIjB,sBAAsB,kBACzC,IAAA3C,WAAA,CAAAsE,IAAA;MAAKK,SAAS,EAAC,0DAA0D;MAAAH,QAAA,gBACxE,IAAAxE,WAAA,CAAAyE,GAAA,EAAChF,WAAA,CAAAmF,OAAO;QAACC,IAAI,EAAGC,kBAAO,CAAE5E,MAAM,CAAI;QAAC6E,SAAS,EAAC,KAAK;QAAAP,QAAA,eAClD,IAAAxE,WAAA,CAAAyE,GAAA;UAAKE,SAAS,EAAC,mDAAmD;UAAAH,QAAA,eACjE,IAAAxE,WAAA,CAAAyE,GAAA,EAAChF,WAAA,CAAAuF,yBAAW;YACXL,SAAS,EAAC,gDAAgD;YAC1D,cAAaG,kBAAO,CAAE5E,MAAM,CAAI;YAChCuB,KAAK,EAAG,CAAES,cAAc,EAAEG,YAAY,CAAE,CAAC4C,IAAI,CAC5C,EACD,CAAG;YACH9E,QAAQ,EAAGa,aAAe;YAC1BkE,YAAY,EAAG3D,YAAc;YAC7ByC,IAAI,EAAC,kBAAkB;YACvBmB,GAAG,EAAGC,kCAAyB;YAC/B5E,KAAK,EAAGA;UAAO,CACf;QAAC,CACE;MAAC,CACE,CAAC,eACV,IAAAR,WAAA,CAAAyE,GAAA,EAAChF,WAAA,CAAA4F,YAAY;QACZC,qBAAqB;QACrB3B,KAAK,EAAG,IAAAG,QAAE,EAAE,eAAgB,CAAG;QAC/ByB,mBAAmB;QACnBZ,SAAS,EAAC,iDAAiD;QAC3DlD,KAAK,EAAGS,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,EAAI;QAC9BiD,GAAG,EAAGC,kCAAyB;QAC/BI,GAAG,EAAGC,mCAAwB,CAAEpD,YAAY,CAAI;QAChDqD,eAAe,EAAG,CAAG;QACrBC,cAAc,EAAG,KAAO;QACxBxF,QAAQ,EAAGiE,kBAAoB;QAC/B1B,IAAI,EAAGA,IAAM;QACbkD,uBAAuB;MAAA,CACvB,CAAC;IAAA,CACE,CACL,EACChC,UAAU,IAAId,gBAAgB,IAAI,CAAEH,sBAAsB,iBAC3D,IAAA3C,WAAA,CAAAyE,GAAA,EAAChF,WAAA,CAAA4F,YAAY;MACZC,qBAAqB;MACrBX,SAAS,EAAC,iDAAiD;MAC3DlD,KAAK,EAAGwB,WAAa;MACrB9C,QAAQ,EAAK0F,OAAO,IAAM;QACzBnF,iBAAiB,CAChB,IAAAoF,qCAA8B,EAC7BD,OAAO,EACP,OAAO,EACPpF,OACD,CACD,CAAC;MACF,CAAG;MACHkF,cAAc,EAAG,KAAO;MACxB,iBAAgB1C,WAAa;MAC7B,kBAAiBxC,OAAO,CAAEwC,WAAW,CAAE,EAAEI,IAAM;MAC/C0C,oBAAoB,EAAG5C,YAAc;MACrCgC,GAAG,EAAG,CAAG;MACTK,GAAG,EAAG/E,OAAO,CAACsC,MAAM,GAAG,CAAG;MAC1BO,KAAK,EAAGA,KAAO;MACfK,KAAK,EAAGmB,kBAAO,CAAE5E,MAAM,CAAI;MAC3BqF,mBAAmB;MACnBK,uBAAuB;IAAA,CACvB,CACD,EAEC,CAAE9C,gBAAgB,IAAI,CAAEH,sBAAsB,iBAC/C,IAAA3C,WAAA,CAAAyE,GAAA,EAAChF,WAAA,CAAAuG,mBAAmB;MACnBrB,SAAS,EAAC,yDAAyD;MACnElD,KAAK,EACJoC,OAAO,CAACrB,IAAI,CACTyD,MAAM,IAAMA,MAAM,CAAChC,GAAG,KAAKhB,WAC9B,CAAC,IAAIY,OAAO,CAAEA,OAAO,CAACd,MAAM,GAAG,CAAC,CAChC;MACD5C,QAAQ,EAAK+F,SAAS,IAAM;QAC3B,IACCA,SAAS,CAACC,YAAY,CAAClC,GAAG,KAC1BJ,OAAO,CAACd,MAAM,GAAG,CAAC,EACjB;UACDH,yBAAyB,CAAE,IAAK,CAAC;QAClC,CAAC,MAAM;UACNlC,iBAAiB,CAChB,IAAAoF,qCAA8B,EAC7BI,SAAS,CAACC,YAAY,CAAClC,GAAG,EAC1B,YAAY,EACZxD,OACD,CACD,CAAC;QACF;MACD,CAAG;MACHoD,OAAO,EAAGA,OAAS;MACnBF,KAAK,EAAGmB,kBAAO,CAAE5E,MAAM,CAAI;MAC3BqF,mBAAmB;MACnBvB,IAAI,EAAC;IAAkB,CACvB,CACD,EACCJ,UAAU,iBACX,IAAA5D,WAAA,CAAAyE,GAAA,EAAChF,WAAA,CAAA2G,MAAM;MACNzC,KAAK,EACJhB,sBAAsB,GACnB,IAAAmB,QAAE,EAAE,0BAA2B,CAAC,GAChC,IAAAA,QAAE,EAAE,0BAA2B,CAClC;MACDI,IAAI,EAAGmC,eAAU;MACjBC,OAAO,EAAGA,CAAA,KAAM;QACf1D,yBAAyB,CAAE,CAAED,sBAAuB,CAAC;MACtD,CAAG;MACH4D,SAAS,EAAG5D,sBAAwB;MACpCqB,IAAI,EAAC,OAAO;MACZW,SAAS,EAAC,iDAAiD;MAC3D6B,QAAQ,EAAG;IAAI,CACf,CACD;EAAA,CACM,CAAC;AAEX","ignoreList":[]}
@@ -3,10 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.convertPresetsToCustomValues = convertPresetsToCustomValues;
6
7
  exports.getAllUnit = getAllUnit;
7
8
  exports.getAllValue = getAllValue;
9
+ exports.getCustomValueFromPreset = getCustomValueFromPreset;
10
+ exports.getPresetSlug = getPresetSlug;
11
+ exports.getPresetValueFromControlValue = getPresetValueFromControlValue;
12
+ exports.getPresetValueFromCustomValue = getPresetValueFromCustomValue;
13
+ exports.getSliderValueFromPreset = getSliderValueFromPreset;
8
14
  exports.hasDefinedValues = hasDefinedValues;
9
15
  exports.hasMixedValues = hasMixedValues;
16
+ exports.isValuePreset = isValuePreset;
10
17
  exports.mode = mode;
11
18
  var _components = require("@wordpress/components");
12
19
  /**
@@ -72,7 +79,7 @@ function getAllValue(values = {}) {
72
79
  const allUnits = parsedQuantitiesAndUnits.map(value => value[1]);
73
80
  const value = allValues.every(v => v === allValues[0]) ? allValues[0] : '';
74
81
  const unit = mode(allUnits);
75
- const allValue = value === 0 || value ? `${value}${unit}` : undefined;
82
+ const allValue = value === 0 || value ? `${value}${unit || ''}` : undefined;
76
83
  return allValue;
77
84
  }
78
85
 
@@ -83,9 +90,21 @@ function getAllValue(values = {}) {
83
90
  * @return {boolean} Whether values are mixed.
84
91
  */
85
92
  function hasMixedValues(values = {}) {
86
- const allValue = getAllValue(values);
87
- const isMixed = typeof values === 'string' ? false : isNaN(parseFloat(allValue));
88
- return isMixed;
93
+ if (typeof values === 'string') {
94
+ return false;
95
+ }
96
+ if (!values || typeof values !== 'object') {
97
+ return false;
98
+ }
99
+ const cornerValues = Object.values(values);
100
+ if (cornerValues.length === 0) {
101
+ return false;
102
+ }
103
+ const firstValue = cornerValues[0];
104
+
105
+ // Check if all values are exactly the same (including undefined)
106
+ const allSame = cornerValues.every(value => value === firstValue);
107
+ return !allSame;
89
108
  }
90
109
 
91
110
  /**
@@ -111,4 +130,142 @@ function hasDefinedValues(values) {
111
130
  });
112
131
  return !!filteredValues.length;
113
132
  }
133
+
134
+ /**
135
+ * Checks is given value is a radius preset.
136
+ *
137
+ * @param {string} value Value to check
138
+ *
139
+ * @return {boolean} Return true if value is string in format var:preset|border-radius|.
140
+ */
141
+ function isValuePreset(value) {
142
+ if (!value?.includes) {
143
+ return false;
144
+ }
145
+ return value === '0' || value.includes('var:preset|border-radius|');
146
+ }
147
+
148
+ /**
149
+ * Returns the slug section of the given preset string.
150
+ *
151
+ * @param {string} value Value to extract slug from.
152
+ *
153
+ * @return {string|undefined} The int value of the slug from given preset.
154
+ */
155
+ function getPresetSlug(value) {
156
+ if (!value) {
157
+ return;
158
+ }
159
+ if (value === '0' || value === 'default') {
160
+ return value;
161
+ }
162
+ const slug = value.match(/var:preset\|border-radius\|(.+)/);
163
+ return slug ? slug[1] : undefined;
164
+ }
165
+
166
+ /**
167
+ * Converts radius preset value into a Range component value .
168
+ *
169
+ * @param {string} presetValue Value to convert to Range value.
170
+ * @param {Array} presets Array of current radius preset value objects.
171
+ *
172
+ * @return {number} The int value for use in Range control.
173
+ */
174
+ function getSliderValueFromPreset(presetValue, presets) {
175
+ if (presetValue === undefined) {
176
+ return 0;
177
+ }
178
+ const slug = parseFloat(presetValue, 10) === 0 ? '0' : getPresetSlug(presetValue);
179
+ const sliderValue = presets.findIndex(size => {
180
+ return String(size.slug) === slug;
181
+ });
182
+
183
+ // Returning NaN rather than undefined as undefined makes range control thumb sit in center
184
+ return sliderValue !== -1 ? sliderValue : NaN;
185
+ }
186
+
187
+ /**
188
+ * Converts a preset into a custom value.
189
+ *
190
+ * @param {string} value Value to convert
191
+ * @param {Array} presets Array of the current radius preset objects
192
+ *
193
+ * @return {string} Mapping of the radius preset to its equivalent custom value.
194
+ */
195
+ function getCustomValueFromPreset(value, presets) {
196
+ if (!isValuePreset(value)) {
197
+ return value;
198
+ }
199
+ const slug = parseFloat(value, 10) === 0 ? '0' : getPresetSlug(value);
200
+ const radiusSize = presets.find(size => String(size.slug) === slug);
201
+ return radiusSize?.size;
202
+ }
203
+
204
+ /**
205
+ * Converts a control value into a preset value.
206
+ *
207
+ * @param {number} controlValue to convert to preset value.
208
+ * @param {string} controlType Type of control
209
+ * @param {Array} presets Array of current radius preset value objects.
210
+ *
211
+ * @return {string} The custom value for use in Range control.
212
+ */
213
+ function getPresetValueFromControlValue(controlValue, controlType, presets) {
214
+ const size = parseInt(controlValue, 10);
215
+ if (controlType === 'selectList') {
216
+ if (size === 0) {
217
+ return undefined;
218
+ }
219
+ } else if (size === 0) {
220
+ return '0';
221
+ }
222
+ return `var:preset|border-radius|${presets[controlValue]?.slug}`;
223
+ }
224
+
225
+ /**
226
+ * Converts a custom value to preset value if one can be found.
227
+ *
228
+ * Returns value as-is if no match is found.
229
+ *
230
+ * @param {string} value Value to convert
231
+ * @param {Array} presets Array of the current border radius preset objects
232
+ *
233
+ * @return {string} The preset value if it can be found.
234
+ */
235
+ function getPresetValueFromCustomValue(value, presets) {
236
+ // Return value as-is if it is undefined or is already a preset, or '0';
237
+ if (!value || isValuePreset(value) || value === '0') {
238
+ return value;
239
+ }
240
+ const spacingMatch = presets.find(size => String(size.size) === String(value));
241
+ if (spacingMatch?.slug) {
242
+ return `var:preset|border-radius|${spacingMatch.slug}`;
243
+ }
244
+ return value;
245
+ }
246
+
247
+ /**
248
+ * Converts all preset values in a values object to their custom equivalents.
249
+ *
250
+ * @param {Object} values Values object to convert
251
+ * @param {Array} presets Array of current border radius preset objects
252
+ *
253
+ * @return {Object} Values with presets converted to custom values
254
+ */
255
+ function convertPresetsToCustomValues(values, presets) {
256
+ if (!values || typeof values !== 'object') {
257
+ return values;
258
+ }
259
+ const converted = {};
260
+ Object.keys(values).forEach(key => {
261
+ const value = values[key];
262
+ if (isValuePreset(value)) {
263
+ const customValue = getCustomValueFromPreset(value, presets);
264
+ converted[key] = customValue !== undefined ? customValue : value;
265
+ } else {
266
+ converted[key] = value;
267
+ }
268
+ });
269
+ return converted;
270
+ }
114
271
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","mode","inputArray","arr","sort","a","b","filter","v","length","shift","getAllUnit","selectedUnits","flat","cornerUnits","Object","values","Boolean","getAllValue","parsedQuantitiesAndUnits","map","value","parseQuantityAndUnitFromRawValue","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":"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","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","mode","inputArray","arr","sort","a","b","filter","v","length","shift","getAllUnit","selectedUnits","flat","cornerUnits","Object","values","Boolean","getAllValue","parsedQuantitiesAndUnits","map","value","parseQuantityAndUnitFromRawValue","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":[]}
@@ -134,7 +134,17 @@ function BorderPanel({
134
134
 
135
135
  // Border radius.
136
136
  const showBorderRadius = useHasBorderRadiusControl(settings);
137
- const borderRadiusValues = decodeValue(border?.radius);
137
+ const borderRadiusValues = (0, _element.useMemo)(() => {
138
+ if (typeof border?.radius !== 'object') {
139
+ return decodeValue(border?.radius);
140
+ }
141
+ return {
142
+ topLeft: decodeValue(border?.radius?.topLeft),
143
+ topRight: decodeValue(border?.radius?.topRight),
144
+ bottomLeft: decodeValue(border?.radius?.bottomLeft),
145
+ bottomRight: decodeValue(border?.radius?.bottomRight)
146
+ };
147
+ }, [border?.radius, decodeValue]);
138
148
  const setBorderRadius = newBorderRadius => setBorder({
139
149
  ...border,
140
150
  radius: newBorderRadius
@@ -241,6 +251,7 @@ function BorderPanel({
241
251
  isShownByDefault: defaultControls.radius,
242
252
  panelId: panelId,
243
253
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_borderRadiusControl.default, {
254
+ presets: settings?.border?.radiusSizes,
244
255
  values: borderRadiusValues,
245
256
  onChange: newValue => {
246
257
  setBorderRadius(newValue || undefined);
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_i18n","_borderRadiusControl","_interopRequireDefault","_hooks","_utils","_object","_border","_shadowPanelComponents","_jsxRuntime","useHasBorderPanel","settings","controls","Object","values","useHasBorderPanelControls","some","Boolean","hasBorderColor","useHasBorderColorControl","hasBorderRadius","useHasBorderRadiusControl","hasBorderStyle","useHasBorderStyleControl","hasBorderWidth","useHasBorderWidthControl","hasShadow","useHasShadowControl","border","color","radius","style","width","shadows","useShadowPresets","shadow","length","BorderToolsPanel","resetAllFilter","onChange","value","panelId","children","label","dropdownMenuProps","useToolsPanelDropdownMenuProps","resetAll","updatedValue","jsx","__experimentalToolsPanel","DEFAULT_CONTROLS","BorderPanel","as","Wrapper","inheritedValue","name","defaultControls","_settings$shadow$pres","_ref","_ref2","_shadowPresets$custom","colors","useColorsPerOrigin","decodeValue","useCallback","rawValue","getValueFromVariable","encodeColorValue","colorValue","allColors","flatMap","originColors","colorObject","find","slug","useMemo","hasSplitBorders","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","setImmutably","resetShadow","resetBorder","onBorderChange","updatedBorder","previousValue","showBorderByDefault","hasBorderControl","useBorderPanelLabel","blockName","jsxs","__experimentalToolsPanelItem","hasValue","isDefinedBorder","__","onDeselect","isShownByDefault","BorderBoxControl","enableAlpha","enableStyle","popoverOffset","popoverPlacement","__experimentalIsRenderedInSidebar","size","hideLabelFromVision","BaseControl","VisualLabel","ShadowPopover","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":["_components","require","_element","_i18n","_borderRadiusControl","_interopRequireDefault","_hooks","_utils","_object","_border","_shadowPanelComponents","_jsxRuntime","useHasBorderPanel","settings","controls","Object","values","useHasBorderPanelControls","some","Boolean","hasBorderColor","useHasBorderColorControl","hasBorderRadius","useHasBorderRadiusControl","hasBorderStyle","useHasBorderStyleControl","hasBorderWidth","useHasBorderWidthControl","hasShadow","useHasShadowControl","border","color","radius","style","width","shadows","useShadowPresets","shadow","length","BorderToolsPanel","resetAllFilter","onChange","value","panelId","children","label","dropdownMenuProps","useToolsPanelDropdownMenuProps","resetAll","updatedValue","jsx","__experimentalToolsPanel","DEFAULT_CONTROLS","BorderPanel","as","Wrapper","inheritedValue","name","defaultControls","_settings$shadow$pres","_ref","_ref2","_shadowPresets$custom","colors","useColorsPerOrigin","decodeValue","useCallback","rawValue","getValueFromVariable","encodeColorValue","colorValue","allColors","flatMap","originColors","colorObject","find","slug","useMemo","hasSplitBorders","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","setImmutably","resetShadow","resetBorder","onBorderChange","updatedBorder","previousValue","showBorderByDefault","hasBorderControl","useBorderPanelLabel","blockName","jsxs","__experimentalToolsPanelItem","hasValue","isDefinedBorder","__","onDeselect","isShownByDefault","BorderBoxControl","enableAlpha","enableStyle","popoverOffset","popoverPlacement","__experimentalIsRenderedInSidebar","size","hideLabelFromVision","radiusSizes","BaseControl","VisualLabel","ShadowPopover","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":[]}