@wordpress/block-editor 11.4.0 → 11.5.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 (288) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/components/block-inspector/index.js +11 -10
  3. package/build/components/block-inspector/index.js.map +1 -1
  4. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js +46 -0
  5. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
  6. package/build/components/block-lock/modal.js +1 -0
  7. package/build/components/block-lock/modal.js.map +1 -1
  8. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -2
  9. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  10. package/build/components/block-styles/index.js +2 -1
  11. package/build/components/block-styles/index.js.map +1 -1
  12. package/build/components/child-layout-control/index.js +107 -0
  13. package/build/components/child-layout-control/index.js.map +1 -0
  14. package/build/components/date-format-picker/index.js +3 -3
  15. package/build/components/date-format-picker/index.js.map +1 -1
  16. package/build/components/global-styles/dimensions-panel.js +594 -0
  17. package/build/components/global-styles/dimensions-panel.js.map +1 -0
  18. package/build/components/global-styles/hooks.js +72 -36
  19. package/build/components/global-styles/hooks.js.map +1 -1
  20. package/build/components/global-styles/index.js +20 -6
  21. package/build/components/global-styles/index.js.map +1 -1
  22. package/build/components/global-styles/typography-panel.js +25 -12
  23. package/build/components/global-styles/typography-panel.js.map +1 -1
  24. package/build/components/global-styles/use-global-styles-output.js +1 -1
  25. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  26. package/build/components/global-styles/utils.js +2 -0
  27. package/build/components/global-styles/utils.js.map +1 -1
  28. package/build/components/index.native.js +23 -0
  29. package/build/components/index.native.js.map +1 -1
  30. package/build/components/inserter/media-tab/hooks.js +10 -11
  31. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  32. package/build/components/inserter/media-tab/media-list.js +5 -108
  33. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  34. package/build/components/inserter/media-tab/media-preview.js +242 -0
  35. package/build/components/inserter/media-tab/media-preview.js.map +1 -0
  36. package/build/components/inspector-controls/block-support-tools-panel.js +1 -1
  37. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  38. package/build/components/inspector-controls/fill.js +38 -9
  39. package/build/components/inspector-controls/fill.js.map +1 -1
  40. package/build/components/link-control/settings-drawer.js +1 -1
  41. package/build/components/link-control/settings-drawer.js.map +1 -1
  42. package/build/components/link-control/settings.js +1 -0
  43. package/build/components/link-control/settings.js.map +1 -1
  44. package/build/components/list-view/block.js +17 -3
  45. package/build/components/list-view/block.js.map +1 -1
  46. package/build/components/list-view/branch.js +2 -2
  47. package/build/components/list-view/branch.js.map +1 -1
  48. package/build/components/list-view/expander.js +2 -1
  49. package/build/components/list-view/expander.js.map +1 -1
  50. package/build/components/list-view/leaf.js +10 -6
  51. package/build/components/list-view/leaf.js.map +1 -1
  52. package/build/components/list-view/use-list-view-scroll-into-view.js +51 -0
  53. package/build/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
  54. package/build/components/off-canvas-editor/appender.js +5 -10
  55. package/build/components/off-canvas-editor/appender.js.map +1 -1
  56. package/build/components/off-canvas-editor/branch.js +1 -0
  57. package/build/components/off-canvas-editor/branch.js.map +1 -1
  58. package/build/components/off-canvas-editor/index.js +7 -3
  59. package/build/components/off-canvas-editor/index.js.map +1 -1
  60. package/build/components/off-canvas-editor/leaf-more-menu.js +34 -4
  61. package/build/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
  62. package/build/components/off-canvas-editor/link-ui.js +1 -0
  63. package/build/components/off-canvas-editor/link-ui.js.map +1 -1
  64. package/build/components/responsive-block-control/index.js +1 -0
  65. package/build/components/responsive-block-control/index.js.map +1 -1
  66. package/build/components/rich-text/index.js +9 -43
  67. package/build/components/rich-text/index.js.map +1 -1
  68. package/build/components/rich-text/use-delete.js +73 -0
  69. package/build/components/rich-text/use-delete.js.map +1 -0
  70. package/build/components/rich-text/use-input-rules.js +14 -6
  71. package/build/components/rich-text/use-input-rules.js.map +1 -1
  72. package/build/components/writing-flow/use-selection-observer.js +4 -1
  73. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  74. package/build/hooks/align.js +3 -1
  75. package/build/hooks/align.js.map +1 -1
  76. package/build/hooks/dimensions.js +72 -190
  77. package/build/hooks/dimensions.js.map +1 -1
  78. package/build/hooks/duotone.js +94 -25
  79. package/build/hooks/duotone.js.map +1 -1
  80. package/build/hooks/gap.js +0 -202
  81. package/build/hooks/gap.js.map +1 -1
  82. package/build/hooks/layout.js +14 -5
  83. package/build/hooks/layout.js.map +1 -1
  84. package/build/hooks/margin.js +7 -163
  85. package/build/hooks/margin.js.map +1 -1
  86. package/build/hooks/padding.js +7 -163
  87. package/build/hooks/padding.js.map +1 -1
  88. package/build/hooks/typography.js +50 -65
  89. package/build/hooks/typography.js.map +1 -1
  90. package/build/hooks/utils.js +75 -0
  91. package/build/hooks/utils.js.map +1 -1
  92. package/build/layouts/flex.js +1 -0
  93. package/build/layouts/flex.js.map +1 -1
  94. package/build/store/actions.js +24 -12
  95. package/build/store/actions.js.map +1 -1
  96. package/build/store/defaults.js +28 -1
  97. package/build/store/defaults.js.map +1 -1
  98. package/build/store/reducer.js +53 -47
  99. package/build/store/reducer.js.map +1 -1
  100. package/build/store/selectors.js +5 -1
  101. package/build/store/selectors.js.map +1 -1
  102. package/build/utils/parse-css-unit-to-px.js +36 -3
  103. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  104. package/build-module/components/block-inspector/index.js +9 -9
  105. package/build-module/components/block-inspector/index.js.map +1 -1
  106. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js +37 -0
  107. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
  108. package/build-module/components/block-lock/modal.js +1 -0
  109. package/build-module/components/block-lock/modal.js.map +1 -1
  110. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -2
  111. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  112. package/build-module/components/block-styles/index.js +2 -1
  113. package/build-module/components/block-styles/index.js.map +1 -1
  114. package/build-module/components/child-layout-control/index.js +98 -0
  115. package/build-module/components/child-layout-control/index.js.map +1 -0
  116. package/build-module/components/date-format-picker/index.js +4 -4
  117. package/build-module/components/date-format-picker/index.js.map +1 -1
  118. package/build-module/components/global-styles/dimensions-panel.js +574 -0
  119. package/build-module/components/global-styles/dimensions-panel.js.map +1 -0
  120. package/build-module/components/global-styles/hooks.js +71 -33
  121. package/build-module/components/global-styles/hooks.js.map +1 -1
  122. package/build-module/components/global-styles/index.js +2 -1
  123. package/build-module/components/global-styles/index.js.map +1 -1
  124. package/build-module/components/global-styles/typography-panel.js +26 -11
  125. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  126. package/build-module/components/global-styles/use-global-styles-output.js +1 -1
  127. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  128. package/build-module/components/global-styles/utils.js +2 -0
  129. package/build-module/components/global-styles/utils.js.map +1 -1
  130. package/build-module/components/index.native.js +2 -1
  131. package/build-module/components/index.native.js.map +1 -1
  132. package/build-module/components/inserter/media-tab/hooks.js +10 -11
  133. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  134. package/build-module/components/inserter/media-tab/media-list.js +6 -105
  135. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  136. package/build-module/components/inserter/media-tab/media-preview.js +222 -0
  137. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -0
  138. package/build-module/components/inspector-controls/block-support-tools-panel.js +1 -1
  139. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  140. package/build-module/components/inspector-controls/fill.js +39 -9
  141. package/build-module/components/inspector-controls/fill.js.map +1 -1
  142. package/build-module/components/link-control/settings-drawer.js +1 -1
  143. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  144. package/build-module/components/link-control/settings.js +1 -0
  145. package/build-module/components/link-control/settings.js.map +1 -1
  146. package/build-module/components/list-view/block.js +16 -3
  147. package/build-module/components/list-view/block.js.map +1 -1
  148. package/build-module/components/list-view/branch.js +2 -2
  149. package/build-module/components/list-view/branch.js.map +1 -1
  150. package/build-module/components/list-view/expander.js +2 -1
  151. package/build-module/components/list-view/expander.js.map +1 -1
  152. package/build-module/components/list-view/leaf.js +8 -4
  153. package/build-module/components/list-view/leaf.js.map +1 -1
  154. package/build-module/components/list-view/use-list-view-scroll-into-view.js +42 -0
  155. package/build-module/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
  156. package/build-module/components/off-canvas-editor/appender.js +5 -10
  157. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  158. package/build-module/components/off-canvas-editor/branch.js +1 -0
  159. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  160. package/build-module/components/off-canvas-editor/index.js +7 -3
  161. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  162. package/build-module/components/off-canvas-editor/leaf-more-menu.js +36 -7
  163. package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
  164. package/build-module/components/off-canvas-editor/link-ui.js +1 -0
  165. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -1
  166. package/build-module/components/responsive-block-control/index.js +1 -0
  167. package/build-module/components/responsive-block-control/index.js.map +1 -1
  168. package/build-module/components/rich-text/index.js +9 -43
  169. package/build-module/components/rich-text/index.js.map +1 -1
  170. package/build-module/components/rich-text/use-delete.js +62 -0
  171. package/build-module/components/rich-text/use-delete.js.map +1 -0
  172. package/build-module/components/rich-text/use-input-rules.js +14 -6
  173. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  174. package/build-module/components/writing-flow/use-selection-observer.js +4 -1
  175. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  176. package/build-module/hooks/align.js +3 -1
  177. package/build-module/hooks/align.js.map +1 -1
  178. package/build-module/hooks/dimensions.js +75 -187
  179. package/build-module/hooks/dimensions.js.map +1 -1
  180. package/build-module/hooks/duotone.js +86 -24
  181. package/build-module/hooks/duotone.js.map +1 -1
  182. package/build-module/hooks/gap.js +0 -183
  183. package/build-module/hooks/gap.js.map +1 -1
  184. package/build-module/hooks/layout.js +14 -5
  185. package/build-module/hooks/layout.js.map +1 -1
  186. package/build-module/hooks/margin.js +4 -143
  187. package/build-module/hooks/margin.js.map +1 -1
  188. package/build-module/hooks/padding.js +4 -143
  189. package/build-module/hooks/padding.js.map +1 -1
  190. package/build-module/hooks/typography.js +52 -65
  191. package/build-module/hooks/typography.js.map +1 -1
  192. package/build-module/hooks/utils.js +70 -0
  193. package/build-module/hooks/utils.js.map +1 -1
  194. package/build-module/layouts/flex.js +1 -0
  195. package/build-module/layouts/flex.js.map +1 -1
  196. package/build-module/store/actions.js +24 -12
  197. package/build-module/store/actions.js.map +1 -1
  198. package/build-module/store/defaults.js +28 -1
  199. package/build-module/store/defaults.js.map +1 -1
  200. package/build-module/store/reducer.js +53 -45
  201. package/build-module/store/reducer.js.map +1 -1
  202. package/build-module/store/selectors.js +5 -1
  203. package/build-module/store/selectors.js.map +1 -1
  204. package/build-module/utils/parse-css-unit-to-px.js +36 -3
  205. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  206. package/build-style/style-rtl.css +33 -21
  207. package/build-style/style.css +33 -21
  208. package/package.json +31 -31
  209. package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +24 -24
  210. package/src/components/block-inspector/index.js +11 -14
  211. package/src/components/block-inspector/useBlockInspectorAnimationSettings.js +53 -0
  212. package/src/components/block-lock/modal.js +1 -0
  213. package/src/components/block-lock/style.scss +0 -9
  214. package/src/components/block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap +20 -20
  215. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +15 -15
  216. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -1
  217. package/src/components/block-styles/index.js +5 -1
  218. package/src/components/child-layout-control/index.js +106 -0
  219. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  220. package/src/components/date-format-picker/index.js +6 -8
  221. package/src/components/date-format-picker/style.scss +0 -5
  222. package/src/components/global-styles/dimensions-panel.js +627 -0
  223. package/src/components/global-styles/hooks.js +88 -45
  224. package/src/components/global-styles/index.js +5 -1
  225. package/src/components/global-styles/typography-panel.js +33 -8
  226. package/src/components/global-styles/use-global-styles-output.js +4 -3
  227. package/src/components/global-styles/utils.js +2 -0
  228. package/src/components/index.native.js +5 -0
  229. package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
  230. package/src/components/inserter/media-tab/hooks.js +9 -8
  231. package/src/components/inserter/media-tab/media-list.js +3 -122
  232. package/src/components/inserter/media-tab/media-preview.js +268 -0
  233. package/src/components/inserter/style.scss +22 -0
  234. package/src/components/inserter/test/__snapshots__/index.native.js.snap +15 -15
  235. package/src/components/inspector-controls/block-support-tools-panel.js +0 -1
  236. package/src/components/inspector-controls/fill.js +32 -8
  237. package/src/components/link-control/settings-drawer.js +2 -1
  238. package/src/components/link-control/settings.js +1 -0
  239. package/src/components/link-control/style.scss +18 -8
  240. package/src/components/link-control/test/index.js +3 -3
  241. package/src/components/list-view/block.js +19 -1
  242. package/src/components/list-view/branch.js +1 -2
  243. package/src/components/list-view/expander.js +1 -0
  244. package/src/components/list-view/leaf.js +43 -29
  245. package/src/components/list-view/use-list-view-scroll-into-view.js +48 -0
  246. package/src/components/media-replace-flow/style.scss +7 -9
  247. package/src/components/off-canvas-editor/appender.js +13 -16
  248. package/src/components/off-canvas-editor/branch.js +1 -0
  249. package/src/components/off-canvas-editor/index.js +8 -2
  250. package/src/components/off-canvas-editor/leaf-more-menu.js +57 -15
  251. package/src/components/off-canvas-editor/link-ui.js +1 -0
  252. package/src/components/responsive-block-control/index.js +1 -0
  253. package/src/components/rich-text/index.js +8 -44
  254. package/src/components/rich-text/use-delete.js +59 -0
  255. package/src/components/rich-text/use-input-rules.js +13 -5
  256. package/src/components/spacing-sizes-control/style.scss +1 -1
  257. package/src/components/url-popover/stories/index.js +1 -0
  258. package/src/components/writing-flow/use-selection-observer.js +5 -1
  259. package/src/hooks/align.js +1 -1
  260. package/src/hooks/dimensions.js +85 -269
  261. package/src/hooks/duotone.js +100 -30
  262. package/src/hooks/gap.js +0 -208
  263. package/src/hooks/layout.js +19 -6
  264. package/src/hooks/margin.js +1 -164
  265. package/src/hooks/padding.js +1 -163
  266. package/src/hooks/test/__snapshots__/align.native.js.snap +24 -24
  267. package/src/hooks/test/duotone.js +102 -0
  268. package/src/hooks/typography.js +66 -88
  269. package/src/hooks/utils.js +90 -0
  270. package/src/layouts/flex.js +1 -0
  271. package/src/store/actions.js +12 -4
  272. package/src/store/defaults.js +14 -1
  273. package/src/store/reducer.js +68 -43
  274. package/src/store/selectors.js +8 -1
  275. package/src/store/test/actions.js +4 -2
  276. package/src/utils/parse-css-unit-to-px.js +35 -5
  277. package/src/utils/test/parse-css-unit-to-px.js +12 -0
  278. package/tsconfig.tsbuildinfo +1 -1
  279. package/build/hooks/child-layout.js +0 -213
  280. package/build/hooks/child-layout.js.map +0 -1
  281. package/build/hooks/min-height.js +0 -139
  282. package/build/hooks/min-height.js.map +0 -1
  283. package/build-module/hooks/child-layout.js +0 -193
  284. package/build-module/hooks/child-layout.js.map +0 -1
  285. package/build-module/hooks/min-height.js +0 -116
  286. package/build-module/hooks/min-height.js.map +0 -1
  287. package/src/hooks/child-layout.js +0 -195
  288. package/src/hooks/min-height.js +0 -104
@@ -0,0 +1,574 @@
1
+ import { createElement } from "@wordpress/element";
2
+
3
+ /**
4
+ * External dependencies
5
+ */
6
+ import classnames from 'classnames';
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+
11
+ import { __ } from '@wordpress/i18n';
12
+ import { __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem, __experimentalBoxControl as BoxControl, __experimentalHStack as HStack, __experimentalVStack as VStack, __experimentalUnitControl as UnitControl, __experimentalUseCustomUnits as useCustomUnits, __experimentalView as View } from '@wordpress/components';
13
+ import { Icon, positionCenter, stretchWide } from '@wordpress/icons';
14
+ import { useCallback, Platform } from '@wordpress/element';
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+
19
+ import { getValueFromVariable } from './utils';
20
+ import SpacingSizesControl from '../spacing-sizes-control';
21
+ import HeightControl from '../height-control';
22
+ import ChildLayoutControl from '../child-layout-control';
23
+ import { cleanEmptyObject } from '../../hooks/utils';
24
+ const AXIAL_SIDES = ['horizontal', 'vertical'];
25
+ export function useHasDimensionsPanel(settings) {
26
+ const hasContentSize = useHasContentSize(settings);
27
+ const hasWideSize = useHasWideSize(settings);
28
+ const hasPadding = useHasPadding(settings);
29
+ const hasMargin = useHasMargin(settings);
30
+ const hasGap = useHasGap(settings);
31
+ const hasMinHeight = useHasMinHeight(settings);
32
+ const hasChildLayout = useHasChildLayout(settings);
33
+ return Platform.OS === 'web' && (hasContentSize || hasWideSize || hasPadding || hasMargin || hasGap || hasMinHeight || hasChildLayout);
34
+ }
35
+
36
+ function useHasContentSize(settings) {
37
+ var _settings$layout;
38
+
39
+ return settings === null || settings === void 0 ? void 0 : (_settings$layout = settings.layout) === null || _settings$layout === void 0 ? void 0 : _settings$layout.contentSize;
40
+ }
41
+
42
+ function useHasWideSize(settings) {
43
+ var _settings$layout2;
44
+
45
+ return settings === null || settings === void 0 ? void 0 : (_settings$layout2 = settings.layout) === null || _settings$layout2 === void 0 ? void 0 : _settings$layout2.wideSize;
46
+ }
47
+
48
+ function useHasPadding(settings) {
49
+ var _settings$spacing;
50
+
51
+ return settings === null || settings === void 0 ? void 0 : (_settings$spacing = settings.spacing) === null || _settings$spacing === void 0 ? void 0 : _settings$spacing.padding;
52
+ }
53
+
54
+ function useHasMargin(settings) {
55
+ var _settings$spacing2;
56
+
57
+ return settings === null || settings === void 0 ? void 0 : (_settings$spacing2 = settings.spacing) === null || _settings$spacing2 === void 0 ? void 0 : _settings$spacing2.margin;
58
+ }
59
+
60
+ function useHasGap(settings) {
61
+ var _settings$spacing3;
62
+
63
+ return settings === null || settings === void 0 ? void 0 : (_settings$spacing3 = settings.spacing) === null || _settings$spacing3 === void 0 ? void 0 : _settings$spacing3.blockGap;
64
+ }
65
+
66
+ function useHasMinHeight(settings) {
67
+ var _settings$dimensions;
68
+
69
+ return settings === null || settings === void 0 ? void 0 : (_settings$dimensions = settings.dimensions) === null || _settings$dimensions === void 0 ? void 0 : _settings$dimensions.minHeight;
70
+ }
71
+
72
+ function useHasChildLayout(settings) {
73
+ var _settings$parentLayou;
74
+
75
+ const {
76
+ type: parentLayoutType = 'default',
77
+ default: {
78
+ type: defaultParentLayoutType = 'default'
79
+ } = {},
80
+ allowSizingOnChildren = false
81
+ } = (_settings$parentLayou = settings === null || settings === void 0 ? void 0 : settings.parentLayout) !== null && _settings$parentLayou !== void 0 ? _settings$parentLayou : {};
82
+ const support = (defaultParentLayoutType === 'flex' || parentLayoutType === 'flex') && allowSizingOnChildren;
83
+ return !!(settings !== null && settings !== void 0 && settings.layout) && support;
84
+ }
85
+
86
+ function useHasSpacingPresets(settings) {
87
+ var _settings$spacing4, _ref, _ref2;
88
+
89
+ const {
90
+ custom,
91
+ theme,
92
+ default: defaultPresets
93
+ } = (settings === null || settings === void 0 ? void 0 : (_settings$spacing4 = settings.spacing) === null || _settings$spacing4 === void 0 ? void 0 : _settings$spacing4.spacingSizes) || {};
94
+ const presets = (_ref = (_ref2 = custom !== null && custom !== void 0 ? custom : theme) !== null && _ref2 !== void 0 ? _ref2 : defaultPresets) !== null && _ref !== void 0 ? _ref : [];
95
+ return presets.length > 0;
96
+ }
97
+
98
+ function filterValuesBySides(values, sides) {
99
+ if (!sides) {
100
+ // If no custom side configuration all sides are opted into by default.
101
+ return values;
102
+ } // Only include sides opted into within filtered values.
103
+
104
+
105
+ const filteredValues = {};
106
+ sides.forEach(side => {
107
+ if (side === 'vertical') {
108
+ filteredValues.top = values.top;
109
+ filteredValues.bottom = values.bottom;
110
+ }
111
+
112
+ if (side === 'horizontal') {
113
+ filteredValues.left = values.left;
114
+ filteredValues.right = values.right;
115
+ }
116
+
117
+ filteredValues[side] = values === null || values === void 0 ? void 0 : values[side];
118
+ });
119
+ return filteredValues;
120
+ }
121
+
122
+ function splitStyleValue(value) {
123
+ // Check for shorthand value (a string value).
124
+ if (value && typeof value === 'string') {
125
+ // Convert to value for individual sides for BoxControl.
126
+ return {
127
+ top: value,
128
+ right: value,
129
+ bottom: value,
130
+ left: value
131
+ };
132
+ }
133
+
134
+ return value;
135
+ }
136
+
137
+ function splitGapValue(value) {
138
+ // Check for shorthand value (a string value).
139
+ if (value && typeof value === 'string') {
140
+ // If the value is a string, treat it as a single side (top) for the spacing controls.
141
+ return {
142
+ top: value
143
+ };
144
+ }
145
+
146
+ if (value) {
147
+ return { ...value,
148
+ right: value === null || value === void 0 ? void 0 : value.left,
149
+ bottom: value === null || value === void 0 ? void 0 : value.top
150
+ };
151
+ }
152
+
153
+ return value;
154
+ }
155
+
156
+ function DimensionsToolsPanel(_ref3) {
157
+ let {
158
+ resetAllFilter,
159
+ onChange,
160
+ value,
161
+ panelId,
162
+ children
163
+ } = _ref3;
164
+
165
+ const resetAll = () => {
166
+ const updatedValue = resetAllFilter(value);
167
+ onChange(updatedValue);
168
+ };
169
+
170
+ return createElement(ToolsPanel, {
171
+ label: __('Dimensions'),
172
+ resetAll: resetAll,
173
+ panelId: panelId
174
+ }, children);
175
+ }
176
+
177
+ const DEFAULT_CONTROLS = {
178
+ contentSize: true,
179
+ wideSize: true,
180
+ padding: true,
181
+ margin: true,
182
+ blockGap: true,
183
+ minHeight: true
184
+ };
185
+ export default function DimensionsPanel(_ref4) {
186
+ var _settings$spacing5, _inheritedValue$layou, _inheritedValue$layou2, _inheritedValue$spaci, _settings$spacing6, _settings$spacing7, _settings$spacing8, _settings$spacing8$pa, _inheritedValue$spaci2, _settings$spacing9, _settings$spacing10, _settings$spacing11, _settings$spacing11$m, _inheritedValue$spaci3, _settings$spacing12, _settings$spacing13, _settings$spacing14, _settings$spacing14$b, _inheritedValue$dimen, _settings$parentLayou2;
187
+
188
+ let {
189
+ as: Wrapper = DimensionsToolsPanel,
190
+ value,
191
+ onChange,
192
+ inheritedValue = value,
193
+ settings,
194
+ panelId,
195
+ defaultControls = DEFAULT_CONTROLS,
196
+ onVisualize = () => {},
197
+ // Special case because the layout controls are not part of the dimensions panel
198
+ // in global styles but not in block inspector.
199
+ includeLayoutControls = false
200
+ } = _ref4;
201
+
202
+ const decodeValue = rawValue => getValueFromVariable({
203
+ settings
204
+ }, '', rawValue);
205
+
206
+ const showSpacingPresetsControl = useHasSpacingPresets(settings);
207
+ const units = useCustomUnits({
208
+ availableUnits: (settings === null || settings === void 0 ? void 0 : (_settings$spacing5 = settings.spacing) === null || _settings$spacing5 === void 0 ? void 0 : _settings$spacing5.units) || ['%', 'px', 'em', 'rem', 'vw']
209
+ }); // Content Size
210
+
211
+ const showContentSizeControl = useHasContentSize(settings) && includeLayoutControls;
212
+ const contentSizeValue = decodeValue(inheritedValue === null || inheritedValue === void 0 ? void 0 : (_inheritedValue$layou = inheritedValue.layout) === null || _inheritedValue$layou === void 0 ? void 0 : _inheritedValue$layou.contentSize);
213
+
214
+ const setContentSizeValue = newValue => {
215
+ onChange({ ...value,
216
+ layout: { ...(value === null || value === void 0 ? void 0 : value.layout),
217
+ contentSize: newValue
218
+ }
219
+ });
220
+ };
221
+
222
+ const hasUserSetContentSizeValue = () => {
223
+ var _value$layout;
224
+
225
+ return !!(value !== null && value !== void 0 && (_value$layout = value.layout) !== null && _value$layout !== void 0 && _value$layout.contentSize);
226
+ };
227
+
228
+ const resetContentSizeValue = () => setContentSizeValue(undefined); // Wide Size
229
+
230
+
231
+ const showWideSizeControl = useHasWideSize(settings) && includeLayoutControls;
232
+ const wideSizeValue = decodeValue(inheritedValue === null || inheritedValue === void 0 ? void 0 : (_inheritedValue$layou2 = inheritedValue.layout) === null || _inheritedValue$layou2 === void 0 ? void 0 : _inheritedValue$layou2.wideSize);
233
+
234
+ const setWideSizeValue = newValue => {
235
+ onChange({ ...value,
236
+ layout: { ...(value === null || value === void 0 ? void 0 : value.layout),
237
+ wideSize: newValue
238
+ }
239
+ });
240
+ };
241
+
242
+ const hasUserSetWideSizeValue = () => {
243
+ var _value$layout2;
244
+
245
+ return !!(value !== null && value !== void 0 && (_value$layout2 = value.layout) !== null && _value$layout2 !== void 0 && _value$layout2.wideSize);
246
+ };
247
+
248
+ const resetWideSizeValue = () => setWideSizeValue(undefined); // Padding
249
+
250
+
251
+ const showPaddingControl = useHasPadding(settings);
252
+ const rawPadding = decodeValue(inheritedValue === null || inheritedValue === void 0 ? void 0 : (_inheritedValue$spaci = inheritedValue.spacing) === null || _inheritedValue$spaci === void 0 ? void 0 : _inheritedValue$spaci.padding);
253
+ const paddingValues = splitStyleValue(rawPadding);
254
+ const paddingSides = Array.isArray(settings === null || settings === void 0 ? void 0 : (_settings$spacing6 = settings.spacing) === null || _settings$spacing6 === void 0 ? void 0 : _settings$spacing6.padding) ? settings === null || settings === void 0 ? void 0 : (_settings$spacing7 = settings.spacing) === null || _settings$spacing7 === void 0 ? void 0 : _settings$spacing7.padding : settings === null || settings === void 0 ? void 0 : (_settings$spacing8 = settings.spacing) === null || _settings$spacing8 === void 0 ? void 0 : (_settings$spacing8$pa = _settings$spacing8.padding) === null || _settings$spacing8$pa === void 0 ? void 0 : _settings$spacing8$pa.sides;
255
+ const isAxialPadding = paddingSides && paddingSides.some(side => AXIAL_SIDES.includes(side));
256
+
257
+ const setPaddingValues = newPaddingValues => {
258
+ const padding = filterValuesBySides(newPaddingValues, paddingSides);
259
+ onChange({ ...value,
260
+ spacing: { ...(value === null || value === void 0 ? void 0 : value.spacing),
261
+ padding
262
+ }
263
+ });
264
+ };
265
+
266
+ const hasPaddingValue = () => {
267
+ var _value$spacing, _value$spacing2;
268
+
269
+ return !!(value !== null && value !== void 0 && (_value$spacing = value.spacing) !== null && _value$spacing !== void 0 && _value$spacing.padding) && Object.keys(value === null || value === void 0 ? void 0 : (_value$spacing2 = value.spacing) === null || _value$spacing2 === void 0 ? void 0 : _value$spacing2.padding).length;
270
+ };
271
+
272
+ const resetPaddingValue = () => setPaddingValues(undefined);
273
+
274
+ const onMouseOverPadding = () => onVisualize('padding'); // Margin
275
+
276
+
277
+ const showMarginControl = useHasMargin(settings);
278
+ const rawMargin = decodeValue(inheritedValue === null || inheritedValue === void 0 ? void 0 : (_inheritedValue$spaci2 = inheritedValue.spacing) === null || _inheritedValue$spaci2 === void 0 ? void 0 : _inheritedValue$spaci2.margin);
279
+ const marginValues = splitStyleValue(rawMargin);
280
+ const marginSides = Array.isArray(settings === null || settings === void 0 ? void 0 : (_settings$spacing9 = settings.spacing) === null || _settings$spacing9 === void 0 ? void 0 : _settings$spacing9.margin) ? settings === null || settings === void 0 ? void 0 : (_settings$spacing10 = settings.spacing) === null || _settings$spacing10 === void 0 ? void 0 : _settings$spacing10.margin : settings === null || settings === void 0 ? void 0 : (_settings$spacing11 = settings.spacing) === null || _settings$spacing11 === void 0 ? void 0 : (_settings$spacing11$m = _settings$spacing11.margin) === null || _settings$spacing11$m === void 0 ? void 0 : _settings$spacing11$m.sides;
281
+ const isAxialMargin = marginSides && marginSides.some(side => AXIAL_SIDES.includes(side));
282
+
283
+ const setMarginValues = newMarginValues => {
284
+ const margin = filterValuesBySides(newMarginValues, marginSides);
285
+ onChange({ ...value,
286
+ spacing: { ...(value === null || value === void 0 ? void 0 : value.spacing),
287
+ margin
288
+ }
289
+ });
290
+ };
291
+
292
+ const hasMarginValue = () => {
293
+ var _value$spacing3, _value$spacing4;
294
+
295
+ return !!(value !== null && value !== void 0 && (_value$spacing3 = value.spacing) !== null && _value$spacing3 !== void 0 && _value$spacing3.margin) && Object.keys(value === null || value === void 0 ? void 0 : (_value$spacing4 = value.spacing) === null || _value$spacing4 === void 0 ? void 0 : _value$spacing4.margin).length;
296
+ };
297
+
298
+ const resetMarginValue = () => setMarginValues(undefined);
299
+
300
+ const onMouseOverMargin = () => onVisualize('margin'); // Block Gap
301
+
302
+
303
+ const showGapControl = useHasGap(settings);
304
+ const gapValue = decodeValue(inheritedValue === null || inheritedValue === void 0 ? void 0 : (_inheritedValue$spaci3 = inheritedValue.spacing) === null || _inheritedValue$spaci3 === void 0 ? void 0 : _inheritedValue$spaci3.blockGap);
305
+ const gapValues = splitGapValue(gapValue);
306
+ const gapSides = Array.isArray(settings === null || settings === void 0 ? void 0 : (_settings$spacing12 = settings.spacing) === null || _settings$spacing12 === void 0 ? void 0 : _settings$spacing12.blockGap) ? settings === null || settings === void 0 ? void 0 : (_settings$spacing13 = settings.spacing) === null || _settings$spacing13 === void 0 ? void 0 : _settings$spacing13.blockGap : settings === null || settings === void 0 ? void 0 : (_settings$spacing14 = settings.spacing) === null || _settings$spacing14 === void 0 ? void 0 : (_settings$spacing14$b = _settings$spacing14.blockGap) === null || _settings$spacing14$b === void 0 ? void 0 : _settings$spacing14$b.sides;
307
+ const isAxialGap = gapSides && gapSides.some(side => AXIAL_SIDES.includes(side));
308
+
309
+ const setGapValue = newGapValue => {
310
+ onChange({ ...value,
311
+ spacing: { ...(value === null || value === void 0 ? void 0 : value.spacing),
312
+ blockGap: newGapValue
313
+ }
314
+ });
315
+ };
316
+
317
+ const setGapValues = nextBoxGapValue => {
318
+ if (!nextBoxGapValue) {
319
+ setGapValue(null);
320
+ } // If axial gap is not enabled, treat the 'top' value as the shorthand gap value.
321
+
322
+
323
+ if (!isAxialGap && nextBoxGapValue !== null && nextBoxGapValue !== void 0 && nextBoxGapValue.hasOwnProperty('top')) {
324
+ setGapValue(nextBoxGapValue.top);
325
+ } else {
326
+ setGapValue({
327
+ top: nextBoxGapValue === null || nextBoxGapValue === void 0 ? void 0 : nextBoxGapValue.top,
328
+ left: nextBoxGapValue === null || nextBoxGapValue === void 0 ? void 0 : nextBoxGapValue.left
329
+ });
330
+ }
331
+ };
332
+
333
+ const resetGapValue = () => setGapValue(undefined);
334
+
335
+ const hasGapValue = () => {
336
+ var _value$spacing5;
337
+
338
+ return !!(value !== null && value !== void 0 && (_value$spacing5 = value.spacing) !== null && _value$spacing5 !== void 0 && _value$spacing5.blockGap);
339
+ }; // Min Height
340
+
341
+
342
+ const showMinHeightControl = useHasMinHeight(settings);
343
+ const minHeightValue = decodeValue(inheritedValue === null || inheritedValue === void 0 ? void 0 : (_inheritedValue$dimen = inheritedValue.dimensions) === null || _inheritedValue$dimen === void 0 ? void 0 : _inheritedValue$dimen.minHeight);
344
+
345
+ const setMinHeightValue = newValue => {
346
+ onChange({ ...value,
347
+ dimensions: { ...(value === null || value === void 0 ? void 0 : value.dimensions),
348
+ minHeight: newValue
349
+ }
350
+ });
351
+ };
352
+
353
+ const resetMinHeightValue = () => {
354
+ setMinHeightValue(undefined);
355
+ };
356
+
357
+ const hasMinHeightValue = () => {
358
+ var _value$dimensions;
359
+
360
+ return !!(value !== null && value !== void 0 && (_value$dimensions = value.dimensions) !== null && _value$dimensions !== void 0 && _value$dimensions.minHeight);
361
+ }; // Child Layout
362
+
363
+
364
+ const showChildLayoutControl = useHasChildLayout(settings);
365
+ const childLayout = inheritedValue === null || inheritedValue === void 0 ? void 0 : inheritedValue.layout;
366
+ const {
367
+ orientation = 'horizontal'
368
+ } = (_settings$parentLayou2 = settings === null || settings === void 0 ? void 0 : settings.parentLayout) !== null && _settings$parentLayou2 !== void 0 ? _settings$parentLayou2 : {};
369
+ const childLayoutOrientationLabel = orientation === 'horizontal' ? __('Width') : __('Height');
370
+
371
+ const setChildLayout = newChildLayout => {
372
+ onChange({ ...value,
373
+ layout: { ...(value === null || value === void 0 ? void 0 : value.layout),
374
+ ...newChildLayout
375
+ }
376
+ });
377
+ };
378
+
379
+ const resetChildLayoutValue = () => {
380
+ setChildLayout({
381
+ selfStretch: undefined,
382
+ flexSize: undefined
383
+ });
384
+ };
385
+
386
+ const hasChildLayoutValue = () => !!(value !== null && value !== void 0 && value.layout);
387
+
388
+ const resetAllFilter = useCallback(previousValue => {
389
+ return { ...previousValue,
390
+ layout: cleanEmptyObject({ ...(previousValue === null || previousValue === void 0 ? void 0 : previousValue.layout),
391
+ contentSize: undefined,
392
+ wideSize: undefined,
393
+ selfStretch: undefined,
394
+ flexSize: undefined
395
+ }),
396
+ spacing: { ...(previousValue === null || previousValue === void 0 ? void 0 : previousValue.spacing),
397
+ padding: undefined,
398
+ margin: undefined,
399
+ blockGap: undefined
400
+ },
401
+ dimensions: { ...(previousValue === null || previousValue === void 0 ? void 0 : previousValue.dimensions),
402
+ minHeight: undefined
403
+ }
404
+ };
405
+ }, []);
406
+
407
+ const onMouseLeaveControls = () => onVisualize(false);
408
+
409
+ return createElement(Wrapper, {
410
+ resetAllFilter: resetAllFilter,
411
+ value: value,
412
+ onChange: onChange,
413
+ panelId: panelId
414
+ }, (showContentSizeControl || showWideSizeControl) && createElement("span", {
415
+ className: "span-columns"
416
+ }, __('Set the width of the main content area.')), showContentSizeControl && createElement(ToolsPanelItem, {
417
+ className: "single-column",
418
+ label: __('Content size'),
419
+ hasValue: hasUserSetContentSizeValue,
420
+ onDeselect: resetContentSizeValue,
421
+ isShownByDefault: defaultControls.contentSize,
422
+ panelId: panelId
423
+ }, createElement(HStack, {
424
+ alignment: "flex-end",
425
+ justify: "flex-start"
426
+ }, createElement(UnitControl, {
427
+ label: __('Content'),
428
+ labelPosition: "top",
429
+ __unstableInputWidth: "80px",
430
+ value: contentSizeValue || '',
431
+ onChange: nextContentSize => {
432
+ setContentSizeValue(nextContentSize);
433
+ },
434
+ units: units
435
+ }), createElement(View, null, createElement(Icon, {
436
+ icon: positionCenter
437
+ })))), showWideSizeControl && createElement(ToolsPanelItem, {
438
+ className: "single-column",
439
+ label: __('Wide size'),
440
+ hasValue: hasUserSetWideSizeValue,
441
+ onDeselect: resetWideSizeValue,
442
+ isShownByDefault: defaultControls.wideSize,
443
+ panelId: panelId
444
+ }, createElement(HStack, {
445
+ alignment: "flex-end",
446
+ justify: "flex-start"
447
+ }, createElement(UnitControl, {
448
+ label: __('Wide'),
449
+ labelPosition: "top",
450
+ __unstableInputWidth: "80px",
451
+ value: wideSizeValue || '',
452
+ onChange: nextWideSize => {
453
+ setWideSizeValue(nextWideSize);
454
+ },
455
+ units: units
456
+ }), createElement(View, null, createElement(Icon, {
457
+ icon: stretchWide
458
+ })))), showPaddingControl && createElement(ToolsPanelItem, {
459
+ hasValue: hasPaddingValue,
460
+ label: __('Padding'),
461
+ onDeselect: resetPaddingValue,
462
+ isShownByDefault: defaultControls.padding,
463
+ className: classnames({
464
+ 'tools-panel-item-spacing': showSpacingPresetsControl
465
+ }),
466
+ panelId: panelId
467
+ }, !showSpacingPresetsControl && createElement(BoxControl, {
468
+ values: paddingValues,
469
+ onChange: setPaddingValues,
470
+ label: __('Padding'),
471
+ sides: paddingSides,
472
+ units: units,
473
+ allowReset: false,
474
+ splitOnAxis: isAxialPadding,
475
+ onMouseOver: onMouseOverPadding,
476
+ onMouseOut: onMouseLeaveControls
477
+ }), showSpacingPresetsControl && createElement(SpacingSizesControl, {
478
+ values: paddingValues,
479
+ onChange: setPaddingValues,
480
+ label: __('Padding'),
481
+ sides: paddingSides,
482
+ units: units,
483
+ allowReset: false,
484
+ splitOnAxis: isAxialPadding,
485
+ onMouseOver: onMouseOverPadding,
486
+ onMouseOut: onMouseLeaveControls
487
+ })), showMarginControl && createElement(ToolsPanelItem, {
488
+ hasValue: hasMarginValue,
489
+ label: __('Margin'),
490
+ onDeselect: resetMarginValue,
491
+ isShownByDefault: defaultControls.margin,
492
+ className: classnames({
493
+ 'tools-panel-item-spacing': showSpacingPresetsControl
494
+ }),
495
+ panelId: panelId
496
+ }, !showSpacingPresetsControl && createElement(BoxControl, {
497
+ values: marginValues,
498
+ onChange: setMarginValues,
499
+ label: __('Margin'),
500
+ sides: marginSides,
501
+ units: units,
502
+ allowReset: false,
503
+ splitOnAxis: isAxialMargin,
504
+ onMouseOver: onMouseOverMargin,
505
+ onMouseOut: onMouseLeaveControls
506
+ }), showSpacingPresetsControl && createElement(SpacingSizesControl, {
507
+ values: marginValues,
508
+ onChange: setMarginValues,
509
+ label: __('Margin'),
510
+ sides: marginSides,
511
+ units: units,
512
+ allowReset: false,
513
+ splitOnAxis: isAxialMargin,
514
+ onMouseOver: onMouseOverMargin,
515
+ onMouseOut: onMouseLeaveControls
516
+ })), showGapControl && createElement(ToolsPanelItem, {
517
+ hasValue: hasGapValue,
518
+ label: __('Block spacing'),
519
+ onDeselect: resetGapValue,
520
+ isShownByDefault: defaultControls.blockGap,
521
+ className: classnames({
522
+ 'tools-panel-item-spacing': showSpacingPresetsControl
523
+ }),
524
+ panelId: panelId
525
+ }, !showSpacingPresetsControl && (isAxialGap ? createElement(BoxControl, {
526
+ label: __('Block spacing'),
527
+ min: 0,
528
+ onChange: setGapValues,
529
+ units: units,
530
+ sides: gapSides,
531
+ values: gapValues,
532
+ allowReset: false,
533
+ splitOnAxis: isAxialGap
534
+ }) : createElement(UnitControl, {
535
+ label: __('Block spacing'),
536
+ __unstableInputWidth: "80px",
537
+ min: 0,
538
+ onChange: setGapValue,
539
+ units: units,
540
+ value: gapValue
541
+ })), showSpacingPresetsControl && createElement(SpacingSizesControl, {
542
+ label: __('Block spacing'),
543
+ min: 0,
544
+ onChange: setGapValues,
545
+ sides: isAxialGap ? gapSides : ['top'] // Use 'top' as the shorthand property in non-axial configurations.
546
+ ,
547
+ values: gapValues,
548
+ allowReset: false,
549
+ splitOnAxis: isAxialGap
550
+ })), showMinHeightControl && createElement(ToolsPanelItem, {
551
+ hasValue: hasMinHeightValue,
552
+ label: __('Min. height'),
553
+ onDeselect: resetMinHeightValue,
554
+ isShownByDefault: defaultControls.minHeight,
555
+ panelId: panelId
556
+ }, createElement(HeightControl, {
557
+ label: __('Min. height'),
558
+ value: minHeightValue,
559
+ onChange: setMinHeightValue
560
+ })), showChildLayoutControl && createElement(VStack, {
561
+ as: ToolsPanelItem,
562
+ spacing: 2,
563
+ hasValue: hasChildLayoutValue,
564
+ label: childLayoutOrientationLabel,
565
+ onDeselect: resetChildLayoutValue,
566
+ isShownByDefault: defaultControls.childLayout,
567
+ panelId: panelId
568
+ }, createElement(ChildLayoutControl, {
569
+ value: childLayout,
570
+ onChange: setChildLayout,
571
+ parentLayout: settings === null || settings === void 0 ? void 0 : settings.parentLayout
572
+ })));
573
+ }
574
+ //# sourceMappingURL=dimensions-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/dimensions-panel.js"],"names":["classnames","__","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__experimentalBoxControl","BoxControl","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalUnitControl","UnitControl","__experimentalUseCustomUnits","useCustomUnits","__experimentalView","View","Icon","positionCenter","stretchWide","useCallback","Platform","getValueFromVariable","SpacingSizesControl","HeightControl","ChildLayoutControl","cleanEmptyObject","AXIAL_SIDES","useHasDimensionsPanel","settings","hasContentSize","useHasContentSize","hasWideSize","useHasWideSize","hasPadding","useHasPadding","hasMargin","useHasMargin","hasGap","useHasGap","hasMinHeight","useHasMinHeight","hasChildLayout","useHasChildLayout","OS","layout","contentSize","wideSize","spacing","padding","margin","blockGap","dimensions","minHeight","type","parentLayoutType","default","defaultParentLayoutType","allowSizingOnChildren","parentLayout","support","useHasSpacingPresets","custom","theme","defaultPresets","spacingSizes","presets","length","filterValuesBySides","values","sides","filteredValues","forEach","side","top","bottom","left","right","splitStyleValue","value","splitGapValue","DimensionsToolsPanel","resetAllFilter","onChange","panelId","children","resetAll","updatedValue","DEFAULT_CONTROLS","DimensionsPanel","as","Wrapper","inheritedValue","defaultControls","onVisualize","includeLayoutControls","decodeValue","rawValue","showSpacingPresetsControl","units","availableUnits","showContentSizeControl","contentSizeValue","setContentSizeValue","newValue","hasUserSetContentSizeValue","resetContentSizeValue","undefined","showWideSizeControl","wideSizeValue","setWideSizeValue","hasUserSetWideSizeValue","resetWideSizeValue","showPaddingControl","rawPadding","paddingValues","paddingSides","Array","isArray","isAxialPadding","some","includes","setPaddingValues","newPaddingValues","hasPaddingValue","Object","keys","resetPaddingValue","onMouseOverPadding","showMarginControl","rawMargin","marginValues","marginSides","isAxialMargin","setMarginValues","newMarginValues","hasMarginValue","resetMarginValue","onMouseOverMargin","showGapControl","gapValue","gapValues","gapSides","isAxialGap","setGapValue","newGapValue","setGapValues","nextBoxGapValue","hasOwnProperty","resetGapValue","hasGapValue","showMinHeightControl","minHeightValue","setMinHeightValue","resetMinHeightValue","hasMinHeightValue","showChildLayoutControl","childLayout","orientation","childLayoutOrientationLabel","setChildLayout","newChildLayout","resetChildLayoutValue","selfStretch","flexSize","hasChildLayoutValue","previousValue","onMouseLeaveControls","nextContentSize","nextWideSize"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalBoxControl as BoxControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalView as View,\n} from '@wordpress/components';\nimport { Icon, positionCenter, stretchWide } from '@wordpress/icons';\nimport { useCallback, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable } from './utils';\nimport SpacingSizesControl from '../spacing-sizes-control';\nimport HeightControl from '../height-control';\nimport ChildLayoutControl from '../child-layout-control';\nimport { cleanEmptyObject } from '../../hooks/utils';\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\nexport function useHasDimensionsPanel( settings ) {\n\tconst hasContentSize = useHasContentSize( settings );\n\tconst hasWideSize = useHasWideSize( settings );\n\tconst hasPadding = useHasPadding( settings );\n\tconst hasMargin = useHasMargin( settings );\n\tconst hasGap = useHasGap( settings );\n\tconst hasMinHeight = useHasMinHeight( settings );\n\tconst hasChildLayout = useHasChildLayout( settings );\n\n\treturn (\n\t\tPlatform.OS === 'web' &&\n\t\t( hasContentSize ||\n\t\t\thasWideSize ||\n\t\t\thasPadding ||\n\t\t\thasMargin ||\n\t\t\thasGap ||\n\t\t\thasMinHeight ||\n\t\t\thasChildLayout )\n\t);\n}\n\nfunction useHasContentSize( settings ) {\n\treturn settings?.layout?.contentSize;\n}\n\nfunction useHasWideSize( settings ) {\n\treturn settings?.layout?.wideSize;\n}\n\nfunction useHasPadding( settings ) {\n\treturn settings?.spacing?.padding;\n}\n\nfunction useHasMargin( settings ) {\n\treturn settings?.spacing?.margin;\n}\n\nfunction useHasGap( settings ) {\n\treturn settings?.spacing?.blockGap;\n}\n\nfunction useHasMinHeight( settings ) {\n\treturn settings?.dimensions?.minHeight;\n}\n\nfunction useHasChildLayout( settings ) {\n\tconst {\n\t\ttype: parentLayoutType = 'default',\n\t\tdefault: { type: defaultParentLayoutType = 'default' } = {},\n\t\tallowSizingOnChildren = false,\n\t} = settings?.parentLayout ?? {};\n\n\tconst support =\n\t\t( defaultParentLayoutType === 'flex' || parentLayoutType === 'flex' ) &&\n\t\tallowSizingOnChildren;\n\n\treturn !! settings?.layout && support;\n}\n\nfunction useHasSpacingPresets( settings ) {\n\tconst {\n\t\tcustom,\n\t\ttheme,\n\t\tdefault: defaultPresets,\n\t} = settings?.spacing?.spacingSizes || {};\n\tconst presets = custom ?? theme ?? defaultPresets ?? [];\n\n\treturn presets.length > 0;\n}\n\nfunction filterValuesBySides( values, sides ) {\n\tif ( ! sides ) {\n\t\t// If no custom side configuration all sides are opted into by default.\n\t\treturn values;\n\t}\n\n\t// Only include sides opted into within filtered values.\n\tconst filteredValues = {};\n\tsides.forEach( ( side ) => {\n\t\tif ( side === 'vertical' ) {\n\t\t\tfilteredValues.top = values.top;\n\t\t\tfilteredValues.bottom = values.bottom;\n\t\t}\n\t\tif ( side === 'horizontal' ) {\n\t\t\tfilteredValues.left = values.left;\n\t\t\tfilteredValues.right = values.right;\n\t\t}\n\t\tfilteredValues[ side ] = values?.[ side ];\n\t} );\n\n\treturn filteredValues;\n}\n\nfunction splitStyleValue( value ) {\n\t// Check for shorthand value (a string value).\n\tif ( value && typeof value === 'string' ) {\n\t\t// Convert to value for individual sides for BoxControl.\n\t\treturn {\n\t\t\ttop: value,\n\t\t\tright: value,\n\t\t\tbottom: value,\n\t\t\tleft: value,\n\t\t};\n\t}\n\n\treturn value;\n}\n\nfunction splitGapValue( value ) {\n\t// Check for shorthand value (a string value).\n\tif ( value && typeof value === 'string' ) {\n\t\t// If the value is a string, treat it as a single side (top) for the spacing controls.\n\t\treturn {\n\t\t\ttop: value,\n\t\t};\n\t}\n\n\tif ( value ) {\n\t\treturn {\n\t\t\t...value,\n\t\t\tright: value?.left,\n\t\t\tbottom: value?.top,\n\t\t};\n\t}\n\n\treturn value;\n}\n\nfunction DimensionsToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\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={ __( 'Dimensions' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tcontentSize: true,\n\twideSize: true,\n\tpadding: true,\n\tmargin: true,\n\tblockGap: true,\n\tminHeight: true,\n};\n\nexport default function DimensionsPanel( {\n\tas: Wrapper = DimensionsToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tonVisualize = () => {},\n\t// Special case because the layout controls are not part of the dimensions panel\n\t// in global styles but not in block inspector.\n\tincludeLayoutControls = false,\n} ) {\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\n\tconst showSpacingPresetsControl = useHasSpacingPresets( settings );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: settings?.spacing?.units || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\n\t// Content Size\n\tconst showContentSizeControl =\n\t\tuseHasContentSize( settings ) && includeLayoutControls;\n\tconst contentSizeValue = decodeValue( inheritedValue?.layout?.contentSize );\n\tconst setContentSizeValue = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...value?.layout,\n\t\t\t\tcontentSize: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasUserSetContentSizeValue = () => !! value?.layout?.contentSize;\n\tconst resetContentSizeValue = () => setContentSizeValue( undefined );\n\n\t// Wide Size\n\tconst showWideSizeControl =\n\t\tuseHasWideSize( settings ) && includeLayoutControls;\n\tconst wideSizeValue = decodeValue( inheritedValue?.layout?.wideSize );\n\tconst setWideSizeValue = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...value?.layout,\n\t\t\t\twideSize: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasUserSetWideSizeValue = () => !! value?.layout?.wideSize;\n\tconst resetWideSizeValue = () => setWideSizeValue( undefined );\n\n\t// Padding\n\tconst showPaddingControl = useHasPadding( settings );\n\tconst rawPadding = decodeValue( inheritedValue?.spacing?.padding );\n\tconst paddingValues = splitStyleValue( rawPadding );\n\tconst paddingSides = Array.isArray( settings?.spacing?.padding )\n\t\t? settings?.spacing?.padding\n\t\t: settings?.spacing?.padding?.sides;\n\tconst isAxialPadding =\n\t\tpaddingSides &&\n\t\tpaddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setPaddingValues = ( newPaddingValues ) => {\n\t\tconst padding = filterValuesBySides( newPaddingValues, paddingSides );\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tspacing: {\n\t\t\t\t...value?.spacing,\n\t\t\t\tpadding,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasPaddingValue = () =>\n\t\t!! value?.spacing?.padding &&\n\t\tObject.keys( value?.spacing?.padding ).length;\n\tconst resetPaddingValue = () => setPaddingValues( undefined );\n\tconst onMouseOverPadding = () => onVisualize( 'padding' );\n\n\t// Margin\n\tconst showMarginControl = useHasMargin( settings );\n\tconst rawMargin = decodeValue( inheritedValue?.spacing?.margin );\n\tconst marginValues = splitStyleValue( rawMargin );\n\tconst marginSides = Array.isArray( settings?.spacing?.margin )\n\t\t? settings?.spacing?.margin\n\t\t: settings?.spacing?.margin?.sides;\n\tconst isAxialMargin =\n\t\tmarginSides &&\n\t\tmarginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setMarginValues = ( newMarginValues ) => {\n\t\tconst margin = filterValuesBySides( newMarginValues, marginSides );\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tspacing: {\n\t\t\t\t...value?.spacing,\n\t\t\t\tmargin,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasMarginValue = () =>\n\t\t!! value?.spacing?.margin &&\n\t\tObject.keys( value?.spacing?.margin ).length;\n\tconst resetMarginValue = () => setMarginValues( undefined );\n\tconst onMouseOverMargin = () => onVisualize( 'margin' );\n\n\t// Block Gap\n\tconst showGapControl = useHasGap( settings );\n\tconst gapValue = decodeValue( inheritedValue?.spacing?.blockGap );\n\tconst gapValues = splitGapValue( gapValue );\n\tconst gapSides = Array.isArray( settings?.spacing?.blockGap )\n\t\t? settings?.spacing?.blockGap\n\t\t: settings?.spacing?.blockGap?.sides;\n\tconst isAxialGap =\n\t\tgapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setGapValue = ( newGapValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tspacing: {\n\t\t\t\t...value?.spacing,\n\t\t\t\tblockGap: newGapValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst setGapValues = ( nextBoxGapValue ) => {\n\t\tif ( ! nextBoxGapValue ) {\n\t\t\tsetGapValue( null );\n\t\t}\n\t\t// If axial gap is not enabled, treat the 'top' value as the shorthand gap value.\n\t\tif ( ! isAxialGap && nextBoxGapValue?.hasOwnProperty( 'top' ) ) {\n\t\t\tsetGapValue( nextBoxGapValue.top );\n\t\t} else {\n\t\t\tsetGapValue( {\n\t\t\t\ttop: nextBoxGapValue?.top,\n\t\t\t\tleft: nextBoxGapValue?.left,\n\t\t\t} );\n\t\t}\n\t};\n\tconst resetGapValue = () => setGapValue( undefined );\n\tconst hasGapValue = () => !! value?.spacing?.blockGap;\n\n\t// Min Height\n\tconst showMinHeightControl = useHasMinHeight( settings );\n\tconst minHeightValue = decodeValue( inheritedValue?.dimensions?.minHeight );\n\tconst setMinHeightValue = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tdimensions: {\n\t\t\t\t...value?.dimensions,\n\t\t\t\tminHeight: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst resetMinHeightValue = () => {\n\t\tsetMinHeightValue( undefined );\n\t};\n\tconst hasMinHeightValue = () => !! value?.dimensions?.minHeight;\n\n\t// Child Layout\n\tconst showChildLayoutControl = useHasChildLayout( settings );\n\tconst childLayout = inheritedValue?.layout;\n\tconst { orientation = 'horizontal' } = settings?.parentLayout ?? {};\n\tconst childLayoutOrientationLabel =\n\t\torientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n\tconst setChildLayout = ( newChildLayout ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...value?.layout,\n\t\t\t\t...newChildLayout,\n\t\t\t},\n\t\t} );\n\t};\n\tconst resetChildLayoutValue = () => {\n\t\tsetChildLayout( {\n\t\t\tselfStretch: undefined,\n\t\t\tflexSize: undefined,\n\t\t} );\n\t};\n\tconst hasChildLayoutValue = () => !! value?.layout;\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tlayout: cleanEmptyObject( {\n\t\t\t\t...previousValue?.layout,\n\t\t\t\tcontentSize: undefined,\n\t\t\t\twideSize: undefined,\n\t\t\t\tselfStretch: undefined,\n\t\t\t\tflexSize: undefined,\n\t\t\t} ),\n\t\t\tspacing: {\n\t\t\t\t...previousValue?.spacing,\n\t\t\t\tpadding: undefined,\n\t\t\t\tmargin: undefined,\n\t\t\t\tblockGap: undefined,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\t...previousValue?.dimensions,\n\t\t\t\tminHeight: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst onMouseLeaveControls = () => onVisualize( false );\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>\n\t\t\t{ ( showContentSizeControl || showWideSizeControl ) && (\n\t\t\t\t<span className=\"span-columns\">\n\t\t\t\t\t{ __( 'Set the width of the main content area.' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t\t{ showContentSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Content size' ) }\n\t\t\t\t\thasValue={ hasUserSetContentSizeValue }\n\t\t\t\t\tonDeselect={ resetContentSizeValue }\n\t\t\t\t\tisShownByDefault={ defaultControls.contentSize }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<HStack alignment=\"flex-end\" justify=\"flex-start\">\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Content' ) }\n\t\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\tvalue={ contentSizeValue || '' }\n\t\t\t\t\t\t\tonChange={ ( nextContentSize ) => {\n\t\t\t\t\t\t\t\tsetContentSizeValue( nextContentSize );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View>\n\t\t\t\t\t\t\t<Icon icon={ positionCenter } />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</HStack>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWideSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Wide size' ) }\n\t\t\t\t\thasValue={ hasUserSetWideSizeValue }\n\t\t\t\t\tonDeselect={ resetWideSizeValue }\n\t\t\t\t\tisShownByDefault={ defaultControls.wideSize }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<HStack alignment=\"flex-end\" justify=\"flex-start\">\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Wide' ) }\n\t\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\tvalue={ wideSizeValue || '' }\n\t\t\t\t\t\t\tonChange={ ( nextWideSize ) => {\n\t\t\t\t\t\t\t\tsetWideSizeValue( nextWideSize );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View>\n\t\t\t\t\t\t\t<Icon icon={ stretchWide } />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</HStack>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showPaddingControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasPaddingValue }\n\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\tonDeselect={ resetPaddingValue }\n\t\t\t\t\tisShownByDefault={ defaultControls.padding }\n\t\t\t\t\tclassName={ classnames( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialPadding }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialPadding }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\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{ showMarginControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMarginValue }\n\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\tonDeselect={ resetMarginValue }\n\t\t\t\t\tisShownByDefault={ defaultControls.margin }\n\t\t\t\t\tclassName={ classnames( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialMargin }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialMargin }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\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{ showGapControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasGapValue }\n\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\tonDeselect={ resetGapValue }\n\t\t\t\t\tisShownByDefault={ defaultControls.blockGap }\n\t\t\t\t\tclassName={ classnames( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl &&\n\t\t\t\t\t\t( isAxialGap ? (\n\t\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tsides={ gapSides }\n\t\t\t\t\t\t\t\tvalues={ gapValues }\n\t\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\t\tsplitOnAxis={ isAxialGap }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValue }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tvalue={ gapValue }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\tsides={ isAxialGap ? gapSides : [ 'top' ] } // Use 'top' as the shorthand property in non-axial configurations.\n\t\t\t\t\t\t\tvalues={ gapValues }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialGap }\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{ showMinHeightControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMinHeightValue }\n\t\t\t\t\tlabel={ __( 'Min. height' ) }\n\t\t\t\t\tonDeselect={ resetMinHeightValue }\n\t\t\t\t\tisShownByDefault={ defaultControls.minHeight }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<HeightControl\n\t\t\t\t\t\tlabel={ __( 'Min. height' ) }\n\t\t\t\t\t\tvalue={ minHeightValue }\n\t\t\t\t\t\tonChange={ setMinHeightValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showChildLayoutControl && (\n\t\t\t\t<VStack\n\t\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\thasValue={ hasChildLayoutValue }\n\t\t\t\t\tlabel={ childLayoutOrientationLabel }\n\t\t\t\t\tonDeselect={ resetChildLayoutValue }\n\t\t\t\t\tisShownByDefault={ defaultControls.childLayout }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<ChildLayoutControl\n\t\t\t\t\t\tvalue={ childLayout }\n\t\t\t\t\t\tonChange={ setChildLayout }\n\t\t\t\t\t\tparentLayout={ settings?.parentLayout }\n\t\t\t\t\t/>\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"]}