@wordpress/block-editor 12.5.0 → 12.6.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 (298) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +0 -4
  3. package/build/components/block-draggable/index.js +6 -3
  4. package/build/components/block-draggable/index.js.map +1 -1
  5. package/build/components/block-draggable/index.native.js +2 -2
  6. package/build/components/block-draggable/index.native.js.map +1 -1
  7. package/build/components/block-edit/edit.js +25 -13
  8. package/build/components/block-edit/edit.js.map +1 -1
  9. package/build/components/block-list/block-outline.native.js +14 -18
  10. package/build/components/block-list/block-outline.native.js.map +1 -1
  11. package/build/components/block-list/block.native.js +21 -42
  12. package/build/components/block-list/block.native.js.map +1 -1
  13. package/build/components/block-mover/index.native.js +1 -1
  14. package/build/components/block-mover/index.native.js.map +1 -1
  15. package/build/components/block-removal-warning-modal/index.js +1 -4
  16. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  17. package/build/components/block-settings/button.native.js +2 -2
  18. package/build/components/block-settings/button.native.js.map +1 -1
  19. package/build/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +7 -5
  20. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
  21. package/build/components/block-toolbar/index.js +4 -3
  22. package/build/components/block-toolbar/index.js.map +1 -1
  23. package/build/components/block-toolbar/index.native.js +62 -3
  24. package/build/components/block-toolbar/index.native.js.map +1 -1
  25. package/build/components/colors-gradients/control.js +4 -2
  26. package/build/components/colors-gradients/control.js.map +1 -1
  27. package/build/components/global-styles/color-panel.js +21 -15
  28. package/build/components/global-styles/color-panel.js.map +1 -1
  29. package/build/components/global-styles/dimensions-panel.js +13 -2
  30. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  31. package/build/components/global-styles/get-block-css-selector.js +4 -8
  32. package/build/components/global-styles/get-block-css-selector.js.map +1 -1
  33. package/build/components/global-styles/hooks.js +13 -23
  34. package/build/components/global-styles/hooks.js.map +1 -1
  35. package/build/components/global-styles/typography-panel.js +18 -3
  36. package/build/components/global-styles/typography-panel.js.map +1 -1
  37. package/build/components/global-styles/use-global-styles-output.js +12 -18
  38. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  39. package/build/components/global-styles/utils.js +6 -6
  40. package/build/components/global-styles/utils.js.map +1 -1
  41. package/build/components/iframe/index.js +36 -48
  42. package/build/components/iframe/index.js.map +1 -1
  43. package/build/components/iframe/use-compatibility-styles.js +5 -0
  44. package/build/components/iframe/use-compatibility-styles.js.map +1 -1
  45. package/build/components/index.js +1 -10
  46. package/build/components/index.js.map +1 -1
  47. package/build/components/inner-blocks/index.js +3 -1
  48. package/build/components/inner-blocks/index.js.map +1 -1
  49. package/build/components/inner-blocks/index.native.js +3 -1
  50. package/build/components/inner-blocks/index.native.js.map +1 -1
  51. package/build/components/inner-blocks/use-nested-settings-update.js +33 -7
  52. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  53. package/build/components/inserter/index.js +2 -4
  54. package/build/components/inserter/index.js.map +1 -1
  55. package/build/components/inserter/index.native.js +21 -32
  56. package/build/components/inserter/index.native.js.map +1 -1
  57. package/build/components/inserter/reusable-block-rename-hint.js +23 -3
  58. package/build/components/inserter/reusable-block-rename-hint.js.map +1 -1
  59. package/build/components/link-control/index.js +4 -1
  60. package/build/components/link-control/index.js.map +1 -1
  61. package/build/components/link-control/search-item.js +1 -1
  62. package/build/components/link-control/search-item.js.map +1 -1
  63. package/build/components/list-view/use-list-view-client-ids.js +2 -2
  64. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  65. package/build/components/media-placeholder/index.native.js +65 -31
  66. package/build/components/media-placeholder/index.native.js.map +1 -1
  67. package/build/components/preview-options/index.js +2 -2
  68. package/build/components/preview-options/index.js.map +1 -1
  69. package/build/components/rich-text/content.js +0 -36
  70. package/build/components/rich-text/content.js.map +1 -1
  71. package/build/components/rich-text/get-rich-text-values.js +118 -0
  72. package/build/components/rich-text/get-rich-text-values.js.map +1 -0
  73. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  74. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  75. package/build/components/spacing-sizes-control/input-controls/axial.js +6 -2
  76. package/build/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  77. package/build/components/spacing-sizes-control/input-controls/separated.js +5 -1
  78. package/build/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  79. package/build/components/spacing-sizes-control/input-controls/single.js +5 -1
  80. package/build/components/spacing-sizes-control/input-controls/single.js.map +1 -1
  81. package/build/components/spacing-sizes-control/utils.js +1 -1
  82. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  83. package/build/components/use-block-display-information/index.js +7 -3
  84. package/build/components/use-block-display-information/index.js.map +1 -1
  85. package/build/components/use-block-drop-zone/index.native.js +49 -8
  86. package/build/components/use-block-drop-zone/index.native.js.map +1 -1
  87. package/build/components/use-setting/index.js +5 -9
  88. package/build/components/use-setting/index.js.map +1 -1
  89. package/build/hooks/margin.js +1 -1
  90. package/build/hooks/margin.js.map +1 -1
  91. package/build/hooks/padding.js +1 -1
  92. package/build/hooks/padding.js.map +1 -1
  93. package/build/hooks/utils.js +1 -7
  94. package/build/hooks/utils.js.map +1 -1
  95. package/build/private-apis.js +7 -3
  96. package/build/private-apis.js.map +1 -1
  97. package/build/store/actions.js +1 -1
  98. package/build/store/actions.js.map +1 -1
  99. package/build/store/private-selectors.js +5 -6
  100. package/build/store/private-selectors.js.map +1 -1
  101. package/build/store/reducer.js +0 -1
  102. package/build/store/reducer.js.map +1 -1
  103. package/build/store/selectors.js +19 -8
  104. package/build/store/selectors.js.map +1 -1
  105. package/build/utils/object.js +38 -2
  106. package/build/utils/object.js.map +1 -1
  107. package/build-module/components/block-draggable/index.js +6 -3
  108. package/build-module/components/block-draggable/index.js.map +1 -1
  109. package/build-module/components/block-draggable/index.native.js +2 -2
  110. package/build-module/components/block-draggable/index.native.js.map +1 -1
  111. package/build-module/components/block-edit/edit.js +27 -10
  112. package/build-module/components/block-edit/edit.js.map +1 -1
  113. package/build-module/components/block-list/block-outline.native.js +14 -18
  114. package/build-module/components/block-list/block-outline.native.js.map +1 -1
  115. package/build-module/components/block-list/block.native.js +24 -43
  116. package/build-module/components/block-list/block.native.js.map +1 -1
  117. package/build-module/components/block-mover/index.native.js +3 -3
  118. package/build-module/components/block-mover/index.native.js.map +1 -1
  119. package/build-module/components/block-removal-warning-modal/index.js +1 -4
  120. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  121. package/build-module/components/block-settings/button.native.js +3 -3
  122. package/build-module/components/block-settings/button.native.js.map +1 -1
  123. package/build-module/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +9 -7
  124. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
  125. package/build-module/components/block-toolbar/index.js +4 -3
  126. package/build-module/components/block-toolbar/index.js.map +1 -1
  127. package/build-module/components/block-toolbar/index.native.js +60 -4
  128. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  129. package/build-module/components/colors-gradients/control.js +3 -2
  130. package/build-module/components/colors-gradients/control.js.map +1 -1
  131. package/build-module/components/global-styles/color-panel.js +21 -15
  132. package/build-module/components/global-styles/color-panel.js.map +1 -1
  133. package/build-module/components/global-styles/dimensions-panel.js +13 -2
  134. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  135. package/build-module/components/global-styles/get-block-css-selector.js +4 -8
  136. package/build-module/components/global-styles/get-block-css-selector.js.map +1 -1
  137. package/build-module/components/global-styles/hooks.js +12 -22
  138. package/build-module/components/global-styles/hooks.js.map +1 -1
  139. package/build-module/components/global-styles/typography-panel.js +18 -3
  140. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  141. package/build-module/components/global-styles/use-global-styles-output.js +13 -18
  142. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  143. package/build-module/components/global-styles/utils.js +5 -5
  144. package/build-module/components/global-styles/utils.js.map +1 -1
  145. package/build-module/components/iframe/index.js +37 -49
  146. package/build-module/components/iframe/index.js.map +1 -1
  147. package/build-module/components/iframe/use-compatibility-styles.js +5 -0
  148. package/build-module/components/iframe/use-compatibility-styles.js.map +1 -1
  149. package/build-module/components/index.js +0 -5
  150. package/build-module/components/index.js.map +1 -1
  151. package/build-module/components/inner-blocks/index.js +3 -1
  152. package/build-module/components/inner-blocks/index.js.map +1 -1
  153. package/build-module/components/inner-blocks/index.native.js +3 -1
  154. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  155. package/build-module/components/inner-blocks/use-nested-settings-update.js +30 -7
  156. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  157. package/build-module/components/inserter/index.js +2 -4
  158. package/build-module/components/inserter/index.js.map +1 -1
  159. package/build-module/components/inserter/index.native.js +22 -33
  160. package/build-module/components/inserter/index.native.js.map +1 -1
  161. package/build-module/components/inserter/reusable-block-rename-hint.js +22 -3
  162. package/build-module/components/inserter/reusable-block-rename-hint.js.map +1 -1
  163. package/build-module/components/link-control/index.js +4 -1
  164. package/build-module/components/link-control/index.js.map +1 -1
  165. package/build-module/components/link-control/search-item.js +1 -1
  166. package/build-module/components/link-control/search-item.js.map +1 -1
  167. package/build-module/components/list-view/use-list-view-client-ids.js +2 -2
  168. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  169. package/build-module/components/media-placeholder/index.native.js +66 -33
  170. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  171. package/build-module/components/preview-options/index.js +2 -2
  172. package/build-module/components/preview-options/index.js.map +1 -1
  173. package/build-module/components/rich-text/content.js +1 -36
  174. package/build-module/components/rich-text/content.js.map +1 -1
  175. package/build-module/components/rich-text/get-rich-text-values.js +105 -0
  176. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -0
  177. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  178. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  179. package/build-module/components/spacing-sizes-control/input-controls/axial.js +7 -3
  180. package/build-module/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  181. package/build-module/components/spacing-sizes-control/input-controls/separated.js +6 -2
  182. package/build-module/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  183. package/build-module/components/spacing-sizes-control/input-controls/single.js +6 -2
  184. package/build-module/components/spacing-sizes-control/input-controls/single.js.map +1 -1
  185. package/build-module/components/spacing-sizes-control/utils.js +1 -1
  186. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  187. package/build-module/components/use-block-display-information/index.js +7 -3
  188. package/build-module/components/use-block-display-information/index.js.map +1 -1
  189. package/build-module/components/use-block-drop-zone/index.native.js +50 -8
  190. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
  191. package/build-module/components/use-setting/index.js +5 -9
  192. package/build-module/components/use-setting/index.js.map +1 -1
  193. package/build-module/hooks/margin.js +1 -1
  194. package/build-module/hooks/margin.js.map +1 -1
  195. package/build-module/hooks/padding.js +1 -1
  196. package/build-module/hooks/padding.js.map +1 -1
  197. package/build-module/hooks/utils.js +2 -7
  198. package/build-module/hooks/utils.js.map +1 -1
  199. package/build-module/private-apis.js +5 -2
  200. package/build-module/private-apis.js.map +1 -1
  201. package/build-module/store/actions.js +2 -2
  202. package/build-module/store/actions.js.map +1 -1
  203. package/build-module/store/private-selectors.js +3 -3
  204. package/build-module/store/private-selectors.js.map +1 -1
  205. package/build-module/store/reducer.js +0 -1
  206. package/build-module/store/reducer.js.map +1 -1
  207. package/build-module/store/selectors.js +16 -6
  208. package/build-module/store/selectors.js.map +1 -1
  209. package/build-module/utils/object.js +34 -2
  210. package/build-module/utils/object.js.map +1 -1
  211. package/build-style/content-rtl.css +2 -1
  212. package/build-style/content.css +2 -1
  213. package/build-style/style-rtl.css +7 -1
  214. package/build-style/style.css +7 -1
  215. package/package.json +32 -32
  216. package/src/components/block-controls/README.md +89 -0
  217. package/src/components/block-draggable/index.js +13 -4
  218. package/src/components/block-draggable/index.native.js +7 -3
  219. package/src/components/block-draggable/test/index.native.js +0 -54
  220. package/src/components/block-edit/edit.js +26 -9
  221. package/src/components/block-edit/test/edit.js +1 -1
  222. package/src/components/block-list/block-outline.native.js +26 -25
  223. package/src/components/block-list/block.native.js +24 -38
  224. package/src/components/block-list/block.native.scss +18 -40
  225. package/src/components/block-list/style.native.scss +3 -3
  226. package/src/components/block-mover/index.native.js +3 -3
  227. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +16 -6
  228. package/src/components/block-removal-warning-modal/index.js +0 -3
  229. package/src/components/block-settings/button.native.js +12 -6
  230. package/src/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +15 -10
  231. package/src/components/block-toolbar/index.js +2 -3
  232. package/src/components/block-toolbar/index.native.js +86 -6
  233. package/src/components/{block-mobile-toolbar/test/block-actions-menu.native.js → block-toolbar/test/block-toolbar-menu.native.js} +20 -54
  234. package/src/components/block-toolbar/test/index.native.js +42 -0
  235. package/src/components/button-block-appender/styles.native.scss +2 -2
  236. package/src/components/caption/README.md +49 -0
  237. package/src/components/colors-gradients/control.js +3 -2
  238. package/src/components/global-styles/color-panel.js +23 -16
  239. package/src/components/global-styles/dimensions-panel.js +8 -2
  240. package/src/components/global-styles/get-block-css-selector.js +5 -9
  241. package/src/components/global-styles/hooks.js +20 -26
  242. package/src/components/global-styles/typography-panel.js +17 -5
  243. package/src/components/global-styles/use-global-styles-output.js +36 -18
  244. package/src/components/global-styles/utils.js +15 -6
  245. package/src/components/iframe/index.js +30 -56
  246. package/src/components/iframe/use-compatibility-styles.js +5 -0
  247. package/src/components/index.js +0 -5
  248. package/src/components/inner-blocks/README.md +10 -0
  249. package/src/components/inner-blocks/index.js +4 -0
  250. package/src/components/inner-blocks/index.native.js +4 -0
  251. package/src/components/inner-blocks/use-nested-settings-update.js +32 -5
  252. package/src/components/inserter/index.js +2 -3
  253. package/src/components/inserter/index.native.js +17 -36
  254. package/src/components/inserter/reusable-block-rename-hint.js +18 -1
  255. package/src/components/inserter/style.native.scss +10 -15
  256. package/src/components/link-control/index.js +4 -1
  257. package/src/components/link-control/search-item.js +1 -1
  258. package/src/components/link-control/style.scss +8 -1
  259. package/src/components/link-control/test/index.js +26 -0
  260. package/src/components/list-view/use-list-view-client-ids.js +2 -2
  261. package/src/components/media-placeholder/index.native.js +108 -59
  262. package/src/components/media-placeholder/styles.native.scss +59 -24
  263. package/src/components/preview-options/README.md +18 -17
  264. package/src/components/preview-options/index.js +2 -2
  265. package/src/components/rich-text/content.js +1 -46
  266. package/src/components/rich-text/get-rich-text-values.js +105 -0
  267. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  268. package/src/components/spacing-sizes-control/input-controls/axial.js +17 -2
  269. package/src/components/spacing-sizes-control/input-controls/separated.js +17 -2
  270. package/src/components/spacing-sizes-control/input-controls/single.js +12 -2
  271. package/src/components/spacing-sizes-control/utils.js +1 -1
  272. package/src/components/text-transform-control/README.md +44 -0
  273. package/src/components/use-block-display-information/index.js +12 -5
  274. package/src/components/use-block-drop-zone/index.native.js +65 -28
  275. package/src/components/use-setting/index.js +8 -8
  276. package/src/hooks/margin.js +4 -1
  277. package/src/hooks/padding.js +4 -1
  278. package/src/hooks/utils.js +5 -7
  279. package/src/private-apis.js +7 -1
  280. package/src/store/actions.js +1 -2
  281. package/src/store/private-selectors.js +3 -6
  282. package/src/store/reducer.js +0 -1
  283. package/src/store/selectors.js +33 -5
  284. package/src/store/test/actions.js +3 -0
  285. package/src/store/test/private-selectors.js +5 -5
  286. package/src/store/test/reducer.js +14 -7
  287. package/src/store/test/selectors.js +1 -1
  288. package/src/utils/object.js +32 -2
  289. package/src/utils/test/object.js +36 -0
  290. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
  291. package/build/components/block-mobile-toolbar/index.native.js +0 -135
  292. package/build/components/block-mobile-toolbar/index.native.js.map +0 -1
  293. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
  294. package/build-module/components/block-mobile-toolbar/index.native.js +0 -116
  295. package/build-module/components/block-mobile-toolbar/index.native.js.map +0 -1
  296. package/src/components/block-mobile-toolbar/index.native.js +0 -127
  297. package/src/components/block-mobile-toolbar/style.native.scss +0 -16
  298. /package/src/components/{block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap → block-toolbar/test/__snapshots__/block-toolbar-menu.native.js.snap} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/dimensions-panel.js"],"names":["AXIAL_SIDES","useHasDimensionsPanel","settings","hasContentSize","useHasContentSize","hasWideSize","useHasWideSize","hasPadding","useHasPadding","hasMargin","useHasMargin","hasGap","useHasGap","hasMinHeight","useHasMinHeight","hasChildLayout","useHasChildLayout","Platform","OS","layout","contentSize","wideSize","spacing","padding","margin","blockGap","dimensions","minHeight","type","parentLayoutType","default","defaultParentLayoutType","allowSizingOnChildren","parentLayout","support","useHasSpacingPresets","custom","theme","defaultPresets","spacingSizes","presets","length","filterValuesBySides","values","sides","filteredValues","forEach","side","top","bottom","left","right","splitStyleValue","value","splitGapValue","DimensionsToolsPanel","resetAllFilter","onChange","panelId","children","resetAll","updatedValue","DEFAULT_CONTROLS","childLayout","DimensionsPanel","as","Wrapper","inheritedValue","defaultControls","onVisualize","includeLayoutControls","decodeValue","rawValue","Object","keys","reduce","acc","key","showSpacingPresetsControl","units","availableUnits","showContentSizeControl","contentSizeValue","setContentSizeValue","newValue","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","gapValue","gapValues","gapSides","isAxialGap","setGapValue","newGapValue","setGapValues","nextBoxGapValue","hasOwnProperty","resetGapValue","hasGapValue","showMinHeightControl","minHeightValue","setMinHeightValue","resetMinHeightValue","hasMinHeightValue","showChildLayoutControl","orientation","childLayoutOrientationLabel","setChildLayout","newChildLayout","resetChildLayoutValue","selfStretch","flexSize","hasChildLayoutValue","previousValue","onMouseLeaveControls","nextContentSize","positionCenter","nextWideSize","stretchWide","ToolsPanelItem"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalBoxControl as BoxControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalView as View,\n} from '@wordpress/components';\nimport { Icon, positionCenter, stretchWide } from '@wordpress/icons';\nimport { useCallback, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable } from './utils';\nimport SpacingSizesControl from '../spacing-sizes-control';\nimport HeightControl from '../height-control';\nimport ChildLayoutControl from '../child-layout-control';\nimport { cleanEmptyObject } from '../../hooks/utils';\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 hasChildLayout = useHasChildLayout( settings );\n\n\treturn (\n\t\tPlatform.OS === 'web' &&\n\t\t( hasContentSize ||\n\t\t\thasWideSize ||\n\t\t\thasPadding ||\n\t\t\thasMargin ||\n\t\t\thasGap ||\n\t\t\thasMinHeight ||\n\t\t\thasChildLayout )\n\t);\n}\n\nfunction useHasContentSize( settings ) {\n\treturn settings?.layout?.contentSize;\n}\n\nfunction useHasWideSize( settings ) {\n\treturn settings?.layout?.wideSize;\n}\n\nfunction useHasPadding( settings ) {\n\treturn settings?.spacing?.padding;\n}\n\nfunction useHasMargin( settings ) {\n\treturn settings?.spacing?.margin;\n}\n\nfunction useHasGap( settings ) {\n\treturn settings?.spacing?.blockGap;\n}\n\nfunction useHasMinHeight( settings ) {\n\treturn settings?.dimensions?.minHeight;\n}\n\nfunction useHasChildLayout( settings ) {\n\tconst {\n\t\ttype: parentLayoutType = 'default',\n\t\tdefault: { type: defaultParentLayoutType = 'default' } = {},\n\t\tallowSizingOnChildren = false,\n\t} = settings?.parentLayout ?? {};\n\n\tconst support =\n\t\t( defaultParentLayoutType === 'flex' || parentLayoutType === 'flex' ) &&\n\t\tallowSizingOnChildren;\n\n\treturn !! settings?.layout && support;\n}\n\nfunction useHasSpacingPresets( settings ) {\n\tconst {\n\t\tcustom,\n\t\ttheme,\n\t\tdefault: defaultPresets,\n\t} = settings?.spacing?.spacingSizes || {};\n\tconst presets = custom ?? theme ?? defaultPresets ?? [];\n\n\treturn presets.length > 0;\n}\n\nfunction filterValuesBySides( values, sides ) {\n\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 ) {\n\t// Check for shorthand value (a string value).\n\tif ( value && typeof value === 'string' ) {\n\t\t// If the value is a string, treat it as a single side (top) for the spacing controls.\n\t\treturn {\n\t\t\ttop: value,\n\t\t};\n\t}\n\n\tif ( value ) {\n\t\treturn {\n\t\t\t...value,\n\t\t\tright: value?.left,\n\t\t\tbottom: value?.top,\n\t\t};\n\t}\n\n\treturn value;\n}\n\nfunction DimensionsToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tcontentSize: true,\n\twideSize: true,\n\tpadding: true,\n\tmargin: true,\n\tblockGap: true,\n\tminHeight: true,\n\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 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 },\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( { settings }, '', rawValue );\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// Content Size\n\tconst showContentSizeControl =\n\t\tuseHasContentSize( settings ) && includeLayoutControls;\n\tconst contentSizeValue = decodeValue( inheritedValue?.layout?.contentSize );\n\tconst setContentSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\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 Size\n\tconst showWideSizeControl =\n\t\tuseHasWideSize( settings ) && includeLayoutControls;\n\tconst wideSizeValue = decodeValue( inheritedValue?.layout?.wideSize );\n\tconst setWideSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\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 gapValue = decodeValue( inheritedValue?.spacing?.blockGap );\n\tconst gapValues = splitGapValue( gapValue );\n\tconst gapSides = Array.isArray( settings?.spacing?.blockGap )\n\t\t? settings?.spacing?.blockGap\n\t\t: settings?.spacing?.blockGap?.sides;\n\tconst isAxialGap =\n\t\tgapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setGapValue = ( newGapValue ) => {\n\t\tonChange(\n\t\t\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\tonChange(\n\t\t\tsetImmutably( value, [ 'dimensions', 'minHeight' ], newValue )\n\t\t);\n\t};\n\tconst resetMinHeightValue = () => {\n\t\tsetMinHeightValue( undefined );\n\t};\n\tconst hasMinHeightValue = () => !! value?.dimensions?.minHeight;\n\n\t// Child Layout\n\tconst showChildLayoutControl = useHasChildLayout( settings );\n\tconst childLayout = inheritedValue?.layout;\n\tconst { orientation = 'horizontal' } = settings?.parentLayout ?? {};\n\tconst childLayoutOrientationLabel =\n\t\torientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n\tconst setChildLayout = ( newChildLayout ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...value?.layout,\n\t\t\t\t...newChildLayout,\n\t\t\t},\n\t\t} );\n\t};\n\tconst resetChildLayoutValue = () => {\n\t\tsetChildLayout( {\n\t\t\tselfStretch: undefined,\n\t\t\tflexSize: undefined,\n\t\t} );\n\t};\n\tconst hasChildLayoutValue = () => !! value?.layout;\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tlayout: cleanEmptyObject( {\n\t\t\t\t...previousValue?.layout,\n\t\t\t\tcontentSize: undefined,\n\t\t\t\twideSize: undefined,\n\t\t\t\tselfStretch: undefined,\n\t\t\t\tflexSize: undefined,\n\t\t\t} ),\n\t\t\tspacing: {\n\t\t\t\t...previousValue?.spacing,\n\t\t\t\tpadding: undefined,\n\t\t\t\tmargin: undefined,\n\t\t\t\tblockGap: undefined,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\t...previousValue?.dimensions,\n\t\t\t\tminHeight: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst onMouseLeaveControls = () => onVisualize( false );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ ( showContentSizeControl || showWideSizeControl ) && (\n\t\t\t\t<span className=\"span-columns\">\n\t\t\t\t\t{ __( 'Set the width of the main content area.' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t\t{ showContentSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Content size' ) }\n\t\t\t\t\thasValue={ hasUserSetContentSizeValue }\n\t\t\t\t\tonDeselect={ resetContentSizeValue }\n\t\t\t\t\tisShownByDefault={\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<HStack alignment=\"flex-end\" justify=\"flex-start\">\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Content' ) }\n\t\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\tvalue={ contentSizeValue || '' }\n\t\t\t\t\t\t\tonChange={ ( nextContentSize ) => {\n\t\t\t\t\t\t\t\tsetContentSizeValue( nextContentSize );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View>\n\t\t\t\t\t\t\t<Icon icon={ positionCenter } />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</HStack>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWideSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Wide size' ) }\n\t\t\t\t\thasValue={ hasUserSetWideSizeValue }\n\t\t\t\t\tonDeselect={ resetWideSizeValue }\n\t\t\t\t\tisShownByDefault={\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<HStack alignment=\"flex-end\" justify=\"flex-start\">\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Wide' ) }\n\t\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\tvalue={ wideSizeValue || '' }\n\t\t\t\t\t\t\tonChange={ ( nextWideSize ) => {\n\t\t\t\t\t\t\t\tsetWideSizeValue( nextWideSize );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View>\n\t\t\t\t\t\t\t<Icon icon={ stretchWide } />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</HStack>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showPaddingControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasPaddingValue }\n\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\tonDeselect={ resetPaddingValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.padding ?? DEFAULT_CONTROLS.padding\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ classnames( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialPadding }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\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={ classnames( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialMargin }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\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={ classnames( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl &&\n\t\t\t\t\t\t( isAxialGap ? (\n\t\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tsides={ gapSides }\n\t\t\t\t\t\t\t\tvalues={ gapValues }\n\t\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\t\tsplitOnAxis={ isAxialGap }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValue }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tvalue={ gapValue }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\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{ showMinHeightControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMinHeightValue }\n\t\t\t\t\tlabel={ __( 'Min. height' ) }\n\t\t\t\t\tonDeselect={ resetMinHeightValue }\n\t\t\t\t\tisShownByDefault={\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={ __( 'Min. height' ) }\n\t\t\t\t\t\tvalue={ minHeightValue }\n\t\t\t\t\t\tonChange={ setMinHeightValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showChildLayoutControl && (\n\t\t\t\t<VStack\n\t\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\thasValue={ hasChildLayoutValue }\n\t\t\t\t\tlabel={ childLayoutOrientationLabel }\n\t\t\t\t\tonDeselect={ resetChildLayoutValue }\n\t\t\t\t\tisShownByDefault={\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\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<ChildLayoutControl\n\t\t\t\t\t\tvalue={ childLayout }\n\t\t\t\t\t\tonChange={ setChildLayout }\n\t\t\t\t\t\tparentLayout={ settings?.parentLayout }\n\t\t\t\t\t/>\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/dimensions-panel.js"],"names":["AXIAL_SIDES","useHasDimensionsPanel","settings","hasContentSize","useHasContentSize","hasWideSize","useHasWideSize","hasPadding","useHasPadding","hasMargin","useHasMargin","hasGap","useHasGap","hasMinHeight","useHasMinHeight","hasChildLayout","useHasChildLayout","Platform","OS","layout","contentSize","wideSize","spacing","padding","margin","blockGap","dimensions","minHeight","type","parentLayoutType","default","defaultParentLayoutType","allowSizingOnChildren","parentLayout","support","useHasSpacingPresets","custom","theme","defaultPresets","spacingSizes","presets","length","filterValuesBySides","values","sides","filteredValues","forEach","side","top","bottom","left","right","splitStyleValue","value","splitGapValue","DimensionsToolsPanel","resetAllFilter","onChange","panelId","children","resetAll","updatedValue","DEFAULT_CONTROLS","childLayout","DimensionsPanel","as","Wrapper","inheritedValue","defaultControls","onVisualize","includeLayoutControls","decodeValue","rawValue","Object","keys","reduce","acc","key","showSpacingPresetsControl","units","availableUnits","showContentSizeControl","contentSizeValue","setContentSizeValue","newValue","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","gapValue","gapValues","gapSides","isAxialGap","setGapValue","newGapValue","setGapValues","nextBoxGapValue","hasOwnProperty","resetGapValue","hasGapValue","showMinHeightControl","minHeightValue","setMinHeightValue","resetMinHeightValue","hasMinHeightValue","showChildLayoutControl","orientation","childLayoutOrientationLabel","setChildLayout","newChildLayout","resetChildLayoutValue","selfStretch","flexSize","hasChildLayoutValue","previousValue","onMouseLeaveControls","nextContentSize","positionCenter","nextWideSize","stretchWide","ToolsPanelItem"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalBoxControl as BoxControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalView as View,\n} from '@wordpress/components';\nimport { Icon, positionCenter, stretchWide } from '@wordpress/icons';\nimport { useCallback, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable } from './utils';\nimport SpacingSizesControl from '../spacing-sizes-control';\nimport HeightControl from '../height-control';\nimport ChildLayoutControl from '../child-layout-control';\nimport { cleanEmptyObject } from '../../hooks/utils';\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 hasChildLayout = useHasChildLayout( settings );\n\n\treturn (\n\t\tPlatform.OS === 'web' &&\n\t\t( hasContentSize ||\n\t\t\thasWideSize ||\n\t\t\thasPadding ||\n\t\t\thasMargin ||\n\t\t\thasGap ||\n\t\t\thasMinHeight ||\n\t\t\thasChildLayout )\n\t);\n}\n\nfunction useHasContentSize( settings ) {\n\treturn settings?.layout?.contentSize;\n}\n\nfunction useHasWideSize( settings ) {\n\treturn settings?.layout?.wideSize;\n}\n\nfunction useHasPadding( settings ) {\n\treturn settings?.spacing?.padding;\n}\n\nfunction useHasMargin( settings ) {\n\treturn settings?.spacing?.margin;\n}\n\nfunction useHasGap( settings ) {\n\treturn settings?.spacing?.blockGap;\n}\n\nfunction useHasMinHeight( settings ) {\n\treturn settings?.dimensions?.minHeight;\n}\n\nfunction useHasChildLayout( settings ) {\n\tconst {\n\t\ttype: parentLayoutType = 'default',\n\t\tdefault: { type: defaultParentLayoutType = 'default' } = {},\n\t\tallowSizingOnChildren = false,\n\t} = settings?.parentLayout ?? {};\n\n\tconst support =\n\t\t( defaultParentLayoutType === 'flex' || parentLayoutType === 'flex' ) &&\n\t\tallowSizingOnChildren;\n\n\treturn !! settings?.layout && support;\n}\n\nfunction useHasSpacingPresets( settings ) {\n\tconst {\n\t\tcustom,\n\t\ttheme,\n\t\tdefault: defaultPresets,\n\t} = settings?.spacing?.spacingSizes || {};\n\tconst presets = custom ?? theme ?? defaultPresets ?? [];\n\n\treturn presets.length > 0;\n}\n\nfunction filterValuesBySides( values, sides ) {\n\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 ) {\n\t// Check for shorthand value (a string value).\n\tif ( value && typeof value === 'string' ) {\n\t\t// If the value is a string, treat it as a single side (top) for the spacing controls.\n\t\treturn {\n\t\t\ttop: value,\n\t\t};\n\t}\n\n\tif ( value ) {\n\t\treturn {\n\t\t\t...value,\n\t\t\tright: value?.left,\n\t\t\tbottom: value?.top,\n\t\t};\n\t}\n\n\treturn value;\n}\n\nfunction DimensionsToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tcontentSize: true,\n\twideSize: true,\n\tpadding: true,\n\tmargin: true,\n\tblockGap: true,\n\tminHeight: true,\n\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// Content Size\n\tconst showContentSizeControl =\n\t\tuseHasContentSize( settings ) && includeLayoutControls;\n\tconst contentSizeValue = decodeValue( inheritedValue?.layout?.contentSize );\n\tconst setContentSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\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 Size\n\tconst showWideSizeControl =\n\t\tuseHasWideSize( settings ) && includeLayoutControls;\n\tconst wideSizeValue = decodeValue( inheritedValue?.layout?.wideSize );\n\tconst setWideSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\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 gapValue = decodeValue( inheritedValue?.spacing?.blockGap );\n\tconst gapValues = splitGapValue( gapValue );\n\tconst gapSides = Array.isArray( settings?.spacing?.blockGap )\n\t\t? settings?.spacing?.blockGap\n\t\t: settings?.spacing?.blockGap?.sides;\n\tconst isAxialGap =\n\t\tgapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setGapValue = ( newGapValue ) => {\n\t\tonChange(\n\t\t\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\tonChange(\n\t\t\tsetImmutably( value, [ 'dimensions', 'minHeight' ], newValue )\n\t\t);\n\t};\n\tconst resetMinHeightValue = () => {\n\t\tsetMinHeightValue( undefined );\n\t};\n\tconst hasMinHeightValue = () => !! value?.dimensions?.minHeight;\n\n\t// Child Layout\n\tconst showChildLayoutControl = useHasChildLayout( settings );\n\tconst childLayout = inheritedValue?.layout;\n\tconst { orientation = 'horizontal' } = settings?.parentLayout ?? {};\n\tconst childLayoutOrientationLabel =\n\t\torientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n\tconst setChildLayout = ( newChildLayout ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...value?.layout,\n\t\t\t\t...newChildLayout,\n\t\t\t},\n\t\t} );\n\t};\n\tconst resetChildLayoutValue = () => {\n\t\tsetChildLayout( {\n\t\t\tselfStretch: undefined,\n\t\t\tflexSize: undefined,\n\t\t} );\n\t};\n\tconst hasChildLayoutValue = () => !! value?.layout;\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tlayout: cleanEmptyObject( {\n\t\t\t\t...previousValue?.layout,\n\t\t\t\tcontentSize: undefined,\n\t\t\t\twideSize: undefined,\n\t\t\t\tselfStretch: undefined,\n\t\t\t\tflexSize: undefined,\n\t\t\t} ),\n\t\t\tspacing: {\n\t\t\t\t...previousValue?.spacing,\n\t\t\t\tpadding: undefined,\n\t\t\t\tmargin: undefined,\n\t\t\t\tblockGap: undefined,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\t...previousValue?.dimensions,\n\t\t\t\tminHeight: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst onMouseLeaveControls = () => onVisualize( false );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ ( showContentSizeControl || showWideSizeControl ) && (\n\t\t\t\t<span className=\"span-columns\">\n\t\t\t\t\t{ __( 'Set the width of the main content area.' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t\t{ showContentSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Content size' ) }\n\t\t\t\t\thasValue={ hasUserSetContentSizeValue }\n\t\t\t\t\tonDeselect={ resetContentSizeValue }\n\t\t\t\t\tisShownByDefault={\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<HStack alignment=\"flex-end\" justify=\"flex-start\">\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Content' ) }\n\t\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\tvalue={ contentSizeValue || '' }\n\t\t\t\t\t\t\tonChange={ ( nextContentSize ) => {\n\t\t\t\t\t\t\t\tsetContentSizeValue( nextContentSize );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View>\n\t\t\t\t\t\t\t<Icon icon={ positionCenter } />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</HStack>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWideSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Wide size' ) }\n\t\t\t\t\thasValue={ hasUserSetWideSizeValue }\n\t\t\t\t\tonDeselect={ resetWideSizeValue }\n\t\t\t\t\tisShownByDefault={\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<HStack alignment=\"flex-end\" justify=\"flex-start\">\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Wide' ) }\n\t\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\tvalue={ wideSizeValue || '' }\n\t\t\t\t\t\t\tonChange={ ( nextWideSize ) => {\n\t\t\t\t\t\t\t\tsetWideSizeValue( nextWideSize );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View>\n\t\t\t\t\t\t\t<Icon icon={ stretchWide } />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</HStack>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showPaddingControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasPaddingValue }\n\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\tonDeselect={ resetPaddingValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.padding ?? DEFAULT_CONTROLS.padding\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ classnames( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialPadding }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\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={ classnames( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialMargin }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\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={ classnames( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl &&\n\t\t\t\t\t\t( isAxialGap ? (\n\t\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tsides={ gapSides }\n\t\t\t\t\t\t\t\tvalues={ gapValues }\n\t\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\t\tsplitOnAxis={ isAxialGap }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValue }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tvalue={ gapValue }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\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{ showMinHeightControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMinHeightValue }\n\t\t\t\t\tlabel={ __( 'Min. height' ) }\n\t\t\t\t\tonDeselect={ resetMinHeightValue }\n\t\t\t\t\tisShownByDefault={\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={ __( 'Min. height' ) }\n\t\t\t\t\t\tvalue={ minHeightValue }\n\t\t\t\t\t\tonChange={ setMinHeightValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showChildLayoutControl && (\n\t\t\t\t<VStack\n\t\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\thasValue={ hasChildLayoutValue }\n\t\t\t\t\tlabel={ childLayoutOrientationLabel }\n\t\t\t\t\tonDeselect={ resetChildLayoutValue }\n\t\t\t\t\tisShownByDefault={\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\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<ChildLayoutControl\n\t\t\t\t\t\tvalue={ childLayout }\n\t\t\t\t\t\tonChange={ setChildLayout }\n\t\t\t\t\t\tparentLayout={ settings?.parentLayout }\n\t\t\t\t\t/>\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"]}
@@ -5,13 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getBlockCSSSelector = getBlockCSSSelector;
7
7
 
8
- var _lodash = require("lodash");
9
-
10
8
  var _utils = require("./utils");
11
9
 
12
- /**
13
- * External dependencies
14
- */
10
+ var _object = require("../../utils/object");
15
11
 
16
12
  /**
17
13
  * Internal dependencies
@@ -73,13 +69,13 @@ function getBlockCSSSelector(blockType, target = 'root', options = {}) {
73
69
 
74
70
  if (hasSelectors) {
75
71
  // Get selector from either `feature.root` or shorthand path.
76
- const featureSelector = (0, _lodash.get)(selectors, `${path}.root`, null) || (0, _lodash.get)(selectors, path, null); // Return feature selector if found or any available fallback.
72
+ const featureSelector = (0, _object.getValueFromObjectPath)(selectors, `${path}.root`, null) || (0, _object.getValueFromObjectPath)(selectors, path, null); // Return feature selector if found or any available fallback.
77
73
 
78
74
  return featureSelector || fallbackSelector;
79
75
  } // Try getting old experimental supports selector value.
80
76
 
81
77
 
82
- const featureSelector = (0, _lodash.get)(supports, `${path}.__experimentalSelector`, null); // If nothing to work with, provide fallback selector if available.
78
+ const featureSelector = (0, _object.getValueFromObjectPath)(supports, `${path}.__experimentalSelector`, null); // If nothing to work with, provide fallback selector if available.
83
79
 
84
80
  if (!featureSelector) {
85
81
  return fallbackSelector;
@@ -94,7 +90,7 @@ function getBlockCSSSelector(blockType, target = 'root', options = {}) {
94
90
  let subfeatureSelector; // Use selectors API if available.
95
91
 
96
92
  if (hasSelectors) {
97
- subfeatureSelector = (0, _lodash.get)(selectors, path, null);
93
+ subfeatureSelector = (0, _object.getValueFromObjectPath)(selectors, path, null);
98
94
  } // Only return if we have a subfeature selector.
99
95
 
100
96
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/get-block-css-selector.js"],"names":["getBlockCSSSelector","blockType","target","options","fallback","name","selectors","supports","hasSelectors","Object","keys","length","path","Array","isArray","join","rootSelector","root","__experimentalSelector","replace","pathArray","split","fallbackSelector","featureSelector","subfeatureSelector"],"mappings":";;;;;;;AAGA;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,mBAAT,CACNC,SADM,EAENC,MAAM,GAAG,MAFH,EAGNC,OAAO,GAAG,EAHJ,EAIL;AACD,MAAK,CAAED,MAAP,EAAgB;AACf,WAAO,IAAP;AACA;;AAED,QAAM;AAAEE,IAAAA,QAAQ,GAAG;AAAb,MAAuBD,OAA7B;AACA,QAAM;AAAEE,IAAAA,IAAF;AAAQC,IAAAA,SAAR;AAAmBC,IAAAA;AAAnB,MAAgCN,SAAtC;AAEA,QAAMO,YAAY,GAAGF,SAAS,IAAIG,MAAM,CAACC,IAAP,CAAaJ,SAAb,EAAyBK,MAAzB,GAAkC,CAApE;AACA,QAAMC,IAAI,GAAGC,KAAK,CAACC,OAAN,CAAeZ,MAAf,IAA0BA,MAAM,CAACa,IAAP,CAAa,GAAb,CAA1B,GAA+Cb,MAA5D,CATC,CAWD;AAEA;AACA;;AACA,MAAIc,YAAY,GAAG,IAAnB;;AAEA,MAAKR,YAAY,IAAIF,SAAS,CAACW,IAA/B,EAAsC;AACrC;AACAD,IAAAA,YAAY,GAAGV,SAAS,EAAEW,IAA1B;AACA,GAHD,MAGO,IAAKV,QAAQ,EAAEW,sBAAf,EAAwC;AAC9C;AACAF,IAAAA,YAAY,GAAGT,QAAQ,CAACW,sBAAxB;AACA,GAHM,MAGA;AACN;AACAF,IAAAA,YAAY,GACX,eAAeX,IAAI,CAACc,OAAL,CAAc,OAAd,EAAuB,EAAvB,EAA4BA,OAA5B,CAAqC,GAArC,EAA0C,GAA1C,CADhB;AAEA,GA3BA,CA6BD;;;AACA,MAAKP,IAAI,KAAK,MAAd,EAAuB;AACtB,WAAOI,YAAP;AACA,GAhCA,CAkCD;AACA;;;AACA,QAAMI,SAAS,GAAGP,KAAK,CAACC,OAAN,CAAeZ,MAAf,IAA0BA,MAA1B,GAAmCA,MAAM,CAACmB,KAAP,CAAc,GAAd,CAArD,CApCC,CAsCD;;AACA,MAAKD,SAAS,CAACT,MAAV,KAAqB,CAA1B,EAA8B;AAC7B,UAAMW,gBAAgB,GAAGlB,QAAQ,GAAGY,YAAH,GAAkB,IAAnD,CAD6B,CAG7B;;AACA,QAAKR,YAAL,EAAoB;AACnB;AACA,YAAMe,eAAe,GACpB,iBAAKjB,SAAL,EAAiB,GAAGM,IAAM,OAA1B,EAAkC,IAAlC,KACA,iBAAKN,SAAL,EAAgBM,IAAhB,EAAsB,IAAtB,CAFD,CAFmB,CAMnB;;AACA,aAAOW,eAAe,IAAID,gBAA1B;AACA,KAZ4B,CAc7B;;;AACA,UAAMC,eAAe,GAAG,iBACvBhB,QADuB,EAEtB,GAAGK,IAAM,yBAFa,EAGvB,IAHuB,CAAxB,CAf6B,CAqB7B;;AACA,QAAK,CAAEW,eAAP,EAAyB;AACxB,aAAOD,gBAAP;AACA,KAxB4B,CA0B7B;;;AACA,WAAO,0BAAeN,YAAf,EAA6BO,eAA7B,CAAP;AACA,GAnEA,CAqED;AACA;;;AACA,MAAIC,kBAAJ,CAvEC,CAyED;;AACA,MAAKhB,YAAL,EAAoB;AACnBgB,IAAAA,kBAAkB,GAAG,iBAAKlB,SAAL,EAAgBM,IAAhB,EAAsB,IAAtB,CAArB;AACA,GA5EA,CA8ED;;;AACA,MAAKY,kBAAL,EAA0B;AACzB,WAAOA,kBAAP;AACA,GAjFA,CAmFD;AACA;AACA;;;AACA,MAAKpB,QAAL,EAAgB;AACf,WAAOJ,mBAAmB,CAAEC,SAAF,EAAamB,SAAS,CAAE,CAAF,CAAtB,EAA6BjB,OAA7B,CAA1B;AACA,GAxFA,CA0FD;;;AACA,SAAO,IAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport { scopeSelector } from './utils';\n\n/**\n * Determine the CSS selector for the block type and target provided, returning\n * it if available.\n *\n * @param {import('@wordpress/blocks').Block} blockType The block's type.\n * @param {string|string[]} target The desired selector's target e.g. `root`, delimited string, or array path.\n * @param {Object} options Options object.\n * @param {boolean} options.fallback Whether or not to fallback to broader selector.\n *\n * @return {?string} The CSS selector or `null` if no selector available.\n */\nexport function getBlockCSSSelector(\n\tblockType,\n\ttarget = 'root',\n\toptions = {}\n) {\n\tif ( ! target ) {\n\t\treturn null;\n\t}\n\n\tconst { fallback = false } = options;\n\tconst { name, selectors, supports } = blockType;\n\n\tconst hasSelectors = selectors && Object.keys( selectors ).length > 0;\n\tconst path = Array.isArray( target ) ? target.join( '.' ) : target;\n\n\t// Root selector.\n\n\t// Calculated before returning as it can be used as a fallback for feature\n\t// selectors later on.\n\tlet rootSelector = null;\n\n\tif ( hasSelectors && selectors.root ) {\n\t\t// Use the selectors API if available.\n\t\trootSelector = selectors?.root;\n\t} else if ( supports?.__experimentalSelector ) {\n\t\t// Use the old experimental selector supports property if set.\n\t\trootSelector = supports.__experimentalSelector;\n\t} else {\n\t\t// If no root selector found, generate default block class selector.\n\t\trootSelector =\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t}\n\n\t// Return selector if it's the root target we are looking for.\n\tif ( path === 'root' ) {\n\t\treturn rootSelector;\n\t}\n\n\t// If target is not `root` or `duotone` we have a feature or subfeature\n\t// as the target. If the target is a string convert to an array.\n\tconst pathArray = Array.isArray( target ) ? target : target.split( '.' );\n\n\t// Feature selectors ( may fallback to root selector );\n\tif ( pathArray.length === 1 ) {\n\t\tconst fallbackSelector = fallback ? rootSelector : null;\n\n\t\t// Prefer the selectors API if available.\n\t\tif ( hasSelectors ) {\n\t\t\t// Get selector from either `feature.root` or shorthand path.\n\t\t\tconst featureSelector =\n\t\t\t\tget( selectors, `${ path }.root`, null ) ||\n\t\t\t\tget( selectors, path, null );\n\n\t\t\t// Return feature selector if found or any available fallback.\n\t\t\treturn featureSelector || fallbackSelector;\n\t\t}\n\n\t\t// Try getting old experimental supports selector value.\n\t\tconst featureSelector = get(\n\t\t\tsupports,\n\t\t\t`${ path }.__experimentalSelector`,\n\t\t\tnull\n\t\t);\n\n\t\t// If nothing to work with, provide fallback selector if available.\n\t\tif ( ! featureSelector ) {\n\t\t\treturn fallbackSelector;\n\t\t}\n\n\t\t// Scope the feature selector by the block's root selector.\n\t\treturn scopeSelector( rootSelector, featureSelector );\n\t}\n\n\t// Subfeature selector.\n\t// This may fallback either to parent feature or root selector.\n\tlet subfeatureSelector;\n\n\t// Use selectors API if available.\n\tif ( hasSelectors ) {\n\t\tsubfeatureSelector = get( selectors, path, null );\n\t}\n\n\t// Only return if we have a subfeature selector.\n\tif ( subfeatureSelector ) {\n\t\treturn subfeatureSelector;\n\t}\n\n\t// To this point we don't have a subfeature selector. If a fallback has been\n\t// requested, remove subfeature from target path and return results of a\n\t// call for the parent feature's selector.\n\tif ( fallback ) {\n\t\treturn getBlockCSSSelector( blockType, pathArray[ 0 ], options );\n\t}\n\n\t// We tried.\n\treturn null;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/get-block-css-selector.js"],"names":["getBlockCSSSelector","blockType","target","options","fallback","name","selectors","supports","hasSelectors","Object","keys","length","path","Array","isArray","join","rootSelector","root","__experimentalSelector","replace","pathArray","split","fallbackSelector","featureSelector","subfeatureSelector"],"mappings":";;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,mBAAT,CACNC,SADM,EAENC,MAAM,GAAG,MAFH,EAGNC,OAAO,GAAG,EAHJ,EAIL;AACD,MAAK,CAAED,MAAP,EAAgB;AACf,WAAO,IAAP;AACA;;AAED,QAAM;AAAEE,IAAAA,QAAQ,GAAG;AAAb,MAAuBD,OAA7B;AACA,QAAM;AAAEE,IAAAA,IAAF;AAAQC,IAAAA,SAAR;AAAmBC,IAAAA;AAAnB,MAAgCN,SAAtC;AAEA,QAAMO,YAAY,GAAGF,SAAS,IAAIG,MAAM,CAACC,IAAP,CAAaJ,SAAb,EAAyBK,MAAzB,GAAkC,CAApE;AACA,QAAMC,IAAI,GAAGC,KAAK,CAACC,OAAN,CAAeZ,MAAf,IAA0BA,MAAM,CAACa,IAAP,CAAa,GAAb,CAA1B,GAA+Cb,MAA5D,CATC,CAWD;AAEA;AACA;;AACA,MAAIc,YAAY,GAAG,IAAnB;;AAEA,MAAKR,YAAY,IAAIF,SAAS,CAACW,IAA/B,EAAsC;AACrC;AACAD,IAAAA,YAAY,GAAGV,SAAS,EAAEW,IAA1B;AACA,GAHD,MAGO,IAAKV,QAAQ,EAAEW,sBAAf,EAAwC;AAC9C;AACAF,IAAAA,YAAY,GAAGT,QAAQ,CAACW,sBAAxB;AACA,GAHM,MAGA;AACN;AACAF,IAAAA,YAAY,GACX,eAAeX,IAAI,CAACc,OAAL,CAAc,OAAd,EAAuB,EAAvB,EAA4BA,OAA5B,CAAqC,GAArC,EAA0C,GAA1C,CADhB;AAEA,GA3BA,CA6BD;;;AACA,MAAKP,IAAI,KAAK,MAAd,EAAuB;AACtB,WAAOI,YAAP;AACA,GAhCA,CAkCD;AACA;;;AACA,QAAMI,SAAS,GAAGP,KAAK,CAACC,OAAN,CAAeZ,MAAf,IAA0BA,MAA1B,GAAmCA,MAAM,CAACmB,KAAP,CAAc,GAAd,CAArD,CApCC,CAsCD;;AACA,MAAKD,SAAS,CAACT,MAAV,KAAqB,CAA1B,EAA8B;AAC7B,UAAMW,gBAAgB,GAAGlB,QAAQ,GAAGY,YAAH,GAAkB,IAAnD,CAD6B,CAG7B;;AACA,QAAKR,YAAL,EAAoB;AACnB;AACA,YAAMe,eAAe,GACpB,oCAAwBjB,SAAxB,EAAoC,GAAGM,IAAM,OAA7C,EAAqD,IAArD,KACA,oCAAwBN,SAAxB,EAAmCM,IAAnC,EAAyC,IAAzC,CAFD,CAFmB,CAMnB;;AACA,aAAOW,eAAe,IAAID,gBAA1B;AACA,KAZ4B,CAc7B;;;AACA,UAAMC,eAAe,GAAG,oCACvBhB,QADuB,EAEtB,GAAGK,IAAM,yBAFa,EAGvB,IAHuB,CAAxB,CAf6B,CAqB7B;;AACA,QAAK,CAAEW,eAAP,EAAyB;AACxB,aAAOD,gBAAP;AACA,KAxB4B,CA0B7B;;;AACA,WAAO,0BAAeN,YAAf,EAA6BO,eAA7B,CAAP;AACA,GAnEA,CAqED;AACA;;;AACA,MAAIC,kBAAJ,CAvEC,CAyED;;AACA,MAAKhB,YAAL,EAAoB;AACnBgB,IAAAA,kBAAkB,GAAG,oCAAwBlB,SAAxB,EAAmCM,IAAnC,EAAyC,IAAzC,CAArB;AACA,GA5EA,CA8ED;;;AACA,MAAKY,kBAAL,EAA0B;AACzB,WAAOA,kBAAP;AACA,GAjFA,CAmFD;AACA;AACA;;;AACA,MAAKpB,QAAL,EAAgB;AACf,WAAOJ,mBAAmB,CAAEC,SAAF,EAAamB,SAAS,CAAE,CAAF,CAAtB,EAA6BjB,OAA7B,CAA1B;AACA,GAxFA,CA0FD;;;AACA,SAAO,IAAP;AACA","sourcesContent":["/**\n * Internal dependencies\n */\nimport { scopeSelector } from './utils';\nimport { getValueFromObjectPath } from '../../utils/object';\n\n/**\n * Determine the CSS selector for the block type and target provided, returning\n * it if available.\n *\n * @param {import('@wordpress/blocks').Block} blockType The block's type.\n * @param {string|string[]} target The desired selector's target e.g. `root`, delimited string, or array path.\n * @param {Object} options Options object.\n * @param {boolean} options.fallback Whether or not to fallback to broader selector.\n *\n * @return {?string} The CSS selector or `null` if no selector available.\n */\nexport function getBlockCSSSelector(\n\tblockType,\n\ttarget = 'root',\n\toptions = {}\n) {\n\tif ( ! target ) {\n\t\treturn null;\n\t}\n\n\tconst { fallback = false } = options;\n\tconst { name, selectors, supports } = blockType;\n\n\tconst hasSelectors = selectors && Object.keys( selectors ).length > 0;\n\tconst path = Array.isArray( target ) ? target.join( '.' ) : target;\n\n\t// Root selector.\n\n\t// Calculated before returning as it can be used as a fallback for feature\n\t// selectors later on.\n\tlet rootSelector = null;\n\n\tif ( hasSelectors && selectors.root ) {\n\t\t// Use the selectors API if available.\n\t\trootSelector = selectors?.root;\n\t} else if ( supports?.__experimentalSelector ) {\n\t\t// Use the old experimental selector supports property if set.\n\t\trootSelector = supports.__experimentalSelector;\n\t} else {\n\t\t// If no root selector found, generate default block class selector.\n\t\trootSelector =\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t}\n\n\t// Return selector if it's the root target we are looking for.\n\tif ( path === 'root' ) {\n\t\treturn rootSelector;\n\t}\n\n\t// If target is not `root` or `duotone` we have a feature or subfeature\n\t// as the target. If the target is a string convert to an array.\n\tconst pathArray = Array.isArray( target ) ? target : target.split( '.' );\n\n\t// Feature selectors ( may fallback to root selector );\n\tif ( pathArray.length === 1 ) {\n\t\tconst fallbackSelector = fallback ? rootSelector : null;\n\n\t\t// Prefer the selectors API if available.\n\t\tif ( hasSelectors ) {\n\t\t\t// Get selector from either `feature.root` or shorthand path.\n\t\t\tconst featureSelector =\n\t\t\t\tgetValueFromObjectPath( selectors, `${ path }.root`, null ) ||\n\t\t\t\tgetValueFromObjectPath( selectors, path, null );\n\n\t\t\t// Return feature selector if found or any available fallback.\n\t\t\treturn featureSelector || fallbackSelector;\n\t\t}\n\n\t\t// Try getting old experimental supports selector value.\n\t\tconst featureSelector = getValueFromObjectPath(\n\t\t\tsupports,\n\t\t\t`${ path }.__experimentalSelector`,\n\t\t\tnull\n\t\t);\n\n\t\t// If nothing to work with, provide fallback selector if available.\n\t\tif ( ! featureSelector ) {\n\t\t\treturn fallbackSelector;\n\t\t}\n\n\t\t// Scope the feature selector by the block's root selector.\n\t\treturn scopeSelector( rootSelector, featureSelector );\n\t}\n\n\t// Subfeature selector.\n\t// This may fallback either to parent feature or root selector.\n\tlet subfeatureSelector;\n\n\t// Use selectors API if available.\n\tif ( hasSelectors ) {\n\t\tsubfeatureSelector = getValueFromObjectPath( selectors, path, null );\n\t}\n\n\t// Only return if we have a subfeature selector.\n\tif ( subfeatureSelector ) {\n\t\treturn subfeatureSelector;\n\t}\n\n\t// To this point we don't have a subfeature selector. If a fallback has been\n\t// requested, remove subfeature from target path and return results of a\n\t// call for the parent feature's selector.\n\tif ( fallback ) {\n\t\treturn getBlockCSSSelector( blockType, pathArray[ 0 ], options );\n\t}\n\n\t// We tried.\n\treturn null;\n}\n"]}
@@ -14,8 +14,6 @@ exports.useSettingsForBlockElement = useSettingsForBlockElement;
14
14
 
15
15
  var _es = _interopRequireDefault(require("fast-deep-equal/es6"));
16
16
 
17
- var _lodash = require("lodash");
18
-
19
17
  var _element = require("@wordpress/element");
20
18
 
21
19
  var _data = require("@wordpress/data");
@@ -26,6 +24,8 @@ var _i18n = require("@wordpress/i18n");
26
24
 
27
25
  var _utils = require("./utils");
28
26
 
27
+ var _object = require("../../utils/object");
28
+
29
29
  var _context = require("./context");
30
30
 
31
31
  var _lockUnlock = require("../../lock-unlock");
@@ -76,31 +76,26 @@ function useGlobalSetting(propertyPath, blockName, source = 'all') {
76
76
  }
77
77
 
78
78
  if (propertyPath) {
79
- var _get;
79
+ var _getValueFromObjectPa;
80
80
 
81
- return (_get = (0, _lodash.get)(configToUse, contextualPath)) !== null && _get !== void 0 ? _get : (0, _lodash.get)(configToUse, globalPath);
81
+ return (_getValueFromObjectPa = (0, _object.getValueFromObjectPath)(configToUse, contextualPath)) !== null && _getValueFromObjectPa !== void 0 ? _getValueFromObjectPa : (0, _object.getValueFromObjectPath)(configToUse, globalPath);
82
82
  }
83
83
 
84
- const result = {};
84
+ let result = {};
85
85
  VALID_SETTINGS.forEach(setting => {
86
- var _get2;
86
+ var _getValueFromObjectPa2;
87
87
 
88
- const value = (_get2 = (0, _lodash.get)(configToUse, `settings${appendedBlockPath}.${setting}`)) !== null && _get2 !== void 0 ? _get2 : (0, _lodash.get)(configToUse, `settings.${setting}`);
88
+ const value = (_getValueFromObjectPa2 = (0, _object.getValueFromObjectPath)(configToUse, `settings${appendedBlockPath}.${setting}`)) !== null && _getValueFromObjectPa2 !== void 0 ? _getValueFromObjectPa2 : (0, _object.getValueFromObjectPath)(configToUse, `settings.${setting}`);
89
89
 
90
90
  if (value) {
91
- (0, _lodash.set)(result, setting, value);
91
+ result = (0, _object.setImmutably)(result, setting.split('.'), value);
92
92
  }
93
93
  });
94
94
  return result;
95
95
  }, [configs, sourceKey, propertyPath, contextualPath, globalPath, appendedBlockPath]);
96
96
 
97
97
  const setSetting = newValue => {
98
- setUserConfig(currentConfig => {
99
- // Deep clone `currentConfig` to avoid mutating it later.
100
- const newUserConfig = JSON.parse(JSON.stringify(currentConfig));
101
- (0, _lodash.set)(newUserConfig, contextualPath, newValue);
102
- return newUserConfig;
103
- });
98
+ setUserConfig(currentConfig => (0, _object.setImmutably)(currentConfig, contextualPath.split('.'), newValue));
104
99
  };
105
100
 
106
101
  return [settingValue, setSetting];
@@ -119,29 +114,24 @@ function useGlobalStyle(path, blockName, source = 'all', {
119
114
  const finalPath = !blockName ? `styles${appendedPath}` : `styles.blocks.${blockName}${appendedPath}`;
120
115
 
121
116
  const setStyle = newValue => {
122
- setUserConfig(currentConfig => {
123
- // Deep clone `currentConfig` to avoid mutating it later.
124
- const newUserConfig = JSON.parse(JSON.stringify(currentConfig));
125
- (0, _lodash.set)(newUserConfig, finalPath, shouldDecodeEncode ? (0, _utils.getPresetVariableFromValue)(mergedConfig.settings, blockName, path, newValue) : newValue);
126
- return newUserConfig;
127
- });
117
+ setUserConfig(currentConfig => (0, _object.setImmutably)(currentConfig, finalPath.split('.'), shouldDecodeEncode ? (0, _utils.getPresetVariableFromValue)(mergedConfig.settings, blockName, path, newValue) : newValue));
128
118
  };
129
119
 
130
120
  let rawResult, result;
131
121
 
132
122
  switch (source) {
133
123
  case 'all':
134
- rawResult = (0, _lodash.get)(mergedConfig, finalPath);
124
+ rawResult = (0, _object.getValueFromObjectPath)(mergedConfig, finalPath);
135
125
  result = shouldDecodeEncode ? (0, _utils.getValueFromVariable)(mergedConfig, blockName, rawResult) : rawResult;
136
126
  break;
137
127
 
138
128
  case 'user':
139
- rawResult = (0, _lodash.get)(userConfig, finalPath);
129
+ rawResult = (0, _object.getValueFromObjectPath)(userConfig, finalPath);
140
130
  result = shouldDecodeEncode ? (0, _utils.getValueFromVariable)(mergedConfig, blockName, rawResult) : rawResult;
141
131
  break;
142
132
 
143
133
  case 'base':
144
- rawResult = (0, _lodash.get)(baseConfig, finalPath);
134
+ rawResult = (0, _object.getValueFromObjectPath)(baseConfig, finalPath);
145
135
  result = shouldDecodeEncode ? (0, _utils.getValueFromVariable)(baseConfig, blockName, rawResult) : rawResult;
146
136
  break;
147
137
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/hooks.js"],"names":["EMPTY_CONFIG","settings","styles","VALID_SETTINGS","useGlobalStylesReset","user","config","setUserConfig","GlobalStylesContext","canReset","useGlobalSetting","propertyPath","blockName","source","configs","appendedBlockPath","appendedPropertyPath","contextualPath","globalPath","sourceKey","settingValue","configToUse","result","forEach","setting","value","setSetting","newValue","currentConfig","newUserConfig","JSON","parse","stringify","useGlobalStyle","path","shouldDecodeEncode","merged","mergedConfig","base","baseConfig","userConfig","appendedPath","finalPath","setStyle","rawResult","useSettingsForBlockElement","parentSettings","element","supportedStyles","supports","select","blocksStore","getSupportedStyles","getBlockType","updatedSettings","includes","typography","fontSizes","customFontSize","fontFamilies","color","text","background","button","heading","link","caption","gradients","customGradient","defaultDuotone","customDuotone","key","textColumns","layout","spacing","sides","Array","isArray","length","dimensions","minHeight","charAt","toUpperCase","slice","border","shadow","useColorsPerOrigin","customColors","palette","custom","themeColors","theme","defaultColors","default","shouldDisplayDefaultColors","defaultPalette","push","name","colors","useGradientsPerOrigin","customGradients","themeGradients","defaultGradients","shouldDisplayDefaultGradients"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\nimport { get, set } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useContext, useCallback, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable, getPresetVariableFromValue } from './utils';\nimport { GlobalStylesContext } from './context';\nimport { unlock } from '../../lock-unlock';\n\nconst EMPTY_CONFIG = { settings: {}, styles: {} };\n\nconst VALID_SETTINGS = [\n\t'appearanceTools',\n\t'useRootPaddingAwareAlignments',\n\t'border.color',\n\t'border.radius',\n\t'border.style',\n\t'border.width',\n\t'shadow.presets',\n\t'shadow.defaultPresets',\n\t'color.background',\n\t'color.button',\n\t'color.caption',\n\t'color.custom',\n\t'color.customDuotone',\n\t'color.customGradient',\n\t'color.defaultDuotone',\n\t'color.defaultGradients',\n\t'color.defaultPalette',\n\t'color.duotone',\n\t'color.gradients',\n\t'color.heading',\n\t'color.link',\n\t'color.palette',\n\t'color.text',\n\t'custom',\n\t'dimensions.minHeight',\n\t'layout.contentSize',\n\t'layout.definitions',\n\t'layout.wideSize',\n\t'position.fixed',\n\t'position.sticky',\n\t'spacing.customSpacingSize',\n\t'spacing.spacingSizes',\n\t'spacing.spacingScale',\n\t'spacing.blockGap',\n\t'spacing.margin',\n\t'spacing.padding',\n\t'spacing.units',\n\t'typography.fluid',\n\t'typography.customFontSize',\n\t'typography.dropCap',\n\t'typography.fontFamilies',\n\t'typography.fontSizes',\n\t'typography.fontStyle',\n\t'typography.fontWeight',\n\t'typography.letterSpacing',\n\t'typography.lineHeight',\n\t'typography.textColumns',\n\t'typography.textDecoration',\n\t'typography.textTransform',\n\t'typography.writingMode',\n];\n\nexport const useGlobalStylesReset = () => {\n\tconst { user: config, setUserConfig } = useContext( GlobalStylesContext );\n\tconst canReset = !! config && ! fastDeepEqual( config, EMPTY_CONFIG );\n\treturn [\n\t\tcanReset,\n\t\tuseCallback(\n\t\t\t() => setUserConfig( () => EMPTY_CONFIG ),\n\t\t\t[ setUserConfig ]\n\t\t),\n\t];\n};\n\nexport function useGlobalSetting( propertyPath, blockName, source = 'all' ) {\n\tconst { setUserConfig, ...configs } = useContext( GlobalStylesContext );\n\n\tconst appendedBlockPath = blockName ? '.blocks.' + blockName : '';\n\tconst appendedPropertyPath = propertyPath ? '.' + propertyPath : '';\n\tconst contextualPath = `settings${ appendedBlockPath }${ appendedPropertyPath }`;\n\tconst globalPath = `settings${ appendedPropertyPath }`;\n\tconst sourceKey = source === 'all' ? 'merged' : source;\n\n\tconst settingValue = useMemo( () => {\n\t\tconst configToUse = configs[ sourceKey ];\n\t\tif ( ! configToUse ) {\n\t\t\tthrow 'Unsupported source';\n\t\t}\n\n\t\tif ( propertyPath ) {\n\t\t\treturn (\n\t\t\t\tget( configToUse, contextualPath ) ??\n\t\t\t\tget( configToUse, globalPath )\n\t\t\t);\n\t\t}\n\n\t\tconst result = {};\n\t\tVALID_SETTINGS.forEach( ( setting ) => {\n\t\t\tconst value =\n\t\t\t\tget(\n\t\t\t\t\tconfigToUse,\n\t\t\t\t\t`settings${ appendedBlockPath }.${ setting }`\n\t\t\t\t) ?? get( configToUse, `settings.${ setting }` );\n\t\t\tif ( value ) {\n\t\t\t\tset( result, setting, value );\n\t\t\t}\n\t\t} );\n\t\treturn result;\n\t}, [\n\t\tconfigs,\n\t\tsourceKey,\n\t\tpropertyPath,\n\t\tcontextualPath,\n\t\tglobalPath,\n\t\tappendedBlockPath,\n\t] );\n\n\tconst setSetting = ( newValue ) => {\n\t\tsetUserConfig( ( currentConfig ) => {\n\t\t\t// Deep clone `currentConfig` to avoid mutating it later.\n\t\t\tconst newUserConfig = JSON.parse( JSON.stringify( currentConfig ) );\n\t\t\tset( newUserConfig, contextualPath, newValue );\n\n\t\t\treturn newUserConfig;\n\t\t} );\n\t};\n\n\treturn [ settingValue, setSetting ];\n}\n\nexport function useGlobalStyle(\n\tpath,\n\tblockName,\n\tsource = 'all',\n\t{ shouldDecodeEncode = true } = {}\n) {\n\tconst {\n\t\tmerged: mergedConfig,\n\t\tbase: baseConfig,\n\t\tuser: userConfig,\n\t\tsetUserConfig,\n\t} = useContext( GlobalStylesContext );\n\tconst appendedPath = path ? '.' + path : '';\n\tconst finalPath = ! blockName\n\t\t? `styles${ appendedPath }`\n\t\t: `styles.blocks.${ blockName }${ appendedPath }`;\n\n\tconst setStyle = ( newValue ) => {\n\t\tsetUserConfig( ( currentConfig ) => {\n\t\t\t// Deep clone `currentConfig` to avoid mutating it later.\n\t\t\tconst newUserConfig = JSON.parse( JSON.stringify( currentConfig ) );\n\t\t\tset(\n\t\t\t\tnewUserConfig,\n\t\t\t\tfinalPath,\n\t\t\t\tshouldDecodeEncode\n\t\t\t\t\t? getPresetVariableFromValue(\n\t\t\t\t\t\t\tmergedConfig.settings,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tnewValue\n\t\t\t\t\t )\n\t\t\t\t\t: newValue\n\t\t\t);\n\t\t\treturn newUserConfig;\n\t\t} );\n\t};\n\n\tlet rawResult, result;\n\tswitch ( source ) {\n\t\tcase 'all':\n\t\t\trawResult = get( mergedConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( mergedConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tcase 'user':\n\t\t\trawResult = get( userConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( mergedConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tcase 'base':\n\t\t\trawResult = get( baseConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( baseConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow 'Unsupported source';\n\t}\n\n\treturn [ result, setStyle ];\n}\n\n/**\n * React hook that overrides a global settings object with block and element specific settings.\n *\n * @param {Object} parentSettings Settings object.\n * @param {blockName?} blockName Block name.\n * @param {element?} element Element name.\n *\n * @return {Object} Merge of settings and supports.\n */\nexport function useSettingsForBlockElement(\n\tparentSettings,\n\tblockName,\n\telement\n) {\n\tconst { supportedStyles, supports } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tsupportedStyles: unlock(\n\t\t\t\t\tselect( blocksStore )\n\t\t\t\t).getSupportedStyles( blockName, element ),\n\t\t\t\tsupports:\n\t\t\t\t\tselect( blocksStore ).getBlockType( blockName )?.supports,\n\t\t\t};\n\t\t},\n\t\t[ blockName, element ]\n\t);\n\n\treturn useMemo( () => {\n\t\tconst updatedSettings = { ...parentSettings };\n\n\t\tif ( ! supportedStyles.includes( 'fontSize' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontSizes: {},\n\t\t\t\tcustomFontSize: false,\n\t\t\t};\n\t\t}\n\n\t\tif ( ! supportedStyles.includes( 'fontFamily' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontFamilies: {},\n\t\t\t};\n\t\t}\n\n\t\tupdatedSettings.color = {\n\t\t\t...updatedSettings.color,\n\t\t\ttext:\n\t\t\t\tupdatedSettings.color?.text &&\n\t\t\t\tsupportedStyles.includes( 'color' ),\n\t\t\tbackground:\n\t\t\t\tupdatedSettings.color?.background &&\n\t\t\t\t( supportedStyles.includes( 'background' ) ||\n\t\t\t\t\tsupportedStyles.includes( 'backgroundColor' ) ),\n\t\t\tbutton:\n\t\t\t\tupdatedSettings.color?.button &&\n\t\t\t\tsupportedStyles.includes( 'buttonColor' ),\n\t\t\theading:\n\t\t\t\tupdatedSettings.color?.heading &&\n\t\t\t\tsupportedStyles.includes( 'headingColor' ),\n\t\t\tlink:\n\t\t\t\tupdatedSettings.color?.link &&\n\t\t\t\tsupportedStyles.includes( 'linkColor' ),\n\t\t\tcaption:\n\t\t\t\tupdatedSettings.color?.caption &&\n\t\t\t\tsupportedStyles.includes( 'captionColor' ),\n\t\t};\n\n\t\t// Some blocks can enable background colors but disable gradients.\n\t\tif ( ! supportedStyles.includes( 'background' ) ) {\n\t\t\tupdatedSettings.color.gradients = [];\n\t\t\tupdatedSettings.color.customGradient = false;\n\t\t}\n\n\t\t// If filters are not supported by the block/element, disable duotone.\n\t\tif ( ! supportedStyles.includes( 'filter' ) ) {\n\t\t\tupdatedSettings.color.defaultDuotone = false;\n\t\t\tupdatedSettings.color.customDuotone = false;\n\t\t}\n\n\t\t[\n\t\t\t'lineHeight',\n\t\t\t'fontStyle',\n\t\t\t'fontWeight',\n\t\t\t'letterSpacing',\n\t\t\t'textTransform',\n\t\t\t'textDecoration',\n\t\t\t'writingMode',\n\t\t].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.typography = {\n\t\t\t\t\t...updatedSettings.typography,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t// The column-count style is named text column to reduce confusion with\n\t\t// the columns block and manage expectations from the support.\n\t\t// See: https://github.com/WordPress/gutenberg/pull/33587\n\t\tif ( ! supportedStyles.includes( 'columnCount' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\ttextColumns: false,\n\t\t\t};\n\t\t}\n\n\t\t[ 'contentSize', 'wideSize' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.layout = {\n\t\t\t\t\t...updatedSettings.layout,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t[ 'padding', 'margin', 'blockGap' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst sides = Array.isArray( supports?.spacing?.[ key ] )\n\t\t\t\t? supports?.spacing?.[ key ]\n\t\t\t\t: supports?.spacing?.[ key ]?.sides;\n\t\t\tif ( sides?.length ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: {\n\t\t\t\t\t\t...updatedSettings.spacing?.[ key ],\n\t\t\t\t\t\tsides,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\tif ( ! supportedStyles.includes( 'minHeight' ) ) {\n\t\t\tupdatedSettings.dimensions = {\n\t\t\t\t...updatedSettings.dimensions,\n\t\t\t\tminHeight: false,\n\t\t\t};\n\t\t}\n\n\t\t[ 'radius', 'color', 'style', 'width' ].forEach( ( key ) => {\n\t\t\tif (\n\t\t\t\t! supportedStyles.includes(\n\t\t\t\t\t'border' + key.charAt( 0 ).toUpperCase() + key.slice( 1 )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tupdatedSettings.border = {\n\t\t\t\t\t...updatedSettings.border,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\tupdatedSettings.shadow = supportedStyles.includes( 'shadow' )\n\t\t\t? updatedSettings.shadow\n\t\t\t: false;\n\n\t\treturn updatedSettings;\n\t}, [ parentSettings, supportedStyles, supports ] );\n}\n\nexport function useColorsPerOrigin( settings ) {\n\tconst customColors = settings?.color?.palette?.custom;\n\tconst themeColors = settings?.color?.palette?.theme;\n\tconst defaultColors = settings?.color?.palette?.default;\n\tconst shouldDisplayDefaultColors = settings?.color?.defaultPalette;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeColors && themeColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tcolors: themeColors,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultColors &&\n\t\t\tdefaultColors &&\n\t\t\tdefaultColors.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tcolors: defaultColors,\n\t\t\t} );\n\t\t}\n\t\tif ( customColors && customColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tcolors: customColors,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomColors,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tshouldDisplayDefaultColors,\n\t] );\n}\n\nexport function useGradientsPerOrigin( settings ) {\n\tconst customGradients = settings?.color?.gradients?.custom;\n\tconst themeGradients = settings?.color?.gradients?.theme;\n\tconst defaultGradients = settings?.color?.gradients?.default;\n\tconst shouldDisplayDefaultGradients = settings?.color?.defaultGradients;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeGradients && themeGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tgradients: themeGradients,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultGradients &&\n\t\t\tdefaultGradients &&\n\t\t\tdefaultGradients.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tgradients: defaultGradients,\n\t\t\t} );\n\t\t}\n\t\tif ( customGradients && customGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tgradients: customGradients,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomGradients,\n\t\tthemeGradients,\n\t\tdefaultGradients,\n\t\tshouldDisplayDefaultGradients,\n\t] );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/hooks.js"],"names":["EMPTY_CONFIG","settings","styles","VALID_SETTINGS","useGlobalStylesReset","user","config","setUserConfig","GlobalStylesContext","canReset","useGlobalSetting","propertyPath","blockName","source","configs","appendedBlockPath","appendedPropertyPath","contextualPath","globalPath","sourceKey","settingValue","configToUse","result","forEach","setting","value","split","setSetting","newValue","currentConfig","useGlobalStyle","path","shouldDecodeEncode","merged","mergedConfig","base","baseConfig","userConfig","appendedPath","finalPath","setStyle","rawResult","useSettingsForBlockElement","parentSettings","element","supportedStyles","supports","select","blocksStore","getSupportedStyles","getBlockType","updatedSettings","includes","typography","fontSizes","customFontSize","fontFamilies","color","text","background","button","heading","link","caption","gradients","customGradient","defaultDuotone","customDuotone","key","textColumns","layout","spacing","sides","Array","isArray","length","dimensions","minHeight","charAt","toUpperCase","slice","border","shadow","useColorsPerOrigin","customColors","palette","custom","themeColors","theme","defaultColors","default","shouldDisplayDefaultColors","defaultPalette","push","name","colors","useGradientsPerOrigin","customGradients","themeGradients","defaultGradients","shouldDisplayDefaultGradients"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { useContext, useCallback, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable, getPresetVariableFromValue } from './utils';\nimport { getValueFromObjectPath, setImmutably } from '../../utils/object';\nimport { GlobalStylesContext } from './context';\nimport { unlock } from '../../lock-unlock';\n\nconst EMPTY_CONFIG = { settings: {}, styles: {} };\n\nconst VALID_SETTINGS = [\n\t'appearanceTools',\n\t'useRootPaddingAwareAlignments',\n\t'border.color',\n\t'border.radius',\n\t'border.style',\n\t'border.width',\n\t'shadow.presets',\n\t'shadow.defaultPresets',\n\t'color.background',\n\t'color.button',\n\t'color.caption',\n\t'color.custom',\n\t'color.customDuotone',\n\t'color.customGradient',\n\t'color.defaultDuotone',\n\t'color.defaultGradients',\n\t'color.defaultPalette',\n\t'color.duotone',\n\t'color.gradients',\n\t'color.heading',\n\t'color.link',\n\t'color.palette',\n\t'color.text',\n\t'custom',\n\t'dimensions.minHeight',\n\t'layout.contentSize',\n\t'layout.definitions',\n\t'layout.wideSize',\n\t'position.fixed',\n\t'position.sticky',\n\t'spacing.customSpacingSize',\n\t'spacing.spacingSizes',\n\t'spacing.spacingScale',\n\t'spacing.blockGap',\n\t'spacing.margin',\n\t'spacing.padding',\n\t'spacing.units',\n\t'typography.fluid',\n\t'typography.customFontSize',\n\t'typography.dropCap',\n\t'typography.fontFamilies',\n\t'typography.fontSizes',\n\t'typography.fontStyle',\n\t'typography.fontWeight',\n\t'typography.letterSpacing',\n\t'typography.lineHeight',\n\t'typography.textColumns',\n\t'typography.textDecoration',\n\t'typography.textTransform',\n\t'typography.writingMode',\n];\n\nexport const useGlobalStylesReset = () => {\n\tconst { user: config, setUserConfig } = useContext( GlobalStylesContext );\n\tconst canReset = !! config && ! fastDeepEqual( config, EMPTY_CONFIG );\n\treturn [\n\t\tcanReset,\n\t\tuseCallback(\n\t\t\t() => setUserConfig( () => EMPTY_CONFIG ),\n\t\t\t[ setUserConfig ]\n\t\t),\n\t];\n};\n\nexport function useGlobalSetting( propertyPath, blockName, source = 'all' ) {\n\tconst { setUserConfig, ...configs } = useContext( GlobalStylesContext );\n\n\tconst appendedBlockPath = blockName ? '.blocks.' + blockName : '';\n\tconst appendedPropertyPath = propertyPath ? '.' + propertyPath : '';\n\tconst contextualPath = `settings${ appendedBlockPath }${ appendedPropertyPath }`;\n\tconst globalPath = `settings${ appendedPropertyPath }`;\n\tconst sourceKey = source === 'all' ? 'merged' : source;\n\n\tconst settingValue = useMemo( () => {\n\t\tconst configToUse = configs[ sourceKey ];\n\t\tif ( ! configToUse ) {\n\t\t\tthrow 'Unsupported source';\n\t\t}\n\n\t\tif ( propertyPath ) {\n\t\t\treturn (\n\t\t\t\tgetValueFromObjectPath( configToUse, contextualPath ) ??\n\t\t\t\tgetValueFromObjectPath( configToUse, globalPath )\n\t\t\t);\n\t\t}\n\n\t\tlet result = {};\n\t\tVALID_SETTINGS.forEach( ( setting ) => {\n\t\t\tconst value =\n\t\t\t\tgetValueFromObjectPath(\n\t\t\t\t\tconfigToUse,\n\t\t\t\t\t`settings${ appendedBlockPath }.${ setting }`\n\t\t\t\t) ??\n\t\t\t\tgetValueFromObjectPath( configToUse, `settings.${ setting }` );\n\t\t\tif ( value ) {\n\t\t\t\tresult = setImmutably( result, setting.split( '.' ), value );\n\t\t\t}\n\t\t} );\n\t\treturn result;\n\t}, [\n\t\tconfigs,\n\t\tsourceKey,\n\t\tpropertyPath,\n\t\tcontextualPath,\n\t\tglobalPath,\n\t\tappendedBlockPath,\n\t] );\n\n\tconst setSetting = ( newValue ) => {\n\t\tsetUserConfig( ( currentConfig ) =>\n\t\t\tsetImmutably( currentConfig, contextualPath.split( '.' ), newValue )\n\t\t);\n\t};\n\n\treturn [ settingValue, setSetting ];\n}\n\nexport function useGlobalStyle(\n\tpath,\n\tblockName,\n\tsource = 'all',\n\t{ shouldDecodeEncode = true } = {}\n) {\n\tconst {\n\t\tmerged: mergedConfig,\n\t\tbase: baseConfig,\n\t\tuser: userConfig,\n\t\tsetUserConfig,\n\t} = useContext( GlobalStylesContext );\n\tconst appendedPath = path ? '.' + path : '';\n\tconst finalPath = ! blockName\n\t\t? `styles${ appendedPath }`\n\t\t: `styles.blocks.${ blockName }${ appendedPath }`;\n\n\tconst setStyle = ( newValue ) => {\n\t\tsetUserConfig( ( currentConfig ) =>\n\t\t\tsetImmutably(\n\t\t\t\tcurrentConfig,\n\t\t\t\tfinalPath.split( '.' ),\n\t\t\t\tshouldDecodeEncode\n\t\t\t\t\t? getPresetVariableFromValue(\n\t\t\t\t\t\t\tmergedConfig.settings,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tnewValue\n\t\t\t\t\t )\n\t\t\t\t\t: newValue\n\t\t\t)\n\t\t);\n\t};\n\n\tlet rawResult, result;\n\tswitch ( source ) {\n\t\tcase 'all':\n\t\t\trawResult = getValueFromObjectPath( mergedConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( mergedConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tcase 'user':\n\t\t\trawResult = getValueFromObjectPath( userConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( mergedConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tcase 'base':\n\t\t\trawResult = getValueFromObjectPath( baseConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( baseConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow 'Unsupported source';\n\t}\n\n\treturn [ result, setStyle ];\n}\n\n/**\n * React hook that overrides a global settings object with block and element specific settings.\n *\n * @param {Object} parentSettings Settings object.\n * @param {blockName?} blockName Block name.\n * @param {element?} element Element name.\n *\n * @return {Object} Merge of settings and supports.\n */\nexport function useSettingsForBlockElement(\n\tparentSettings,\n\tblockName,\n\telement\n) {\n\tconst { supportedStyles, supports } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tsupportedStyles: unlock(\n\t\t\t\t\tselect( blocksStore )\n\t\t\t\t).getSupportedStyles( blockName, element ),\n\t\t\t\tsupports:\n\t\t\t\t\tselect( blocksStore ).getBlockType( blockName )?.supports,\n\t\t\t};\n\t\t},\n\t\t[ blockName, element ]\n\t);\n\n\treturn useMemo( () => {\n\t\tconst updatedSettings = { ...parentSettings };\n\n\t\tif ( ! supportedStyles.includes( 'fontSize' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontSizes: {},\n\t\t\t\tcustomFontSize: false,\n\t\t\t};\n\t\t}\n\n\t\tif ( ! supportedStyles.includes( 'fontFamily' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontFamilies: {},\n\t\t\t};\n\t\t}\n\n\t\tupdatedSettings.color = {\n\t\t\t...updatedSettings.color,\n\t\t\ttext:\n\t\t\t\tupdatedSettings.color?.text &&\n\t\t\t\tsupportedStyles.includes( 'color' ),\n\t\t\tbackground:\n\t\t\t\tupdatedSettings.color?.background &&\n\t\t\t\t( supportedStyles.includes( 'background' ) ||\n\t\t\t\t\tsupportedStyles.includes( 'backgroundColor' ) ),\n\t\t\tbutton:\n\t\t\t\tupdatedSettings.color?.button &&\n\t\t\t\tsupportedStyles.includes( 'buttonColor' ),\n\t\t\theading:\n\t\t\t\tupdatedSettings.color?.heading &&\n\t\t\t\tsupportedStyles.includes( 'headingColor' ),\n\t\t\tlink:\n\t\t\t\tupdatedSettings.color?.link &&\n\t\t\t\tsupportedStyles.includes( 'linkColor' ),\n\t\t\tcaption:\n\t\t\t\tupdatedSettings.color?.caption &&\n\t\t\t\tsupportedStyles.includes( 'captionColor' ),\n\t\t};\n\n\t\t// Some blocks can enable background colors but disable gradients.\n\t\tif ( ! supportedStyles.includes( 'background' ) ) {\n\t\t\tupdatedSettings.color.gradients = [];\n\t\t\tupdatedSettings.color.customGradient = false;\n\t\t}\n\n\t\t// If filters are not supported by the block/element, disable duotone.\n\t\tif ( ! supportedStyles.includes( 'filter' ) ) {\n\t\t\tupdatedSettings.color.defaultDuotone = false;\n\t\t\tupdatedSettings.color.customDuotone = false;\n\t\t}\n\n\t\t[\n\t\t\t'lineHeight',\n\t\t\t'fontStyle',\n\t\t\t'fontWeight',\n\t\t\t'letterSpacing',\n\t\t\t'textTransform',\n\t\t\t'textDecoration',\n\t\t\t'writingMode',\n\t\t].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.typography = {\n\t\t\t\t\t...updatedSettings.typography,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t// The column-count style is named text column to reduce confusion with\n\t\t// the columns block and manage expectations from the support.\n\t\t// See: https://github.com/WordPress/gutenberg/pull/33587\n\t\tif ( ! supportedStyles.includes( 'columnCount' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\ttextColumns: false,\n\t\t\t};\n\t\t}\n\n\t\t[ 'contentSize', 'wideSize' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.layout = {\n\t\t\t\t\t...updatedSettings.layout,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t[ 'padding', 'margin', 'blockGap' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst sides = Array.isArray( supports?.spacing?.[ key ] )\n\t\t\t\t? supports?.spacing?.[ key ]\n\t\t\t\t: supports?.spacing?.[ key ]?.sides;\n\t\t\tif ( sides?.length ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: {\n\t\t\t\t\t\t...updatedSettings.spacing?.[ key ],\n\t\t\t\t\t\tsides,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\tif ( ! supportedStyles.includes( 'minHeight' ) ) {\n\t\t\tupdatedSettings.dimensions = {\n\t\t\t\t...updatedSettings.dimensions,\n\t\t\t\tminHeight: false,\n\t\t\t};\n\t\t}\n\n\t\t[ 'radius', 'color', 'style', 'width' ].forEach( ( key ) => {\n\t\t\tif (\n\t\t\t\t! supportedStyles.includes(\n\t\t\t\t\t'border' + key.charAt( 0 ).toUpperCase() + key.slice( 1 )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tupdatedSettings.border = {\n\t\t\t\t\t...updatedSettings.border,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\tupdatedSettings.shadow = supportedStyles.includes( 'shadow' )\n\t\t\t? updatedSettings.shadow\n\t\t\t: false;\n\n\t\treturn updatedSettings;\n\t}, [ parentSettings, supportedStyles, supports ] );\n}\n\nexport function useColorsPerOrigin( settings ) {\n\tconst customColors = settings?.color?.palette?.custom;\n\tconst themeColors = settings?.color?.palette?.theme;\n\tconst defaultColors = settings?.color?.palette?.default;\n\tconst shouldDisplayDefaultColors = settings?.color?.defaultPalette;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeColors && themeColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tcolors: themeColors,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultColors &&\n\t\t\tdefaultColors &&\n\t\t\tdefaultColors.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tcolors: defaultColors,\n\t\t\t} );\n\t\t}\n\t\tif ( customColors && customColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tcolors: customColors,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomColors,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tshouldDisplayDefaultColors,\n\t] );\n}\n\nexport function useGradientsPerOrigin( settings ) {\n\tconst customGradients = settings?.color?.gradients?.custom;\n\tconst themeGradients = settings?.color?.gradients?.theme;\n\tconst defaultGradients = settings?.color?.gradients?.default;\n\tconst shouldDisplayDefaultGradients = settings?.color?.defaultGradients;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeGradients && themeGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tgradients: themeGradients,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultGradients &&\n\t\t\tdefaultGradients &&\n\t\t\tdefaultGradients.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tgradients: defaultGradients,\n\t\t\t} );\n\t\t}\n\t\tif ( customGradients && customGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tgradients: customGradients,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomGradients,\n\t\tthemeGradients,\n\t\tdefaultGradients,\n\t\tshouldDisplayDefaultGradients,\n\t] );\n}\n"]}
@@ -117,6 +117,22 @@ function useHasTextColumnsControl(settings) {
117
117
  return settings?.typography?.textColumns;
118
118
  }
119
119
 
120
+ function getUniqueFontSizesBySlug(settings) {
121
+ var _settings$typography$2, _fontSizesPerOrigin$c2, _fontSizesPerOrigin$t2, _fontSizesPerOrigin$d2;
122
+
123
+ const fontSizesPerOrigin = (_settings$typography$2 = settings?.typography?.fontSizes) !== null && _settings$typography$2 !== void 0 ? _settings$typography$2 : {};
124
+ const fontSizes = [].concat((_fontSizesPerOrigin$c2 = fontSizesPerOrigin?.custom) !== null && _fontSizesPerOrigin$c2 !== void 0 ? _fontSizesPerOrigin$c2 : []).concat((_fontSizesPerOrigin$t2 = fontSizesPerOrigin?.theme) !== null && _fontSizesPerOrigin$t2 !== void 0 ? _fontSizesPerOrigin$t2 : []).concat((_fontSizesPerOrigin$d2 = fontSizesPerOrigin.default) !== null && _fontSizesPerOrigin$d2 !== void 0 ? _fontSizesPerOrigin$d2 : []);
125
+ return fontSizes.reduce((acc, currentSize) => {
126
+ if (!acc.some(({
127
+ slug
128
+ }) => slug === currentSize.slug)) {
129
+ acc.push(currentSize);
130
+ }
131
+
132
+ return acc;
133
+ }, []);
134
+ }
135
+
120
136
  function TypographyToolsPanel({
121
137
  resetAllFilter,
122
138
  onChange,
@@ -157,7 +173,7 @@ function TypographyPanel({
157
173
  panelId,
158
174
  defaultControls = DEFAULT_CONTROLS
159
175
  }) {
160
- var _fontFamiliesPerOrigi4, _fontFamiliesPerOrigi5, _fontFamiliesPerOrigi6, _settings$typography$2, _fontSizesPerOrigin$c2, _fontSizesPerOrigin$t2, _fontSizesPerOrigin$d2;
176
+ var _fontFamiliesPerOrigi4, _fontFamiliesPerOrigi5, _fontFamiliesPerOrigi6;
161
177
 
162
178
  const decodeValue = rawValue => (0, _utils.getValueFromVariable)({
163
179
  settings
@@ -183,8 +199,7 @@ function TypographyPanel({
183
199
 
184
200
  const hasFontSizeEnabled = useHasFontSizeControl(settings);
185
201
  const disableCustomFontSizes = !settings?.typography?.customFontSize;
186
- const fontSizesPerOrigin = (_settings$typography$2 = settings?.typography?.fontSizes) !== null && _settings$typography$2 !== void 0 ? _settings$typography$2 : {};
187
- const fontSizes = [].concat((_fontSizesPerOrigin$c2 = fontSizesPerOrigin?.custom) !== null && _fontSizesPerOrigin$c2 !== void 0 ? _fontSizesPerOrigin$c2 : []).concat((_fontSizesPerOrigin$t2 = fontSizesPerOrigin?.theme) !== null && _fontSizesPerOrigin$t2 !== void 0 ? _fontSizesPerOrigin$t2 : []).concat((_fontSizesPerOrigin$d2 = fontSizesPerOrigin.default) !== null && _fontSizesPerOrigin$d2 !== void 0 ? _fontSizesPerOrigin$d2 : []);
202
+ const fontSizes = getUniqueFontSizesBySlug(settings);
188
203
  const fontSize = decodeValue(inheritedValue?.typography?.fontSize);
189
204
 
190
205
  const setFontSize = (newValue, metadata) => {