@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,508 +1,71 @@
1
1
  import { createElement } from "@wordpress/element";
2
2
 
3
- /**
4
- * External dependencies
5
- */
6
- import classnames from 'classnames';
7
3
  /**
8
4
  * WordPress dependencies
9
5
  */
10
-
11
- import { __ } from '@wordpress/i18n';
12
- import { __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem, __experimentalBoxControl as BoxControl, __experimentalHStack as HStack, __experimentalUnitControl as UnitControl, __experimentalUseCustomUnits as useCustomUnits, __experimentalView as View } from '@wordpress/components';
13
- import { __experimentalUseCustomSides as useCustomSides, HeightControl, __experimentalSpacingSizesControl as SpacingSizesControl, privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
14
- import { Icon, positionCenter, stretchWide } from '@wordpress/icons';
6
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
7
+ import { useMemo } from '@wordpress/element';
15
8
  /**
16
9
  * Internal dependencies
17
10
  */
18
11
 
19
- import { useSupportedStyles } from './hooks';
20
12
  import { unlock } from '../../private-apis';
21
13
  const {
14
+ useGlobalStyle,
22
15
  useGlobalSetting,
23
- useGlobalStyle
16
+ useSettingsForBlockElement,
17
+ DimensionsPanel: StylesDimensionsPanel
24
18
  } = unlock(blockEditorPrivateApis);
25
- const AXIAL_SIDES = ['horizontal', 'vertical'];
26
- export function useHasDimensionsPanel(name) {
27
- const hasContentSize = useHasContentSize(name);
28
- const hasWideSize = useHasWideSize(name);
29
- const hasPadding = useHasPadding(name);
30
- const hasMargin = useHasMargin(name);
31
- const hasGap = useHasGap(name);
32
- const hasMinHeight = useHasMinHeight(name);
33
- return hasContentSize || hasWideSize || hasPadding || hasMargin || hasGap || hasMinHeight;
34
- }
35
-
36
- function useHasContentSize(name) {
37
- const supports = useSupportedStyles(name);
38
- const [settings] = useGlobalSetting('layout.contentSize', name);
39
- return settings && supports.includes('contentSize');
40
- }
41
-
42
- function useHasWideSize(name) {
43
- const supports = useSupportedStyles(name);
44
- const [settings] = useGlobalSetting('layout.wideSize', name);
45
- return settings && supports.includes('wideSize');
46
- }
47
-
48
- function useHasPadding(name) {
49
- const supports = useSupportedStyles(name);
50
- const [settings] = useGlobalSetting('spacing.padding', name);
51
- return settings && supports.includes('padding');
52
- }
53
-
54
- function useHasMargin(name) {
55
- const supports = useSupportedStyles(name);
56
- const [settings] = useGlobalSetting('spacing.margin', name);
57
- return settings && supports.includes('margin');
58
- }
59
-
60
- function useHasGap(name) {
61
- const supports = useSupportedStyles(name);
62
- const [settings] = useGlobalSetting('spacing.blockGap', name);
63
- return settings && supports.includes('blockGap');
64
- }
65
-
66
- function useHasMinHeight(name) {
67
- const supports = useSupportedStyles(name);
68
- const [settings] = useGlobalSetting('dimensions.minHeight', name);
69
- return settings && supports.includes('minHeight');
70
- }
71
-
72
- function useHasSpacingPresets() {
73
- var _ref, _ref2;
74
-
75
- const [settings] = useGlobalSetting('spacing.spacingSizes');
76
- const {
77
- custom,
78
- theme,
79
- default: defaultPresets
80
- } = settings || {};
81
- const presets = (_ref = (_ref2 = custom !== null && custom !== void 0 ? custom : theme) !== null && _ref2 !== void 0 ? _ref2 : defaultPresets) !== null && _ref !== void 0 ? _ref : [];
82
- return settings && presets.length > 0;
83
- }
84
-
85
- function filterValuesBySides(values, sides) {
86
- if (!sides) {
87
- // If no custom side configuration all sides are opted into by default.
88
- return values;
89
- } // Only include sides opted into within filtered values.
90
-
91
-
92
- const filteredValues = {};
93
- sides.forEach(side => {
94
- if (side === 'vertical') {
95
- filteredValues.top = values.top;
96
- filteredValues.bottom = values.bottom;
97
- }
19
+ export default function DimensionsPanel(_ref) {
20
+ let {
21
+ name,
22
+ variation = ''
23
+ } = _ref;
24
+ let prefixParts = [];
98
25
 
99
- if (side === 'horizontal') {
100
- filteredValues.left = values.left;
101
- filteredValues.right = values.right;
102
- }
26
+ if (variation) {
27
+ prefixParts = ['variations', variation].concat(prefixParts);
28
+ }
103
29
 
104
- filteredValues[side] = values[side];
30
+ const prefix = prefixParts.join('.');
31
+ const [style] = useGlobalStyle(prefix, name, 'user', false);
32
+ const [inheritedStyle, setStyle] = useGlobalStyle(prefix, name, 'all', {
33
+ shouldDecodeEncode: false
105
34
  });
106
- return filteredValues;
107
- }
35
+ const [rawSettings, setSettings] = useGlobalSetting('', name);
36
+ const settings = useSettingsForBlockElement(rawSettings, name); // These intermediary objects are needed because the "layout" property is stored
37
+ // in settings rather than styles.
108
38
 
109
- function splitStyleValue(value) {
110
- // Check for shorthand value (a string value).
111
- if (value && typeof value === 'string') {
112
- // Convert to value for individual sides for BoxControl.
113
- return {
114
- top: value,
115
- right: value,
116
- bottom: value,
117
- left: value
39
+ const inheritedStyleWithLayout = useMemo(() => {
40
+ return { ...inheritedStyle,
41
+ layout: settings.layout
118
42
  };
119
- }
120
-
121
- return value;
122
- }
123
-
124
- function splitGapValue(value) {
125
- // Check for shorthand value (a string value).
126
- if (value && typeof value === 'string') {
127
- // If the value is a string, treat it as a single side (top) for the spacing controls.
128
- return {
129
- top: value
43
+ }, [inheritedStyle, settings.layout]);
44
+ const styleWithLayout = useMemo(() => {
45
+ return { ...style,
46
+ layout: settings.layout
130
47
  };
131
- }
48
+ }, [style, settings.layout]);
132
49
 
133
- if (value) {
134
- return { ...value,
135
- right: value === null || value === void 0 ? void 0 : value.left,
136
- bottom: value === null || value === void 0 ? void 0 : value.top
50
+ const onChange = newStyle => {
51
+ const updatedStyle = { ...newStyle
137
52
  };
138
- }
139
-
140
- return value;
141
- } // Props for managing `layout.contentSize`.
142
-
143
-
144
- function useContentSizeProps(name) {
145
- const [contentSizeValue, setContentSizeValue] = useGlobalSetting('layout.contentSize', name);
146
- const [userSetContentSizeValue] = useGlobalSetting('layout.contentSize', name, 'user');
147
-
148
- const hasUserSetContentSizeValue = () => !!userSetContentSizeValue;
149
-
150
- const resetContentSizeValue = () => setContentSizeValue('');
151
-
152
- return {
153
- contentSizeValue,
154
- setContentSizeValue,
155
- hasUserSetContentSizeValue,
156
- resetContentSizeValue
157
- };
158
- } // Props for managing `layout.wideSize`.
159
-
160
-
161
- function useWideSizeProps(name) {
162
- const [wideSizeValue, setWideSizeValue] = useGlobalSetting('layout.wideSize', name);
163
- const [userSetWideSizeValue] = useGlobalSetting('layout.wideSize', name, 'user');
164
-
165
- const hasUserSetWideSizeValue = () => !!userSetWideSizeValue;
166
-
167
- const resetWideSizeValue = () => setWideSizeValue('');
168
-
169
- return {
170
- wideSizeValue,
171
- setWideSizeValue,
172
- hasUserSetWideSizeValue,
173
- resetWideSizeValue
174
- };
175
- } // Props for managing `spacing.padding`.
176
-
177
-
178
- function usePaddingProps(name) {
179
- let variation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
180
- const prefix = variation ? `variations.${variation}.` : '';
181
- const [rawPadding, setRawPadding] = useGlobalStyle(prefix + 'spacing.padding', name);
182
- const paddingValues = splitStyleValue(rawPadding);
183
- const paddingSides = useCustomSides(name, 'padding');
184
- const isAxialPadding = paddingSides && paddingSides.some(side => AXIAL_SIDES.includes(side));
185
-
186
- const setPaddingValues = newPaddingValues => {
187
- const padding = filterValuesBySides(newPaddingValues, paddingSides);
188
- setRawPadding(padding);
189
- };
190
-
191
- const resetPaddingValue = () => setPaddingValues({});
192
-
193
- 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.
194
-
195
- const hasPaddingValue = () => !!userSetPaddingValue;
196
-
197
- return {
198
- paddingValues,
199
- paddingSides,
200
- isAxialPadding,
201
- setPaddingValues,
202
- resetPaddingValue,
203
- hasPaddingValue
204
- };
205
- } // Props for managing `spacing.margin`.
206
-
207
-
208
- function useMarginProps(name) {
209
- let variation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
210
- const prefix = variation ? `variations.${variation}.` : '';
211
- const [rawMargin, setRawMargin] = useGlobalStyle(prefix + 'spacing.margin', name);
212
- const marginValues = splitStyleValue(rawMargin);
213
- const marginSides = useCustomSides(name, 'margin');
214
- const isAxialMargin = marginSides && marginSides.some(side => AXIAL_SIDES.includes(side));
215
-
216
- const setMarginValues = newMarginValues => {
217
- const margin = filterValuesBySides(newMarginValues, marginSides);
218
- setRawMargin(margin);
219
- };
220
-
221
- const resetMarginValue = () => setMarginValues({});
222
-
223
- const hasMarginValue = () => !!marginValues && Object.keys(marginValues).length;
224
-
225
- return {
226
- marginValues,
227
- marginSides,
228
- isAxialMargin,
229
- setMarginValues,
230
- resetMarginValue,
231
- hasMarginValue
232
- };
233
- } // Props for managing `spacing.blockGap`.
234
-
235
-
236
- function useBlockGapProps(name) {
237
- let variation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
238
- const prefix = variation ? `variations.${variation}.` : '';
239
- const [gapValue, setGapValue] = useGlobalStyle(prefix + 'spacing.blockGap', name);
240
- const gapValues = splitGapValue(gapValue);
241
- const gapSides = useCustomSides(name, 'blockGap');
242
- const isAxialGap = gapSides && gapSides.some(side => AXIAL_SIDES.includes(side));
243
-
244
- const resetGapValue = () => setGapValue(undefined);
245
-
246
- const [userSetGapValue] = useGlobalStyle(prefix + 'spacing.blockGap', name, 'user');
247
-
248
- const hasGapValue = () => !!userSetGapValue;
249
-
250
- const setGapValues = nextBoxGapValue => {
251
- if (!nextBoxGapValue) {
252
- setGapValue(null);
253
- } // If axial gap is not enabled, treat the 'top' value as the shorthand gap value.
53
+ delete updatedStyle.layout;
54
+ setStyle(updatedStyle);
254
55
 
255
-
256
- if (!isAxialGap && nextBoxGapValue !== null && nextBoxGapValue !== void 0 && nextBoxGapValue.hasOwnProperty('top')) {
257
- setGapValue(nextBoxGapValue.top);
258
- } else {
259
- setGapValue({
260
- top: nextBoxGapValue === null || nextBoxGapValue === void 0 ? void 0 : nextBoxGapValue.top,
261
- left: nextBoxGapValue === null || nextBoxGapValue === void 0 ? void 0 : nextBoxGapValue.left
56
+ if (newStyle.layout !== settings.layout) {
57
+ setSettings({ ...rawSettings,
58
+ layout: newStyle.layout
262
59
  });
263
60
  }
264
61
  };
265
62
 
266
- return {
267
- gapValue,
268
- gapValues,
269
- gapSides,
270
- isAxialGap,
271
- setGapValue,
272
- setGapValues,
273
- resetGapValue,
274
- hasGapValue
275
- };
276
- } // Props for managing `dimensions.minHeight`.
277
-
278
-
279
- function useMinHeightProps(name) {
280
- let variation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
281
- const prefix = variation ? `variations.${variation}.` : '';
282
- const [minHeightValue, setMinHeightValue] = useGlobalStyle(prefix + 'dimensions.minHeight', name);
283
-
284
- const resetMinHeightValue = () => setMinHeightValue(undefined);
285
-
286
- const hasMinHeightValue = () => !!minHeightValue;
287
-
288
- return {
289
- minHeightValue,
290
- setMinHeightValue,
291
- resetMinHeightValue,
292
- hasMinHeightValue
293
- };
294
- }
295
-
296
- export default function DimensionsPanel(_ref3) {
297
- let {
298
- name,
299
- variation = ''
300
- } = _ref3;
301
- const showContentSizeControl = useHasContentSize(name);
302
- const showWideSizeControl = useHasWideSize(name);
303
- const showPaddingControl = useHasPadding(name);
304
- const showMarginControl = useHasMargin(name);
305
- const showGapControl = useHasGap(name);
306
- const showMinHeightControl = useHasMinHeight(name);
307
- const showSpacingPresetsControl = useHasSpacingPresets();
308
- const units = useCustomUnits({
309
- availableUnits: useGlobalSetting('spacing.units', name)[0] || ['%', 'px', 'em', 'rem', 'vw']
310
- }); // Props for managing `layout.contentSize`.
311
-
312
- const {
313
- contentSizeValue,
314
- setContentSizeValue,
315
- hasUserSetContentSizeValue,
316
- resetContentSizeValue
317
- } = useContentSizeProps(name); // Props for managing `layout.wideSize`.
318
-
319
- const {
320
- wideSizeValue,
321
- setWideSizeValue,
322
- hasUserSetWideSizeValue,
323
- resetWideSizeValue
324
- } = useWideSizeProps(name); // Props for managing `spacing.padding`.
325
-
326
- const {
327
- paddingValues,
328
- paddingSides,
329
- isAxialPadding,
330
- setPaddingValues,
331
- resetPaddingValue,
332
- hasPaddingValue
333
- } = usePaddingProps(name, variation); // Props for managing `spacing.margin`.
334
-
335
- const {
336
- marginValues,
337
- marginSides,
338
- isAxialMargin,
339
- setMarginValues,
340
- resetMarginValue,
341
- hasMarginValue
342
- } = useMarginProps(name, variation); // Props for managing `spacing.blockGap`.
343
-
344
- const {
345
- gapValue,
346
- gapValues,
347
- gapSides,
348
- isAxialGap,
349
- setGapValue,
350
- setGapValues,
351
- resetGapValue,
352
- hasGapValue
353
- } = useBlockGapProps(name, variation); // Props for managing `dimensions.minHeight`.
354
-
355
- const {
356
- minHeightValue,
357
- setMinHeightValue,
358
- resetMinHeightValue,
359
- hasMinHeightValue
360
- } = useMinHeightProps(name, variation);
361
-
362
- const resetAll = () => {
363
- resetPaddingValue();
364
- resetMarginValue();
365
- resetGapValue();
366
- resetContentSizeValue();
367
- resetWideSizeValue();
368
- };
369
-
370
- return createElement(ToolsPanel, {
371
- label: __('Dimensions'),
372
- resetAll: resetAll,
373
- headingLevel: 3
374
- }, (showContentSizeControl || showWideSizeControl) && createElement("span", {
375
- className: "span-columns"
376
- }, __('Set the width of the main content area.')), showContentSizeControl && createElement(ToolsPanelItem, {
377
- className: "single-column",
378
- label: __('Content size'),
379
- hasValue: hasUserSetContentSizeValue,
380
- onDeselect: resetContentSizeValue,
381
- isShownByDefault: true
382
- }, createElement(HStack, {
383
- alignment: "flex-end",
384
- justify: "flex-start"
385
- }, createElement(UnitControl, {
386
- label: __('Content'),
387
- labelPosition: "top",
388
- __unstableInputWidth: "80px",
389
- value: contentSizeValue || '',
390
- onChange: nextContentSize => {
391
- setContentSizeValue(nextContentSize);
392
- },
393
- units: units
394
- }), createElement(View, null, createElement(Icon, {
395
- icon: positionCenter
396
- })))), showWideSizeControl && createElement(ToolsPanelItem, {
397
- className: "single-column",
398
- label: __('Wide size'),
399
- hasValue: hasUserSetWideSizeValue,
400
- onDeselect: resetWideSizeValue,
401
- isShownByDefault: true
402
- }, createElement(HStack, {
403
- alignment: "flex-end",
404
- justify: "flex-start"
405
- }, createElement(UnitControl, {
406
- label: __('Wide'),
407
- labelPosition: "top",
408
- __unstableInputWidth: "80px",
409
- value: wideSizeValue || '',
410
- onChange: nextWideSize => {
411
- setWideSizeValue(nextWideSize);
412
- },
413
- units: units
414
- }), createElement(View, null, createElement(Icon, {
415
- icon: stretchWide
416
- })))), showPaddingControl && createElement(ToolsPanelItem, {
417
- hasValue: hasPaddingValue,
418
- label: __('Padding'),
419
- onDeselect: resetPaddingValue,
420
- isShownByDefault: true,
421
- className: classnames({
422
- 'tools-panel-item-spacing': showSpacingPresetsControl
423
- })
424
- }, !showSpacingPresetsControl && createElement(BoxControl, {
425
- values: paddingValues,
426
- onChange: setPaddingValues,
427
- label: __('Padding'),
428
- sides: paddingSides,
429
- units: units,
430
- allowReset: false,
431
- splitOnAxis: isAxialPadding
432
- }), showSpacingPresetsControl && createElement(SpacingSizesControl, {
433
- values: paddingValues,
434
- onChange: setPaddingValues,
435
- label: __('Padding'),
436
- sides: paddingSides,
437
- units: units,
438
- allowReset: false,
439
- splitOnAxis: isAxialPadding
440
- })), showMarginControl && createElement(ToolsPanelItem, {
441
- hasValue: hasMarginValue,
442
- label: __('Margin'),
443
- onDeselect: resetMarginValue,
444
- isShownByDefault: true,
445
- className: classnames({
446
- 'tools-panel-item-spacing': showSpacingPresetsControl
447
- })
448
- }, !showSpacingPresetsControl && createElement(BoxControl, {
449
- values: marginValues,
450
- onChange: setMarginValues,
451
- label: __('Margin'),
452
- sides: marginSides,
453
- units: units,
454
- allowReset: false,
455
- splitOnAxis: isAxialMargin
456
- }), showSpacingPresetsControl && createElement(SpacingSizesControl, {
457
- values: marginValues,
458
- onChange: setMarginValues,
459
- label: __('Margin'),
460
- sides: marginSides,
461
- units: units,
462
- allowReset: false,
463
- splitOnAxis: isAxialMargin
464
- })), showGapControl && createElement(ToolsPanelItem, {
465
- hasValue: hasGapValue,
466
- label: __('Block spacing'),
467
- onDeselect: resetGapValue,
468
- isShownByDefault: true,
469
- className: classnames({
470
- 'tools-panel-item-spacing': showSpacingPresetsControl
471
- })
472
- }, !showSpacingPresetsControl && (isAxialGap ? createElement(BoxControl, {
473
- label: __('Block spacing'),
474
- min: 0,
475
- onChange: setGapValues,
476
- units: units,
477
- sides: gapSides,
478
- values: gapValues,
479
- allowReset: false,
480
- splitOnAxis: isAxialGap
481
- }) : createElement(UnitControl, {
482
- label: __('Block spacing'),
483
- __unstableInputWidth: "80px",
484
- min: 0,
485
- onChange: setGapValue,
486
- units: units,
487
- value: gapValue
488
- })), showSpacingPresetsControl && createElement(SpacingSizesControl, {
489
- label: __('Block spacing'),
490
- min: 0,
491
- onChange: setGapValues,
492
- sides: isAxialGap ? gapSides : ['top'] // Use 'top' as the shorthand property in non-axial configurations.
493
- ,
494
- values: gapValues,
495
- allowReset: false,
496
- splitOnAxis: isAxialGap
497
- })), showMinHeightControl && createElement(ToolsPanelItem, {
498
- hasValue: hasMinHeightValue,
499
- label: __('Min. height'),
500
- onDeselect: resetMinHeightValue,
501
- isShownByDefault: true
502
- }, createElement(HeightControl, {
503
- label: __('Min. height'),
504
- value: minHeightValue,
505
- onChange: setMinHeightValue
506
- })));
63
+ return createElement(StylesDimensionsPanel, {
64
+ inheritedValue: inheritedStyleWithLayout,
65
+ value: styleWithLayout,
66
+ onChange: onChange,
67
+ settings: settings,
68
+ includeLayoutControls: true
69
+ });
507
70
  }
508
71
  //# sourceMappingURL=dimensions-panel.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/dimensions-panel.js"],"names":["classnames","__","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__experimentalBoxControl","BoxControl","__experimentalHStack","HStack","__experimentalUnitControl","UnitControl","__experimentalUseCustomUnits","useCustomUnits","__experimentalView","View","__experimentalUseCustomSides","useCustomSides","HeightControl","__experimentalSpacingSizesControl","SpacingSizesControl","privateApis","blockEditorPrivateApis","Icon","positionCenter","stretchWide","useSupportedStyles","unlock","useGlobalSetting","useGlobalStyle","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","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__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":["privateApis","blockEditorPrivateApis","useMemo","unlock","useGlobalStyle","useGlobalSetting","useSettingsForBlockElement","DimensionsPanel","StylesDimensionsPanel","name","variation","prefixParts","concat","prefix","join","style","inheritedStyle","setStyle","shouldDecodeEncode","rawSettings","setSettings","settings","inheritedStyleWithLayout","layout","styleWithLayout","onChange","newStyle","updatedStyle"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,WAAW,IAAIC,sBAAxB,QAAsD,yBAAtD;AACA,SAASC,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;;AACA,SAASC,MAAT,QAAuB,oBAAvB;AAEA,MAAM;AACLC,EAAAA,cADK;AAELC,EAAAA,gBAFK;AAGLC,EAAAA,0BAHK;AAILC,EAAAA,eAAe,EAAEC;AAJZ,IAKFL,MAAM,CAAEF,sBAAF,CALV;AAOA,eAAe,SAASM,eAAT,OAAqD;AAAA,MAA3B;AAAEE,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,IAAYX,cAAc,CAAES,MAAF,EAAUJ,IAAV,EAAgB,MAAhB,EAAwB,KAAxB,CAAhC;AACA,QAAM,CAAEO,cAAF,EAAkBC,QAAlB,IAA+Bb,cAAc,CAAES,MAAF,EAAUJ,IAAV,EAAgB,KAAhB,EAAuB;AACzES,IAAAA,kBAAkB,EAAE;AADqD,GAAvB,CAAnD;AAGA,QAAM,CAAEC,WAAF,EAAeC,WAAf,IAA+Bf,gBAAgB,CAAE,EAAF,EAAMI,IAAN,CAArD;AACA,QAAMY,QAAQ,GAAGf,0BAA0B,CAAEa,WAAF,EAAeV,IAAf,CAA3C,CAZmE,CAcnE;AACA;;AACA,QAAMa,wBAAwB,GAAGpB,OAAO,CAAE,MAAM;AAC/C,WAAO,EACN,GAAGc,cADG;AAENO,MAAAA,MAAM,EAAEF,QAAQ,CAACE;AAFX,KAAP;AAIA,GALuC,EAKrC,CAAEP,cAAF,EAAkBK,QAAQ,CAACE,MAA3B,CALqC,CAAxC;AAOA,QAAMC,eAAe,GAAGtB,OAAO,CAAE,MAAM;AACtC,WAAO,EACN,GAAGa,KADG;AAENQ,MAAAA,MAAM,EAAEF,QAAQ,CAACE;AAFX,KAAP;AAIA,GAL8B,EAK5B,CAAER,KAAF,EAASM,QAAQ,CAACE,MAAlB,CAL4B,CAA/B;;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,cAAC,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"]}