@wordpress/edit-site 5.4.0 → 5.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 (244) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-template/add-custom-template-modal.js +12 -3
  3. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  4. package/build/components/add-new-template/new-template-part.js +8 -7
  5. package/build/components/add-new-template/new-template-part.js.map +1 -1
  6. package/build/components/add-new-template/new-template.js +3 -6
  7. package/build/components/add-new-template/new-template.js.map +1 -1
  8. package/build/components/editor/index.js +3 -3
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/global-styles/border-panel.js +1 -1
  11. package/build/components/global-styles/border-panel.js.map +1 -1
  12. package/build/components/global-styles/context-menu.js +11 -8
  13. package/build/components/global-styles/context-menu.js.map +1 -1
  14. package/build/components/global-styles/dimensions-panel.js +41 -487
  15. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  16. package/build/components/global-styles/duotone-panel.js +78 -0
  17. package/build/components/global-styles/duotone-panel.js.map +1 -0
  18. package/build/components/global-styles/filter-utils.js +17 -0
  19. package/build/components/global-styles/filter-utils.js.map +1 -0
  20. package/build/components/global-styles/preview.js +9 -5
  21. package/build/components/global-styles/preview.js.map +1 -1
  22. package/build/components/global-styles/screen-block-list.js +4 -8
  23. package/build/components/global-styles/screen-block-list.js.map +1 -1
  24. package/build/components/global-styles/screen-border.js +1 -1
  25. package/build/components/global-styles/screen-border.js.map +1 -1
  26. package/build/components/global-styles/screen-filters.js +46 -0
  27. package/build/components/global-styles/screen-filters.js.map +1 -0
  28. package/build/components/global-styles/screen-layout.js +13 -5
  29. package/build/components/global-styles/screen-layout.js.map +1 -1
  30. package/build/components/global-styles/screen-variations.js +1 -1
  31. package/build/components/global-styles/screen-variations.js.map +1 -1
  32. package/build/components/global-styles/shadow-panel.js +6 -4
  33. package/build/components/global-styles/shadow-panel.js.map +1 -1
  34. package/build/components/global-styles/typography-panel.js +2 -5
  35. package/build/components/global-styles/typography-panel.js.map +1 -1
  36. package/build/components/global-styles/ui.js +7 -1
  37. package/build/components/global-styles/ui.js.map +1 -1
  38. package/build/components/keyboard-shortcut-help-modal/config.js +12 -0
  39. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  40. package/build/components/keyboard-shortcuts/edit-mode.js +124 -0
  41. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -0
  42. package/build/components/keyboard-shortcuts/global.js +48 -0
  43. package/build/components/keyboard-shortcuts/global.js.map +1 -0
  44. package/build/components/keyboard-shortcuts/index.js +67 -0
  45. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  46. package/build/components/keyboard-shortcuts/register.js +153 -0
  47. package/build/components/keyboard-shortcuts/register.js.map +1 -0
  48. package/build/components/layout/index.js +5 -1
  49. package/build/components/layout/index.js.map +1 -1
  50. package/build/components/list/added-by.js +41 -42
  51. package/build/components/list/added-by.js.map +1 -1
  52. package/build/components/list/table.js +3 -2
  53. package/build/components/list/table.js.map +1 -1
  54. package/build/components/navigation-inspector/navigation-menu.js +22 -5
  55. package/build/components/navigation-inspector/navigation-menu.js.map +1 -1
  56. package/build/components/save-button/index.js +5 -2
  57. package/build/components/save-button/index.js.map +1 -1
  58. package/build/components/save-panel/index.js +11 -1
  59. package/build/components/save-panel/index.js.map +1 -1
  60. package/build/components/sidebar/index.js +28 -16
  61. package/build/components/sidebar/index.js.map +1 -1
  62. package/build/components/sidebar-button/index.js +30 -0
  63. package/build/components/sidebar-button/index.js.map +1 -0
  64. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +8 -2
  65. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  66. package/build/components/sidebar-navigation-screen/index.js +10 -10
  67. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  68. package/build/components/sidebar-navigation-screen-main/index.js +3 -3
  69. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  70. package/build/components/sidebar-navigation-screen-navigation-item/index.js +17 -16
  71. package/build/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  72. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +10 -4
  73. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  74. package/build/components/sidebar-navigation-screen-template/index.js +9 -19
  75. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  76. package/build/components/sidebar-navigation-screen-templates/index.js +25 -15
  77. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  78. package/build/components/sidebar-navigation-screen-templates-browse/index.js +8 -7
  79. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  80. package/build/components/style-book/index.js +17 -2
  81. package/build/components/style-book/index.js.map +1 -1
  82. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +36 -34
  83. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  84. package/build/components/sync-state-with-url/use-sync-path-with-url.js +65 -18
  85. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  86. package/build/components/template-details/index.js +7 -9
  87. package/build/components/template-details/index.js.map +1 -1
  88. package/build/index.js +10 -22
  89. package/build/index.js.map +1 -1
  90. package/build/store/actions.js +2 -2
  91. package/build/store/actions.js.map +1 -1
  92. package/build/utils/get-is-list-page.js +1 -1
  93. package/build/utils/get-is-list-page.js.map +1 -1
  94. package/build-module/components/add-new-template/add-custom-template-modal.js +13 -4
  95. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  96. package/build-module/components/add-new-template/new-template-part.js +8 -7
  97. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  98. package/build-module/components/add-new-template/new-template.js +3 -6
  99. package/build-module/components/add-new-template/new-template.js.map +1 -1
  100. package/build-module/components/editor/index.js +3 -3
  101. package/build-module/components/editor/index.js.map +1 -1
  102. package/build-module/components/global-styles/border-panel.js +1 -1
  103. package/build-module/components/global-styles/border-panel.js.map +1 -1
  104. package/build-module/components/global-styles/context-menu.js +12 -9
  105. package/build-module/components/global-styles/context-menu.js.map +1 -1
  106. package/build-module/components/global-styles/dimensions-panel.js +43 -480
  107. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  108. package/build-module/components/global-styles/duotone-panel.js +67 -0
  109. package/build-module/components/global-styles/duotone-panel.js.map +1 -0
  110. package/build-module/components/global-styles/filter-utils.js +9 -0
  111. package/build-module/components/global-styles/filter-utils.js.map +1 -0
  112. package/build-module/components/global-styles/preview.js +10 -6
  113. package/build-module/components/global-styles/preview.js.map +1 -1
  114. package/build-module/components/global-styles/screen-block-list.js +4 -6
  115. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  116. package/build-module/components/global-styles/screen-border.js +1 -1
  117. package/build-module/components/global-styles/screen-border.js.map +1 -1
  118. package/build-module/components/global-styles/screen-filters.js +33 -0
  119. package/build-module/components/global-styles/screen-filters.js.map +1 -0
  120. package/build-module/components/global-styles/screen-layout.js +11 -2
  121. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  122. package/build-module/components/global-styles/screen-variations.js +1 -1
  123. package/build-module/components/global-styles/screen-variations.js.map +1 -1
  124. package/build-module/components/global-styles/shadow-panel.js +6 -4
  125. package/build-module/components/global-styles/shadow-panel.js.map +1 -1
  126. package/build-module/components/global-styles/typography-panel.js +2 -5
  127. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  128. package/build-module/components/global-styles/ui.js +6 -1
  129. package/build-module/components/global-styles/ui.js.map +1 -1
  130. package/build-module/components/keyboard-shortcut-help-modal/config.js +12 -0
  131. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  132. package/build-module/components/keyboard-shortcuts/edit-mode.js +108 -0
  133. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -0
  134. package/build-module/components/keyboard-shortcuts/global.js +37 -0
  135. package/build-module/components/keyboard-shortcuts/global.js.map +1 -0
  136. package/build-module/components/keyboard-shortcuts/index.js +65 -0
  137. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  138. package/build-module/components/keyboard-shortcuts/register.js +141 -0
  139. package/build-module/components/keyboard-shortcuts/register.js.map +1 -0
  140. package/build-module/components/layout/index.js +3 -1
  141. package/build-module/components/layout/index.js.map +1 -1
  142. package/build-module/components/list/added-by.js +43 -44
  143. package/build-module/components/list/added-by.js.map +1 -1
  144. package/build-module/components/list/table.js +3 -2
  145. package/build-module/components/list/table.js.map +1 -1
  146. package/build-module/components/navigation-inspector/navigation-menu.js +25 -8
  147. package/build-module/components/navigation-inspector/navigation-menu.js.map +1 -1
  148. package/build-module/components/save-button/index.js +5 -2
  149. package/build-module/components/save-button/index.js.map +1 -1
  150. package/build-module/components/save-panel/index.js +8 -1
  151. package/build-module/components/save-panel/index.js.map +1 -1
  152. package/build-module/components/sidebar/index.js +25 -18
  153. package/build-module/components/sidebar/index.js.map +1 -1
  154. package/build-module/components/sidebar-button/index.js +18 -0
  155. package/build-module/components/sidebar-button/index.js.map +1 -0
  156. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +8 -2
  157. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  158. package/build-module/components/sidebar-navigation-screen/index.js +8 -11
  159. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  160. package/build-module/components/sidebar-navigation-screen-main/index.js +3 -3
  161. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  162. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js +16 -17
  163. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  164. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +10 -4
  165. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  166. package/build-module/components/sidebar-navigation-screen-template/index.js +8 -18
  167. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  168. package/build-module/components/sidebar-navigation-screen-templates/index.js +23 -16
  169. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  170. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +7 -7
  171. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  172. package/build-module/components/style-book/index.js +17 -3
  173. package/build-module/components/style-book/index.js.map +1 -1
  174. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +36 -34
  175. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  176. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +63 -18
  177. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  178. package/build-module/components/template-details/index.js +7 -8
  179. package/build-module/components/template-details/index.js.map +1 -1
  180. package/build-module/index.js +12 -22
  181. package/build-module/index.js.map +1 -1
  182. package/build-module/store/actions.js +2 -2
  183. package/build-module/store/actions.js.map +1 -1
  184. package/build-module/utils/get-is-list-page.js +1 -1
  185. package/build-module/utils/get-is-list-page.js.map +1 -1
  186. package/build-style/style-rtl.css +41 -38
  187. package/build-style/style.css +41 -38
  188. package/package.json +31 -31
  189. package/src/components/add-new-template/add-custom-template-modal.js +14 -10
  190. package/src/components/add-new-template/new-template-part.js +7 -9
  191. package/src/components/add-new-template/new-template.js +3 -6
  192. package/src/components/add-new-template/style.scss +0 -5
  193. package/src/components/block-editor/style.scss +1 -1
  194. package/src/components/editor/index.js +4 -3
  195. package/src/components/editor/style.scss +0 -6
  196. package/src/components/global-styles/border-panel.js +1 -1
  197. package/src/components/global-styles/context-menu.js +16 -10
  198. package/src/components/global-styles/dimensions-panel.js +43 -577
  199. package/src/components/global-styles/duotone-panel.js +82 -0
  200. package/src/components/global-styles/filter-utils.js +9 -0
  201. package/src/components/global-styles/preview.js +155 -140
  202. package/src/components/global-styles/screen-block-list.js +4 -9
  203. package/src/components/global-styles/screen-border.js +1 -1
  204. package/src/components/global-styles/screen-filters.js +27 -0
  205. package/src/components/global-styles/screen-layout.js +9 -2
  206. package/src/components/global-styles/screen-variations.js +0 -1
  207. package/src/components/global-styles/shadow-panel.js +4 -3
  208. package/src/components/global-styles/typography-panel.js +5 -7
  209. package/src/components/global-styles/ui.js +6 -1
  210. package/src/components/keyboard-shortcut-help-modal/config.js +10 -0
  211. package/src/components/keyboard-shortcuts/edit-mode.js +116 -0
  212. package/src/components/keyboard-shortcuts/global.js +35 -0
  213. package/src/components/keyboard-shortcuts/index.js +70 -0
  214. package/src/components/keyboard-shortcuts/register.js +157 -0
  215. package/src/components/layout/index.js +4 -0
  216. package/src/components/layout/style.scss +8 -1
  217. package/src/components/list/added-by.js +48 -55
  218. package/src/components/list/style.scss +5 -13
  219. package/src/components/list/table.js +4 -5
  220. package/src/components/navigation-inspector/navigation-menu.js +24 -6
  221. package/src/components/save-button/index.js +2 -2
  222. package/src/components/save-panel/index.js +8 -1
  223. package/src/components/sidebar/index.js +32 -14
  224. package/src/components/sidebar-button/index.js +21 -0
  225. package/src/components/sidebar-button/style.scss +23 -0
  226. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +3 -7
  227. package/src/components/sidebar-edit-mode/style.scss +16 -0
  228. package/src/components/sidebar-navigation-screen/index.js +31 -38
  229. package/src/components/sidebar-navigation-screen/style.scss +1 -9
  230. package/src/components/sidebar-navigation-screen-main/index.js +3 -3
  231. package/src/components/sidebar-navigation-screen-navigation-item/index.js +24 -20
  232. package/src/components/sidebar-navigation-screen-navigation-menus/index.js +7 -3
  233. package/src/components/sidebar-navigation-screen-template/index.js +7 -19
  234. package/src/components/sidebar-navigation-screen-templates/index.js +22 -14
  235. package/src/components/sidebar-navigation-screen-templates/style.scss +0 -5
  236. package/src/components/sidebar-navigation-screen-templates-browse/index.js +6 -11
  237. package/src/components/style-book/index.js +25 -1
  238. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +28 -23
  239. package/src/components/sync-state-with-url/use-sync-path-with-url.js +72 -17
  240. package/src/components/template-details/index.js +5 -6
  241. package/src/index.js +6 -21
  242. package/src/store/actions.js +2 -2
  243. package/src/style.scss +1 -0
  244. package/src/utils/get-is-list-page.js +1 -1
@@ -1,33 +1,16 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.default = DimensionsPanel;
9
- exports.useHasDimensionsPanel = useHasDimensionsPanel;
10
7
 
11
8
  var _element = require("@wordpress/element");
12
9
 
13
- var _classnames = _interopRequireDefault(require("classnames"));
14
-
15
- var _i18n = require("@wordpress/i18n");
16
-
17
- var _components = require("@wordpress/components");
18
-
19
10
  var _blockEditor = require("@wordpress/block-editor");
20
11
 
21
- var _icons = require("@wordpress/icons");
22
-
23
- var _hooks = require("./hooks");
24
-
25
12
  var _privateApis = require("../../private-apis");
26
13
 
27
- /**
28
- * External dependencies
29
- */
30
-
31
14
  /**
32
15
  * WordPress dependencies
33
16
  */
@@ -36,491 +19,62 @@ var _privateApis = require("../../private-apis");
36
19
  * Internal dependencies
37
20
  */
38
21
  const {
22
+ useGlobalStyle,
39
23
  useGlobalSetting,
40
- useGlobalStyle
24
+ useSettingsForBlockElement,
25
+ DimensionsPanel: StylesDimensionsPanel
41
26
  } = (0, _privateApis.unlock)(_blockEditor.privateApis);
42
- const AXIAL_SIDES = ['horizontal', 'vertical'];
43
-
44
- function useHasDimensionsPanel(name) {
45
- const hasContentSize = useHasContentSize(name);
46
- const hasWideSize = useHasWideSize(name);
47
- const hasPadding = useHasPadding(name);
48
- const hasMargin = useHasMargin(name);
49
- const hasGap = useHasGap(name);
50
- const hasMinHeight = useHasMinHeight(name);
51
- return hasContentSize || hasWideSize || hasPadding || hasMargin || hasGap || hasMinHeight;
52
- }
53
-
54
- function useHasContentSize(name) {
55
- const supports = (0, _hooks.useSupportedStyles)(name);
56
- const [settings] = useGlobalSetting('layout.contentSize', name);
57
- return settings && supports.includes('contentSize');
58
- }
59
-
60
- function useHasWideSize(name) {
61
- const supports = (0, _hooks.useSupportedStyles)(name);
62
- const [settings] = useGlobalSetting('layout.wideSize', name);
63
- return settings && supports.includes('wideSize');
64
- }
65
-
66
- function useHasPadding(name) {
67
- const supports = (0, _hooks.useSupportedStyles)(name);
68
- const [settings] = useGlobalSetting('spacing.padding', name);
69
- return settings && supports.includes('padding');
70
- }
71
-
72
- function useHasMargin(name) {
73
- const supports = (0, _hooks.useSupportedStyles)(name);
74
- const [settings] = useGlobalSetting('spacing.margin', name);
75
- return settings && supports.includes('margin');
76
- }
77
-
78
- function useHasGap(name) {
79
- const supports = (0, _hooks.useSupportedStyles)(name);
80
- const [settings] = useGlobalSetting('spacing.blockGap', name);
81
- return settings && supports.includes('blockGap');
82
- }
83
-
84
- function useHasMinHeight(name) {
85
- const supports = (0, _hooks.useSupportedStyles)(name);
86
- const [settings] = useGlobalSetting('dimensions.minHeight', name);
87
- return settings && supports.includes('minHeight');
88
- }
89
-
90
- function useHasSpacingPresets() {
91
- var _ref, _ref2;
92
-
93
- const [settings] = useGlobalSetting('spacing.spacingSizes');
94
- const {
95
- custom,
96
- theme,
97
- default: defaultPresets
98
- } = settings || {};
99
- const presets = (_ref = (_ref2 = custom !== null && custom !== void 0 ? custom : theme) !== null && _ref2 !== void 0 ? _ref2 : defaultPresets) !== null && _ref !== void 0 ? _ref : [];
100
- return settings && presets.length > 0;
101
- }
102
-
103
- function filterValuesBySides(values, sides) {
104
- if (!sides) {
105
- // If no custom side configuration all sides are opted into by default.
106
- return values;
107
- } // Only include sides opted into within filtered values.
108
27
 
28
+ function DimensionsPanel(_ref) {
29
+ let {
30
+ name,
31
+ variation = ''
32
+ } = _ref;
33
+ let prefixParts = [];
109
34
 
110
- const filteredValues = {};
111
- sides.forEach(side => {
112
- if (side === 'vertical') {
113
- filteredValues.top = values.top;
114
- filteredValues.bottom = values.bottom;
115
- }
116
-
117
- if (side === 'horizontal') {
118
- filteredValues.left = values.left;
119
- filteredValues.right = values.right;
120
- }
35
+ if (variation) {
36
+ prefixParts = ['variations', variation].concat(prefixParts);
37
+ }
121
38
 
122
- filteredValues[side] = values[side];
39
+ const prefix = prefixParts.join('.');
40
+ const [style] = useGlobalStyle(prefix, name, 'user', false);
41
+ const [inheritedStyle, setStyle] = useGlobalStyle(prefix, name, 'all', {
42
+ shouldDecodeEncode: false
123
43
  });
124
- return filteredValues;
125
- }
44
+ const [rawSettings, setSettings] = useGlobalSetting('', name);
45
+ const settings = useSettingsForBlockElement(rawSettings, name); // These intermediary objects are needed because the "layout" property is stored
46
+ // in settings rather than styles.
126
47
 
127
- function splitStyleValue(value) {
128
- // Check for shorthand value (a string value).
129
- if (value && typeof value === 'string') {
130
- // Convert to value for individual sides for BoxControl.
131
- return {
132
- top: value,
133
- right: value,
134
- bottom: value,
135
- left: value
48
+ const inheritedStyleWithLayout = (0, _element.useMemo)(() => {
49
+ return { ...inheritedStyle,
50
+ layout: settings.layout
136
51
  };
137
- }
138
-
139
- return value;
140
- }
141
-
142
- function splitGapValue(value) {
143
- // Check for shorthand value (a string value).
144
- if (value && typeof value === 'string') {
145
- // If the value is a string, treat it as a single side (top) for the spacing controls.
146
- return {
147
- top: value
52
+ }, [inheritedStyle, settings.layout]);
53
+ const styleWithLayout = (0, _element.useMemo)(() => {
54
+ return { ...style,
55
+ layout: settings.layout
148
56
  };
149
- }
57
+ }, [style, settings.layout]);
150
58
 
151
- if (value) {
152
- return { ...value,
153
- right: value === null || value === void 0 ? void 0 : value.left,
154
- bottom: value === null || value === void 0 ? void 0 : value.top
59
+ const onChange = newStyle => {
60
+ const updatedStyle = { ...newStyle
155
61
  };
156
- }
157
-
158
- return value;
159
- } // Props for managing `layout.contentSize`.
160
-
161
-
162
- function useContentSizeProps(name) {
163
- const [contentSizeValue, setContentSizeValue] = useGlobalSetting('layout.contentSize', name);
164
- const [userSetContentSizeValue] = useGlobalSetting('layout.contentSize', name, 'user');
165
-
166
- const hasUserSetContentSizeValue = () => !!userSetContentSizeValue;
167
-
168
- const resetContentSizeValue = () => setContentSizeValue('');
169
-
170
- return {
171
- contentSizeValue,
172
- setContentSizeValue,
173
- hasUserSetContentSizeValue,
174
- resetContentSizeValue
175
- };
176
- } // Props for managing `layout.wideSize`.
177
-
178
-
179
- function useWideSizeProps(name) {
180
- const [wideSizeValue, setWideSizeValue] = useGlobalSetting('layout.wideSize', name);
181
- const [userSetWideSizeValue] = useGlobalSetting('layout.wideSize', name, 'user');
62
+ delete updatedStyle.layout;
63
+ setStyle(updatedStyle);
182
64
 
183
- const hasUserSetWideSizeValue = () => !!userSetWideSizeValue;
184
-
185
- const resetWideSizeValue = () => setWideSizeValue('');
186
-
187
- return {
188
- wideSizeValue,
189
- setWideSizeValue,
190
- hasUserSetWideSizeValue,
191
- resetWideSizeValue
192
- };
193
- } // Props for managing `spacing.padding`.
194
-
195
-
196
- function usePaddingProps(name) {
197
- let variation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
198
- const prefix = variation ? `variations.${variation}.` : '';
199
- const [rawPadding, setRawPadding] = useGlobalStyle(prefix + 'spacing.padding', name);
200
- const paddingValues = splitStyleValue(rawPadding);
201
- const paddingSides = (0, _blockEditor.__experimentalUseCustomSides)(name, 'padding');
202
- const isAxialPadding = paddingSides && paddingSides.some(side => AXIAL_SIDES.includes(side));
203
-
204
- const setPaddingValues = newPaddingValues => {
205
- const padding = filterValuesBySides(newPaddingValues, paddingSides);
206
- setRawPadding(padding);
207
- };
208
-
209
- const resetPaddingValue = () => setPaddingValues({});
210
-
211
- const [userSetPaddingValue] = useGlobalStyle(prefix + 'spacing.padding', name, 'user'); // The `hasPaddingValue` check does not need a parsed value, as `userSetPaddingValue` will be `undefined` if not set.
212
-
213
- const hasPaddingValue = () => !!userSetPaddingValue;
214
-
215
- return {
216
- paddingValues,
217
- paddingSides,
218
- isAxialPadding,
219
- setPaddingValues,
220
- resetPaddingValue,
221
- hasPaddingValue
222
- };
223
- } // Props for managing `spacing.margin`.
224
-
225
-
226
- function useMarginProps(name) {
227
- let variation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
228
- const prefix = variation ? `variations.${variation}.` : '';
229
- const [rawMargin, setRawMargin] = useGlobalStyle(prefix + 'spacing.margin', name);
230
- const marginValues = splitStyleValue(rawMargin);
231
- const marginSides = (0, _blockEditor.__experimentalUseCustomSides)(name, 'margin');
232
- const isAxialMargin = marginSides && marginSides.some(side => AXIAL_SIDES.includes(side));
233
-
234
- const setMarginValues = newMarginValues => {
235
- const margin = filterValuesBySides(newMarginValues, marginSides);
236
- setRawMargin(margin);
237
- };
238
-
239
- const resetMarginValue = () => setMarginValues({});
240
-
241
- const hasMarginValue = () => !!marginValues && Object.keys(marginValues).length;
242
-
243
- return {
244
- marginValues,
245
- marginSides,
246
- isAxialMargin,
247
- setMarginValues,
248
- resetMarginValue,
249
- hasMarginValue
250
- };
251
- } // Props for managing `spacing.blockGap`.
252
-
253
-
254
- function useBlockGapProps(name) {
255
- let variation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
256
- const prefix = variation ? `variations.${variation}.` : '';
257
- const [gapValue, setGapValue] = useGlobalStyle(prefix + 'spacing.blockGap', name);
258
- const gapValues = splitGapValue(gapValue);
259
- const gapSides = (0, _blockEditor.__experimentalUseCustomSides)(name, 'blockGap');
260
- const isAxialGap = gapSides && gapSides.some(side => AXIAL_SIDES.includes(side));
261
-
262
- const resetGapValue = () => setGapValue(undefined);
263
-
264
- const [userSetGapValue] = useGlobalStyle(prefix + 'spacing.blockGap', name, 'user');
265
-
266
- const hasGapValue = () => !!userSetGapValue;
267
-
268
- const setGapValues = nextBoxGapValue => {
269
- if (!nextBoxGapValue) {
270
- setGapValue(null);
271
- } // If axial gap is not enabled, treat the 'top' value as the shorthand gap value.
272
-
273
-
274
- if (!isAxialGap && nextBoxGapValue !== null && nextBoxGapValue !== void 0 && nextBoxGapValue.hasOwnProperty('top')) {
275
- setGapValue(nextBoxGapValue.top);
276
- } else {
277
- setGapValue({
278
- top: nextBoxGapValue === null || nextBoxGapValue === void 0 ? void 0 : nextBoxGapValue.top,
279
- left: nextBoxGapValue === null || nextBoxGapValue === void 0 ? void 0 : nextBoxGapValue.left
65
+ if (newStyle.layout !== settings.layout) {
66
+ setSettings({ ...rawSettings,
67
+ layout: newStyle.layout
280
68
  });
281
69
  }
282
70
  };
283
71
 
284
- return {
285
- gapValue,
286
- gapValues,
287
- gapSides,
288
- isAxialGap,
289
- setGapValue,
290
- setGapValues,
291
- resetGapValue,
292
- hasGapValue
293
- };
294
- } // Props for managing `dimensions.minHeight`.
295
-
296
-
297
- function useMinHeightProps(name) {
298
- let variation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
299
- const prefix = variation ? `variations.${variation}.` : '';
300
- const [minHeightValue, setMinHeightValue] = useGlobalStyle(prefix + 'dimensions.minHeight', name);
301
-
302
- const resetMinHeightValue = () => setMinHeightValue(undefined);
303
-
304
- const hasMinHeightValue = () => !!minHeightValue;
305
-
306
- return {
307
- minHeightValue,
308
- setMinHeightValue,
309
- resetMinHeightValue,
310
- hasMinHeightValue
311
- };
312
- }
313
-
314
- function DimensionsPanel(_ref3) {
315
- let {
316
- name,
317
- variation = ''
318
- } = _ref3;
319
- const showContentSizeControl = useHasContentSize(name);
320
- const showWideSizeControl = useHasWideSize(name);
321
- const showPaddingControl = useHasPadding(name);
322
- const showMarginControl = useHasMargin(name);
323
- const showGapControl = useHasGap(name);
324
- const showMinHeightControl = useHasMinHeight(name);
325
- const showSpacingPresetsControl = useHasSpacingPresets();
326
- const units = (0, _components.__experimentalUseCustomUnits)({
327
- availableUnits: useGlobalSetting('spacing.units', name)[0] || ['%', 'px', 'em', 'rem', 'vw']
328
- }); // Props for managing `layout.contentSize`.
329
-
330
- const {
331
- contentSizeValue,
332
- setContentSizeValue,
333
- hasUserSetContentSizeValue,
334
- resetContentSizeValue
335
- } = useContentSizeProps(name); // Props for managing `layout.wideSize`.
336
-
337
- const {
338
- wideSizeValue,
339
- setWideSizeValue,
340
- hasUserSetWideSizeValue,
341
- resetWideSizeValue
342
- } = useWideSizeProps(name); // Props for managing `spacing.padding`.
343
-
344
- const {
345
- paddingValues,
346
- paddingSides,
347
- isAxialPadding,
348
- setPaddingValues,
349
- resetPaddingValue,
350
- hasPaddingValue
351
- } = usePaddingProps(name, variation); // Props for managing `spacing.margin`.
352
-
353
- const {
354
- marginValues,
355
- marginSides,
356
- isAxialMargin,
357
- setMarginValues,
358
- resetMarginValue,
359
- hasMarginValue
360
- } = useMarginProps(name, variation); // Props for managing `spacing.blockGap`.
361
-
362
- const {
363
- gapValue,
364
- gapValues,
365
- gapSides,
366
- isAxialGap,
367
- setGapValue,
368
- setGapValues,
369
- resetGapValue,
370
- hasGapValue
371
- } = useBlockGapProps(name, variation); // Props for managing `dimensions.minHeight`.
372
-
373
- const {
374
- minHeightValue,
375
- setMinHeightValue,
376
- resetMinHeightValue,
377
- hasMinHeightValue
378
- } = useMinHeightProps(name, variation);
379
-
380
- const resetAll = () => {
381
- resetPaddingValue();
382
- resetMarginValue();
383
- resetGapValue();
384
- resetContentSizeValue();
385
- resetWideSizeValue();
386
- };
387
-
388
- return (0, _element.createElement)(_components.__experimentalToolsPanel, {
389
- label: (0, _i18n.__)('Dimensions'),
390
- resetAll: resetAll,
391
- headingLevel: 3
392
- }, (showContentSizeControl || showWideSizeControl) && (0, _element.createElement)("span", {
393
- className: "span-columns"
394
- }, (0, _i18n.__)('Set the width of the main content area.')), showContentSizeControl && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
395
- className: "single-column",
396
- label: (0, _i18n.__)('Content size'),
397
- hasValue: hasUserSetContentSizeValue,
398
- onDeselect: resetContentSizeValue,
399
- isShownByDefault: true
400
- }, (0, _element.createElement)(_components.__experimentalHStack, {
401
- alignment: "flex-end",
402
- justify: "flex-start"
403
- }, (0, _element.createElement)(_components.__experimentalUnitControl, {
404
- label: (0, _i18n.__)('Content'),
405
- labelPosition: "top",
406
- __unstableInputWidth: "80px",
407
- value: contentSizeValue || '',
408
- onChange: nextContentSize => {
409
- setContentSizeValue(nextContentSize);
410
- },
411
- units: units
412
- }), (0, _element.createElement)(_components.__experimentalView, null, (0, _element.createElement)(_icons.Icon, {
413
- icon: _icons.positionCenter
414
- })))), showWideSizeControl && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
415
- className: "single-column",
416
- label: (0, _i18n.__)('Wide size'),
417
- hasValue: hasUserSetWideSizeValue,
418
- onDeselect: resetWideSizeValue,
419
- isShownByDefault: true
420
- }, (0, _element.createElement)(_components.__experimentalHStack, {
421
- alignment: "flex-end",
422
- justify: "flex-start"
423
- }, (0, _element.createElement)(_components.__experimentalUnitControl, {
424
- label: (0, _i18n.__)('Wide'),
425
- labelPosition: "top",
426
- __unstableInputWidth: "80px",
427
- value: wideSizeValue || '',
428
- onChange: nextWideSize => {
429
- setWideSizeValue(nextWideSize);
430
- },
431
- units: units
432
- }), (0, _element.createElement)(_components.__experimentalView, null, (0, _element.createElement)(_icons.Icon, {
433
- icon: _icons.stretchWide
434
- })))), showPaddingControl && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
435
- hasValue: hasPaddingValue,
436
- label: (0, _i18n.__)('Padding'),
437
- onDeselect: resetPaddingValue,
438
- isShownByDefault: true,
439
- className: (0, _classnames.default)({
440
- 'tools-panel-item-spacing': showSpacingPresetsControl
441
- })
442
- }, !showSpacingPresetsControl && (0, _element.createElement)(_components.__experimentalBoxControl, {
443
- values: paddingValues,
444
- onChange: setPaddingValues,
445
- label: (0, _i18n.__)('Padding'),
446
- sides: paddingSides,
447
- units: units,
448
- allowReset: false,
449
- splitOnAxis: isAxialPadding
450
- }), showSpacingPresetsControl && (0, _element.createElement)(_blockEditor.__experimentalSpacingSizesControl, {
451
- values: paddingValues,
452
- onChange: setPaddingValues,
453
- label: (0, _i18n.__)('Padding'),
454
- sides: paddingSides,
455
- units: units,
456
- allowReset: false,
457
- splitOnAxis: isAxialPadding
458
- })), showMarginControl && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
459
- hasValue: hasMarginValue,
460
- label: (0, _i18n.__)('Margin'),
461
- onDeselect: resetMarginValue,
462
- isShownByDefault: true,
463
- className: (0, _classnames.default)({
464
- 'tools-panel-item-spacing': showSpacingPresetsControl
465
- })
466
- }, !showSpacingPresetsControl && (0, _element.createElement)(_components.__experimentalBoxControl, {
467
- values: marginValues,
468
- onChange: setMarginValues,
469
- label: (0, _i18n.__)('Margin'),
470
- sides: marginSides,
471
- units: units,
472
- allowReset: false,
473
- splitOnAxis: isAxialMargin
474
- }), showSpacingPresetsControl && (0, _element.createElement)(_blockEditor.__experimentalSpacingSizesControl, {
475
- values: marginValues,
476
- onChange: setMarginValues,
477
- label: (0, _i18n.__)('Margin'),
478
- sides: marginSides,
479
- units: units,
480
- allowReset: false,
481
- splitOnAxis: isAxialMargin
482
- })), showGapControl && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
483
- hasValue: hasGapValue,
484
- label: (0, _i18n.__)('Block spacing'),
485
- onDeselect: resetGapValue,
486
- isShownByDefault: true,
487
- className: (0, _classnames.default)({
488
- 'tools-panel-item-spacing': showSpacingPresetsControl
489
- })
490
- }, !showSpacingPresetsControl && (isAxialGap ? (0, _element.createElement)(_components.__experimentalBoxControl, {
491
- label: (0, _i18n.__)('Block spacing'),
492
- min: 0,
493
- onChange: setGapValues,
494
- units: units,
495
- sides: gapSides,
496
- values: gapValues,
497
- allowReset: false,
498
- splitOnAxis: isAxialGap
499
- }) : (0, _element.createElement)(_components.__experimentalUnitControl, {
500
- label: (0, _i18n.__)('Block spacing'),
501
- __unstableInputWidth: "80px",
502
- min: 0,
503
- onChange: setGapValue,
504
- units: units,
505
- value: gapValue
506
- })), showSpacingPresetsControl && (0, _element.createElement)(_blockEditor.__experimentalSpacingSizesControl, {
507
- label: (0, _i18n.__)('Block spacing'),
508
- min: 0,
509
- onChange: setGapValues,
510
- sides: isAxialGap ? gapSides : ['top'] // Use 'top' as the shorthand property in non-axial configurations.
511
- ,
512
- values: gapValues,
513
- allowReset: false,
514
- splitOnAxis: isAxialGap
515
- })), showMinHeightControl && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
516
- hasValue: hasMinHeightValue,
517
- label: (0, _i18n.__)('Min. height'),
518
- onDeselect: resetMinHeightValue,
519
- isShownByDefault: true
520
- }, (0, _element.createElement)(_blockEditor.HeightControl, {
521
- label: (0, _i18n.__)('Min. height'),
522
- value: minHeightValue,
523
- onChange: setMinHeightValue
524
- })));
72
+ return (0, _element.createElement)(StylesDimensionsPanel, {
73
+ inheritedValue: inheritedStyleWithLayout,
74
+ value: styleWithLayout,
75
+ onChange: onChange,
76
+ settings: settings,
77
+ includeLayoutControls: true
78
+ });
525
79
  }
526
80
  //# sourceMappingURL=dimensions-panel.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/dimensions-panel.js"],"names":["useGlobalSetting","useGlobalStyle","blockEditorPrivateApis","AXIAL_SIDES","useHasDimensionsPanel","name","hasContentSize","useHasContentSize","hasWideSize","useHasWideSize","hasPadding","useHasPadding","hasMargin","useHasMargin","hasGap","useHasGap","hasMinHeight","useHasMinHeight","supports","settings","includes","useHasSpacingPresets","custom","theme","default","defaultPresets","presets","length","filterValuesBySides","values","sides","filteredValues","forEach","side","top","bottom","left","right","splitStyleValue","value","splitGapValue","useContentSizeProps","contentSizeValue","setContentSizeValue","userSetContentSizeValue","hasUserSetContentSizeValue","resetContentSizeValue","useWideSizeProps","wideSizeValue","setWideSizeValue","userSetWideSizeValue","hasUserSetWideSizeValue","resetWideSizeValue","usePaddingProps","variation","prefix","rawPadding","setRawPadding","paddingValues","paddingSides","isAxialPadding","some","setPaddingValues","newPaddingValues","padding","resetPaddingValue","userSetPaddingValue","hasPaddingValue","useMarginProps","rawMargin","setRawMargin","marginValues","marginSides","isAxialMargin","setMarginValues","newMarginValues","margin","resetMarginValue","hasMarginValue","Object","keys","useBlockGapProps","gapValue","setGapValue","gapValues","gapSides","isAxialGap","resetGapValue","undefined","userSetGapValue","hasGapValue","setGapValues","nextBoxGapValue","hasOwnProperty","useMinHeightProps","minHeightValue","setMinHeightValue","resetMinHeightValue","hasMinHeightValue","DimensionsPanel","showContentSizeControl","showWideSizeControl","showPaddingControl","showMarginControl","showGapControl","showMinHeightControl","showSpacingPresetsControl","units","availableUnits","resetAll","nextContentSize","positionCenter","nextWideSize","stretchWide"],"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__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalView as View,\n} from '@wordpress/components';\nimport {\n\t__experimentalUseCustomSides as useCustomSides,\n\tHeightControl,\n\t__experimentalSpacingSizesControl as SpacingSizesControl,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { Icon, positionCenter, stretchWide } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { useSupportedStyles } from './hooks';\nimport { unlock } from '../../private-apis';\n\nconst { useGlobalSetting, useGlobalStyle } = unlock( blockEditorPrivateApis );\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\nexport function useHasDimensionsPanel( name ) {\n\tconst hasContentSize = useHasContentSize( name );\n\tconst hasWideSize = useHasWideSize( name );\n\tconst hasPadding = useHasPadding( name );\n\tconst hasMargin = useHasMargin( name );\n\tconst hasGap = useHasGap( name );\n\tconst hasMinHeight = useHasMinHeight( name );\n\n\treturn (\n\t\thasContentSize ||\n\t\thasWideSize ||\n\t\thasPadding ||\n\t\thasMargin ||\n\t\thasGap ||\n\t\thasMinHeight\n\t);\n}\n\nfunction useHasContentSize( name ) {\n\tconst supports = useSupportedStyles( name );\n\tconst [ settings ] = useGlobalSetting( 'layout.contentSize', name );\n\n\treturn settings && supports.includes( 'contentSize' );\n}\n\nfunction useHasWideSize( name ) {\n\tconst supports = useSupportedStyles( name );\n\tconst [ settings ] = useGlobalSetting( 'layout.wideSize', name );\n\n\treturn settings && supports.includes( 'wideSize' );\n}\n\nfunction useHasPadding( name ) {\n\tconst supports = useSupportedStyles( name );\n\tconst [ settings ] = useGlobalSetting( 'spacing.padding', name );\n\n\treturn settings && supports.includes( 'padding' );\n}\n\nfunction useHasMargin( name ) {\n\tconst supports = useSupportedStyles( name );\n\tconst [ settings ] = useGlobalSetting( 'spacing.margin', name );\n\n\treturn settings && supports.includes( 'margin' );\n}\n\nfunction useHasGap( name ) {\n\tconst supports = useSupportedStyles( name );\n\tconst [ settings ] = useGlobalSetting( 'spacing.blockGap', name );\n\n\treturn settings && supports.includes( 'blockGap' );\n}\n\nfunction useHasMinHeight( name ) {\n\tconst supports = useSupportedStyles( name );\n\tconst [ settings ] = useGlobalSetting( 'dimensions.minHeight', name );\n\n\treturn settings && supports.includes( 'minHeight' );\n}\n\nfunction useHasSpacingPresets() {\n\tconst [ settings ] = useGlobalSetting( 'spacing.spacingSizes' );\n\tconst { custom, theme, default: defaultPresets } = settings || {};\n\tconst presets = custom ?? theme ?? defaultPresets ?? [];\n\n\treturn settings && 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\n// Props for managing `layout.contentSize`.\nfunction useContentSizeProps( name ) {\n\tconst [ contentSizeValue, setContentSizeValue ] = useGlobalSetting(\n\t\t'layout.contentSize',\n\t\tname\n\t);\n\tconst [ userSetContentSizeValue ] = useGlobalSetting(\n\t\t'layout.contentSize',\n\t\tname,\n\t\t'user'\n\t);\n\tconst hasUserSetContentSizeValue = () => !! userSetContentSizeValue;\n\tconst resetContentSizeValue = () => setContentSizeValue( '' );\n\treturn {\n\t\tcontentSizeValue,\n\t\tsetContentSizeValue,\n\t\thasUserSetContentSizeValue,\n\t\tresetContentSizeValue,\n\t};\n}\n\n// Props for managing `layout.wideSize`.\nfunction useWideSizeProps( name ) {\n\tconst [ wideSizeValue, setWideSizeValue ] = useGlobalSetting(\n\t\t'layout.wideSize',\n\t\tname\n\t);\n\tconst [ userSetWideSizeValue ] = useGlobalSetting(\n\t\t'layout.wideSize',\n\t\tname,\n\t\t'user'\n\t);\n\tconst hasUserSetWideSizeValue = () => !! userSetWideSizeValue;\n\tconst resetWideSizeValue = () => setWideSizeValue( '' );\n\treturn {\n\t\twideSizeValue,\n\t\tsetWideSizeValue,\n\t\thasUserSetWideSizeValue,\n\t\tresetWideSizeValue,\n\t};\n}\n\n// Props for managing `spacing.padding`.\nfunction usePaddingProps( name, variation = '' ) {\n\tconst prefix = variation ? `variations.${ variation }.` : '';\n\tconst [ rawPadding, setRawPadding ] = useGlobalStyle(\n\t\tprefix + 'spacing.padding',\n\t\tname\n\t);\n\tconst paddingValues = splitStyleValue( rawPadding );\n\tconst paddingSides = useCustomSides( name, 'padding' );\n\tconst isAxialPadding =\n\t\tpaddingSides &&\n\t\tpaddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tconst setPaddingValues = ( newPaddingValues ) => {\n\t\tconst padding = filterValuesBySides( newPaddingValues, paddingSides );\n\t\tsetRawPadding( padding );\n\t};\n\tconst resetPaddingValue = () => setPaddingValues( {} );\n\tconst [ userSetPaddingValue ] = useGlobalStyle(\n\t\tprefix + 'spacing.padding',\n\t\tname,\n\t\t'user'\n\t);\n\t// The `hasPaddingValue` check does not need a parsed value, as `userSetPaddingValue` will be `undefined` if not set.\n\tconst hasPaddingValue = () => !! userSetPaddingValue;\n\n\treturn {\n\t\tpaddingValues,\n\t\tpaddingSides,\n\t\tisAxialPadding,\n\t\tsetPaddingValues,\n\t\tresetPaddingValue,\n\t\thasPaddingValue,\n\t};\n}\n\n// Props for managing `spacing.margin`.\nfunction useMarginProps( name, variation = '' ) {\n\tconst prefix = variation ? `variations.${ variation }.` : '';\n\tconst [ rawMargin, setRawMargin ] = useGlobalStyle(\n\t\tprefix + 'spacing.margin',\n\t\tname\n\t);\n\tconst marginValues = splitStyleValue( rawMargin );\n\tconst marginSides = useCustomSides( name, 'margin' );\n\tconst isAxialMargin =\n\t\tmarginSides &&\n\t\tmarginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tconst setMarginValues = ( newMarginValues ) => {\n\t\tconst margin = filterValuesBySides( newMarginValues, marginSides );\n\t\tsetRawMargin( margin );\n\t};\n\tconst resetMarginValue = () => setMarginValues( {} );\n\tconst hasMarginValue = () =>\n\t\t!! marginValues && Object.keys( marginValues ).length;\n\n\treturn {\n\t\tmarginValues,\n\t\tmarginSides,\n\t\tisAxialMargin,\n\t\tsetMarginValues,\n\t\tresetMarginValue,\n\t\thasMarginValue,\n\t};\n}\n\n// Props for managing `spacing.blockGap`.\nfunction useBlockGapProps( name, variation = '' ) {\n\tconst prefix = variation ? `variations.${ variation }.` : '';\n\tconst [ gapValue, setGapValue ] = useGlobalStyle(\n\t\tprefix + 'spacing.blockGap',\n\t\tname\n\t);\n\tconst gapValues = splitGapValue( gapValue );\n\tconst gapSides = useCustomSides( name, 'blockGap' );\n\tconst isAxialGap =\n\t\tgapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst resetGapValue = () => setGapValue( undefined );\n\tconst [ userSetGapValue ] = useGlobalStyle(\n\t\tprefix + 'spacing.blockGap',\n\t\tname,\n\t\t'user'\n\t);\n\tconst hasGapValue = () => !! userSetGapValue;\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\treturn {\n\t\tgapValue,\n\t\tgapValues,\n\t\tgapSides,\n\t\tisAxialGap,\n\t\tsetGapValue,\n\t\tsetGapValues,\n\t\tresetGapValue,\n\t\thasGapValue,\n\t};\n}\n\n// Props for managing `dimensions.minHeight`.\nfunction useMinHeightProps( name, variation = '' ) {\n\tconst prefix = variation ? `variations.${ variation }.` : '';\n\tconst [ minHeightValue, setMinHeightValue ] = useGlobalStyle(\n\t\tprefix + 'dimensions.minHeight',\n\t\tname\n\t);\n\tconst resetMinHeightValue = () => setMinHeightValue( undefined );\n\tconst hasMinHeightValue = () => !! minHeightValue;\n\treturn {\n\t\tminHeightValue,\n\t\tsetMinHeightValue,\n\t\tresetMinHeightValue,\n\t\thasMinHeightValue,\n\t};\n}\n\nexport default function DimensionsPanel( { name, variation = '' } ) {\n\tconst showContentSizeControl = useHasContentSize( name );\n\tconst showWideSizeControl = useHasWideSize( name );\n\tconst showPaddingControl = useHasPadding( name );\n\tconst showMarginControl = useHasMargin( name );\n\tconst showGapControl = useHasGap( name );\n\tconst showMinHeightControl = useHasMinHeight( name );\n\tconst showSpacingPresetsControl = useHasSpacingPresets();\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useGlobalSetting( 'spacing.units', name )[ 0 ] || [\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// Props for managing `layout.contentSize`.\n\tconst {\n\t\tcontentSizeValue,\n\t\tsetContentSizeValue,\n\t\thasUserSetContentSizeValue,\n\t\tresetContentSizeValue,\n\t} = useContentSizeProps( name );\n\n\t// Props for managing `layout.wideSize`.\n\tconst {\n\t\twideSizeValue,\n\t\tsetWideSizeValue,\n\t\thasUserSetWideSizeValue,\n\t\tresetWideSizeValue,\n\t} = useWideSizeProps( name );\n\n\t// Props for managing `spacing.padding`.\n\tconst {\n\t\tpaddingValues,\n\t\tpaddingSides,\n\t\tisAxialPadding,\n\t\tsetPaddingValues,\n\t\tresetPaddingValue,\n\t\thasPaddingValue,\n\t} = usePaddingProps( name, variation );\n\n\t// Props for managing `spacing.margin`.\n\tconst {\n\t\tmarginValues,\n\t\tmarginSides,\n\t\tisAxialMargin,\n\t\tsetMarginValues,\n\t\tresetMarginValue,\n\t\thasMarginValue,\n\t} = useMarginProps( name, variation );\n\n\t// Props for managing `spacing.blockGap`.\n\tconst {\n\t\tgapValue,\n\t\tgapValues,\n\t\tgapSides,\n\t\tisAxialGap,\n\t\tsetGapValue,\n\t\tsetGapValues,\n\t\tresetGapValue,\n\t\thasGapValue,\n\t} = useBlockGapProps( name, variation );\n\n\t// Props for managing `dimensions.minHeight`.\n\tconst {\n\t\tminHeightValue,\n\t\tsetMinHeightValue,\n\t\tresetMinHeightValue,\n\t\thasMinHeightValue,\n\t} = useMinHeightProps( name, variation );\n\n\tconst resetAll = () => {\n\t\tresetPaddingValue();\n\t\tresetMarginValue();\n\t\tresetGapValue();\n\t\tresetContentSizeValue();\n\t\tresetWideSizeValue();\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\theadingLevel={ 3 }\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={ true }\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={ true }\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={ true }\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>\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/>\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/>\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={ true }\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>\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/>\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/>\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={ true }\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>\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={ true }\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</ToolsPanel>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/dimensions-panel.js"],"names":["useGlobalStyle","useGlobalSetting","useSettingsForBlockElement","DimensionsPanel","StylesDimensionsPanel","blockEditorPrivateApis","name","variation","prefixParts","concat","prefix","join","style","inheritedStyle","setStyle","shouldDecodeEncode","rawSettings","setSettings","settings","inheritedStyleWithLayout","layout","styleWithLayout","onChange","newStyle","updatedStyle"],"mappings":";;;;;;;AAIA;;AADA;;AAMA;;AATA;AACA;AACA;;AAIA;AACA;AACA;AAGA,MAAM;AACLA,EAAAA,cADK;AAELC,EAAAA,gBAFK;AAGLC,EAAAA,0BAHK;AAILC,EAAAA,eAAe,EAAEC;AAJZ,IAKF,yBAAQC,wBAAR,CALJ;;AAOe,SAASF,eAAT,OAAqD;AAAA,MAA3B;AAAEG,IAAAA,IAAF;AAAQC,IAAAA,SAAS,GAAG;AAApB,GAA2B;AACnE,MAAIC,WAAW,GAAG,EAAlB;;AACA,MAAKD,SAAL,EAAiB;AAChBC,IAAAA,WAAW,GAAG,CAAE,YAAF,EAAgBD,SAAhB,EAA4BE,MAA5B,CAAoCD,WAApC,CAAd;AACA;;AACD,QAAME,MAAM,GAAGF,WAAW,CAACG,IAAZ,CAAkB,GAAlB,CAAf;AAEA,QAAM,CAAEC,KAAF,IAAYZ,cAAc,CAAEU,MAAF,EAAUJ,IAAV,EAAgB,MAAhB,EAAwB,KAAxB,CAAhC;AACA,QAAM,CAAEO,cAAF,EAAkBC,QAAlB,IAA+Bd,cAAc,CAAEU,MAAF,EAAUJ,IAAV,EAAgB,KAAhB,EAAuB;AACzES,IAAAA,kBAAkB,EAAE;AADqD,GAAvB,CAAnD;AAGA,QAAM,CAAEC,WAAF,EAAeC,WAAf,IAA+BhB,gBAAgB,CAAE,EAAF,EAAMK,IAAN,CAArD;AACA,QAAMY,QAAQ,GAAGhB,0BAA0B,CAAEc,WAAF,EAAeV,IAAf,CAA3C,CAZmE,CAcnE;AACA;;AACA,QAAMa,wBAAwB,GAAG,sBAAS,MAAM;AAC/C,WAAO,EACN,GAAGN,cADG;AAENO,MAAAA,MAAM,EAAEF,QAAQ,CAACE;AAFX,KAAP;AAIA,GALgC,EAK9B,CAAEP,cAAF,EAAkBK,QAAQ,CAACE,MAA3B,CAL8B,CAAjC;AAOA,QAAMC,eAAe,GAAG,sBAAS,MAAM;AACtC,WAAO,EACN,GAAGT,KADG;AAENQ,MAAAA,MAAM,EAAEF,QAAQ,CAACE;AAFX,KAAP;AAIA,GALuB,EAKrB,CAAER,KAAF,EAASM,QAAQ,CAACE,MAAlB,CALqB,CAAxB;;AAOA,QAAME,QAAQ,GAAKC,QAAF,IAAgB;AAChC,UAAMC,YAAY,GAAG,EAAE,GAAGD;AAAL,KAArB;AACA,WAAOC,YAAY,CAACJ,MAApB;AACAN,IAAAA,QAAQ,CAAEU,YAAF,CAAR;;AAEA,QAAKD,QAAQ,CAACH,MAAT,KAAoBF,QAAQ,CAACE,MAAlC,EAA2C;AAC1CH,MAAAA,WAAW,CAAE,EACZ,GAAGD,WADS;AAEZI,QAAAA,MAAM,EAAEG,QAAQ,CAACH;AAFL,OAAF,CAAX;AAIA;AACD,GAXD;;AAaA,SACC,4BAAC,qBAAD;AACC,IAAA,cAAc,EAAGD,wBADlB;AAEC,IAAA,KAAK,EAAGE,eAFT;AAGC,IAAA,QAAQ,EAAGC,QAHZ;AAIC,IAAA,QAAQ,EAAGJ,QAJZ;AAKC,IAAA,qBAAqB;AALtB,IADD;AASA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../private-apis';\n\nconst {\n\tuseGlobalStyle,\n\tuseGlobalSetting,\n\tuseSettingsForBlockElement,\n\tDimensionsPanel: StylesDimensionsPanel,\n} = unlock( blockEditorPrivateApis );\n\nexport default function DimensionsPanel( { name, variation = '' } ) {\n\tlet prefixParts = [];\n\tif ( variation ) {\n\t\tprefixParts = [ 'variations', variation ].concat( prefixParts );\n\t}\n\tconst prefix = prefixParts.join( '.' );\n\n\tconst [ style ] = useGlobalStyle( prefix, name, 'user', false );\n\tconst [ inheritedStyle, setStyle ] = useGlobalStyle( prefix, name, 'all', {\n\t\tshouldDecodeEncode: false,\n\t} );\n\tconst [ rawSettings, setSettings ] = useGlobalSetting( '', name );\n\tconst settings = useSettingsForBlockElement( rawSettings, name );\n\n\t// These intermediary objects are needed because the \"layout\" property is stored\n\t// in settings rather than styles.\n\tconst inheritedStyleWithLayout = useMemo( () => {\n\t\treturn {\n\t\t\t...inheritedStyle,\n\t\t\tlayout: settings.layout,\n\t\t};\n\t}, [ inheritedStyle, settings.layout ] );\n\n\tconst styleWithLayout = useMemo( () => {\n\t\treturn {\n\t\t\t...style,\n\t\t\tlayout: settings.layout,\n\t\t};\n\t}, [ style, settings.layout ] );\n\n\tconst onChange = ( newStyle ) => {\n\t\tconst updatedStyle = { ...newStyle };\n\t\tdelete updatedStyle.layout;\n\t\tsetStyle( updatedStyle );\n\n\t\tif ( newStyle.layout !== settings.layout ) {\n\t\t\tsetSettings( {\n\t\t\t\t...rawSettings,\n\t\t\t\tlayout: newStyle.layout,\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<StylesDimensionsPanel\n\t\t\tinheritedValue={ inheritedStyleWithLayout }\n\t\t\tvalue={ styleWithLayout }\n\t\t\tonChange={ onChange }\n\t\t\tsettings={ settings }\n\t\t\tincludeLayoutControls\n\t\t/>\n\t);\n}\n"]}