@wordpress/block-editor 14.8.0 → 14.8.1-next.a9f418477.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 (290) hide show
  1. package/build/autocompleters/block.js +2 -4
  2. package/build/autocompleters/block.js.map +1 -1
  3. package/build/autocompleters/link.js +2 -4
  4. package/build/autocompleters/link.js.map +1 -1
  5. package/build/components/block-canvas/index.js +3 -6
  6. package/build/components/block-canvas/index.js.map +1 -1
  7. package/build/components/block-list/block.js +6 -5
  8. package/build/components/block-list/block.js.map +1 -1
  9. package/build/components/block-list/index.js +0 -1
  10. package/build/components/block-list/index.js.map +1 -1
  11. package/build/components/block-list/use-block-props/index.js +6 -2
  12. package/build/components/block-list/use-block-props/index.js.map +1 -1
  13. package/build/components/block-list/use-block-props/use-firefox-draggable-compatibility.js +87 -0
  14. package/build/components/block-list/use-block-props/use-firefox-draggable-compatibility.js.map +1 -0
  15. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +98 -5
  16. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  17. package/build/components/block-lock/modal.js +4 -4
  18. package/build/components/block-lock/modal.js.map +1 -1
  19. package/build/components/block-parent-selector/index.js +2 -15
  20. package/build/components/block-parent-selector/index.js.map +1 -1
  21. package/build/components/block-patterns-list/index.js +13 -4
  22. package/build/components/block-patterns-list/index.js.map +1 -1
  23. package/build/components/block-popover/inbetween.js +4 -0
  24. package/build/components/block-popover/inbetween.js.map +1 -1
  25. package/build/components/block-settings-menu/block-settings-dropdown.js +7 -4
  26. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  27. package/build/components/block-settings-menu-controls/index.js +1 -1
  28. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  29. package/build/components/block-switcher/index.js +12 -22
  30. package/build/components/block-switcher/index.js.map +1 -1
  31. package/build/components/block-switcher/use-transformed-patterns.js +0 -1
  32. package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
  33. package/build/components/block-switcher/utils.js +0 -1
  34. package/build/components/block-switcher/utils.js.map +1 -1
  35. package/build/components/block-toolbar/index.js +7 -6
  36. package/build/components/block-toolbar/index.js.map +1 -1
  37. package/build/components/block-variation-transforms/index.js +0 -1
  38. package/build/components/block-variation-transforms/index.js.map +1 -1
  39. package/build/components/date-format-picker/index.js +0 -1
  40. package/build/components/date-format-picker/index.js.map +1 -1
  41. package/build/components/font-appearance-control/index.js +1 -0
  42. package/build/components/font-appearance-control/index.js.map +1 -1
  43. package/build/components/font-family/index.js +10 -0
  44. package/build/components/font-family/index.js.map +1 -1
  45. package/build/components/global-styles/dimensions-panel.js +17 -16
  46. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  47. package/build/components/global-styles/get-global-styles-changes.js +0 -1
  48. package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
  49. package/build/components/iframe/use-scale-canvas.js +68 -47
  50. package/build/components/iframe/use-scale-canvas.js.map +1 -1
  51. package/build/components/inserter/block-patterns-tab/index.js +0 -10
  52. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  53. package/build/components/inserter/menu.js +2 -1
  54. package/build/components/inserter/menu.js.map +1 -1
  55. package/build/components/inserter-draggable-blocks/index.js +19 -10
  56. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  57. package/build/components/inspector-controls/slot.js +2 -13
  58. package/build/components/inspector-controls/slot.js.map +1 -1
  59. package/build/components/letter-spacing-control/index.js +10 -0
  60. package/build/components/letter-spacing-control/index.js.map +1 -1
  61. package/build/components/line-height-control/index.js +1 -0
  62. package/build/components/line-height-control/index.js.map +1 -1
  63. package/build/components/media-placeholder/index.js +18 -18
  64. package/build/components/media-placeholder/index.js.map +1 -1
  65. package/build/components/multi-selection-inspector/index.js +9 -25
  66. package/build/components/multi-selection-inspector/index.js.map +1 -1
  67. package/build/components/observe-typing/index.js +0 -1
  68. package/build/components/observe-typing/index.js.map +1 -1
  69. package/build/components/recursion-provider/index.js +0 -1
  70. package/build/components/recursion-provider/index.js.map +1 -1
  71. package/build/components/rich-text/index.js +5 -1
  72. package/build/components/rich-text/index.js.map +1 -1
  73. package/build/components/rich-text/native/use-format-types.js +0 -1
  74. package/build/components/rich-text/native/use-format-types.js.map +1 -1
  75. package/build/components/rich-text/use-format-types.js +0 -1
  76. package/build/components/rich-text/use-format-types.js.map +1 -1
  77. package/build/components/spacing-sizes-control/utils.js +0 -1
  78. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  79. package/build/components/typewriter/index.js +0 -1
  80. package/build/components/typewriter/index.js.map +1 -1
  81. package/build/components/use-block-drop-zone/index.js +11 -2
  82. package/build/components/use-block-drop-zone/index.js.map +1 -1
  83. package/build/components/use-moving-animation/index.js +15 -2
  84. package/build/components/use-moving-animation/index.js.map +1 -1
  85. package/build/components/use-resize-canvas/index.js +1 -1
  86. package/build/components/use-resize-canvas/index.js.map +1 -1
  87. package/build/components/warning/index.js +2 -3
  88. package/build/components/warning/index.js.map +1 -1
  89. package/build/components/writing-flow/use-drag-selection.js +11 -0
  90. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  91. package/build/components/writing-flow/use-tab-nav.js +6 -2
  92. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  93. package/build/hooks/block-bindings.js +4 -3
  94. package/build/hooks/block-bindings.js.map +1 -1
  95. package/build/hooks/gap.js +1 -1
  96. package/build/hooks/gap.js.map +1 -1
  97. package/build/hooks/generated-class-name.js +0 -1
  98. package/build/hooks/generated-class-name.js.map +1 -1
  99. package/build/hooks/use-zoom-out.js +47 -14
  100. package/build/hooks/use-zoom-out.js.map +1 -1
  101. package/build/store/private-selectors.js +1 -7
  102. package/build/store/private-selectors.js.map +1 -1
  103. package/build/store/reducer.js +478 -2
  104. package/build/store/reducer.js.map +1 -1
  105. package/build/store/selectors.js +12 -55
  106. package/build/store/selectors.js.map +1 -1
  107. package/build/utils/object.js +0 -1
  108. package/build/utils/object.js.map +1 -1
  109. package/build-module/autocompleters/block.js +2 -4
  110. package/build-module/autocompleters/block.js.map +1 -1
  111. package/build-module/autocompleters/link.js +2 -4
  112. package/build-module/autocompleters/link.js.map +1 -1
  113. package/build-module/components/block-canvas/index.js +3 -6
  114. package/build-module/components/block-canvas/index.js.map +1 -1
  115. package/build-module/components/block-list/block.js +8 -7
  116. package/build-module/components/block-list/block.js.map +1 -1
  117. package/build-module/components/block-list/index.js +0 -1
  118. package/build-module/components/block-list/index.js.map +1 -1
  119. package/build-module/components/block-list/use-block-props/index.js +6 -2
  120. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  121. package/build-module/components/block-list/use-block-props/use-firefox-draggable-compatibility.js +80 -0
  122. package/build-module/components/block-list/use-block-props/use-firefox-draggable-compatibility.js.map +1 -0
  123. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +97 -5
  124. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  125. package/build-module/components/block-lock/modal.js +4 -4
  126. package/build-module/components/block-lock/modal.js.map +1 -1
  127. package/build-module/components/block-parent-selector/index.js +2 -15
  128. package/build-module/components/block-parent-selector/index.js.map +1 -1
  129. package/build-module/components/block-patterns-list/index.js +13 -4
  130. package/build-module/components/block-patterns-list/index.js.map +1 -1
  131. package/build-module/components/block-popover/inbetween.js +4 -0
  132. package/build-module/components/block-popover/inbetween.js.map +1 -1
  133. package/build-module/components/block-settings-menu/block-settings-dropdown.js +7 -4
  134. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  135. package/build-module/components/block-settings-menu-controls/index.js +1 -1
  136. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  137. package/build-module/components/block-switcher/index.js +13 -23
  138. package/build-module/components/block-switcher/index.js.map +1 -1
  139. package/build-module/components/block-switcher/use-transformed-patterns.js +0 -1
  140. package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
  141. package/build-module/components/block-switcher/utils.js +0 -1
  142. package/build-module/components/block-switcher/utils.js.map +1 -1
  143. package/build-module/components/block-toolbar/index.js +7 -6
  144. package/build-module/components/block-toolbar/index.js.map +1 -1
  145. package/build-module/components/block-variation-transforms/index.js +0 -1
  146. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  147. package/build-module/components/date-format-picker/index.js +0 -1
  148. package/build-module/components/date-format-picker/index.js.map +1 -1
  149. package/build-module/components/font-appearance-control/index.js +1 -0
  150. package/build-module/components/font-appearance-control/index.js.map +1 -1
  151. package/build-module/components/font-family/index.js +10 -0
  152. package/build-module/components/font-family/index.js.map +1 -1
  153. package/build-module/components/global-styles/dimensions-panel.js +17 -16
  154. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  155. package/build-module/components/global-styles/get-global-styles-changes.js +0 -1
  156. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
  157. package/build-module/components/iframe/use-scale-canvas.js +68 -47
  158. package/build-module/components/iframe/use-scale-canvas.js.map +1 -1
  159. package/build-module/components/inserter/block-patterns-tab/index.js +1 -11
  160. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  161. package/build-module/components/inserter/menu.js +2 -1
  162. package/build-module/components/inserter/menu.js.map +1 -1
  163. package/build-module/components/inserter-draggable-blocks/index.js +20 -11
  164. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  165. package/build-module/components/inspector-controls/slot.js +3 -14
  166. package/build-module/components/inspector-controls/slot.js.map +1 -1
  167. package/build-module/components/letter-spacing-control/index.js +9 -0
  168. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  169. package/build-module/components/line-height-control/index.js +1 -0
  170. package/build-module/components/line-height-control/index.js.map +1 -1
  171. package/build-module/components/media-placeholder/index.js +18 -18
  172. package/build-module/components/media-placeholder/index.js.map +1 -1
  173. package/build-module/components/multi-selection-inspector/index.js +9 -25
  174. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  175. package/build-module/components/observe-typing/index.js +0 -1
  176. package/build-module/components/observe-typing/index.js.map +1 -1
  177. package/build-module/components/recursion-provider/index.js +0 -1
  178. package/build-module/components/recursion-provider/index.js.map +1 -1
  179. package/build-module/components/rich-text/index.js +5 -1
  180. package/build-module/components/rich-text/index.js.map +1 -1
  181. package/build-module/components/rich-text/native/use-format-types.js +0 -1
  182. package/build-module/components/rich-text/native/use-format-types.js.map +1 -1
  183. package/build-module/components/rich-text/use-format-types.js +0 -1
  184. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  185. package/build-module/components/spacing-sizes-control/utils.js +0 -1
  186. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  187. package/build-module/components/typewriter/index.js +0 -1
  188. package/build-module/components/typewriter/index.js.map +1 -1
  189. package/build-module/components/use-block-drop-zone/index.js +11 -2
  190. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  191. package/build-module/components/use-moving-animation/index.js +15 -2
  192. package/build-module/components/use-moving-animation/index.js.map +1 -1
  193. package/build-module/components/use-resize-canvas/index.js +1 -1
  194. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  195. package/build-module/components/warning/index.js +2 -3
  196. package/build-module/components/warning/index.js.map +1 -1
  197. package/build-module/components/writing-flow/use-drag-selection.js +11 -0
  198. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  199. package/build-module/components/writing-flow/use-tab-nav.js +6 -2
  200. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  201. package/build-module/hooks/block-bindings.js +4 -3
  202. package/build-module/hooks/block-bindings.js.map +1 -1
  203. package/build-module/hooks/gap.js +1 -1
  204. package/build-module/hooks/gap.js.map +1 -1
  205. package/build-module/hooks/generated-class-name.js +0 -1
  206. package/build-module/hooks/generated-class-name.js.map +1 -1
  207. package/build-module/hooks/use-zoom-out.js +48 -15
  208. package/build-module/hooks/use-zoom-out.js.map +1 -1
  209. package/build-module/store/private-selectors.js +1 -6
  210. package/build-module/store/private-selectors.js.map +1 -1
  211. package/build-module/store/reducer.js +479 -3
  212. package/build-module/store/reducer.js.map +1 -1
  213. package/build-module/store/selectors.js +12 -55
  214. package/build-module/store/selectors.js.map +1 -1
  215. package/build-module/utils/object.js +0 -1
  216. package/build-module/utils/object.js.map +1 -1
  217. package/build-style/content-rtl.css +18 -5
  218. package/build-style/content.css +18 -5
  219. package/build-style/style-rtl.css +25 -64
  220. package/build-style/style.css +25 -64
  221. package/package.json +32 -32
  222. package/src/autocompleters/block.js +2 -4
  223. package/src/autocompleters/link.js +2 -4
  224. package/src/components/alignment-control/stories/aliginment-toolbar.story.js +47 -0
  225. package/src/components/alignment-control/stories/index.story.js +51 -0
  226. package/src/components/alignment-control/test/__snapshots__/index.js.snap +5 -5
  227. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +4 -4
  228. package/src/components/block-canvas/index.js +3 -5
  229. package/src/components/block-draggable/content.scss +11 -5
  230. package/src/components/block-list/block.js +7 -13
  231. package/src/components/block-list/content.scss +6 -0
  232. package/src/components/block-list/use-block-props/index.js +5 -0
  233. package/src/components/block-list/use-block-props/use-firefox-draggable-compatibility.js +83 -0
  234. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +112 -8
  235. package/src/components/block-lock/modal.js +4 -6
  236. package/src/components/block-parent-selector/index.js +1 -19
  237. package/src/components/block-patterns-list/index.js +12 -1
  238. package/src/components/block-patterns-list/stories/fixtures.js +1 -0
  239. package/src/components/block-patterns-list/style.scss +16 -5
  240. package/src/components/block-popover/inbetween.js +4 -0
  241. package/src/components/block-settings-menu/block-settings-dropdown.js +6 -1
  242. package/src/components/block-settings-menu-controls/index.js +2 -1
  243. package/src/components/block-switcher/index.js +19 -21
  244. package/src/components/block-switcher/style.scss +0 -9
  245. package/src/components/block-title/test/index.js +2 -0
  246. package/src/components/block-toolbar/index.js +9 -6
  247. package/src/components/block-tools/style.scss +5 -0
  248. package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +3 -3
  249. package/src/components/dimensions-tool/stories/aspect-ratio-tool.story.js +1 -1
  250. package/src/components/dimensions-tool/stories/index.story.js +1 -1
  251. package/src/components/dimensions-tool/stories/scale-tool.story.js +1 -1
  252. package/src/components/dimensions-tool/stories/width-height-tool.story.js +1 -1
  253. package/src/components/font-appearance-control/index.js +1 -0
  254. package/src/components/font-family/index.js +10 -0
  255. package/src/components/font-family/style.scss +5 -0
  256. package/src/components/global-styles/dimensions-panel.js +16 -16
  257. package/src/components/iframe/content.scss +6 -1
  258. package/src/components/iframe/use-scale-canvas.js +103 -81
  259. package/src/components/inserter/block-patterns-tab/index.js +1 -17
  260. package/src/components/inserter/menu.js +8 -1
  261. package/src/components/inserter-draggable-blocks/index.js +19 -29
  262. package/src/components/inspector-controls/slot.js +3 -22
  263. package/src/components/letter-spacing-control/README.md +2 -1
  264. package/src/components/letter-spacing-control/index.js +17 -0
  265. package/src/components/line-height-control/index.js +1 -0
  266. package/src/components/media-placeholder/index.js +25 -28
  267. package/src/components/multi-selection-inspector/index.js +17 -27
  268. package/src/components/multi-selection-inspector/style.scss +0 -12
  269. package/src/components/resolution-tool/stories/index.story.js +1 -1
  270. package/src/components/rich-text/index.js +5 -0
  271. package/src/components/spacing-sizes-control/style.scss +0 -29
  272. package/src/components/text-alignment-control/stories/index.story.js +1 -1
  273. package/src/components/use-block-drop-zone/index.js +18 -1
  274. package/src/components/use-moving-animation/index.js +15 -0
  275. package/src/components/use-resize-canvas/index.js +1 -1
  276. package/src/components/warning/index.js +3 -4
  277. package/src/components/warning/test/index.js +3 -1
  278. package/src/components/writing-flow/use-drag-selection.js +11 -0
  279. package/src/components/writing-flow/use-tab-nav.js +9 -6
  280. package/src/hooks/block-bindings.js +8 -4
  281. package/src/hooks/gap.js +1 -1
  282. package/src/hooks/use-zoom-out.js +48 -16
  283. package/src/store/private-selectors.js +2 -17
  284. package/src/store/reducer.js +639 -2
  285. package/src/store/selectors.js +19 -69
  286. package/src/store/test/private-selectors.js +1 -0
  287. package/src/store/test/reducer.js +849 -0
  288. package/src/store/test/selectors.js +4 -110
  289. package/src/style.scss +1 -0
  290. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_components","_icons","_element","_utils","_spacingSizesControl","_heightControl","_childLayoutControl","_aspectRatioTool","_utils2","_object","_jsxRuntime","AXIAL_SIDES","useHasDimensionsPanel","settings","hasContentSize","useHasContentSize","hasWideSize","useHasWideSize","hasPadding","useHasPadding","hasMargin","useHasMargin","hasGap","useHasGap","hasMinHeight","useHasMinHeight","hasAspectRatio","useHasAspectRatio","hasChildLayout","useHasChildLayout","Platform","OS","layout","contentSize","wideSize","spacing","padding","margin","blockGap","dimensions","minHeight","aspectRatio","_settings$parentLayou","type","parentLayoutType","default","defaultParentLayoutType","allowSizingOnChildren","parentLayout","support","useHasSpacingPresets","defaultSpacingSizes","spacingSizes","length","theme","custom","filterValuesBySides","values","sides","filteredValues","forEach","side","top","bottom","left","right","splitStyleValue","value","splitGapValue","isAxialGap","DimensionsToolsPanel","resetAllFilter","onChange","panelId","children","dropdownMenuProps","useToolsPanelDropdownMenuProps","resetAll","updatedValue","jsx","__experimentalToolsPanel","label","__","DEFAULT_CONTROLS","childLayout","DimensionsPanel","as","Wrapper","inheritedValue","defaultControls","onVisualize","includeLayoutControls","_defaultControls$cont","_defaultControls$wide","_defaultControls$padd","_defaultControls$marg","_defaultControls$bloc","_defaultControls$chil","_defaultControls$minH","_defaultControls$aspe","decodeValue","rawValue","Object","keys","reduce","acc","key","getValueFromVariable","showSpacingPresetsControl","units","useCustomUnits","availableUnits","minimumMargin","Infinity","minMarginValue","setMinMarginValue","useState","showContentSizeControl","contentSizeValue","setContentSizeValue","newValue","setImmutably","undefined","hasUserSetContentSizeValue","resetContentSizeValue","showWideSizeControl","wideSizeValue","setWideSizeValue","hasUserSetWideSizeValue","resetWideSizeValue","showPaddingControl","rawPadding","paddingValues","paddingSides","Array","isArray","isAxialPadding","some","includes","setPaddingValues","newPaddingValues","hasPaddingValue","resetPaddingValue","onMouseOverPadding","showMarginControl","rawMargin","marginValues","marginSides","isAxialMargin","setMarginValues","newMarginValues","hasMarginValue","resetMarginValue","onMouseOverMargin","showGapControl","gapSides","gapValue","gapValues","setGapValue","newGapValue","setGapValues","nextBoxGapValue","hasOwnProperty","resetGapValue","hasGapValue","showMinHeightControl","minHeightValue","setMinHeightValue","tempValue","resetMinHeightValue","hasMinHeightValue","showAspectRatioControl","aspectRatioValue","setAspectRatioValue","hasAspectRatioValue","showChildLayoutControl","setChildLayout","newChildLayout","useCallback","previousValue","cleanEmptyObject","selfStretch","flexSize","columnStart","rowStart","columnSpan","rowSpan","onMouseLeaveControls","inputProps","min","onDragStart","onDragEnd","jsxs","className","__experimentalToolsPanelItem","hasValue","onDeselect","isShownByDefault","__experimentalUnitControl","__next40pxDefaultSize","labelPosition","nextContentSize","prefix","__experimentalInputControlPrefixWrapper","variant","Icon","icon","alignNone","nextWideSize","stretchWide","clsx","BoxControl","allowReset","splitOnAxis","onMouseOver","onMouseOut","minimumCustomValue","showSideInLabel"],"sources":["@wordpress/block-editor/src/components/global-styles/dimensions-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tBoxControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { Icon, alignNone, stretchWide } from '@wordpress/icons';\nimport { useCallback, useState, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';\nimport SpacingSizesControl from '../spacing-sizes-control';\nimport HeightControl from '../height-control';\nimport ChildLayoutControl from '../child-layout-control';\nimport AspectRatioTool from '../dimensions-tool/aspect-ratio-tool';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport { setImmutably } from '../../utils/object';\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\nexport function useHasDimensionsPanel( settings ) {\n\tconst hasContentSize = useHasContentSize( settings );\n\tconst hasWideSize = useHasWideSize( settings );\n\tconst hasPadding = useHasPadding( settings );\n\tconst hasMargin = useHasMargin( settings );\n\tconst hasGap = useHasGap( settings );\n\tconst hasMinHeight = useHasMinHeight( settings );\n\tconst hasAspectRatio = useHasAspectRatio( settings );\n\tconst hasChildLayout = useHasChildLayout( settings );\n\n\treturn (\n\t\tPlatform.OS === 'web' &&\n\t\t( hasContentSize ||\n\t\t\thasWideSize ||\n\t\t\thasPadding ||\n\t\t\thasMargin ||\n\t\t\thasGap ||\n\t\t\thasMinHeight ||\n\t\t\thasAspectRatio ||\n\t\t\thasChildLayout )\n\t);\n}\n\nfunction useHasContentSize( settings ) {\n\treturn settings?.layout?.contentSize;\n}\n\nfunction useHasWideSize( settings ) {\n\treturn settings?.layout?.wideSize;\n}\n\nfunction useHasPadding( settings ) {\n\treturn settings?.spacing?.padding;\n}\n\nfunction useHasMargin( settings ) {\n\treturn settings?.spacing?.margin;\n}\n\nfunction useHasGap( settings ) {\n\treturn settings?.spacing?.blockGap;\n}\n\nfunction useHasMinHeight( settings ) {\n\treturn settings?.dimensions?.minHeight;\n}\n\nfunction useHasAspectRatio( settings ) {\n\treturn settings?.dimensions?.aspectRatio;\n}\n\nfunction useHasChildLayout( settings ) {\n\tconst {\n\t\ttype: parentLayoutType = 'default',\n\t\tdefault: { type: defaultParentLayoutType = 'default' } = {},\n\t\tallowSizingOnChildren = false,\n\t} = settings?.parentLayout ?? {};\n\n\tconst support =\n\t\t( defaultParentLayoutType === 'flex' ||\n\t\t\tparentLayoutType === 'flex' ||\n\t\t\tdefaultParentLayoutType === 'grid' ||\n\t\t\tparentLayoutType === 'grid' ) &&\n\t\tallowSizingOnChildren;\n\treturn !! settings?.layout && support;\n}\n\nfunction useHasSpacingPresets( settings ) {\n\tconst { defaultSpacingSizes, spacingSizes } = settings?.spacing || {};\n\treturn (\n\t\t( defaultSpacingSizes !== false &&\n\t\t\tspacingSizes?.default?.length > 0 ) ||\n\t\tspacingSizes?.theme?.length > 0 ||\n\t\tspacingSizes?.custom?.length > 0\n\t);\n}\n\nfunction filterValuesBySides( values, sides ) {\n\t// If no custom side configuration, all sides are opted into by default.\n\t// Without any values, we have nothing to filter either.\n\tif ( ! sides || ! values ) {\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, isAxialGap ) {\n\tif ( ! value ) {\n\t\treturn value;\n\t}\n\n\t// Check for shorthand value (a string value).\n\tif ( typeof value === 'string' ) {\n\t\t/*\n\t\t * Map the string value to appropriate sides for the spacing control depending\n\t\t * on whether the current block has axial gap support or not.\n\t\t *\n\t\t * Note: The axial value pairs must match for the spacing control to display\n\t\t * the appropriate horizontal/vertical sliders.\n\t\t */\n\t\treturn isAxialGap\n\t\t\t? { top: value, right: value, bottom: value, left: value }\n\t\t\t: { top: value };\n\t}\n\n\treturn {\n\t\t...value,\n\t\tright: value?.left,\n\t\tbottom: value?.top,\n\t};\n}\n\nfunction DimensionsToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tcontentSize: true,\n\twideSize: true,\n\tpadding: true,\n\tmargin: true,\n\tblockGap: true,\n\tminHeight: true,\n\taspectRatio: true,\n\tchildLayout: true,\n};\n\nexport default function DimensionsPanel( {\n\tas: Wrapper = DimensionsToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tonVisualize = () => {},\n\t// Special case because the layout controls are not part of the dimensions panel\n\t// in global styles but not in block inspector.\n\tincludeLayoutControls = false,\n} ) {\n\tconst { dimensions, spacing } = settings;\n\n\tconst decodeValue = ( rawValue ) => {\n\t\tif ( rawValue && typeof rawValue === 'object' ) {\n\t\t\treturn Object.keys( rawValue ).reduce( ( acc, key ) => {\n\t\t\t\tacc[ key ] = getValueFromVariable(\n\t\t\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t\t\t'',\n\t\t\t\t\trawValue[ key ]\n\t\t\t\t);\n\t\t\t\treturn acc;\n\t\t\t}, {} );\n\t\t}\n\t\treturn getValueFromVariable(\n\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t'',\n\t\t\trawValue\n\t\t);\n\t};\n\n\tconst showSpacingPresetsControl = useHasSpacingPresets( settings );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: settings?.spacing?.units || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\n\t//Minimum Margin Value\n\tconst minimumMargin = -Infinity;\n\tconst [ minMarginValue, setMinMarginValue ] = useState( minimumMargin );\n\n\t// Content Width\n\tconst showContentSizeControl =\n\t\tuseHasContentSize( settings ) && includeLayoutControls;\n\tconst contentSizeValue = decodeValue( inheritedValue?.layout?.contentSize );\n\tconst setContentSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'contentSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetContentSizeValue = () => !! value?.layout?.contentSize;\n\tconst resetContentSizeValue = () => setContentSizeValue( undefined );\n\n\t// Wide Width\n\tconst showWideSizeControl =\n\t\tuseHasWideSize( settings ) && includeLayoutControls;\n\tconst wideSizeValue = decodeValue( inheritedValue?.layout?.wideSize );\n\tconst setWideSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'wideSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetWideSizeValue = () => !! value?.layout?.wideSize;\n\tconst resetWideSizeValue = () => setWideSizeValue( undefined );\n\n\t// Padding\n\tconst showPaddingControl = useHasPadding( settings );\n\tconst rawPadding = decodeValue( inheritedValue?.spacing?.padding );\n\tconst paddingValues = splitStyleValue( rawPadding );\n\tconst paddingSides = Array.isArray( settings?.spacing?.padding )\n\t\t? settings?.spacing?.padding\n\t\t: settings?.spacing?.padding?.sides;\n\tconst isAxialPadding =\n\t\tpaddingSides &&\n\t\tpaddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setPaddingValues = ( newPaddingValues ) => {\n\t\tconst padding = filterValuesBySides( newPaddingValues, paddingSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'padding' ], padding ) );\n\t};\n\tconst hasPaddingValue = () =>\n\t\t!! value?.spacing?.padding &&\n\t\tObject.keys( value?.spacing?.padding ).length;\n\tconst resetPaddingValue = () => setPaddingValues( undefined );\n\tconst onMouseOverPadding = () => onVisualize( 'padding' );\n\n\t// Margin\n\tconst showMarginControl = useHasMargin( settings );\n\tconst rawMargin = decodeValue( inheritedValue?.spacing?.margin );\n\tconst marginValues = splitStyleValue( rawMargin );\n\tconst marginSides = Array.isArray( settings?.spacing?.margin )\n\t\t? settings?.spacing?.margin\n\t\t: settings?.spacing?.margin?.sides;\n\tconst isAxialMargin =\n\t\tmarginSides &&\n\t\tmarginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setMarginValues = ( newMarginValues ) => {\n\t\tconst margin = filterValuesBySides( newMarginValues, marginSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'margin' ], margin ) );\n\t};\n\tconst hasMarginValue = () =>\n\t\t!! value?.spacing?.margin &&\n\t\tObject.keys( value?.spacing?.margin ).length;\n\tconst resetMarginValue = () => setMarginValues( undefined );\n\tconst onMouseOverMargin = () => onVisualize( 'margin' );\n\n\t// Block Gap\n\tconst showGapControl = useHasGap( settings );\n\tconst gapSides = Array.isArray( settings?.spacing?.blockGap )\n\t\t? settings?.spacing?.blockGap\n\t\t: settings?.spacing?.blockGap?.sides;\n\tconst isAxialGap =\n\t\tgapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst gapValue = decodeValue( inheritedValue?.spacing?.blockGap );\n\tconst gapValues = splitGapValue( gapValue, isAxialGap );\n\tconst setGapValue = ( newGapValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably( value, [ 'spacing', 'blockGap' ], newGapValue )\n\t\t);\n\t};\n\tconst setGapValues = ( nextBoxGapValue ) => {\n\t\tif ( ! nextBoxGapValue ) {\n\t\t\tsetGapValue( null );\n\t\t}\n\t\t// If axial gap is not enabled, treat the 'top' value as the shorthand gap value.\n\t\tif ( ! isAxialGap && nextBoxGapValue?.hasOwnProperty( 'top' ) ) {\n\t\t\tsetGapValue( nextBoxGapValue.top );\n\t\t} else {\n\t\t\tsetGapValue( {\n\t\t\t\ttop: nextBoxGapValue?.top,\n\t\t\t\tleft: nextBoxGapValue?.left,\n\t\t\t} );\n\t\t}\n\t};\n\tconst resetGapValue = () => setGapValue( undefined );\n\tconst hasGapValue = () => !! value?.spacing?.blockGap;\n\n\t// Min Height\n\tconst showMinHeightControl = useHasMinHeight( settings );\n\tconst minHeightValue = decodeValue( inheritedValue?.dimensions?.minHeight );\n\tconst setMinHeightValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'minHeight' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply min-height, while removing any applied aspect ratio.\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\ttempValue,\n\t\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\t};\n\tconst resetMinHeightValue = () => {\n\t\tsetMinHeightValue( undefined );\n\t};\n\tconst hasMinHeightValue = () => !! value?.dimensions?.minHeight;\n\n\t// Aspect Ratio\n\tconst showAspectRatioControl = useHasAspectRatio( settings );\n\tconst aspectRatioValue = decodeValue(\n\t\tinheritedValue?.dimensions?.aspectRatio\n\t);\n\tconst setAspectRatioValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply aspect-ratio, while removing any applied min-height.\n\t\tonChange(\n\t\t\tsetImmutably( tempValue, [ 'dimensions', 'minHeight' ], undefined )\n\t\t);\n\t};\n\tconst hasAspectRatioValue = () => !! value?.dimensions?.aspectRatio;\n\n\t// Child Layout\n\tconst showChildLayoutControl = useHasChildLayout( settings );\n\tconst childLayout = inheritedValue?.layout;\n\n\tconst setChildLayout = ( newChildLayout ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...newChildLayout,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tlayout: cleanEmptyObject( {\n\t\t\t\t...previousValue?.layout,\n\t\t\t\tcontentSize: undefined,\n\t\t\t\twideSize: undefined,\n\t\t\t\tselfStretch: undefined,\n\t\t\t\tflexSize: undefined,\n\t\t\t\tcolumnStart: undefined,\n\t\t\t\trowStart: undefined,\n\t\t\t\tcolumnSpan: undefined,\n\t\t\t\trowSpan: undefined,\n\t\t\t} ),\n\t\t\tspacing: {\n\t\t\t\t...previousValue?.spacing,\n\t\t\t\tpadding: undefined,\n\t\t\t\tmargin: undefined,\n\t\t\t\tblockGap: undefined,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\t...previousValue?.dimensions,\n\t\t\t\tminHeight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst onMouseLeaveControls = () => onVisualize( false );\n\n\tconst inputProps = {\n\t\tmin: minMarginValue,\n\t\tonDragStart: () => {\n\t\t\t//Reset to 0 in case the value was negative.\n\t\t\tsetMinMarginValue( 0 );\n\t\t},\n\t\tonDragEnd: () => {\n\t\t\tsetMinMarginValue( minimumMargin );\n\t\t},\n\t};\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\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\tlabel={ __( 'Content width' ) }\n\t\t\t\t\thasValue={ hasUserSetContentSizeValue }\n\t\t\t\t\tonDeselect={ resetContentSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.contentSize ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.contentSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Content width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ contentSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextContentSize ) => {\n\t\t\t\t\t\t\tsetContentSizeValue( nextContentSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ alignNone } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\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{ showWideSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\thasValue={ hasUserSetWideSizeValue }\n\t\t\t\t\tonDeselect={ resetWideSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.wideSize ?? DEFAULT_CONTROLS.wideSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ wideSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextWideSize ) => {\n\t\t\t\t\t\t\tsetWideSizeValue( nextWideSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ stretchWide } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\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{ 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={\n\t\t\t\t\t\tdefaultControls.padding ?? DEFAULT_CONTROLS.padding\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialPadding }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showMarginControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMarginValue }\n\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\tonDeselect={ resetMarginValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.margin ?? DEFAULT_CONTROLS.margin\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\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\tinputProps={ inputProps }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialMargin }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tminimumCustomValue={ -Infinity }\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\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showGapControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasGapValue }\n\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\tonDeselect={ resetGapValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.blockGap ?? DEFAULT_CONTROLS.blockGap\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t\t'single-column':\n\t\t\t\t\t\t\t// If UnitControl is used, should be single-column.\n\t\t\t\t\t\t\t! showSpacingPresetsControl && ! isAxialGap,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl &&\n\t\t\t\t\t\t( isAxialGap ? (\n\t\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\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\t__next40pxDefaultSize\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={ 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\tshowSideInLabel={ false }\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/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showChildLayoutControl && (\n\t\t\t\t<ChildLayoutControl\n\t\t\t\t\tvalue={ childLayout }\n\t\t\t\t\tonChange={ setChildLayout }\n\t\t\t\t\tparentLayout={ settings?.parentLayout }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.childLayout ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.childLayout\n\t\t\t\t\t}\n\t\t\t\t/>\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={ __( 'Minimum height' ) }\n\t\t\t\t\tonDeselect={ resetMinHeightValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.minHeight ?? DEFAULT_CONTROLS.minHeight\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<HeightControl\n\t\t\t\t\t\tlabel={ __( 'Minimum height' ) }\n\t\t\t\t\t\tvalue={ minHeightValue }\n\t\t\t\t\t\tonChange={ setMinHeightValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showAspectRatioControl && (\n\t\t\t\t<AspectRatioTool\n\t\t\t\t\thasValue={ hasAspectRatioValue }\n\t\t\t\t\tvalue={ aspectRatioValue }\n\t\t\t\t\tonChange={ setAspectRatioValue }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.aspectRatio ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.aspectRatio\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_components","_icons","_element","_utils","_spacingSizesControl","_heightControl","_childLayoutControl","_aspectRatioTool","_utils2","_object","_jsxRuntime","AXIAL_SIDES","useHasDimensionsPanel","settings","hasContentSize","useHasContentSize","hasWideSize","useHasWideSize","hasPadding","useHasPadding","hasMargin","useHasMargin","hasGap","useHasGap","hasMinHeight","useHasMinHeight","hasAspectRatio","useHasAspectRatio","hasChildLayout","useHasChildLayout","Platform","OS","layout","contentSize","wideSize","spacing","padding","margin","blockGap","dimensions","minHeight","aspectRatio","_settings$parentLayou","type","parentLayoutType","default","defaultParentLayoutType","allowSizingOnChildren","parentLayout","support","useHasSpacingPresets","defaultSpacingSizes","spacingSizes","length","theme","custom","filterValuesBySides","values","sides","filteredValues","forEach","side","top","bottom","left","right","splitStyleValue","value","splitGapValue","isAxialGap","DimensionsToolsPanel","resetAllFilter","onChange","panelId","children","dropdownMenuProps","useToolsPanelDropdownMenuProps","resetAll","updatedValue","jsx","__experimentalToolsPanel","label","__","DEFAULT_CONTROLS","childLayout","DimensionsPanel","as","Wrapper","inheritedValue","defaultControls","onVisualize","includeLayoutControls","_defaultControls$cont","_defaultControls$wide","_defaultControls$padd","_defaultControls$marg","_defaultControls$bloc","_defaultControls$chil","_defaultControls$minH","_defaultControls$aspe","decodeValue","rawValue","Object","keys","reduce","acc","key","getValueFromVariable","showSpacingPresetsControl","units","useCustomUnits","availableUnits","minimumMargin","Infinity","minMarginValue","setMinMarginValue","useState","showContentSizeControl","contentSizeValue","setContentSizeValue","newValue","setImmutably","undefined","hasUserSetContentSizeValue","resetContentSizeValue","showWideSizeControl","wideSizeValue","setWideSizeValue","hasUserSetWideSizeValue","resetWideSizeValue","showPaddingControl","rawPadding","paddingValues","paddingSides","Array","isArray","isAxialPadding","some","includes","setPaddingValues","newPaddingValues","hasPaddingValue","resetPaddingValue","onMouseOverPadding","showMarginControl","rawMargin","marginValues","marginSides","isAxialMargin","setMarginValues","newMarginValues","hasMarginValue","resetMarginValue","onMouseOverMargin","showGapControl","gapSides","gapValue","gapValues","setGapValue","newGapValue","setGapValues","nextBoxGapValue","hasOwnProperty","resetGapValue","hasGapValue","showMinHeightControl","minHeightValue","setMinHeightValue","tempValue","resetMinHeightValue","hasMinHeightValue","showAspectRatioControl","aspectRatioValue","setAspectRatioValue","hasAspectRatioValue","showChildLayoutControl","setChildLayout","newChildLayout","useCallback","previousValue","cleanEmptyObject","selfStretch","flexSize","columnStart","rowStart","columnSpan","rowSpan","onMouseLeaveControls","jsxs","className","__experimentalToolsPanelItem","hasValue","onDeselect","isShownByDefault","__experimentalUnitControl","__next40pxDefaultSize","labelPosition","nextContentSize","prefix","__experimentalInputControlPrefixWrapper","variant","Icon","icon","alignNone","nextWideSize","stretchWide","clsx","BoxControl","allowReset","splitOnAxis","inputProps","onMouseOver","onMouseOut","min","onDragStart","onDragEnd","minimumCustomValue","showSideInLabel"],"sources":["@wordpress/block-editor/src/components/global-styles/dimensions-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tBoxControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { Icon, alignNone, stretchWide } from '@wordpress/icons';\nimport { useCallback, useState, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';\nimport SpacingSizesControl from '../spacing-sizes-control';\nimport HeightControl from '../height-control';\nimport ChildLayoutControl from '../child-layout-control';\nimport AspectRatioTool from '../dimensions-tool/aspect-ratio-tool';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport { setImmutably } from '../../utils/object';\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\nexport function useHasDimensionsPanel( settings ) {\n\tconst hasContentSize = useHasContentSize( settings );\n\tconst hasWideSize = useHasWideSize( settings );\n\tconst hasPadding = useHasPadding( settings );\n\tconst hasMargin = useHasMargin( settings );\n\tconst hasGap = useHasGap( settings );\n\tconst hasMinHeight = useHasMinHeight( settings );\n\tconst hasAspectRatio = useHasAspectRatio( settings );\n\tconst hasChildLayout = useHasChildLayout( settings );\n\n\treturn (\n\t\tPlatform.OS === 'web' &&\n\t\t( hasContentSize ||\n\t\t\thasWideSize ||\n\t\t\thasPadding ||\n\t\t\thasMargin ||\n\t\t\thasGap ||\n\t\t\thasMinHeight ||\n\t\t\thasAspectRatio ||\n\t\t\thasChildLayout )\n\t);\n}\n\nfunction useHasContentSize( settings ) {\n\treturn settings?.layout?.contentSize;\n}\n\nfunction useHasWideSize( settings ) {\n\treturn settings?.layout?.wideSize;\n}\n\nfunction useHasPadding( settings ) {\n\treturn settings?.spacing?.padding;\n}\n\nfunction useHasMargin( settings ) {\n\treturn settings?.spacing?.margin;\n}\n\nfunction useHasGap( settings ) {\n\treturn settings?.spacing?.blockGap;\n}\n\nfunction useHasMinHeight( settings ) {\n\treturn settings?.dimensions?.minHeight;\n}\n\nfunction useHasAspectRatio( settings ) {\n\treturn settings?.dimensions?.aspectRatio;\n}\n\nfunction useHasChildLayout( settings ) {\n\tconst {\n\t\ttype: parentLayoutType = 'default',\n\t\tdefault: { type: defaultParentLayoutType = 'default' } = {},\n\t\tallowSizingOnChildren = false,\n\t} = settings?.parentLayout ?? {};\n\n\tconst support =\n\t\t( defaultParentLayoutType === 'flex' ||\n\t\t\tparentLayoutType === 'flex' ||\n\t\t\tdefaultParentLayoutType === 'grid' ||\n\t\t\tparentLayoutType === 'grid' ) &&\n\t\tallowSizingOnChildren;\n\treturn !! settings?.layout && support;\n}\n\nfunction useHasSpacingPresets( settings ) {\n\tconst { defaultSpacingSizes, spacingSizes } = settings?.spacing || {};\n\treturn (\n\t\t( defaultSpacingSizes !== false &&\n\t\t\tspacingSizes?.default?.length > 0 ) ||\n\t\tspacingSizes?.theme?.length > 0 ||\n\t\tspacingSizes?.custom?.length > 0\n\t);\n}\n\nfunction filterValuesBySides( values, sides ) {\n\t// If no custom side configuration, all sides are opted into by default.\n\t// Without any values, we have nothing to filter either.\n\tif ( ! sides || ! values ) {\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, isAxialGap ) {\n\tif ( ! value ) {\n\t\treturn value;\n\t}\n\n\t// Check for shorthand value (a string value).\n\tif ( typeof value === 'string' ) {\n\t\t/*\n\t\t * Map the string value to appropriate sides for the spacing control depending\n\t\t * on whether the current block has axial gap support or not.\n\t\t *\n\t\t * Note: The axial value pairs must match for the spacing control to display\n\t\t * the appropriate horizontal/vertical sliders.\n\t\t */\n\t\treturn isAxialGap\n\t\t\t? { top: value, right: value, bottom: value, left: value }\n\t\t\t: { top: value };\n\t}\n\n\treturn {\n\t\t...value,\n\t\tright: value?.left,\n\t\tbottom: value?.top,\n\t};\n}\n\nfunction DimensionsToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tcontentSize: true,\n\twideSize: true,\n\tpadding: true,\n\tmargin: true,\n\tblockGap: true,\n\tminHeight: true,\n\taspectRatio: true,\n\tchildLayout: true,\n};\n\nexport default function DimensionsPanel( {\n\tas: Wrapper = DimensionsToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tonVisualize = () => {},\n\t// Special case because the layout controls are not part of the dimensions panel\n\t// in global styles but not in block inspector.\n\tincludeLayoutControls = false,\n} ) {\n\tconst { dimensions, spacing } = settings;\n\n\tconst decodeValue = ( rawValue ) => {\n\t\tif ( rawValue && typeof rawValue === 'object' ) {\n\t\t\treturn Object.keys( rawValue ).reduce( ( acc, key ) => {\n\t\t\t\tacc[ key ] = getValueFromVariable(\n\t\t\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t\t\t'',\n\t\t\t\t\trawValue[ key ]\n\t\t\t\t);\n\t\t\t\treturn acc;\n\t\t\t}, {} );\n\t\t}\n\t\treturn getValueFromVariable(\n\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t'',\n\t\t\trawValue\n\t\t);\n\t};\n\n\tconst showSpacingPresetsControl = useHasSpacingPresets( settings );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: settings?.spacing?.units || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\n\t//Minimum Margin Value\n\tconst minimumMargin = -Infinity;\n\tconst [ minMarginValue, setMinMarginValue ] = useState( minimumMargin );\n\n\t// Content Width\n\tconst showContentSizeControl =\n\t\tuseHasContentSize( settings ) && includeLayoutControls;\n\tconst contentSizeValue = decodeValue( inheritedValue?.layout?.contentSize );\n\tconst setContentSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'contentSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetContentSizeValue = () => !! value?.layout?.contentSize;\n\tconst resetContentSizeValue = () => setContentSizeValue( undefined );\n\n\t// Wide Width\n\tconst showWideSizeControl =\n\t\tuseHasWideSize( settings ) && includeLayoutControls;\n\tconst wideSizeValue = decodeValue( inheritedValue?.layout?.wideSize );\n\tconst setWideSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'wideSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetWideSizeValue = () => !! value?.layout?.wideSize;\n\tconst resetWideSizeValue = () => setWideSizeValue( undefined );\n\n\t// Padding\n\tconst showPaddingControl = useHasPadding( settings );\n\tconst rawPadding = decodeValue( inheritedValue?.spacing?.padding );\n\tconst paddingValues = splitStyleValue( rawPadding );\n\tconst paddingSides = Array.isArray( settings?.spacing?.padding )\n\t\t? settings?.spacing?.padding\n\t\t: settings?.spacing?.padding?.sides;\n\tconst isAxialPadding =\n\t\tpaddingSides &&\n\t\tpaddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setPaddingValues = ( newPaddingValues ) => {\n\t\tconst padding = filterValuesBySides( newPaddingValues, paddingSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'padding' ], padding ) );\n\t};\n\tconst hasPaddingValue = () =>\n\t\t!! value?.spacing?.padding &&\n\t\tObject.keys( value?.spacing?.padding ).length;\n\tconst resetPaddingValue = () => setPaddingValues( undefined );\n\tconst onMouseOverPadding = () => onVisualize( 'padding' );\n\n\t// Margin\n\tconst showMarginControl = useHasMargin( settings );\n\tconst rawMargin = decodeValue( inheritedValue?.spacing?.margin );\n\tconst marginValues = splitStyleValue( rawMargin );\n\tconst marginSides = Array.isArray( settings?.spacing?.margin )\n\t\t? settings?.spacing?.margin\n\t\t: settings?.spacing?.margin?.sides;\n\tconst isAxialMargin =\n\t\tmarginSides &&\n\t\tmarginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setMarginValues = ( newMarginValues ) => {\n\t\tconst margin = filterValuesBySides( newMarginValues, marginSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'margin' ], margin ) );\n\t};\n\tconst hasMarginValue = () =>\n\t\t!! value?.spacing?.margin &&\n\t\tObject.keys( value?.spacing?.margin ).length;\n\tconst resetMarginValue = () => setMarginValues( undefined );\n\tconst onMouseOverMargin = () => onVisualize( 'margin' );\n\n\t// Block Gap\n\tconst showGapControl = useHasGap( settings );\n\tconst gapSides = Array.isArray( settings?.spacing?.blockGap )\n\t\t? settings?.spacing?.blockGap\n\t\t: settings?.spacing?.blockGap?.sides;\n\tconst isAxialGap =\n\t\tgapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst gapValue = decodeValue( inheritedValue?.spacing?.blockGap );\n\tconst gapValues = splitGapValue( gapValue, isAxialGap );\n\tconst setGapValue = ( newGapValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably( value, [ 'spacing', 'blockGap' ], newGapValue )\n\t\t);\n\t};\n\tconst setGapValues = ( nextBoxGapValue ) => {\n\t\tif ( ! nextBoxGapValue ) {\n\t\t\tsetGapValue( null );\n\t\t}\n\t\t// If axial gap is not enabled, treat the 'top' value as the shorthand gap value.\n\t\tif ( ! isAxialGap && nextBoxGapValue?.hasOwnProperty( 'top' ) ) {\n\t\t\tsetGapValue( nextBoxGapValue.top );\n\t\t} else {\n\t\t\tsetGapValue( {\n\t\t\t\ttop: nextBoxGapValue?.top,\n\t\t\t\tleft: nextBoxGapValue?.left,\n\t\t\t} );\n\t\t}\n\t};\n\tconst resetGapValue = () => setGapValue( undefined );\n\tconst hasGapValue = () => !! value?.spacing?.blockGap;\n\n\t// Min Height\n\tconst showMinHeightControl = useHasMinHeight( settings );\n\tconst minHeightValue = decodeValue( inheritedValue?.dimensions?.minHeight );\n\tconst setMinHeightValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'minHeight' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply min-height, while removing any applied aspect ratio.\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\ttempValue,\n\t\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\t};\n\tconst resetMinHeightValue = () => {\n\t\tsetMinHeightValue( undefined );\n\t};\n\tconst hasMinHeightValue = () => !! value?.dimensions?.minHeight;\n\n\t// Aspect Ratio\n\tconst showAspectRatioControl = useHasAspectRatio( settings );\n\tconst aspectRatioValue = decodeValue(\n\t\tinheritedValue?.dimensions?.aspectRatio\n\t);\n\tconst setAspectRatioValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply aspect-ratio, while removing any applied min-height.\n\t\tonChange(\n\t\t\tsetImmutably( tempValue, [ 'dimensions', 'minHeight' ], undefined )\n\t\t);\n\t};\n\tconst hasAspectRatioValue = () => !! value?.dimensions?.aspectRatio;\n\n\t// Child Layout\n\tconst showChildLayoutControl = useHasChildLayout( settings );\n\tconst childLayout = inheritedValue?.layout;\n\n\tconst setChildLayout = ( newChildLayout ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...newChildLayout,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tlayout: cleanEmptyObject( {\n\t\t\t\t...previousValue?.layout,\n\t\t\t\tcontentSize: undefined,\n\t\t\t\twideSize: undefined,\n\t\t\t\tselfStretch: undefined,\n\t\t\t\tflexSize: undefined,\n\t\t\t\tcolumnStart: undefined,\n\t\t\t\trowStart: undefined,\n\t\t\t\tcolumnSpan: undefined,\n\t\t\t\trowSpan: undefined,\n\t\t\t} ),\n\t\t\tspacing: {\n\t\t\t\t...previousValue?.spacing,\n\t\t\t\tpadding: undefined,\n\t\t\t\tmargin: undefined,\n\t\t\t\tblockGap: undefined,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\t...previousValue?.dimensions,\n\t\t\t\tminHeight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst onMouseLeaveControls = () => onVisualize( false );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ ( showContentSizeControl || showWideSizeControl ) && (\n\t\t\t\t<span className=\"span-columns\">\n\t\t\t\t\t{ __( 'Set the width of the main content area.' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t\t{ showContentSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Content width' ) }\n\t\t\t\t\thasValue={ hasUserSetContentSizeValue }\n\t\t\t\t\tonDeselect={ resetContentSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.contentSize ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.contentSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Content width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ contentSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextContentSize ) => {\n\t\t\t\t\t\t\tsetContentSizeValue( nextContentSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ alignNone } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\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{ showWideSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\thasValue={ hasUserSetWideSizeValue }\n\t\t\t\t\tonDeselect={ resetWideSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.wideSize ?? DEFAULT_CONTROLS.wideSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ wideSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextWideSize ) => {\n\t\t\t\t\t\t\tsetWideSizeValue( nextWideSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ stretchWide } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\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{ 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={\n\t\t\t\t\t\tdefaultControls.padding ?? DEFAULT_CONTROLS.padding\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\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\tinputProps={ {\n\t\t\t\t\t\t\t\tonMouseOver: onMouseOverPadding,\n\t\t\t\t\t\t\t\tonMouseOut: onMouseLeaveControls,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\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\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showMarginControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMarginValue }\n\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\tonDeselect={ resetMarginValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.margin ?? DEFAULT_CONTROLS.margin\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\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\tinputProps={ {\n\t\t\t\t\t\t\t\tmin: minMarginValue,\n\t\t\t\t\t\t\t\tonDragStart: () => {\n\t\t\t\t\t\t\t\t\t// Reset to 0 in case the value was negative.\n\t\t\t\t\t\t\t\t\tsetMinMarginValue( 0 );\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonDragEnd: () => {\n\t\t\t\t\t\t\t\t\tsetMinMarginValue( minimumMargin );\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonMouseOver: onMouseOverMargin,\n\t\t\t\t\t\t\t\tonMouseOut: onMouseLeaveControls,\n\t\t\t\t\t\t\t} }\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\tminimumCustomValue={ -Infinity }\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\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showGapControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasGapValue }\n\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\tonDeselect={ resetGapValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.blockGap ?? DEFAULT_CONTROLS.blockGap\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t\t'single-column':\n\t\t\t\t\t\t\t// If UnitControl is used, should be single-column.\n\t\t\t\t\t\t\t! showSpacingPresetsControl && ! isAxialGap,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl &&\n\t\t\t\t\t\t( isAxialGap ? (\n\t\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\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\t__next40pxDefaultSize\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={ 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\tshowSideInLabel={ false }\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/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showChildLayoutControl && (\n\t\t\t\t<ChildLayoutControl\n\t\t\t\t\tvalue={ childLayout }\n\t\t\t\t\tonChange={ setChildLayout }\n\t\t\t\t\tparentLayout={ settings?.parentLayout }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.childLayout ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.childLayout\n\t\t\t\t\t}\n\t\t\t\t/>\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={ __( 'Minimum height' ) }\n\t\t\t\t\tonDeselect={ resetMinHeightValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.minHeight ?? DEFAULT_CONTROLS.minHeight\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<HeightControl\n\t\t\t\t\t\tlabel={ __( 'Minimum height' ) }\n\t\t\t\t\t\tvalue={ minHeightValue }\n\t\t\t\t\t\tonChange={ setMinHeightValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showAspectRatioControl && (\n\t\t\t\t<AspectRatioTool\n\t\t\t\t\thasValue={ hasAspectRatioValue }\n\t\t\t\t\tvalue={ aspectRatioValue }\n\t\t\t\t\tonChange={ setAspectRatioValue }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.aspectRatio ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.aspectRatio\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,3 @@
1
- /* wp:polyfill */
2
1
  "use strict";
3
2
 
4
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -1 +1 @@
1
- {"version":3,"names":["_memize","_interopRequireDefault","require","_i18n","_blocks","globalStylesChangesCache","Map","EMPTY_ARRAY","translationMap","caption","__","link","button","heading","h1","h2","h3","h4","h5","h6","getBlockNames","memoize","getBlockTypes","reduce","accumulator","name","title","isObject","obj","getTranslation","key","keyArray","split","blockName","undefined","deepCompare","changedObject","originalObject","parentPath","slice","join","allKeys","Set","Object","keys","diffs","path","changedPath","concat","getGlobalStylesChangelist","next","previous","cacheKey","JSON","stringify","has","get","changedValueTree","styles","background","color","typography","spacing","blocks","elements","settings","length","set","result","acc","curr","translation","push","getGlobalStylesChanges","options","changeList","changesLength","maxResults","entries","group","includes","map","changeValues","changeValuesLength","joinedChangesValue","sprintf","_n"],"sources":["@wordpress/block-editor/src/components/global-styles/get-global-styles-changes.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport memoize from 'memize';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { getBlockTypes } from '@wordpress/blocks';\n\nconst globalStylesChangesCache = new Map();\nconst EMPTY_ARRAY = [];\nconst translationMap = {\n\tcaption: __( 'Caption' ),\n\tlink: __( 'Link' ),\n\tbutton: __( 'Button' ),\n\theading: __( 'Heading' ),\n\th1: __( 'H1' ),\n\th2: __( 'H2' ),\n\th3: __( 'H3' ),\n\th4: __( 'H4' ),\n\th5: __( 'H5' ),\n\th6: __( 'H6' ),\n\t'settings.color': __( 'Color' ),\n\t'settings.typography': __( 'Typography' ),\n\t'styles.color': __( 'Colors' ),\n\t'styles.spacing': __( 'Spacing' ),\n\t'styles.background': __( 'Background' ),\n\t'styles.typography': __( 'Typography' ),\n};\nconst getBlockNames = memoize( () =>\n\tgetBlockTypes().reduce( ( accumulator, { name, title } ) => {\n\t\taccumulator[ name ] = title;\n\t\treturn accumulator;\n\t}, {} )\n);\nconst isObject = ( obj ) => obj !== null && typeof obj === 'object';\n\n/**\n * Get the translation for a given global styles key.\n * @param {string} key A key representing a path to a global style property or setting.\n * @return {string|undefined} A translated key or undefined if no translation exists.\n */\nfunction getTranslation( key ) {\n\tif ( translationMap[ key ] ) {\n\t\treturn translationMap[ key ];\n\t}\n\n\tconst keyArray = key.split( '.' );\n\n\tif ( keyArray?.[ 0 ] === 'blocks' ) {\n\t\tconst blockName = getBlockNames()?.[ keyArray[ 1 ] ];\n\t\treturn blockName || keyArray[ 1 ];\n\t}\n\n\tif ( keyArray?.[ 0 ] === 'elements' ) {\n\t\treturn translationMap[ keyArray[ 1 ] ] || keyArray[ 1 ];\n\t}\n\n\treturn undefined;\n}\n\n/**\n * A deep comparison of two objects, optimized for comparing global styles.\n * @param {Object} changedObject The changed object to compare.\n * @param {Object} originalObject The original object to compare against.\n * @param {string} parentPath A key/value pair object of block names and their rendered titles.\n * @return {string[]} An array of paths whose values have changed.\n */\nfunction deepCompare( changedObject, originalObject, parentPath = '' ) {\n\t// We have two non-object values to compare.\n\tif ( ! isObject( changedObject ) && ! isObject( originalObject ) ) {\n\t\t/*\n\t\t * Only return a path if the value has changed.\n\t\t * And then only the path name up to 2 levels deep.\n\t\t */\n\t\treturn changedObject !== originalObject\n\t\t\t? parentPath.split( '.' ).slice( 0, 2 ).join( '.' )\n\t\t\t: undefined;\n\t}\n\n\t// Enable comparison when an object doesn't have a corresponding property to compare.\n\tchangedObject = isObject( changedObject ) ? changedObject : {};\n\toriginalObject = isObject( originalObject ) ? originalObject : {};\n\n\tconst allKeys = new Set( [\n\t\t...Object.keys( changedObject ),\n\t\t...Object.keys( originalObject ),\n\t] );\n\n\tlet diffs = [];\n\tfor ( const key of allKeys ) {\n\t\tconst path = parentPath ? parentPath + '.' + key : key;\n\t\tconst changedPath = deepCompare(\n\t\t\tchangedObject[ key ],\n\t\t\toriginalObject[ key ],\n\t\t\tpath\n\t\t);\n\t\tif ( changedPath ) {\n\t\t\tdiffs = diffs.concat( changedPath );\n\t\t}\n\t}\n\treturn diffs;\n}\n\n/**\n * Returns an array of translated summarized global styles changes.\n * Results are cached using a Map() key of `JSON.stringify( { next, previous } )`.\n *\n * @param {Object} next The changed object to compare.\n * @param {Object} previous The original object to compare against.\n * @return {Array[]} A 2-dimensional array of tuples: [ \"group\", \"translated change\" ].\n */\nexport function getGlobalStylesChangelist( next, previous ) {\n\tconst cacheKey = JSON.stringify( { next, previous } );\n\n\tif ( globalStylesChangesCache.has( cacheKey ) ) {\n\t\treturn globalStylesChangesCache.get( cacheKey );\n\t}\n\n\t/*\n\t * Compare the two changesets with normalized keys.\n\t * The order of these keys determines the order in which\n\t * they'll appear in the results.\n\t */\n\tconst changedValueTree = deepCompare(\n\t\t{\n\t\t\tstyles: {\n\t\t\t\tbackground: next?.styles?.background,\n\t\t\t\tcolor: next?.styles?.color,\n\t\t\t\ttypography: next?.styles?.typography,\n\t\t\t\tspacing: next?.styles?.spacing,\n\t\t\t},\n\t\t\tblocks: next?.styles?.blocks,\n\t\t\telements: next?.styles?.elements,\n\t\t\tsettings: next?.settings,\n\t\t},\n\t\t{\n\t\t\tstyles: {\n\t\t\t\tbackground: previous?.styles?.background,\n\t\t\t\tcolor: previous?.styles?.color,\n\t\t\t\ttypography: previous?.styles?.typography,\n\t\t\t\tspacing: previous?.styles?.spacing,\n\t\t\t},\n\t\t\tblocks: previous?.styles?.blocks,\n\t\t\telements: previous?.styles?.elements,\n\t\t\tsettings: previous?.settings,\n\t\t}\n\t);\n\n\tif ( ! changedValueTree.length ) {\n\t\tglobalStylesChangesCache.set( cacheKey, EMPTY_ARRAY );\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\t// Remove duplicate results.\n\tconst result = [ ...new Set( changedValueTree ) ]\n\t\t/*\n\t\t * Translate the keys.\n\t\t * Remove empty translations.\n\t\t */\n\t\t.reduce( ( acc, curr ) => {\n\t\t\tconst translation = getTranslation( curr );\n\t\t\tif ( translation ) {\n\t\t\t\tacc.push( [ curr.split( '.' )[ 0 ], translation ] );\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, [] );\n\n\tglobalStylesChangesCache.set( cacheKey, result );\n\n\treturn result;\n}\n\n/**\n * From a getGlobalStylesChangelist() result, returns an array of translated global styles changes, grouped by type.\n * The types are 'blocks', 'elements', 'settings', and 'styles'.\n *\n * @param {Object} next The changed object to compare.\n * @param {Object} previous The original object to compare against.\n * @param {{maxResults:number}} options Options. maxResults: results to return before truncating.\n * @return {string[]} An array of translated changes.\n */\nexport default function getGlobalStylesChanges( next, previous, options = {} ) {\n\tlet changeList = getGlobalStylesChangelist( next, previous );\n\tconst changesLength = changeList.length;\n\tconst { maxResults } = options;\n\n\tif ( changesLength ) {\n\t\t// Truncate to `n` results if necessary.\n\t\tif ( !! maxResults && changesLength > maxResults ) {\n\t\t\tchangeList = changeList.slice( 0, maxResults );\n\t\t}\n\t\treturn Object.entries(\n\t\t\tchangeList.reduce( ( acc, curr ) => {\n\t\t\t\tconst group = acc[ curr[ 0 ] ] || [];\n\t\t\t\tif ( ! group.includes( curr[ 1 ] ) ) {\n\t\t\t\t\tacc[ curr[ 0 ] ] = [ ...group, curr[ 1 ] ];\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t}, {} )\n\t\t).map( ( [ key, changeValues ] ) => {\n\t\t\tconst changeValuesLength = changeValues.length;\n\t\t\tconst joinedChangesValue = changeValues.join(\n\t\t\t\t/* translators: Used between list items, there is a space after the comma. */\n\t\t\t\t__( ', ' ) // eslint-disable-line @wordpress/i18n-no-flanking-whitespace\n\t\t\t);\n\t\t\tswitch ( key ) {\n\t\t\t\tcase 'blocks': {\n\t\t\t\t\treturn sprintf(\n\t\t\t\t\t\t// translators: %s: a list of block names separated by a comma.\n\t\t\t\t\t\t_n( '%s block.', '%s blocks.', changeValuesLength ),\n\t\t\t\t\t\tjoinedChangesValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcase 'elements': {\n\t\t\t\t\treturn sprintf(\n\t\t\t\t\t\t// translators: %s: a list of element names separated by a comma.\n\t\t\t\t\t\t_n( '%s element.', '%s elements.', changeValuesLength ),\n\t\t\t\t\t\tjoinedChangesValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcase 'settings': {\n\t\t\t\t\treturn sprintf(\n\t\t\t\t\t\t// translators: %s: a list of theme.json setting labels separated by a comma.\n\t\t\t\t\t\t__( '%s settings.' ),\n\t\t\t\t\t\tjoinedChangesValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcase 'styles': {\n\t\t\t\t\treturn sprintf(\n\t\t\t\t\t\t// translators: %s: a list of theme.json top-level styles labels separated by a comma.\n\t\t\t\t\t\t__( '%s styles.' ),\n\t\t\t\t\t\tjoinedChangesValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn sprintf(\n\t\t\t\t\t\t// translators: %s: a list of global styles changes separated by a comma.\n\t\t\t\t\t\t__( '%s.' ),\n\t\t\t\t\t\tjoinedChangesValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn EMPTY_ARRAY;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_memize","_interopRequireDefault","require","_i18n","_blocks","globalStylesChangesCache","Map","EMPTY_ARRAY","translationMap","caption","__","link","button","heading","h1","h2","h3","h4","h5","h6","getBlockNames","memoize","getBlockTypes","reduce","accumulator","name","title","isObject","obj","getTranslation","key","keyArray","split","blockName","undefined","deepCompare","changedObject","originalObject","parentPath","slice","join","allKeys","Set","Object","keys","diffs","path","changedPath","concat","getGlobalStylesChangelist","next","previous","cacheKey","JSON","stringify","has","get","changedValueTree","styles","background","color","typography","spacing","blocks","elements","settings","length","set","result","acc","curr","translation","push","getGlobalStylesChanges","options","changeList","changesLength","maxResults","entries","group","includes","map","changeValues","changeValuesLength","joinedChangesValue","sprintf","_n"],"sources":["@wordpress/block-editor/src/components/global-styles/get-global-styles-changes.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport memoize from 'memize';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { getBlockTypes } from '@wordpress/blocks';\n\nconst globalStylesChangesCache = new Map();\nconst EMPTY_ARRAY = [];\nconst translationMap = {\n\tcaption: __( 'Caption' ),\n\tlink: __( 'Link' ),\n\tbutton: __( 'Button' ),\n\theading: __( 'Heading' ),\n\th1: __( 'H1' ),\n\th2: __( 'H2' ),\n\th3: __( 'H3' ),\n\th4: __( 'H4' ),\n\th5: __( 'H5' ),\n\th6: __( 'H6' ),\n\t'settings.color': __( 'Color' ),\n\t'settings.typography': __( 'Typography' ),\n\t'styles.color': __( 'Colors' ),\n\t'styles.spacing': __( 'Spacing' ),\n\t'styles.background': __( 'Background' ),\n\t'styles.typography': __( 'Typography' ),\n};\nconst getBlockNames = memoize( () =>\n\tgetBlockTypes().reduce( ( accumulator, { name, title } ) => {\n\t\taccumulator[ name ] = title;\n\t\treturn accumulator;\n\t}, {} )\n);\nconst isObject = ( obj ) => obj !== null && typeof obj === 'object';\n\n/**\n * Get the translation for a given global styles key.\n * @param {string} key A key representing a path to a global style property or setting.\n * @return {string|undefined} A translated key or undefined if no translation exists.\n */\nfunction getTranslation( key ) {\n\tif ( translationMap[ key ] ) {\n\t\treturn translationMap[ key ];\n\t}\n\n\tconst keyArray = key.split( '.' );\n\n\tif ( keyArray?.[ 0 ] === 'blocks' ) {\n\t\tconst blockName = getBlockNames()?.[ keyArray[ 1 ] ];\n\t\treturn blockName || keyArray[ 1 ];\n\t}\n\n\tif ( keyArray?.[ 0 ] === 'elements' ) {\n\t\treturn translationMap[ keyArray[ 1 ] ] || keyArray[ 1 ];\n\t}\n\n\treturn undefined;\n}\n\n/**\n * A deep comparison of two objects, optimized for comparing global styles.\n * @param {Object} changedObject The changed object to compare.\n * @param {Object} originalObject The original object to compare against.\n * @param {string} parentPath A key/value pair object of block names and their rendered titles.\n * @return {string[]} An array of paths whose values have changed.\n */\nfunction deepCompare( changedObject, originalObject, parentPath = '' ) {\n\t// We have two non-object values to compare.\n\tif ( ! isObject( changedObject ) && ! isObject( originalObject ) ) {\n\t\t/*\n\t\t * Only return a path if the value has changed.\n\t\t * And then only the path name up to 2 levels deep.\n\t\t */\n\t\treturn changedObject !== originalObject\n\t\t\t? parentPath.split( '.' ).slice( 0, 2 ).join( '.' )\n\t\t\t: undefined;\n\t}\n\n\t// Enable comparison when an object doesn't have a corresponding property to compare.\n\tchangedObject = isObject( changedObject ) ? changedObject : {};\n\toriginalObject = isObject( originalObject ) ? originalObject : {};\n\n\tconst allKeys = new Set( [\n\t\t...Object.keys( changedObject ),\n\t\t...Object.keys( originalObject ),\n\t] );\n\n\tlet diffs = [];\n\tfor ( const key of allKeys ) {\n\t\tconst path = parentPath ? parentPath + '.' + key : key;\n\t\tconst changedPath = deepCompare(\n\t\t\tchangedObject[ key ],\n\t\t\toriginalObject[ key ],\n\t\t\tpath\n\t\t);\n\t\tif ( changedPath ) {\n\t\t\tdiffs = diffs.concat( changedPath );\n\t\t}\n\t}\n\treturn diffs;\n}\n\n/**\n * Returns an array of translated summarized global styles changes.\n * Results are cached using a Map() key of `JSON.stringify( { next, previous } )`.\n *\n * @param {Object} next The changed object to compare.\n * @param {Object} previous The original object to compare against.\n * @return {Array[]} A 2-dimensional array of tuples: [ \"group\", \"translated change\" ].\n */\nexport function getGlobalStylesChangelist( next, previous ) {\n\tconst cacheKey = JSON.stringify( { next, previous } );\n\n\tif ( globalStylesChangesCache.has( cacheKey ) ) {\n\t\treturn globalStylesChangesCache.get( cacheKey );\n\t}\n\n\t/*\n\t * Compare the two changesets with normalized keys.\n\t * The order of these keys determines the order in which\n\t * they'll appear in the results.\n\t */\n\tconst changedValueTree = deepCompare(\n\t\t{\n\t\t\tstyles: {\n\t\t\t\tbackground: next?.styles?.background,\n\t\t\t\tcolor: next?.styles?.color,\n\t\t\t\ttypography: next?.styles?.typography,\n\t\t\t\tspacing: next?.styles?.spacing,\n\t\t\t},\n\t\t\tblocks: next?.styles?.blocks,\n\t\t\telements: next?.styles?.elements,\n\t\t\tsettings: next?.settings,\n\t\t},\n\t\t{\n\t\t\tstyles: {\n\t\t\t\tbackground: previous?.styles?.background,\n\t\t\t\tcolor: previous?.styles?.color,\n\t\t\t\ttypography: previous?.styles?.typography,\n\t\t\t\tspacing: previous?.styles?.spacing,\n\t\t\t},\n\t\t\tblocks: previous?.styles?.blocks,\n\t\t\telements: previous?.styles?.elements,\n\t\t\tsettings: previous?.settings,\n\t\t}\n\t);\n\n\tif ( ! changedValueTree.length ) {\n\t\tglobalStylesChangesCache.set( cacheKey, EMPTY_ARRAY );\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\t// Remove duplicate results.\n\tconst result = [ ...new Set( changedValueTree ) ]\n\t\t/*\n\t\t * Translate the keys.\n\t\t * Remove empty translations.\n\t\t */\n\t\t.reduce( ( acc, curr ) => {\n\t\t\tconst translation = getTranslation( curr );\n\t\t\tif ( translation ) {\n\t\t\t\tacc.push( [ curr.split( '.' )[ 0 ], translation ] );\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, [] );\n\n\tglobalStylesChangesCache.set( cacheKey, result );\n\n\treturn result;\n}\n\n/**\n * From a getGlobalStylesChangelist() result, returns an array of translated global styles changes, grouped by type.\n * The types are 'blocks', 'elements', 'settings', and 'styles'.\n *\n * @param {Object} next The changed object to compare.\n * @param {Object} previous The original object to compare against.\n * @param {{maxResults:number}} options Options. maxResults: results to return before truncating.\n * @return {string[]} An array of translated changes.\n */\nexport default function getGlobalStylesChanges( next, previous, options = {} ) {\n\tlet changeList = getGlobalStylesChangelist( next, previous );\n\tconst changesLength = changeList.length;\n\tconst { maxResults } = options;\n\n\tif ( changesLength ) {\n\t\t// Truncate to `n` results if necessary.\n\t\tif ( !! maxResults && changesLength > maxResults ) {\n\t\t\tchangeList = changeList.slice( 0, maxResults );\n\t\t}\n\t\treturn Object.entries(\n\t\t\tchangeList.reduce( ( acc, curr ) => {\n\t\t\t\tconst group = acc[ curr[ 0 ] ] || [];\n\t\t\t\tif ( ! group.includes( curr[ 1 ] ) ) {\n\t\t\t\t\tacc[ curr[ 0 ] ] = [ ...group, curr[ 1 ] ];\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t}, {} )\n\t\t).map( ( [ key, changeValues ] ) => {\n\t\t\tconst changeValuesLength = changeValues.length;\n\t\t\tconst joinedChangesValue = changeValues.join(\n\t\t\t\t/* translators: Used between list items, there is a space after the comma. */\n\t\t\t\t__( ', ' ) // eslint-disable-line @wordpress/i18n-no-flanking-whitespace\n\t\t\t);\n\t\t\tswitch ( key ) {\n\t\t\t\tcase 'blocks': {\n\t\t\t\t\treturn sprintf(\n\t\t\t\t\t\t// translators: %s: a list of block names separated by a comma.\n\t\t\t\t\t\t_n( '%s block.', '%s blocks.', changeValuesLength ),\n\t\t\t\t\t\tjoinedChangesValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcase 'elements': {\n\t\t\t\t\treturn sprintf(\n\t\t\t\t\t\t// translators: %s: a list of element names separated by a comma.\n\t\t\t\t\t\t_n( '%s element.', '%s elements.', changeValuesLength ),\n\t\t\t\t\t\tjoinedChangesValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcase 'settings': {\n\t\t\t\t\treturn sprintf(\n\t\t\t\t\t\t// translators: %s: a list of theme.json setting labels separated by a comma.\n\t\t\t\t\t\t__( '%s settings.' ),\n\t\t\t\t\t\tjoinedChangesValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcase 'styles': {\n\t\t\t\t\treturn sprintf(\n\t\t\t\t\t\t// translators: %s: a list of theme.json top-level styles labels separated by a comma.\n\t\t\t\t\t\t__( '%s styles.' ),\n\t\t\t\t\t\tjoinedChangesValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn sprintf(\n\t\t\t\t\t\t// translators: %s: a list of global styles changes separated by a comma.\n\t\t\t\t\t\t__( '%s.' ),\n\t\t\t\t\t\tjoinedChangesValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn EMPTY_ARRAY;\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AATA;AACA;AACA;;AAGA;AACA;AACA;;AAIA,MAAMG,wBAAwB,GAAG,IAAIC,GAAG,CAAC,CAAC;AAC1C,MAAMC,WAAW,GAAG,EAAE;AACtB,MAAMC,cAAc,GAAG;EACtBC,OAAO,EAAE,IAAAC,QAAE,EAAE,SAAU,CAAC;EACxBC,IAAI,EAAE,IAAAD,QAAE,EAAE,MAAO,CAAC;EAClBE,MAAM,EAAE,IAAAF,QAAE,EAAE,QAAS,CAAC;EACtBG,OAAO,EAAE,IAAAH,QAAE,EAAE,SAAU,CAAC;EACxBI,EAAE,EAAE,IAAAJ,QAAE,EAAE,IAAK,CAAC;EACdK,EAAE,EAAE,IAAAL,QAAE,EAAE,IAAK,CAAC;EACdM,EAAE,EAAE,IAAAN,QAAE,EAAE,IAAK,CAAC;EACdO,EAAE,EAAE,IAAAP,QAAE,EAAE,IAAK,CAAC;EACdQ,EAAE,EAAE,IAAAR,QAAE,EAAE,IAAK,CAAC;EACdS,EAAE,EAAE,IAAAT,QAAE,EAAE,IAAK,CAAC;EACd,gBAAgB,EAAE,IAAAA,QAAE,EAAE,OAAQ,CAAC;EAC/B,qBAAqB,EAAE,IAAAA,QAAE,EAAE,YAAa,CAAC;EACzC,cAAc,EAAE,IAAAA,QAAE,EAAE,QAAS,CAAC;EAC9B,gBAAgB,EAAE,IAAAA,QAAE,EAAE,SAAU,CAAC;EACjC,mBAAmB,EAAE,IAAAA,QAAE,EAAE,YAAa,CAAC;EACvC,mBAAmB,EAAE,IAAAA,QAAE,EAAE,YAAa;AACvC,CAAC;AACD,MAAMU,aAAa,GAAG,IAAAC,eAAO,EAAE,MAC9B,IAAAC,qBAAa,EAAC,CAAC,CAACC,MAAM,CAAE,CAAEC,WAAW,EAAE;EAAEC,IAAI;EAAEC;AAAM,CAAC,KAAM;EAC3DF,WAAW,CAAEC,IAAI,CAAE,GAAGC,KAAK;EAC3B,OAAOF,WAAW;AACnB,CAAC,EAAE,CAAC,CAAE,CACP,CAAC;AACD,MAAMG,QAAQ,GAAKC,GAAG,IAAMA,GAAG,KAAK,IAAI,IAAI,OAAOA,GAAG,KAAK,QAAQ;;AAEnE;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAAEC,GAAG,EAAG;EAC9B,IAAKtB,cAAc,CAAEsB,GAAG,CAAE,EAAG;IAC5B,OAAOtB,cAAc,CAAEsB,GAAG,CAAE;EAC7B;EAEA,MAAMC,QAAQ,GAAGD,GAAG,CAACE,KAAK,CAAE,GAAI,CAAC;EAEjC,IAAKD,QAAQ,GAAI,CAAC,CAAE,KAAK,QAAQ,EAAG;IACnC,MAAME,SAAS,GAAGb,aAAa,CAAC,CAAC,GAAIW,QAAQ,CAAE,CAAC,CAAE,CAAE;IACpD,OAAOE,SAAS,IAAIF,QAAQ,CAAE,CAAC,CAAE;EAClC;EAEA,IAAKA,QAAQ,GAAI,CAAC,CAAE,KAAK,UAAU,EAAG;IACrC,OAAOvB,cAAc,CAAEuB,QAAQ,CAAE,CAAC,CAAE,CAAE,IAAIA,QAAQ,CAAE,CAAC,CAAE;EACxD;EAEA,OAAOG,SAAS;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,WAAWA,CAAEC,aAAa,EAAEC,cAAc,EAAEC,UAAU,GAAG,EAAE,EAAG;EACtE;EACA,IAAK,CAAEX,QAAQ,CAAES,aAAc,CAAC,IAAI,CAAET,QAAQ,CAAEU,cAAe,CAAC,EAAG;IAClE;AACF;AACA;AACA;IACE,OAAOD,aAAa,KAAKC,cAAc,GACpCC,UAAU,CAACN,KAAK,CAAE,GAAI,CAAC,CAACO,KAAK,CAAE,CAAC,EAAE,CAAE,CAAC,CAACC,IAAI,CAAE,GAAI,CAAC,GACjDN,SAAS;EACb;;EAEA;EACAE,aAAa,GAAGT,QAAQ,CAAES,aAAc,CAAC,GAAGA,aAAa,GAAG,CAAC,CAAC;EAC9DC,cAAc,GAAGV,QAAQ,CAAEU,cAAe,CAAC,GAAGA,cAAc,GAAG,CAAC,CAAC;EAEjE,MAAMI,OAAO,GAAG,IAAIC,GAAG,CAAE,CACxB,GAAGC,MAAM,CAACC,IAAI,CAAER,aAAc,CAAC,EAC/B,GAAGO,MAAM,CAACC,IAAI,CAAEP,cAAe,CAAC,CAC/B,CAAC;EAEH,IAAIQ,KAAK,GAAG,EAAE;EACd,KAAM,MAAMf,GAAG,IAAIW,OAAO,EAAG;IAC5B,MAAMK,IAAI,GAAGR,UAAU,GAAGA,UAAU,GAAG,GAAG,GAAGR,GAAG,GAAGA,GAAG;IACtD,MAAMiB,WAAW,GAAGZ,WAAW,CAC9BC,aAAa,CAAEN,GAAG,CAAE,EACpBO,cAAc,CAAEP,GAAG,CAAE,EACrBgB,IACD,CAAC;IACD,IAAKC,WAAW,EAAG;MAClBF,KAAK,GAAGA,KAAK,CAACG,MAAM,CAAED,WAAY,CAAC;IACpC;EACD;EACA,OAAOF,KAAK;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,yBAAyBA,CAAEC,IAAI,EAAEC,QAAQ,EAAG;EAC3D,MAAMC,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAAE;IAAEJ,IAAI;IAAEC;EAAS,CAAE,CAAC;EAErD,IAAK9C,wBAAwB,CAACkD,GAAG,CAAEH,QAAS,CAAC,EAAG;IAC/C,OAAO/C,wBAAwB,CAACmD,GAAG,CAAEJ,QAAS,CAAC;EAChD;;EAEA;AACD;AACA;AACA;AACA;EACC,MAAMK,gBAAgB,GAAGtB,WAAW,CACnC;IACCuB,MAAM,EAAE;MACPC,UAAU,EAAET,IAAI,EAAEQ,MAAM,EAAEC,UAAU;MACpCC,KAAK,EAAEV,IAAI,EAAEQ,MAAM,EAAEE,KAAK;MAC1BC,UAAU,EAAEX,IAAI,EAAEQ,MAAM,EAAEG,UAAU;MACpCC,OAAO,EAAEZ,IAAI,EAAEQ,MAAM,EAAEI;IACxB,CAAC;IACDC,MAAM,EAAEb,IAAI,EAAEQ,MAAM,EAAEK,MAAM;IAC5BC,QAAQ,EAAEd,IAAI,EAAEQ,MAAM,EAAEM,QAAQ;IAChCC,QAAQ,EAAEf,IAAI,EAAEe;EACjB,CAAC,EACD;IACCP,MAAM,EAAE;MACPC,UAAU,EAAER,QAAQ,EAAEO,MAAM,EAAEC,UAAU;MACxCC,KAAK,EAAET,QAAQ,EAAEO,MAAM,EAAEE,KAAK;MAC9BC,UAAU,EAAEV,QAAQ,EAAEO,MAAM,EAAEG,UAAU;MACxCC,OAAO,EAAEX,QAAQ,EAAEO,MAAM,EAAEI;IAC5B,CAAC;IACDC,MAAM,EAAEZ,QAAQ,EAAEO,MAAM,EAAEK,MAAM;IAChCC,QAAQ,EAAEb,QAAQ,EAAEO,MAAM,EAAEM,QAAQ;IACpCC,QAAQ,EAAEd,QAAQ,EAAEc;EACrB,CACD,CAAC;EAED,IAAK,CAAER,gBAAgB,CAACS,MAAM,EAAG;IAChC7D,wBAAwB,CAAC8D,GAAG,CAAEf,QAAQ,EAAE7C,WAAY,CAAC;IACrD,OAAOA,WAAW;EACnB;;EAEA;EACA,MAAM6D,MAAM,GAAG,CAAE,GAAG,IAAI1B,GAAG,CAAEe,gBAAiB,CAAC;EAC9C;AACF;AACA;AACA,KAHE,CAIClC,MAAM,CAAE,CAAE8C,GAAG,EAAEC,IAAI,KAAM;IACzB,MAAMC,WAAW,GAAG1C,cAAc,CAAEyC,IAAK,CAAC;IAC1C,IAAKC,WAAW,EAAG;MAClBF,GAAG,CAACG,IAAI,CAAE,CAAEF,IAAI,CAACtC,KAAK,CAAE,GAAI,CAAC,CAAE,CAAC,CAAE,EAAEuC,WAAW,CAAG,CAAC;IACpD;IACA,OAAOF,GAAG;EACX,CAAC,EAAE,EAAG,CAAC;EAERhE,wBAAwB,CAAC8D,GAAG,CAAEf,QAAQ,EAAEgB,MAAO,CAAC;EAEhD,OAAOA,MAAM;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASK,sBAAsBA,CAAEvB,IAAI,EAAEC,QAAQ,EAAEuB,OAAO,GAAG,CAAC,CAAC,EAAG;EAC9E,IAAIC,UAAU,GAAG1B,yBAAyB,CAAEC,IAAI,EAAEC,QAAS,CAAC;EAC5D,MAAMyB,aAAa,GAAGD,UAAU,CAACT,MAAM;EACvC,MAAM;IAAEW;EAAW,CAAC,GAAGH,OAAO;EAE9B,IAAKE,aAAa,EAAG;IACpB;IACA,IAAK,CAAC,CAAEC,UAAU,IAAID,aAAa,GAAGC,UAAU,EAAG;MAClDF,UAAU,GAAGA,UAAU,CAACpC,KAAK,CAAE,CAAC,EAAEsC,UAAW,CAAC;IAC/C;IACA,OAAOlC,MAAM,CAACmC,OAAO,CACpBH,UAAU,CAACpD,MAAM,CAAE,CAAE8C,GAAG,EAAEC,IAAI,KAAM;MACnC,MAAMS,KAAK,GAAGV,GAAG,CAAEC,IAAI,CAAE,CAAC,CAAE,CAAE,IAAI,EAAE;MACpC,IAAK,CAAES,KAAK,CAACC,QAAQ,CAAEV,IAAI,CAAE,CAAC,CAAG,CAAC,EAAG;QACpCD,GAAG,CAAEC,IAAI,CAAE,CAAC,CAAE,CAAE,GAAG,CAAE,GAAGS,KAAK,EAAET,IAAI,CAAE,CAAC,CAAE,CAAE;MAC3C;MACA,OAAOD,GAAG;IACX,CAAC,EAAE,CAAC,CAAE,CACP,CAAC,CAACY,GAAG,CAAE,CAAE,CAAEnD,GAAG,EAAEoD,YAAY,CAAE,KAAM;MACnC,MAAMC,kBAAkB,GAAGD,YAAY,CAAChB,MAAM;MAC9C,MAAMkB,kBAAkB,GAAGF,YAAY,CAAC1C,IAAI,CAC3C;MACA,IAAA9B,QAAE,EAAE,IAAK,CAAC,CAAC;MACZ,CAAC;MACD,QAASoB,GAAG;QACX,KAAK,QAAQ;UAAE;YACd,OAAO,IAAAuD,aAAO;YACb;YACA,IAAAC,QAAE,EAAE,WAAW,EAAE,YAAY,EAAEH,kBAAmB,CAAC,EACnDC,kBACD,CAAC;UACF;QACA,KAAK,UAAU;UAAE;YAChB,OAAO,IAAAC,aAAO;YACb;YACA,IAAAC,QAAE,EAAE,aAAa,EAAE,cAAc,EAAEH,kBAAmB,CAAC,EACvDC,kBACD,CAAC;UACF;QACA,KAAK,UAAU;UAAE;YAChB,OAAO,IAAAC,aAAO;YACb;YACA,IAAA3E,QAAE,EAAE,cAAe,CAAC,EACpB0E,kBACD,CAAC;UACF;QACA,KAAK,QAAQ;UAAE;YACd,OAAO,IAAAC,aAAO;YACb;YACA,IAAA3E,QAAE,EAAE,YAAa,CAAC,EAClB0E,kBACD,CAAC;UACF;QACA;UAAS;YACR,OAAO,IAAAC,aAAO;YACb;YACA,IAAA3E,QAAE,EAAE,KAAM,CAAC,EACX0E,kBACD,CAAC;UACF;MACD;IACD,CAAE,CAAC;EACJ;EAEA,OAAO7E,WAAW;AACnB","ignoreList":[]}
@@ -12,11 +12,11 @@ var _compose = require("@wordpress/compose");
12
12
 
13
13
  /**
14
14
  * @typedef {Object} TransitionState
15
- * @property {number} scaleValue Scale of the canvas.
16
- * @property {number} frameSize Size of the frame/offset around the canvas.
17
- * @property {number} clientHeight ClientHeight of the iframe.
18
- * @property {number} scrollTop ScrollTop of the iframe.
19
- * @property {number} scrollHeight ScrollHeight of the iframe.
15
+ * @property {number} scaleValue Scale of the canvas.
16
+ * @property {number} frameSize Size of the frame/offset around the canvas.
17
+ * @property {number} containerHeight containerHeight of the iframe.
18
+ * @property {number} scrollTop ScrollTop of the iframe.
19
+ * @property {number} scrollHeight ScrollHeight of the iframe.
20
20
  */
21
21
 
22
22
  /**
@@ -38,6 +38,25 @@ function calculateScale({
38
38
  return (Math.min(containerWidth, maxContainerWidth) - frameSize * 2) / scaleContainerWidth;
39
39
  }
40
40
 
41
+ /**
42
+ * Compute the next scrollHeight based on the transition states.
43
+ *
44
+ * @param {TransitionState} transitionFrom Starting point of the transition
45
+ * @param {TransitionState} transitionTo Ending state of the transition
46
+ * @return {number} Next scrollHeight based on scale and frame value changes.
47
+ */
48
+ function computeScrollHeightNext(transitionFrom, transitionTo) {
49
+ const {
50
+ scaleValue: prevScale,
51
+ scrollHeight: prevScrollHeight
52
+ } = transitionFrom;
53
+ const {
54
+ frameSize,
55
+ scaleValue
56
+ } = transitionTo;
57
+ return prevScrollHeight * (scaleValue / prevScale) + frameSize * 2;
58
+ }
59
+
41
60
  /**
42
61
  * Compute the next scrollTop position after scaling the iframe content.
43
62
  *
@@ -47,37 +66,37 @@ function calculateScale({
47
66
  */
48
67
  function computeScrollTopNext(transitionFrom, transitionTo) {
49
68
  const {
50
- clientHeight: prevClientHeight,
69
+ containerHeight: prevContainerHeight,
51
70
  frameSize: prevFrameSize,
52
71
  scaleValue: prevScale,
53
- scrollTop,
54
- scrollHeight
72
+ scrollTop: prevScrollTop
55
73
  } = transitionFrom;
56
74
  const {
57
- clientHeight,
75
+ containerHeight,
58
76
  frameSize,
59
- scaleValue
77
+ scaleValue,
78
+ scrollHeight
60
79
  } = transitionTo;
61
80
  // Step 0: Start with the current scrollTop.
62
- let scrollTopNext = scrollTop;
81
+ let scrollTopNext = prevScrollTop;
63
82
  // Step 1: Undo the effects of the previous scale and frame around the
64
83
  // midpoint of the visible area.
65
- scrollTopNext = (scrollTopNext + prevClientHeight / 2 - prevFrameSize) / prevScale - prevClientHeight / 2;
84
+ scrollTopNext = (scrollTopNext + prevContainerHeight / 2 - prevFrameSize) / prevScale - prevContainerHeight / 2;
66
85
 
67
86
  // Step 2: Apply the new scale and frame around the midpoint of the
68
87
  // visible area.
69
- scrollTopNext = (scrollTopNext + clientHeight / 2) * scaleValue + frameSize - clientHeight / 2;
88
+ scrollTopNext = (scrollTopNext + containerHeight / 2) * scaleValue + frameSize - containerHeight / 2;
70
89
 
71
90
  // Step 3: Handle an edge case so that you scroll to the top of the
72
91
  // iframe if the top of the iframe content is visible in the container.
73
92
  // The same edge case for the bottom is skipped because changing content
74
93
  // makes calculating it impossible.
75
- scrollTopNext = scrollTop <= prevFrameSize ? 0 : scrollTopNext;
94
+ scrollTopNext = prevScrollTop <= prevFrameSize ? 0 : scrollTopNext;
76
95
 
77
96
  // This is the scrollTop value if you are scrolled to the bottom of the
78
97
  // iframe. We can't just let the browser handle it because we need to
79
98
  // animate the scaling.
80
- const maxScrollTop = scrollHeight * (scaleValue / prevScale) + frameSize * 2 - clientHeight;
99
+ const maxScrollTop = scrollHeight - containerHeight;
81
100
 
82
101
  // Step 4: Clamp the scrollTopNext between the minimum and maximum
83
102
  // possible scrollTop positions. Round the value to avoid subpixel
@@ -145,7 +164,8 @@ function useScaleCanvas({
145
164
  height: contentHeight
146
165
  }] = (0, _compose.useResizeObserver)();
147
166
  const [containerResizeListener, {
148
- width: containerWidth
167
+ width: containerWidth,
168
+ height: containerHeight
149
169
  }] = (0, _compose.useResizeObserver)();
150
170
  const initialContainerWidthRef = (0, _element.useRef)(0);
151
171
  const isZoomedOut = scale !== 1;
@@ -176,7 +196,7 @@ function useScaleCanvas({
176
196
  const transitionFromRef = (0, _element.useRef)({
177
197
  scaleValue,
178
198
  frameSize,
179
- clientHeight: 0,
199
+ containerHeight: 0,
180
200
  scrollTop: 0,
181
201
  scrollHeight: 0
182
202
  });
@@ -188,7 +208,7 @@ function useScaleCanvas({
188
208
  const transitionToRef = (0, _element.useRef)({
189
209
  scaleValue,
190
210
  frameSize,
191
- clientHeight: 0,
211
+ containerHeight: 0,
192
212
  scrollTop: 0,
193
213
  scrollHeight: 0
194
214
  });
@@ -208,6 +228,9 @@ function useScaleCanvas({
208
228
  } = transitionToRef.current;
209
229
  iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-scroll-top', `${scrollTop}px`);
210
230
  iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-scroll-top-next', `${scrollTopNext}px`);
231
+
232
+ // If the container has a scrolllbar, force a scrollbar to prevent the content from shifting while animating.
233
+ iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-overflow-behavior', transitionFromRef.current.scrollHeight === transitionFromRef.current.containerHeight ? 'auto' : 'scroll');
211
234
  iframeDocument.documentElement.classList.add('zoom-out-animation');
212
235
  return iframeDocument.documentElement.animate(getAnimationKeyframes(transitionFromRef.current, transitionToRef.current), {
213
236
  easing: 'cubic-bezier(0.46, 0.03, 0.52, 0.96)',
@@ -240,10 +263,12 @@ function useScaleCanvas({
240
263
  iframeDocument.documentElement.scrollTop = transitionToRef.current.scrollTop;
241
264
  iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-scroll-top');
242
265
  iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-scroll-top-next');
266
+ iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-overflow-behavior');
243
267
 
244
268
  // Update previous values.
245
269
  transitionFromRef.current = transitionToRef.current;
246
270
  }, [iframeDocument]);
271
+ const previousIsZoomedOut = (0, _element.useRef)(false);
247
272
 
248
273
  /**
249
274
  * Runs when zoom out mode is toggled, and sets the startAnimation flag
@@ -252,13 +277,16 @@ function useScaleCanvas({
252
277
  * changes due to the container resizing.
253
278
  */
254
279
  (0, _element.useEffect)(() => {
255
- if (!iframeDocument) {
280
+ const trigger = iframeDocument && previousIsZoomedOut.current !== isZoomedOut;
281
+ previousIsZoomedOut.current = isZoomedOut;
282
+ if (!trigger) {
256
283
  return;
257
284
  }
258
- if (isZoomedOut) {
259
- iframeDocument.documentElement.classList.add('is-zoomed-out');
260
- }
261
285
  startAnimationRef.current = true;
286
+ if (!isZoomedOut) {
287
+ return;
288
+ }
289
+ iframeDocument.documentElement.classList.add('is-zoomed-out');
262
290
  return () => {
263
291
  iframeDocument.documentElement.classList.remove('is-zoomed-out');
264
292
  };
@@ -286,20 +314,20 @@ function useScaleCanvas({
286
314
  scaleContainerWidth: containerWidth
287
315
  });
288
316
  }
289
-
290
- // If we are not going to animate the transition, set the scale and frame size directly.
291
- // If we are animating, these values will be set when the animation is finished.
292
- // Example: Opening sidebars that reduce the scale of the canvas, but we don't want to
293
- // animate the transition.
294
- if (!startAnimationRef.current) {
295
- iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-scale', scaleValue);
296
- iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-frame-size', `${frameSize}px`);
317
+ if (scaleValue < 1) {
318
+ // If we are not going to animate the transition, set the scale and frame size directly.
319
+ // If we are animating, these values will be set when the animation is finished.
320
+ // Example: Opening sidebars that reduce the scale of the canvas, but we don't want to
321
+ // animate the transition.
322
+ if (!startAnimationRef.current) {
323
+ iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-scale', scaleValue);
324
+ iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-frame-size', `${frameSize}px`);
325
+ }
326
+ iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-content-height', `${contentHeight}px`);
327
+ iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-inner-height', `${containerHeight}px`);
328
+ iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-container-width', `${containerWidth}px`);
329
+ iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-scale-container-width', `${scaleContainerWidth}px`);
297
330
  }
298
- iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-content-height', `${contentHeight}px`);
299
- const clientHeight = iframeDocument.documentElement.clientHeight;
300
- iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-inner-height', `${clientHeight}px`);
301
- iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-container-width', `${containerWidth}px`);
302
- iframeDocument.documentElement.style.setProperty('--wp-block-editor-iframe-zoom-out-scale-container-width', `${scaleContainerWidth}px`);
303
331
 
304
332
  /**
305
333
  * Handle the zoom out animation:
@@ -328,7 +356,6 @@ function useScaleCanvas({
328
356
  transitionFromRef.current = tempTransitionTo;
329
357
  transitionToRef.current = tempTransitionFrom;
330
358
  } else {
331
- var _transitionFromRef$cu;
332
359
  /**
333
360
  * Start a new zoom animation.
334
361
  */
@@ -339,14 +366,16 @@ function useScaleCanvas({
339
366
  // the iframe at this point when we're about to animate the zoom out.
340
367
  // The iframe scrollTop, scrollHeight, and clientHeight will all be
341
368
  // the most accurate.
342
- transitionFromRef.current.clientHeight = (_transitionFromRef$cu = transitionFromRef.current.clientHeight) !== null && _transitionFromRef$cu !== void 0 ? _transitionFromRef$cu : clientHeight;
343
369
  transitionFromRef.current.scrollTop = iframeDocument.documentElement.scrollTop;
344
370
  transitionFromRef.current.scrollHeight = iframeDocument.documentElement.scrollHeight;
371
+ // Use containerHeight, as it's the previous container height before the zoom out animation starts.
372
+ transitionFromRef.current.containerHeight = containerHeight;
345
373
  transitionToRef.current = {
346
374
  scaleValue,
347
375
  frameSize,
348
- clientHeight
376
+ containerHeight: iframeDocument.documentElement.clientHeight // use clientHeight to get the actual height of the new container after zoom state changes have rendered, as it will be the most up-to-date.
349
377
  };
378
+ transitionToRef.current.scrollHeight = computeScrollHeightNext(transitionFromRef.current, transitionToRef.current);
350
379
  transitionToRef.current.scrollTop = computeScrollTopNext(transitionFromRef.current, transitionToRef.current);
351
380
  animationRef.current = startZoomOutAnimation();
352
381
 
@@ -358,15 +387,7 @@ function useScaleCanvas({
358
387
  }
359
388
  }
360
389
  }
361
- return () => {
362
- iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-scale');
363
- iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-frame-size');
364
- iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-content-height');
365
- iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-inner-height');
366
- iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-container-width');
367
- iframeDocument.documentElement.style.removeProperty('--wp-block-editor-iframe-zoom-out-scale-container-width');
368
- };
369
- }, [startZoomOutAnimation, finishZoomOutAnimation, prefersReducedMotion, isAutoScaled, scaleValue, frameSize, iframeDocument, contentHeight, containerWidth, maxContainerWidth, scaleContainerWidth]);
390
+ }, [startZoomOutAnimation, finishZoomOutAnimation, prefersReducedMotion, isAutoScaled, scaleValue, frameSize, iframeDocument, contentHeight, containerWidth, containerHeight, maxContainerWidth, scaleContainerWidth]);
370
391
  return {
371
392
  isZoomedOut,
372
393
  scaleContainerWidth,