@wordpress/block-editor 12.12.0 → 12.12.2-next.f8d8eceb.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 (282) hide show
  1. package/CHANGELOG.md +12 -10
  2. package/README.md +35 -3
  3. package/build/components/block-alignment-control/use-available-alignments.js +30 -28
  4. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  5. package/build/components/block-list/block.native.js +4 -4
  6. package/build/components/block-list/block.native.js.map +1 -1
  7. package/build/components/block-list/layout.js +2 -3
  8. package/build/components/block-list/layout.js.map +1 -1
  9. package/build/components/border-radius-control/index.js +3 -2
  10. package/build/components/border-radius-control/index.js.map +1 -1
  11. package/build/components/color-palette/with-color-context.js +6 -6
  12. package/build/components/color-palette/with-color-context.js.map +1 -1
  13. package/build/components/colors/with-colors.js +2 -8
  14. package/build/components/colors/with-colors.js.map +1 -1
  15. package/build/components/colors-gradients/control.js +6 -7
  16. package/build/components/colors-gradients/control.js.map +1 -1
  17. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +5 -13
  18. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  19. package/build/components/font-family/index.js +2 -3
  20. package/build/components/font-family/index.js.map +1 -1
  21. package/build/components/font-sizes/font-size-picker.js +3 -5
  22. package/build/components/font-sizes/font-size-picker.js.map +1 -1
  23. package/build/components/font-sizes/with-font-sizes.js +3 -4
  24. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  25. package/build/components/global-styles/filters-panel.js +7 -8
  26. package/build/components/global-styles/filters-panel.js.map +1 -1
  27. package/build/components/global-styles/image-settings-panel.js +2 -2
  28. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  29. package/build/components/global-styles/typography-panel.js +1 -1
  30. package/build/components/global-styles/typography-panel.js.map +1 -1
  31. package/build/components/gradients/use-gradient.js +2 -5
  32. package/build/components/gradients/use-gradient.js.map +1 -1
  33. package/build/components/height-control/index.js +3 -3
  34. package/build/components/height-control/index.js.map +1 -1
  35. package/build/components/index.js +9 -2
  36. package/build/components/index.js.map +1 -1
  37. package/build/components/index.native.js +9 -2
  38. package/build/components/index.native.js.map +1 -1
  39. package/build/components/inner-blocks/index.js +2 -2
  40. package/build/components/inner-blocks/index.js.map +1 -1
  41. package/build/components/letter-spacing-control/index.js +3 -3
  42. package/build/components/letter-spacing-control/index.js.map +1 -1
  43. package/build/components/link-control/search-item.js +11 -0
  44. package/build/components/link-control/search-item.js.map +1 -1
  45. package/build/components/link-control/search-results.js +2 -1
  46. package/build/components/link-control/search-results.js.map +1 -1
  47. package/build/components/link-control/use-search-handler.js +10 -5
  48. package/build/components/link-control/use-search-handler.js.map +1 -1
  49. package/build/components/rich-text/index.js +1 -1
  50. package/build/components/rich-text/index.js.map +1 -1
  51. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +6 -3
  52. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  53. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -3
  54. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  55. package/build/components/unit-control/index.js +3 -3
  56. package/build/components/unit-control/index.js.map +1 -1
  57. package/build/components/use-block-commands/index.js +6 -1
  58. package/build/components/use-block-commands/index.js.map +1 -1
  59. package/build/components/use-settings/index.js +212 -0
  60. package/build/components/use-settings/index.js.map +1 -0
  61. package/build/hooks/align.js +51 -35
  62. package/build/hooks/align.js.map +1 -1
  63. package/build/hooks/anchor.js +37 -32
  64. package/build/hooks/anchor.js.map +1 -1
  65. package/build/hooks/background.js +4 -4
  66. package/build/hooks/background.js.map +1 -1
  67. package/build/hooks/color.js +2 -4
  68. package/build/hooks/color.js.map +1 -1
  69. package/build/hooks/duotone.js +5 -7
  70. package/build/hooks/duotone.js.map +1 -1
  71. package/build/hooks/font-size.js +4 -4
  72. package/build/hooks/font-size.js.map +1 -1
  73. package/build/hooks/layout.js +10 -11
  74. package/build/hooks/layout.js.map +1 -1
  75. package/build/hooks/line-height.js +3 -3
  76. package/build/hooks/line-height.js.map +1 -1
  77. package/build/hooks/position.js +2 -3
  78. package/build/hooks/position.js.map +1 -1
  79. package/build/hooks/use-color-props.js +3 -11
  80. package/build/hooks/use-color-props.js.map +1 -1
  81. package/build/hooks/utils.js +1 -42
  82. package/build/hooks/utils.js.map +1 -1
  83. package/build/layouts/constrained.js +3 -3
  84. package/build/layouts/constrained.js.map +1 -1
  85. package/build/utils/object.js +4 -1
  86. package/build/utils/object.js.map +1 -1
  87. package/build/utils/transform-styles/index.js +19 -24
  88. package/build/utils/transform-styles/index.js.map +1 -1
  89. package/build-module/components/block-alignment-control/use-available-alignments.js +30 -28
  90. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  91. package/build-module/components/block-list/block.native.js +4 -4
  92. package/build-module/components/block-list/block.native.js.map +1 -1
  93. package/build-module/components/block-list/layout.js +2 -2
  94. package/build-module/components/block-list/layout.js.map +1 -1
  95. package/build-module/components/border-radius-control/index.js +3 -2
  96. package/build-module/components/border-radius-control/index.js.map +1 -1
  97. package/build-module/components/color-palette/with-color-context.js +6 -5
  98. package/build-module/components/color-palette/with-color-context.js.map +1 -1
  99. package/build-module/components/colors/with-colors.js +2 -7
  100. package/build-module/components/colors/with-colors.js.map +1 -1
  101. package/build-module/components/colors-gradients/control.js +6 -7
  102. package/build-module/components/colors-gradients/control.js.map +1 -1
  103. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +5 -12
  104. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  105. package/build-module/components/font-family/index.js +2 -2
  106. package/build-module/components/font-family/index.js.map +1 -1
  107. package/build-module/components/font-sizes/font-size-picker.js +3 -4
  108. package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
  109. package/build-module/components/font-sizes/with-font-sizes.js +3 -3
  110. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  111. package/build-module/components/global-styles/filters-panel.js +7 -8
  112. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  113. package/build-module/components/global-styles/image-settings-panel.js +2 -2
  114. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  115. package/build-module/components/global-styles/typography-panel.js +1 -1
  116. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  117. package/build-module/components/gradients/use-gradient.js +2 -4
  118. package/build-module/components/gradients/use-gradient.js.map +1 -1
  119. package/build-module/components/height-control/index.js +3 -2
  120. package/build-module/components/height-control/index.js.map +1 -1
  121. package/build-module/components/index.js +1 -1
  122. package/build-module/components/index.js.map +1 -1
  123. package/build-module/components/index.native.js +1 -1
  124. package/build-module/components/index.native.js.map +1 -1
  125. package/build-module/components/inner-blocks/index.js +2 -2
  126. package/build-module/components/inner-blocks/index.js.map +1 -1
  127. package/build-module/components/letter-spacing-control/index.js +3 -2
  128. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  129. package/build-module/components/link-control/search-item.js +12 -1
  130. package/build-module/components/link-control/search-item.js.map +1 -1
  131. package/build-module/components/link-control/search-results.js +2 -1
  132. package/build-module/components/link-control/search-results.js.map +1 -1
  133. package/build-module/components/link-control/use-search-handler.js +10 -5
  134. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  135. package/build-module/components/rich-text/index.js +1 -1
  136. package/build-module/components/rich-text/index.js.map +1 -1
  137. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +6 -2
  138. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  139. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -2
  140. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  141. package/build-module/components/unit-control/index.js +3 -2
  142. package/build-module/components/unit-control/index.js.map +1 -1
  143. package/build-module/components/use-block-commands/index.js +5 -1
  144. package/build-module/components/use-block-commands/index.js.map +1 -1
  145. package/build-module/components/use-settings/index.js +203 -0
  146. package/build-module/components/use-settings/index.js.map +1 -0
  147. package/build-module/hooks/align.js +51 -35
  148. package/build-module/hooks/align.js.map +1 -1
  149. package/build-module/hooks/anchor.js +37 -32
  150. package/build-module/hooks/anchor.js.map +1 -1
  151. package/build-module/hooks/background.js +4 -4
  152. package/build-module/hooks/background.js.map +1 -1
  153. package/build-module/hooks/color.js +2 -4
  154. package/build-module/hooks/color.js.map +1 -1
  155. package/build-module/hooks/duotone.js +6 -8
  156. package/build-module/hooks/duotone.js.map +1 -1
  157. package/build-module/hooks/font-size.js +4 -4
  158. package/build-module/hooks/font-size.js.map +1 -1
  159. package/build-module/hooks/layout.js +10 -11
  160. package/build-module/hooks/layout.js.map +1 -1
  161. package/build-module/hooks/line-height.js +3 -3
  162. package/build-module/hooks/line-height.js.map +1 -1
  163. package/build-module/hooks/position.js +2 -3
  164. package/build-module/hooks/position.js.map +1 -1
  165. package/build-module/hooks/use-color-props.js +3 -11
  166. package/build-module/hooks/use-color-props.js.map +1 -1
  167. package/build-module/hooks/utils.js +2 -43
  168. package/build-module/hooks/utils.js.map +1 -1
  169. package/build-module/layouts/constrained.js +3 -2
  170. package/build-module/layouts/constrained.js.map +1 -1
  171. package/build-module/utils/object.js +3 -1
  172. package/build-module/utils/object.js.map +1 -1
  173. package/build-module/utils/transform-styles/index.js +20 -24
  174. package/build-module/utils/transform-styles/index.js.map +1 -1
  175. package/build-style/style-rtl.css +13 -6
  176. package/build-style/style.css +13 -6
  177. package/package.json +36 -34
  178. package/src/components/block-alignment-control/use-available-alignments.js +49 -34
  179. package/src/components/block-list/block.native.js +4 -4
  180. package/src/components/block-list/layout.js +2 -2
  181. package/src/components/block-styles/style.scss +1 -1
  182. package/src/components/border-radius-control/index.js +3 -2
  183. package/src/components/color-palette/with-color-context.js +9 -9
  184. package/src/components/colors/with-colors.js +6 -7
  185. package/src/components/colors-gradients/control.js +10 -7
  186. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +29 -15
  187. package/src/components/font-family/index.js +2 -2
  188. package/src/components/font-sizes/font-size-picker.js +6 -4
  189. package/src/components/font-sizes/with-font-sizes.js +3 -5
  190. package/src/components/global-styles/filters-panel.js +9 -15
  191. package/src/components/global-styles/image-settings-panel.js +2 -2
  192. package/src/components/global-styles/typography-panel.js +1 -1
  193. package/src/components/gradients/use-gradient.js +10 -4
  194. package/src/components/height-control/index.js +3 -2
  195. package/src/components/index.js +1 -1
  196. package/src/components/index.native.js +1 -1
  197. package/src/components/inner-blocks/index.js +2 -2
  198. package/src/components/inserter/style.scss +9 -1
  199. package/src/components/letter-spacing-control/index.js +3 -2
  200. package/src/components/link-control/search-item.js +14 -0
  201. package/src/components/link-control/search-results.js +1 -0
  202. package/src/components/link-control/use-search-handler.js +22 -15
  203. package/src/components/rich-text/index.js +1 -1
  204. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +7 -5
  205. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -2
  206. package/src/components/unit-control/index.js +3 -8
  207. package/src/components/use-block-commands/index.js +2 -1
  208. package/src/components/{use-setting → use-settings}/README.md +9 -10
  209. package/src/components/use-settings/index.js +272 -0
  210. package/src/components/{use-setting → use-settings}/test/index.js +47 -5
  211. package/src/hooks/align.js +79 -54
  212. package/src/hooks/anchor.js +75 -65
  213. package/src/hooks/background.js +7 -9
  214. package/src/hooks/color.js +7 -4
  215. package/src/hooks/duotone.js +18 -14
  216. package/src/hooks/font-size.js +4 -4
  217. package/src/hooks/layout.js +11 -11
  218. package/src/hooks/line-height.js +3 -3
  219. package/src/hooks/position.js +5 -3
  220. package/src/hooks/use-color-props.js +21 -14
  221. package/src/hooks/utils.js +88 -43
  222. package/src/layouts/constrained.js +3 -8
  223. package/src/utils/object.js +4 -1
  224. package/src/utils/test/__snapshots__/transform-styles.js.snap +103 -0
  225. package/src/utils/test/transform-styles.js +217 -0
  226. package/src/utils/transform-styles/index.js +25 -25
  227. package/build/components/use-setting/index.js +0 -161
  228. package/build/components/use-setting/index.js.map +0 -1
  229. package/build/utils/transform-styles/ast/index.js +0 -21
  230. package/build/utils/transform-styles/ast/index.js.map +0 -1
  231. package/build/utils/transform-styles/ast/parse.js +0 -660
  232. package/build/utils/transform-styles/ast/parse.js.map +0 -1
  233. package/build/utils/transform-styles/ast/stringify/compiler.js +0 -52
  234. package/build/utils/transform-styles/ast/stringify/compiler.js.map +0 -1
  235. package/build/utils/transform-styles/ast/stringify/compress.js +0 -178
  236. package/build/utils/transform-styles/ast/stringify/compress.js.map +0 -1
  237. package/build/utils/transform-styles/ast/stringify/identity.js +0 -207
  238. package/build/utils/transform-styles/ast/stringify/identity.js.map +0 -1
  239. package/build/utils/transform-styles/ast/stringify/index.js +0 -36
  240. package/build/utils/transform-styles/ast/stringify/index.js.map +0 -1
  241. package/build/utils/transform-styles/transforms/url-rewrite.js +0 -130
  242. package/build/utils/transform-styles/transforms/url-rewrite.js.map +0 -1
  243. package/build/utils/transform-styles/transforms/wrap.js +0 -59
  244. package/build/utils/transform-styles/transforms/wrap.js.map +0 -1
  245. package/build/utils/transform-styles/traverse.js +0 -37
  246. package/build/utils/transform-styles/traverse.js.map +0 -1
  247. package/build-module/components/use-setting/index.js +0 -154
  248. package/build-module/components/use-setting/index.js.map +0 -1
  249. package/build-module/utils/transform-styles/ast/index.js +0 -6
  250. package/build-module/utils/transform-styles/ast/index.js.map +0 -1
  251. package/build-module/utils/transform-styles/ast/parse.js +0 -654
  252. package/build-module/utils/transform-styles/ast/parse.js.map +0 -1
  253. package/build-module/utils/transform-styles/ast/stringify/compiler.js +0 -49
  254. package/build-module/utils/transform-styles/ast/stringify/compiler.js.map +0 -1
  255. package/build-module/utils/transform-styles/ast/stringify/compress.js +0 -176
  256. package/build-module/utils/transform-styles/ast/stringify/compress.js.map +0 -1
  257. package/build-module/utils/transform-styles/ast/stringify/identity.js +0 -206
  258. package/build-module/utils/transform-styles/ast/stringify/identity.js.map +0 -1
  259. package/build-module/utils/transform-styles/ast/stringify/index.js +0 -29
  260. package/build-module/utils/transform-styles/ast/stringify/index.js.map +0 -1
  261. package/build-module/utils/transform-styles/transforms/url-rewrite.js +0 -123
  262. package/build-module/utils/transform-styles/transforms/url-rewrite.js.map +0 -1
  263. package/build-module/utils/transform-styles/transforms/wrap.js +0 -52
  264. package/build-module/utils/transform-styles/transforms/wrap.js.map +0 -1
  265. package/build-module/utils/transform-styles/traverse.js +0 -28
  266. package/build-module/utils/transform-styles/traverse.js.map +0 -1
  267. package/src/components/use-setting/index.js +0 -218
  268. package/src/utils/transform-styles/ast/index.js +0 -5
  269. package/src/utils/transform-styles/ast/parse.js +0 -732
  270. package/src/utils/transform-styles/ast/stringify/compiler.js +0 -50
  271. package/src/utils/transform-styles/ast/stringify/compress.js +0 -238
  272. package/src/utils/transform-styles/ast/stringify/identity.js +0 -286
  273. package/src/utils/transform-styles/ast/stringify/index.js +0 -32
  274. package/src/utils/transform-styles/test/__snapshots__/traverse.js.snap +0 -7
  275. package/src/utils/transform-styles/test/traverse.js +0 -24
  276. package/src/utils/transform-styles/transforms/test/__snapshots__/url-rewrite.js.snap +0 -25
  277. package/src/utils/transform-styles/transforms/test/__snapshots__/wrap.js.snap +0 -64
  278. package/src/utils/transform-styles/transforms/test/url-rewrite.js +0 -39
  279. package/src/utils/transform-styles/transforms/test/wrap.js +0 -95
  280. package/src/utils/transform-styles/transforms/url-rewrite.js +0 -139
  281. package/src/utils/transform-styles/transforms/wrap.js +0 -56
  282. package/src/utils/transform-styles/traverse.js +0 -32
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","extend","namesPlugin","getBlockSupport","getBlockType","hasBlockSupport","createHigherOrderComponent","useInstanceId","addFilter","useMemo","useEffect","useDispatch","BlockControls","InspectorControls","__experimentalDuotoneControl","DuotoneControl","useSetting","getDuotoneFilter","getDuotoneStylesheet","getDuotoneUnsetStylesheet","getBlockCSSSelector","scopeSelector","useBlockSettings","default","StylesFiltersPanel","useBlockEditingMode","__unstableUseBlockElement","useBlockElement","store","blockEditorStore","unlock","EMPTY_ARRAY","isSafari","window","navigator","userAgent","includes","useMultiOriginPresets","presetSetting","defaultSetting","disableDefault","userPresets","themePresets","defaultPresets","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","colors","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanel","attributes","setAttributes","name","style","duotoneStyle","color","settings","colorPalette","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","createElement","Fragment","group","value","filter","onChange","newDuotone","newStyle","__experimentalShareWithChildBlocks","maybePreset","addDuotoneAttributes","Object","assign","type","withDuotoneControls","BlockEdit","props","hasDuotoneSupport","blockEditingMode","DuotoneStyles","clientId","id","filterId","selector","duotoneSelector","attribute","duotoneAttr","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","setStyleOverride","deleteStyleOverride","blockElement","css","__unstableType","assets","display","offsetHeight","withDuotoneStyles","BlockListBlock","blockType","duotoneSupport","experimentalDuotone","rootSelector","fallback","filterClass","shouldRender","className"],"sources":["@wordpress/block-editor/src/hooks/duotone.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalDuotoneControl as DuotoneControl,\n\tuseSetting,\n} from '../components';\nimport {\n\tgetDuotoneFilter,\n\tgetDuotoneStylesheet,\n\tgetDuotoneUnsetStylesheet,\n} from '../components/duotone/utils';\nimport { getBlockCSSSelector } from '../components/global-styles/get-block-css-selector';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockSettings } from './utils';\nimport { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nconst EMPTY_ARRAY = [];\n\n// Safari does not always update the duotone filter when the duotone colors\n// are changed. This browser check is later used to force a re-render of the block\n// element to ensure the duotone filter is updated. The check is included at the\n// root of this file as it only needs to be run once per page load.\nconst isSafari =\n\twindow?.navigator.userAgent &&\n\twindow.navigator.userAgent.includes( 'Safari' ) &&\n\t! window.navigator.userAgent.includes( 'Chrome' ) &&\n\t! window.navigator.userAgent.includes( 'Chromium' );\n\nextend( [ namesPlugin ] );\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst disableDefault = ! useSetting( defaultSetting );\n\tconst userPresets =\n\t\tuseSetting( `${ presetSetting }.custom` ) || EMPTY_ARRAY;\n\tconst themePresets =\n\t\tuseSetting( `${ presetSetting }.theme` ) || EMPTY_ARRAY;\n\tconst defaultPresets =\n\t\tuseSetting( `${ presetSetting }.default` ) || EMPTY_ARRAY;\n\treturn useMemo(\n\t\t() => [\n\t\t\t...userPresets,\n\t\t\t...themePresets,\n\t\t\t...( disableDefault ? EMPTY_ARRAY : defaultPresets ),\n\t\t],\n\t\t[ disableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function getColorsFromDuotonePreset( duotone, duotonePalette ) {\n\tif ( ! duotone ) {\n\t\treturn;\n\t}\n\tconst preset = duotonePalette?.find( ( { slug } ) => {\n\t\treturn duotone === `var:preset|duotone|${ slug }`;\n\t} );\n\n\treturn preset ? preset.colors : undefined;\n}\n\nexport function getDuotonePresetFromColors( colors, duotonePalette ) {\n\tif ( ! colors || ! Array.isArray( colors ) ) {\n\t\treturn;\n\t}\n\n\tconst preset = duotonePalette?.find( ( duotonePreset ) => {\n\t\treturn duotonePreset?.colors?.every(\n\t\t\t( val, index ) => val === colors[ index ]\n\t\t);\n\t} );\n\n\treturn preset ? `var:preset|duotone|${ preset.slug }` : undefined;\n}\n\nfunction DuotonePanel( { attributes, setAttributes, name } ) {\n\tconst style = attributes?.style;\n\tconst duotoneStyle = style?.color?.duotone;\n\tconst settings = useBlockSettings( name );\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.palette',\n\t\tdefaultSetting: 'color.defaultPalette',\n\t} );\n\tconst disableCustomColors = ! useSetting( 'color.custom' );\n\tconst disableCustomDuotone =\n\t\t! useSetting( 'color.customDuotone' ) ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tif ( duotonePalette?.length === 0 && disableCustomDuotone ) {\n\t\treturn null;\n\t}\n\n\tconst duotonePresetOrColors = ! Array.isArray( duotoneStyle )\n\t\t? getColorsFromDuotonePreset( duotoneStyle, duotonePalette )\n\t\t: duotoneStyle;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"filter\">\n\t\t\t\t<StylesFiltersPanel\n\t\t\t\t\tvalue={ { filter: { duotone: duotonePresetOrColors } } }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...newDuotone?.filter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t<DuotoneControl\n\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\tdisableCustomDuotone={ disableCustomDuotone }\n\t\t\t\t\tdisableCustomColors={ disableCustomColors }\n\t\t\t\t\tvalue={ duotonePresetOrColors }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst maybePreset = getDuotonePresetFromColors(\n\t\t\t\t\t\t\tnewDuotone,\n\t\t\t\t\t\t\tduotonePalette\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...style?.color,\n\t\t\t\t\t\t\t\tduotone: maybePreset ?? newDuotone, // use preset or fallback to custom colors.\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include\n * the `duotone` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addDuotoneAttributes( settings ) {\n\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\tif ( ! hasBlockSupport( settings, 'filter.duotone' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default\n\t// values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include toolbar controls for duotone if the\n * block supports duotone.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\t\tconst hasDuotoneSupport = hasBlockSupport(\n\t\t\tprops.name,\n\t\t\t'filter.duotone'\n\t\t);\n\n\t\tconst blockEditingMode = useBlockEditingMode();\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ hasDuotoneSupport && blockEditingMode === 'default' && (\n\t\t\t\t\t<DuotonePanel { ...props } />\n\t\t\t\t) }\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneControls'\n);\n\nfunction DuotoneStyles( {\n\tclientId,\n\tid: filterId,\n\tselector: duotoneSelector,\n\tattribute: duotoneAttr,\n} ) {\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\n\t// Possible values for duotone attribute:\n\t// 1. Array of colors - e.g. ['#000000', '#ffffff'].\n\t// 2. Variable for an existing Duotone preset - e.g. 'var:preset|duotone|green-blue' or 'var(--wp--preset--duotone--green-blue)''\n\t// 3. A CSS string - e.g. 'unset' to remove globally applied duotone.\n\tconst isCustom = Array.isArray( duotoneAttr );\n\tconst duotonePreset = isCustom\n\t\t? undefined\n\t\t: getColorsFromDuotonePreset( duotoneAttr, duotonePalette );\n\tconst isPreset = typeof duotoneAttr === 'string' && duotonePreset;\n\tconst isCSS = typeof duotoneAttr === 'string' && ! isPreset;\n\n\t// Match the structure of WP_Duotone_Gutenberg::render_duotone_support() in PHP.\n\tlet colors = null;\n\tif ( isPreset ) {\n\t\t// Array of colors.\n\t\tcolors = duotonePreset;\n\t} else if ( isCSS ) {\n\t\t// CSS filter property string (e.g. 'unset').\n\t\tcolors = duotoneAttr;\n\t} else if ( isCustom ) {\n\t\t// Array of colors.\n\t\tcolors = duotoneAttr;\n\t}\n\n\t// Build the CSS selectors to which the filter will be applied.\n\tconst selectors = duotoneSelector.split( ',' );\n\n\tconst selectorsScoped = selectors.map( ( selectorPart ) => {\n\t\t// Extra .editor-styles-wrapper specificity is needed in the editor\n\t\t// since we're not using inline styles to apply the filter. We need to\n\t\t// override duotone applied by global styles and theme.json.\n\n\t\t// Assuming the selector part is a subclass selector (not a tag name)\n\t\t// so we can prepend the filter id class. If we want to support elements\n\t\t// such as `img` or namespaces, we'll need to add a case for that here.\n\t\treturn `.${ filterId }${ selectorPart.trim() }`;\n\t} );\n\n\tconst selector = selectorsScoped.join( ', ' );\n\n\tconst isValidFilter = Array.isArray( colors ) || colors === 'unset';\n\n\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tconst blockElement = useBlockElement( clientId );\n\n\tuseEffect( () => {\n\t\tif ( ! isValidFilter ) return;\n\n\t\tsetStyleOverride( filterId, {\n\t\t\tcss:\n\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t? getDuotoneStylesheet( selector, filterId )\n\t\t\t\t\t: getDuotoneUnsetStylesheet( selector ),\n\t\t\t__unstableType: 'presets',\n\t\t} );\n\t\tsetStyleOverride( `duotone-${ filterId }`, {\n\t\t\tassets:\n\t\t\t\tcolors !== 'unset' ? getDuotoneFilter( filterId, colors ) : '',\n\t\t\t__unstableType: 'svgs',\n\t\t} );\n\n\t\t// Safari does not always update the duotone filter when the duotone colors\n\t\t// are changed. When using Safari, force the block element to be repainted by\n\t\t// the browser to ensure any changes are reflected visually. This logic matches\n\t\t// that used on the site frontend in `block-supports/duotone.php`.\n\t\tif ( blockElement && isSafari ) {\n\t\t\tconst display = blockElement.style.display;\n\t\t\t// Switch to `inline-block` to force a repaint. In the editor, `inline-block`\n\t\t\t// is used instead of `none` to ensure that scroll position is not affected,\n\t\t\t// as `none` results in the editor scrolling to the top of the block.\n\t\t\tblockElement.style.display = 'inline-block';\n\t\t\t// Simply accessing el.offsetHeight flushes layout and style\n\t\t\t// changes in WebKit without having to wait for setTimeout.\n\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\tblockElement.offsetHeight;\n\t\t\tblockElement.style.display = display;\n\t\t}\n\n\t\treturn () => {\n\t\t\tdeleteStyleOverride( filterId );\n\t\t\tdeleteStyleOverride( `duotone-${ filterId }` );\n\t\t};\n\t}, [\n\t\tisValidFilter,\n\t\tblockElement,\n\t\tcolors,\n\t\tselector,\n\t\tfilterId,\n\t\tsetStyleOverride,\n\t\tdeleteStyleOverride,\n\t] );\n\n\treturn null;\n}\n\n/**\n * Override the default block element to include duotone styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst id = useInstanceId( BlockListBlock );\n\n\t\tconst selector = useMemo( () => {\n\t\t\tconst blockType = getBlockType( props.name );\n\n\t\t\tif ( blockType ) {\n\t\t\t\t// Backwards compatibility for `supports.color.__experimentalDuotone`\n\t\t\t\t// is provided via the `block_type_metadata_settings` filter. If\n\t\t\t\t// `supports.filter.duotone` has not been set and the\n\t\t\t\t// experimental property has been, the experimental property\n\t\t\t\t// value is copied into `supports.filter.duotone`.\n\t\t\t\tconst duotoneSupport = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'filter.duotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( ! duotoneSupport ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// If the experimental duotone support was set, that value is\n\t\t\t\t// to be treated as a selector and requires scoping.\n\t\t\t\tconst experimentalDuotone = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'color.__experimentalDuotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( experimentalDuotone ) {\n\t\t\t\t\tconst rootSelector = getBlockCSSSelector( blockType );\n\t\t\t\t\treturn typeof experimentalDuotone === 'string'\n\t\t\t\t\t\t? scopeSelector( rootSelector, experimentalDuotone )\n\t\t\t\t\t\t: rootSelector;\n\t\t\t\t}\n\n\t\t\t\t// Regular filter.duotone support uses filter.duotone selectors with fallbacks.\n\t\t\t\treturn getBlockCSSSelector( blockType, 'filter.duotone', {\n\t\t\t\t\tfallback: true,\n\t\t\t\t} );\n\t\t\t}\n\t\t}, [ props.name ] );\n\n\t\tconst attribute = props?.attributes?.style?.color?.duotone;\n\n\t\tconst filterClass = `wp-duotone-${ id }`;\n\n\t\tconst shouldRender = selector && attribute;\n\n\t\tconst className = shouldRender\n\t\t\t? classnames( props?.className, filterClass )\n\t\t\t: props?.className;\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRender && (\n\t\t\t\t\t<DuotoneStyles\n\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t\tid={ filterClass }\n\t\t\t\t\t\tselector={ selector }\n\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/duotone/add-attributes',\n\taddDuotoneAttributes\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/duotone/with-editor-controls',\n\twithDuotoneControls\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/duotone/with-styles',\n\twithDuotoneStyles\n);\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","extend","namesPlugin","getBlockSupport","getBlockType","hasBlockSupport","createHigherOrderComponent","useInstanceId","addFilter","useMemo","useEffect","useDispatch","BlockControls","InspectorControls","__experimentalDuotoneControl","DuotoneControl","useSettings","getDuotoneFilter","getDuotoneStylesheet","getDuotoneUnsetStylesheet","getBlockCSSSelector","scopeSelector","useBlockSettings","default","StylesFiltersPanel","useBlockEditingMode","__unstableUseBlockElement","useBlockElement","store","blockEditorStore","unlock","EMPTY_ARRAY","isSafari","window","navigator","userAgent","includes","useMultiOriginPresets","presetSetting","defaultSetting","enableDefault","userPresets","themePresets","defaultPresets","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","colors","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanel","attributes","setAttributes","name","style","duotoneStyle","color","settings","colorPalette","enableCustomColors","enableCustomDuotone","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","createElement","Fragment","group","value","filter","onChange","newDuotone","newStyle","__experimentalShareWithChildBlocks","maybePreset","addDuotoneAttributes","Object","assign","type","withDuotoneControls","BlockEdit","props","hasDuotoneSupport","blockEditingMode","DuotoneStyles","clientId","id","filterId","selector","duotoneSelector","attribute","duotoneAttr","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","setStyleOverride","deleteStyleOverride","blockElement","css","__unstableType","assets","display","offsetHeight","withDuotoneStyles","BlockListBlock","blockType","duotoneSupport","experimentalDuotone","rootSelector","fallback","filterClass","shouldRender","className"],"sources":["@wordpress/block-editor/src/hooks/duotone.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalDuotoneControl as DuotoneControl,\n\tuseSettings,\n} from '../components';\nimport {\n\tgetDuotoneFilter,\n\tgetDuotoneStylesheet,\n\tgetDuotoneUnsetStylesheet,\n} from '../components/duotone/utils';\nimport { getBlockCSSSelector } from '../components/global-styles/get-block-css-selector';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockSettings } from './utils';\nimport { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nconst EMPTY_ARRAY = [];\n\n// Safari does not always update the duotone filter when the duotone colors\n// are changed. This browser check is later used to force a re-render of the block\n// element to ensure the duotone filter is updated. The check is included at the\n// root of this file as it only needs to be run once per page load.\nconst isSafari =\n\twindow?.navigator.userAgent &&\n\twindow.navigator.userAgent.includes( 'Safari' ) &&\n\t! window.navigator.userAgent.includes( 'Chrome' ) &&\n\t! window.navigator.userAgent.includes( 'Chromium' );\n\nextend( [ namesPlugin ] );\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst [ enableDefault, userPresets, themePresets, defaultPresets ] =\n\t\tuseSettings(\n\t\t\tdefaultSetting,\n\t\t\t`${ presetSetting }.custom`,\n\t\t\t`${ presetSetting }.theme`,\n\t\t\t`${ presetSetting }.default`\n\t\t);\n\treturn useMemo(\n\t\t() => [\n\t\t\t...( userPresets || EMPTY_ARRAY ),\n\t\t\t...( themePresets || EMPTY_ARRAY ),\n\t\t\t...( ( enableDefault && defaultPresets ) || EMPTY_ARRAY ),\n\t\t],\n\t\t[ enableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function getColorsFromDuotonePreset( duotone, duotonePalette ) {\n\tif ( ! duotone ) {\n\t\treturn;\n\t}\n\tconst preset = duotonePalette?.find( ( { slug } ) => {\n\t\treturn duotone === `var:preset|duotone|${ slug }`;\n\t} );\n\n\treturn preset ? preset.colors : undefined;\n}\n\nexport function getDuotonePresetFromColors( colors, duotonePalette ) {\n\tif ( ! colors || ! Array.isArray( colors ) ) {\n\t\treturn;\n\t}\n\n\tconst preset = duotonePalette?.find( ( duotonePreset ) => {\n\t\treturn duotonePreset?.colors?.every(\n\t\t\t( val, index ) => val === colors[ index ]\n\t\t);\n\t} );\n\n\treturn preset ? `var:preset|duotone|${ preset.slug }` : undefined;\n}\n\nfunction DuotonePanel( { attributes, setAttributes, name } ) {\n\tconst style = attributes?.style;\n\tconst duotoneStyle = style?.color?.duotone;\n\tconst settings = useBlockSettings( name );\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.palette',\n\t\tdefaultSetting: 'color.defaultPalette',\n\t} );\n\tconst [ enableCustomColors, enableCustomDuotone ] = useSettings(\n\t\t'color.custom',\n\t\t'color.customDuotone'\n\t);\n\tconst disableCustomColors = ! enableCustomColors;\n\tconst disableCustomDuotone =\n\t\t! enableCustomDuotone ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tif ( duotonePalette?.length === 0 && disableCustomDuotone ) {\n\t\treturn null;\n\t}\n\n\tconst duotonePresetOrColors = ! Array.isArray( duotoneStyle )\n\t\t? getColorsFromDuotonePreset( duotoneStyle, duotonePalette )\n\t\t: duotoneStyle;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"filter\">\n\t\t\t\t<StylesFiltersPanel\n\t\t\t\t\tvalue={ { filter: { duotone: duotonePresetOrColors } } }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...newDuotone?.filter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t<DuotoneControl\n\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\tdisableCustomDuotone={ disableCustomDuotone }\n\t\t\t\t\tdisableCustomColors={ disableCustomColors }\n\t\t\t\t\tvalue={ duotonePresetOrColors }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst maybePreset = getDuotonePresetFromColors(\n\t\t\t\t\t\t\tnewDuotone,\n\t\t\t\t\t\t\tduotonePalette\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...style?.color,\n\t\t\t\t\t\t\t\tduotone: maybePreset ?? newDuotone, // use preset or fallback to custom colors.\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include\n * the `duotone` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addDuotoneAttributes( settings ) {\n\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\tif ( ! hasBlockSupport( settings, 'filter.duotone' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default\n\t// values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include toolbar controls for duotone if the\n * block supports duotone.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\t\tconst hasDuotoneSupport = hasBlockSupport(\n\t\t\tprops.name,\n\t\t\t'filter.duotone'\n\t\t);\n\n\t\tconst blockEditingMode = useBlockEditingMode();\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ hasDuotoneSupport && blockEditingMode === 'default' && (\n\t\t\t\t\t<DuotonePanel { ...props } />\n\t\t\t\t) }\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneControls'\n);\n\nfunction DuotoneStyles( {\n\tclientId,\n\tid: filterId,\n\tselector: duotoneSelector,\n\tattribute: duotoneAttr,\n} ) {\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\n\t// Possible values for duotone attribute:\n\t// 1. Array of colors - e.g. ['#000000', '#ffffff'].\n\t// 2. Variable for an existing Duotone preset - e.g. 'var:preset|duotone|green-blue' or 'var(--wp--preset--duotone--green-blue)''\n\t// 3. A CSS string - e.g. 'unset' to remove globally applied duotone.\n\tconst isCustom = Array.isArray( duotoneAttr );\n\tconst duotonePreset = isCustom\n\t\t? undefined\n\t\t: getColorsFromDuotonePreset( duotoneAttr, duotonePalette );\n\tconst isPreset = typeof duotoneAttr === 'string' && duotonePreset;\n\tconst isCSS = typeof duotoneAttr === 'string' && ! isPreset;\n\n\t// Match the structure of WP_Duotone_Gutenberg::render_duotone_support() in PHP.\n\tlet colors = null;\n\tif ( isPreset ) {\n\t\t// Array of colors.\n\t\tcolors = duotonePreset;\n\t} else if ( isCSS ) {\n\t\t// CSS filter property string (e.g. 'unset').\n\t\tcolors = duotoneAttr;\n\t} else if ( isCustom ) {\n\t\t// Array of colors.\n\t\tcolors = duotoneAttr;\n\t}\n\n\t// Build the CSS selectors to which the filter will be applied.\n\tconst selectors = duotoneSelector.split( ',' );\n\n\tconst selectorsScoped = selectors.map( ( selectorPart ) => {\n\t\t// Extra .editor-styles-wrapper specificity is needed in the editor\n\t\t// since we're not using inline styles to apply the filter. We need to\n\t\t// override duotone applied by global styles and theme.json.\n\n\t\t// Assuming the selector part is a subclass selector (not a tag name)\n\t\t// so we can prepend the filter id class. If we want to support elements\n\t\t// such as `img` or namespaces, we'll need to add a case for that here.\n\t\treturn `.${ filterId }${ selectorPart.trim() }`;\n\t} );\n\n\tconst selector = selectorsScoped.join( ', ' );\n\n\tconst isValidFilter = Array.isArray( colors ) || colors === 'unset';\n\n\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tconst blockElement = useBlockElement( clientId );\n\n\tuseEffect( () => {\n\t\tif ( ! isValidFilter ) return;\n\n\t\tsetStyleOverride( filterId, {\n\t\t\tcss:\n\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t? getDuotoneStylesheet( selector, filterId )\n\t\t\t\t\t: getDuotoneUnsetStylesheet( selector ),\n\t\t\t__unstableType: 'presets',\n\t\t} );\n\t\tsetStyleOverride( `duotone-${ filterId }`, {\n\t\t\tassets:\n\t\t\t\tcolors !== 'unset' ? getDuotoneFilter( filterId, colors ) : '',\n\t\t\t__unstableType: 'svgs',\n\t\t} );\n\n\t\t// Safari does not always update the duotone filter when the duotone colors\n\t\t// are changed. When using Safari, force the block element to be repainted by\n\t\t// the browser to ensure any changes are reflected visually. This logic matches\n\t\t// that used on the site frontend in `block-supports/duotone.php`.\n\t\tif ( blockElement && isSafari ) {\n\t\t\tconst display = blockElement.style.display;\n\t\t\t// Switch to `inline-block` to force a repaint. In the editor, `inline-block`\n\t\t\t// is used instead of `none` to ensure that scroll position is not affected,\n\t\t\t// as `none` results in the editor scrolling to the top of the block.\n\t\t\tblockElement.style.display = 'inline-block';\n\t\t\t// Simply accessing el.offsetHeight flushes layout and style\n\t\t\t// changes in WebKit without having to wait for setTimeout.\n\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\tblockElement.offsetHeight;\n\t\t\tblockElement.style.display = display;\n\t\t}\n\n\t\treturn () => {\n\t\t\tdeleteStyleOverride( filterId );\n\t\t\tdeleteStyleOverride( `duotone-${ filterId }` );\n\t\t};\n\t}, [\n\t\tisValidFilter,\n\t\tblockElement,\n\t\tcolors,\n\t\tselector,\n\t\tfilterId,\n\t\tsetStyleOverride,\n\t\tdeleteStyleOverride,\n\t] );\n\n\treturn null;\n}\n\n/**\n * Override the default block element to include duotone styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst id = useInstanceId( BlockListBlock );\n\n\t\tconst selector = useMemo( () => {\n\t\t\tconst blockType = getBlockType( props.name );\n\n\t\t\tif ( blockType ) {\n\t\t\t\t// Backwards compatibility for `supports.color.__experimentalDuotone`\n\t\t\t\t// is provided via the `block_type_metadata_settings` filter. If\n\t\t\t\t// `supports.filter.duotone` has not been set and the\n\t\t\t\t// experimental property has been, the experimental property\n\t\t\t\t// value is copied into `supports.filter.duotone`.\n\t\t\t\tconst duotoneSupport = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'filter.duotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( ! duotoneSupport ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// If the experimental duotone support was set, that value is\n\t\t\t\t// to be treated as a selector and requires scoping.\n\t\t\t\tconst experimentalDuotone = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'color.__experimentalDuotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( experimentalDuotone ) {\n\t\t\t\t\tconst rootSelector = getBlockCSSSelector( blockType );\n\t\t\t\t\treturn typeof experimentalDuotone === 'string'\n\t\t\t\t\t\t? scopeSelector( rootSelector, experimentalDuotone )\n\t\t\t\t\t\t: rootSelector;\n\t\t\t\t}\n\n\t\t\t\t// Regular filter.duotone support uses filter.duotone selectors with fallbacks.\n\t\t\t\treturn getBlockCSSSelector( blockType, 'filter.duotone', {\n\t\t\t\t\tfallback: true,\n\t\t\t\t} );\n\t\t\t}\n\t\t}, [ props.name ] );\n\n\t\tconst attribute = props?.attributes?.style?.color?.duotone;\n\n\t\tconst filterClass = `wp-duotone-${ id }`;\n\n\t\tconst shouldRender = selector && attribute;\n\n\t\tconst className = shouldRender\n\t\t\t? classnames( props?.className, filterClass )\n\t\t\t: props?.className;\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRender && (\n\t\t\t\t\t<DuotoneStyles\n\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t\tid={ filterClass }\n\t\t\t\t\t\tselector={ selector }\n\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/duotone/add-attributes',\n\taddDuotoneAttributes\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/duotone/with-editor-controls',\n\twithDuotoneControls\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/duotone/with-styles',\n\twithDuotoneStyles\n);\n"],"mappings":"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"}
@@ -14,7 +14,7 @@ import { select } from '@wordpress/data';
14
14
  import { getFontSize, getFontSizeClass, getFontSizeObjectByValue, FontSizePicker } from '../components/font-sizes';
15
15
  import { TYPOGRAPHY_SUPPORT_KEY } from './typography';
16
16
  import { cleanEmptyObject, transformStyles, shouldSkipSerialization } from './utils';
17
- import useSetting from '../components/use-setting';
17
+ import { useSettings } from '../components/use-settings';
18
18
  import { store as blockEditorStore } from '../store';
19
19
  import { getTypographyFontSizeValue, getFluidTypographyOptionsFromSettings } from '../components/global-styles/typography-utils';
20
20
  export const FONT_SIZE_SUPPORT_KEY = 'typography.fontSize';
@@ -106,7 +106,7 @@ export function FontSizeEdit(props) {
106
106
  },
107
107
  setAttributes
108
108
  } = props;
109
- const fontSizes = useSetting('typography.fontSizes');
109
+ const [fontSizes] = useSettings('typography.fontSizes');
110
110
  const onChange = value => {
111
111
  const fontSizeSlug = getFontSizeObjectByValue(fontSizes, value).slug;
112
112
  setAttributes({
@@ -141,7 +141,7 @@ export function FontSizeEdit(props) {
141
141
  export function useIsFontSizeDisabled({
142
142
  name: blockName
143
143
  } = {}) {
144
- const fontSizes = useSetting('typography.fontSizes');
144
+ const [fontSizes] = useSettings('typography.fontSizes');
145
145
  const hasFontSizes = !!fontSizes?.length;
146
146
  return !hasBlockSupport(blockName, FONT_SIZE_SUPPORT_KEY) || !hasFontSizes;
147
147
  }
@@ -156,7 +156,7 @@ export function useIsFontSizeDisabled({
156
156
  * @return {Function} Wrapped component.
157
157
  */
158
158
  const withFontSizeInlineStyles = createHigherOrderComponent(BlockListBlock => props => {
159
- const fontSizes = useSetting('typography.fontSizes');
159
+ const [fontSizes] = useSettings('typography.fontSizes');
160
160
  const {
161
161
  name: blockName,
162
162
  attributes: {
@@ -1 +1 @@
1
- {"version":3,"names":["addFilter","hasBlockSupport","TokenList","createHigherOrderComponent","select","getFontSize","getFontSizeClass","getFontSizeObjectByValue","FontSizePicker","TYPOGRAPHY_SUPPORT_KEY","cleanEmptyObject","transformStyles","shouldSkipSerialization","useSetting","store","blockEditorStore","getTypographyFontSizeValue","getFluidTypographyOptionsFromSettings","FONT_SIZE_SUPPORT_KEY","addAttributes","settings","attributes","fontSize","Object","assign","type","addSaveProps","props","blockType","classes","className","add","newClassName","value","undefined","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","FontSizeEdit","style","setAttributes","fontSizes","onChange","fontSizeSlug","slug","typography","fontSizeObject","fontSizeValue","size","createElement","withReset","withSlider","__nextHasNoMarginBottom","useIsFontSizeDisabled","name","blockName","hasFontSizes","length","withFontSizeInlineStyles","BlockListBlock","wrapperProps","newProps","MIGRATION_PATHS","addTransforms","result","source","index","results","destinationBlockType","activeSupports","addEditPropsForFluidCustomFontSizes","fluidTypographySettings","getSettings","__experimentalFeatures","newFontSize"],"sources":["@wordpress/block-editor/src/hooks/font-size.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport TokenList from '@wordpress/token-list';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { select } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetFontSize,\n\tgetFontSizeClass,\n\tgetFontSizeObjectByValue,\n\tFontSizePicker,\n} from '../components/font-sizes';\nimport { TYPOGRAPHY_SUPPORT_KEY } from './typography';\nimport {\n\tcleanEmptyObject,\n\ttransformStyles,\n\tshouldSkipSerialization,\n} from './utils';\nimport useSetting from '../components/use-setting';\nimport { store as blockEditorStore } from '../store';\nimport {\n\tgetTypographyFontSizeValue,\n\tgetFluidTypographyOptionsFromSettings,\n} from '../components/global-styles/typography-utils';\n\nexport const FONT_SIZE_SUPPORT_KEY = 'typography.fontSize';\n\n/**\n * Filters registered block settings, extending attributes to include\n * `fontSize` and `fontWeight` attributes.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify a default value if needed.\n\tif ( ! settings.attributes.fontSize ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tfontSize: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override props assigned to save component to inject font size.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nfunction addSaveProps( props, blockType, attributes ) {\n\tif ( ! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn props;\n\t}\n\n\tif (\n\t\tshouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )\n\t) {\n\t\treturn props;\n\t}\n\n\t// Use TokenList to dedupe classes.\n\tconst classes = new TokenList( props.className );\n\tclasses.add( getFontSizeClass( attributes.fontSize ) );\n\tconst newClassName = classes.value;\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to expand the block edit wrapper\n * by applying the desired styles and classnames.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addEditProps( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\n/**\n * Inspector control panel containing the font size related configuration\n *\n * @param {Object} props\n *\n * @return {Element} Font size edit element.\n */\nexport function FontSizeEdit( props ) {\n\tconst {\n\t\tattributes: { fontSize, style },\n\t\tsetAttributes,\n\t} = props;\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\n\tconst onChange = ( value ) => {\n\t\tconst fontSizeSlug = getFontSizeObjectByValue( fontSizes, value ).slug;\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t...style,\n\t\t\t\ttypography: {\n\t\t\t\t\t...style?.typography,\n\t\t\t\t\tfontSize: fontSizeSlug ? undefined : value,\n\t\t\t\t},\n\t\t\t} ),\n\t\t\tfontSize: fontSizeSlug,\n\t\t} );\n\t};\n\n\tconst fontSizeObject = getFontSize(\n\t\tfontSizes,\n\t\tfontSize,\n\t\tstyle?.typography?.fontSize\n\t);\n\n\tconst fontSizeValue =\n\t\tfontSizeObject?.size || style?.typography?.fontSize || fontSize;\n\n\treturn (\n\t\t<FontSizePicker\n\t\t\tonChange={ onChange }\n\t\t\tvalue={ fontSizeValue }\n\t\t\twithReset={ false }\n\t\t\twithSlider\n\t\t\tsize=\"__unstable-large\"\n\t\t\t__nextHasNoMarginBottom\n\t\t/>\n\t);\n}\n\n/**\n * Custom hook that checks if font-size settings have been disabled.\n *\n * @param {string} name The name of the block.\n * @return {boolean} Whether setting is disabled.\n */\nexport function useIsFontSizeDisabled( { name: blockName } = {} ) {\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\tconst hasFontSizes = !! fontSizes?.length;\n\n\treturn (\n\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) || ! hasFontSizes\n\t);\n}\n\n/**\n * Add inline styles for font sizes.\n * Ideally, this is not needed and themes load the font-size classes on the\n * editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withFontSizeInlineStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\t\tconst {\n\t\t\tname: blockName,\n\t\t\tattributes: { fontSize, style },\n\t\t\twrapperProps,\n\t\t} = props;\n\n\t\t// Only add inline styles if the block supports font sizes,\n\t\t// doesn't skip serialization of font sizes,\n\t\t// doesn't already have an inline font size,\n\t\t// and does have a class to extract the font size from.\n\t\tif (\n\t\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) ||\n\t\t\tshouldSkipSerialization(\n\t\t\t\tblockName,\n\t\t\t\tTYPOGRAPHY_SUPPORT_KEY,\n\t\t\t\t'fontSize'\n\t\t\t) ||\n\t\t\t! fontSize ||\n\t\t\tstyle?.typography?.fontSize\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst fontSizeValue = getFontSize(\n\t\t\tfontSizes,\n\t\t\tfontSize,\n\t\t\tstyle?.typography?.fontSize\n\t\t).size;\n\n\t\tconst newProps = {\n\t\t\t...props,\n\t\t\twrapperProps: {\n\t\t\t\t...wrapperProps,\n\t\t\t\tstyle: {\n\t\t\t\t\tfontSize: fontSizeValue,\n\t\t\t\t\t...wrapperProps?.style,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...newProps } />;\n\t},\n\t'withFontSizeInlineStyles'\n);\n\nconst MIGRATION_PATHS = {\n\tfontSize: [ [ 'fontSize' ], [ 'style', 'typography', 'fontSize' ] ],\n};\n\nfunction addTransforms( result, source, index, results ) {\n\tconst destinationBlockType = result.name;\n\tconst activeSupports = {\n\t\tfontSize: hasBlockSupport(\n\t\t\tdestinationBlockType,\n\t\t\tFONT_SIZE_SUPPORT_KEY\n\t\t),\n\t};\n\treturn transformStyles(\n\t\tactiveSupports,\n\t\tMIGRATION_PATHS,\n\t\tresult,\n\t\tsource,\n\t\tindex,\n\t\tresults\n\t);\n}\n\n/**\n * Allow custom font sizes to appear fluid when fluid typography is enabled at\n * the theme level.\n *\n * Adds a custom getEditWrapperProps() callback to all block types that support\n * font sizes. Then, if fluid typography is enabled, this callback will swap any\n * custom font size in style.fontSize with a fluid font size (i.e. one that uses\n * clamp()).\n *\n * It's important that this hook runs after 'core/style/addEditProps' sets\n * style.fontSize as otherwise fontSize will be overwritten.\n *\n * @param {Object} blockType Block settings object.\n */\nfunction addEditPropsForFluidCustomFontSizes( blockType ) {\n\tif (\n\t\t! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ||\n\t\tshouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )\n\t) {\n\t\treturn blockType;\n\t}\n\n\tconst existingGetEditWrapperProps = blockType.getEditWrapperProps;\n\n\tblockType.getEditWrapperProps = ( attributes ) => {\n\t\tconst wrapperProps = existingGetEditWrapperProps\n\t\t\t? existingGetEditWrapperProps( attributes )\n\t\t\t: {};\n\n\t\tconst fontSize = wrapperProps?.style?.fontSize;\n\n\t\t// TODO: This sucks! We should be using useSetting( 'typography.fluid' )\n\t\t// or even useSelect( blockEditorStore ). We can't do either here\n\t\t// because getEditWrapperProps is a plain JavaScript function called by\n\t\t// BlockListBlock and not a React component rendered within\n\t\t// BlockListContext.Provider. If we set fontSize using editor.\n\t\t// BlockListBlock instead of using getEditWrapperProps then the value is\n\t\t// clobbered when the core/style/addEditProps filter runs.\n\t\tconst fluidTypographySettings = getFluidTypographyOptionsFromSettings(\n\t\t\tselect( blockEditorStore ).getSettings().__experimentalFeatures\n\t\t);\n\t\tconst newFontSize = fontSize\n\t\t\t? getTypographyFontSizeValue(\n\t\t\t\t\t{ size: fontSize },\n\t\t\t\t\tfluidTypographySettings\n\t\t\t )\n\t\t\t: null;\n\n\t\tif ( newFontSize === null ) {\n\t\t\treturn wrapperProps;\n\t\t}\n\n\t\treturn {\n\t\t\t...wrapperProps,\n\t\t\tstyle: {\n\t\t\t\t...wrapperProps?.style,\n\t\t\t\tfontSize: newFontSize,\n\t\t\t},\n\t\t};\n\t};\n\n\treturn blockType;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/font/addAttribute',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/font/addSaveProps',\n\taddSaveProps\n);\n\naddFilter( 'blocks.registerBlockType', 'core/font/addEditProps', addEditProps );\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/font-size/with-font-size-inline-styles',\n\twithFontSizeInlineStyles\n);\n\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/font-size/addTransforms',\n\taddTransforms\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/font-size/addEditPropsForFluidCustomFontSizes',\n\taddEditPropsForFluidCustomFontSizes,\n\t// Run after 'core/style/addEditProps' so that the style object has already\n\t// been translated into inline CSS.\n\t11\n);\n"],"mappings":"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"}
1
+ {"version":3,"names":["addFilter","hasBlockSupport","TokenList","createHigherOrderComponent","select","getFontSize","getFontSizeClass","getFontSizeObjectByValue","FontSizePicker","TYPOGRAPHY_SUPPORT_KEY","cleanEmptyObject","transformStyles","shouldSkipSerialization","useSettings","store","blockEditorStore","getTypographyFontSizeValue","getFluidTypographyOptionsFromSettings","FONT_SIZE_SUPPORT_KEY","addAttributes","settings","attributes","fontSize","Object","assign","type","addSaveProps","props","blockType","classes","className","add","newClassName","value","undefined","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","FontSizeEdit","style","setAttributes","fontSizes","onChange","fontSizeSlug","slug","typography","fontSizeObject","fontSizeValue","size","createElement","withReset","withSlider","__nextHasNoMarginBottom","useIsFontSizeDisabled","name","blockName","hasFontSizes","length","withFontSizeInlineStyles","BlockListBlock","wrapperProps","newProps","MIGRATION_PATHS","addTransforms","result","source","index","results","destinationBlockType","activeSupports","addEditPropsForFluidCustomFontSizes","fluidTypographySettings","getSettings","__experimentalFeatures","newFontSize"],"sources":["@wordpress/block-editor/src/hooks/font-size.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport TokenList from '@wordpress/token-list';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { select } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetFontSize,\n\tgetFontSizeClass,\n\tgetFontSizeObjectByValue,\n\tFontSizePicker,\n} from '../components/font-sizes';\nimport { TYPOGRAPHY_SUPPORT_KEY } from './typography';\nimport {\n\tcleanEmptyObject,\n\ttransformStyles,\n\tshouldSkipSerialization,\n} from './utils';\nimport { useSettings } from '../components/use-settings';\nimport { store as blockEditorStore } from '../store';\nimport {\n\tgetTypographyFontSizeValue,\n\tgetFluidTypographyOptionsFromSettings,\n} from '../components/global-styles/typography-utils';\n\nexport const FONT_SIZE_SUPPORT_KEY = 'typography.fontSize';\n\n/**\n * Filters registered block settings, extending attributes to include\n * `fontSize` and `fontWeight` attributes.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify a default value if needed.\n\tif ( ! settings.attributes.fontSize ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tfontSize: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override props assigned to save component to inject font size.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nfunction addSaveProps( props, blockType, attributes ) {\n\tif ( ! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn props;\n\t}\n\n\tif (\n\t\tshouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )\n\t) {\n\t\treturn props;\n\t}\n\n\t// Use TokenList to dedupe classes.\n\tconst classes = new TokenList( props.className );\n\tclasses.add( getFontSizeClass( attributes.fontSize ) );\n\tconst newClassName = classes.value;\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to expand the block edit wrapper\n * by applying the desired styles and classnames.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addEditProps( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\n/**\n * Inspector control panel containing the font size related configuration\n *\n * @param {Object} props\n *\n * @return {Element} Font size edit element.\n */\nexport function FontSizeEdit( props ) {\n\tconst {\n\t\tattributes: { fontSize, style },\n\t\tsetAttributes,\n\t} = props;\n\tconst [ fontSizes ] = useSettings( 'typography.fontSizes' );\n\n\tconst onChange = ( value ) => {\n\t\tconst fontSizeSlug = getFontSizeObjectByValue( fontSizes, value ).slug;\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t...style,\n\t\t\t\ttypography: {\n\t\t\t\t\t...style?.typography,\n\t\t\t\t\tfontSize: fontSizeSlug ? undefined : value,\n\t\t\t\t},\n\t\t\t} ),\n\t\t\tfontSize: fontSizeSlug,\n\t\t} );\n\t};\n\n\tconst fontSizeObject = getFontSize(\n\t\tfontSizes,\n\t\tfontSize,\n\t\tstyle?.typography?.fontSize\n\t);\n\n\tconst fontSizeValue =\n\t\tfontSizeObject?.size || style?.typography?.fontSize || fontSize;\n\n\treturn (\n\t\t<FontSizePicker\n\t\t\tonChange={ onChange }\n\t\t\tvalue={ fontSizeValue }\n\t\t\twithReset={ false }\n\t\t\twithSlider\n\t\t\tsize=\"__unstable-large\"\n\t\t\t__nextHasNoMarginBottom\n\t\t/>\n\t);\n}\n\n/**\n * Custom hook that checks if font-size settings have been disabled.\n *\n * @param {string} name The name of the block.\n * @return {boolean} Whether setting is disabled.\n */\nexport function useIsFontSizeDisabled( { name: blockName } = {} ) {\n\tconst [ fontSizes ] = useSettings( 'typography.fontSizes' );\n\tconst hasFontSizes = !! fontSizes?.length;\n\n\treturn (\n\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) || ! hasFontSizes\n\t);\n}\n\n/**\n * Add inline styles for font sizes.\n * Ideally, this is not needed and themes load the font-size classes on the\n * editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withFontSizeInlineStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst [ fontSizes ] = useSettings( 'typography.fontSizes' );\n\t\tconst {\n\t\t\tname: blockName,\n\t\t\tattributes: { fontSize, style },\n\t\t\twrapperProps,\n\t\t} = props;\n\n\t\t// Only add inline styles if the block supports font sizes,\n\t\t// doesn't skip serialization of font sizes,\n\t\t// doesn't already have an inline font size,\n\t\t// and does have a class to extract the font size from.\n\t\tif (\n\t\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) ||\n\t\t\tshouldSkipSerialization(\n\t\t\t\tblockName,\n\t\t\t\tTYPOGRAPHY_SUPPORT_KEY,\n\t\t\t\t'fontSize'\n\t\t\t) ||\n\t\t\t! fontSize ||\n\t\t\tstyle?.typography?.fontSize\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst fontSizeValue = getFontSize(\n\t\t\tfontSizes,\n\t\t\tfontSize,\n\t\t\tstyle?.typography?.fontSize\n\t\t).size;\n\n\t\tconst newProps = {\n\t\t\t...props,\n\t\t\twrapperProps: {\n\t\t\t\t...wrapperProps,\n\t\t\t\tstyle: {\n\t\t\t\t\tfontSize: fontSizeValue,\n\t\t\t\t\t...wrapperProps?.style,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...newProps } />;\n\t},\n\t'withFontSizeInlineStyles'\n);\n\nconst MIGRATION_PATHS = {\n\tfontSize: [ [ 'fontSize' ], [ 'style', 'typography', 'fontSize' ] ],\n};\n\nfunction addTransforms( result, source, index, results ) {\n\tconst destinationBlockType = result.name;\n\tconst activeSupports = {\n\t\tfontSize: hasBlockSupport(\n\t\t\tdestinationBlockType,\n\t\t\tFONT_SIZE_SUPPORT_KEY\n\t\t),\n\t};\n\treturn transformStyles(\n\t\tactiveSupports,\n\t\tMIGRATION_PATHS,\n\t\tresult,\n\t\tsource,\n\t\tindex,\n\t\tresults\n\t);\n}\n\n/**\n * Allow custom font sizes to appear fluid when fluid typography is enabled at\n * the theme level.\n *\n * Adds a custom getEditWrapperProps() callback to all block types that support\n * font sizes. Then, if fluid typography is enabled, this callback will swap any\n * custom font size in style.fontSize with a fluid font size (i.e. one that uses\n * clamp()).\n *\n * It's important that this hook runs after 'core/style/addEditProps' sets\n * style.fontSize as otherwise fontSize will be overwritten.\n *\n * @param {Object} blockType Block settings object.\n */\nfunction addEditPropsForFluidCustomFontSizes( blockType ) {\n\tif (\n\t\t! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ||\n\t\tshouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )\n\t) {\n\t\treturn blockType;\n\t}\n\n\tconst existingGetEditWrapperProps = blockType.getEditWrapperProps;\n\n\tblockType.getEditWrapperProps = ( attributes ) => {\n\t\tconst wrapperProps = existingGetEditWrapperProps\n\t\t\t? existingGetEditWrapperProps( attributes )\n\t\t\t: {};\n\n\t\tconst fontSize = wrapperProps?.style?.fontSize;\n\n\t\t// TODO: This sucks! We should be using useSetting( 'typography.fluid' )\n\t\t// or even useSelect( blockEditorStore ). We can't do either here\n\t\t// because getEditWrapperProps is a plain JavaScript function called by\n\t\t// BlockListBlock and not a React component rendered within\n\t\t// BlockListContext.Provider. If we set fontSize using editor.\n\t\t// BlockListBlock instead of using getEditWrapperProps then the value is\n\t\t// clobbered when the core/style/addEditProps filter runs.\n\t\tconst fluidTypographySettings = getFluidTypographyOptionsFromSettings(\n\t\t\tselect( blockEditorStore ).getSettings().__experimentalFeatures\n\t\t);\n\t\tconst newFontSize = fontSize\n\t\t\t? getTypographyFontSizeValue(\n\t\t\t\t\t{ size: fontSize },\n\t\t\t\t\tfluidTypographySettings\n\t\t\t )\n\t\t\t: null;\n\n\t\tif ( newFontSize === null ) {\n\t\t\treturn wrapperProps;\n\t\t}\n\n\t\treturn {\n\t\t\t...wrapperProps,\n\t\t\tstyle: {\n\t\t\t\t...wrapperProps?.style,\n\t\t\t\tfontSize: newFontSize,\n\t\t\t},\n\t\t};\n\t};\n\n\treturn blockType;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/font/addAttribute',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/font/addSaveProps',\n\taddSaveProps\n);\n\naddFilter( 'blocks.registerBlockType', 'core/font/addEditProps', addEditProps );\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/font-size/with-font-size-inline-styles',\n\twithFontSizeInlineStyles\n);\n\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/font-size/addTransforms',\n\taddTransforms\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/font-size/addEditPropsForFluidCustomFontSizes',\n\taddEditPropsForFluidCustomFontSizes,\n\t// Run after 'core/style/addEditProps' so that the style object has already\n\t// been translated into inline CSS.\n\t11\n);\n"],"mappings":"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"}
@@ -20,7 +20,7 @@ import { useEffect } from '@wordpress/element';
20
20
  */
21
21
  import { store as blockEditorStore } from '../store';
22
22
  import { InspectorControls } from '../components';
23
- import useSetting from '../components/use-setting';
23
+ import { useSettings } from '../components/use-settings';
24
24
  import { getLayoutType, getLayoutTypes } from '../layouts';
25
25
  import { useBlockEditingMode } from '../components/block-editing-mode';
26
26
  import { LAYOUT_DEFINITIONS } from '../layouts/definitions';
@@ -100,7 +100,7 @@ export function useLayoutStyles(blockAttributes = {}, blockName, selector) {
100
100
  type: 'constrained'
101
101
  } : layout || {};
102
102
  const fullLayoutType = getLayoutType(usedLayout?.type || 'default');
103
- const blockGapSupport = useSetting('spacing.blockGap');
103
+ const [blockGapSupport] = useSettings('spacing.blockGap');
104
104
  const hasBlockGapSupport = blockGapSupport !== null;
105
105
  const css = fullLayoutType?.getLayoutStyle?.({
106
106
  blockName,
@@ -125,7 +125,7 @@ function LayoutPanel({
125
125
  const {
126
126
  layout
127
127
  } = attributes;
128
- const defaultThemeLayout = useSetting('layout');
128
+ const [defaultThemeLayout] = useSettings('layout');
129
129
  const {
130
130
  themeSupportsLayout
131
131
  } = useSelect(select => {
@@ -137,6 +137,9 @@ function LayoutPanel({
137
137
  };
138
138
  }, []);
139
139
  const blockEditingMode = useBlockEditingMode();
140
+ if (blockEditingMode !== 'default') {
141
+ return null;
142
+ }
140
143
  const layoutBlockSupport = getBlockSupport(blockName, layoutBlockSupportKey, {});
141
144
  const {
142
145
  allowSwitching,
@@ -202,7 +205,7 @@ function LayoutPanel({
202
205
  layout: usedLayout,
203
206
  onChange: onChangeLayout,
204
207
  layoutBlockSupport: layoutBlockSupport
205
- }))), !inherit && blockEditingMode === 'default' && layoutType && createElement(layoutType.toolBarControls, {
208
+ }))), !inherit && layoutType && createElement(layoutType.toolBarControls, {
206
209
  layout: usedLayout,
207
210
  onChange: onChangeLayout,
208
211
  layoutBlockSupport: layoutBlockSupport
@@ -255,12 +258,8 @@ export function addAttribute(settings) {
255
258
  * @return {Function} Wrapped component.
256
259
  */
257
260
  export const withInspectorControls = createHigherOrderComponent(BlockEdit => props => {
258
- const {
259
- name: blockName
260
- } = props;
261
- const supportLayout = hasLayoutBlockSupport(blockName);
262
- const blockEditingMode = useBlockEditingMode();
263
- return [supportLayout && blockEditingMode === 'default' && createElement(LayoutPanel, {
261
+ const supportLayout = hasLayoutBlockSupport(props.name);
262
+ return [supportLayout && createElement(LayoutPanel, {
264
263
  key: "layout",
265
264
  ...props
266
265
  }), createElement(BlockEdit, {
@@ -303,7 +302,7 @@ export const withLayoutStyles = createHigherOrderComponent(BlockListBlock => pro
303
302
  const layoutClasses = blockSupportsLayout ? useLayoutClasses(attributes, name) : null;
304
303
  // Higher specificity to override defaults from theme.json.
305
304
  const selector = `.wp-container-${id}.wp-container-${id}`;
306
- const blockGapSupport = useSetting('spacing.blockGap');
305
+ const [blockGapSupport] = useSettings('spacing.blockGap');
307
306
  const hasBlockGapSupport = blockGapSupport !== null;
308
307
 
309
308
  // Get CSS string for the current layout type.
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","createHigherOrderComponent","useInstanceId","addFilter","getBlockSupport","hasBlockSupport","useSelect","useDispatch","Button","ButtonGroup","ToggleControl","PanelBody","__","useEffect","store","blockEditorStore","InspectorControls","useSetting","getLayoutType","getLayoutTypes","useBlockEditingMode","LAYOUT_DEFINITIONS","kebabCase","useBlockSettings","unlock","layoutBlockSupportKey","hasLayoutBlockSupport","blockName","useLayoutClasses","blockAttributes","rootPaddingAlignment","select","getSettings","__experimentalFeatures","useRootPaddingAwareAlignments","layout","default","defaultBlockLayout","usedLayout","inherit","contentSize","wideSize","type","layoutClassnames","className","baseClassName","splitBlockName","split","fullBlockName","pop","join","compoundClassName","push","orientation","justifyContent","flexWrap","useLayoutStyles","selector","style","fullLayoutType","blockGapSupport","hasBlockGapSupport","css","getLayoutStyle","LayoutPanel","setAttributes","attributes","name","settings","allowEditing","allowEditingSetting","defaultThemeLayout","themeSupportsLayout","supportsLayout","blockEditingMode","layoutBlockSupport","allowSwitching","allowInheriting","showInheritToggle","layoutType","constrainedType","displayControlsForLegacyLayouts","hasContentSizeOrLegacySettings","onChangeType","newType","onChangeLayout","newLayout","createElement","Fragment","title","__nextHasNoMarginBottom","label","checked","onChange","help","LayoutTypeSwitcher","inspectorControls","toolBarControls","map","key","isPressed","onClick","addAttribute","_settings$attributes$","withInspectorControls","BlockEdit","props","supportLayout","withLayoutStyles","BlockListBlock","blockSupportsLayout","disableLayoutStyles","shouldRenderLayoutStyles","id","layoutClasses","layoutClassNames","setStyleOverride","deleteStyleOverride","__unstableLayoutClassNames","withChildLayoutStyles","selfStretch","flexSize","hasChildLayout","shouldRenderChildLayoutStyles"],"sources":["@wordpress/block-editor/src/hooks/layout.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\tButtonGroup,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport useSetting from '../components/use-setting';\nimport { getLayoutType, getLayoutTypes } from '../layouts';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { LAYOUT_DEFINITIONS } from '../layouts/definitions';\nimport { kebabCase } from '../utils/object';\nimport { useBlockSettings } from './utils';\nimport { unlock } from '../lock-unlock';\n\nconst layoutBlockSupportKey = 'layout';\n\nfunction hasLayoutBlockSupport( blockName ) {\n\treturn (\n\t\thasBlockSupport( blockName, 'layout' ) ||\n\t\thasBlockSupport( blockName, '__experimentalLayout' )\n\t);\n}\n\n/**\n * Generates the utility classnames for the given block's layout attributes.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n *\n * @return { Array } Array of CSS classname strings.\n */\nexport function useLayoutClasses( blockAttributes = {}, blockName = '' ) {\n\tconst rootPaddingAlignment = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().__experimentalFeatures\n\t\t\t?.useRootPaddingAwareAlignments;\n\t}, [] );\n\tconst { layout } = blockAttributes;\n\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( blockName, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst layoutClassnames = [];\n\n\tif ( LAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className ) {\n\t\tconst baseClassName =\n\t\t\tLAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className;\n\t\tconst splitBlockName = blockName.split( '/' );\n\t\tconst fullBlockName =\n\t\t\tsplitBlockName[ 0 ] === 'core'\n\t\t\t\t? splitBlockName.pop()\n\t\t\t\t: splitBlockName.join( '-' );\n\t\tconst compoundClassName = `wp-block-${ fullBlockName }-${ baseClassName }`;\n\t\tlayoutClassnames.push( baseClassName, compoundClassName );\n\t}\n\n\tif (\n\t\t( usedLayout?.inherit ||\n\t\t\tusedLayout?.contentSize ||\n\t\t\tusedLayout?.type === 'constrained' ) &&\n\t\trootPaddingAlignment\n\t) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( usedLayout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( usedLayout.orientation ) }` );\n\t}\n\n\tif ( usedLayout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase(\n\t\t\t\tusedLayout.justifyContent\n\t\t\t) }`\n\t\t);\n\t}\n\n\tif ( usedLayout?.flexWrap && usedLayout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\n}\n\n/**\n * Generates a CSS rule with the given block's layout styles.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n * @param { string } selector A selector to use in generating the CSS rule.\n *\n * @return { string } CSS rule.\n */\nexport function useLayoutStyles( blockAttributes = {}, blockName, selector ) {\n\tconst { layout = {}, style = {} } = blockAttributes;\n\t// Update type for blocks using legacy layouts.\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || {};\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\tconst css = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName,\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n\treturn css;\n}\n\nfunction LayoutPanel( { setAttributes, attributes, name: blockName } ) {\n\tconst settings = useBlockSettings( blockName );\n\tconst {\n\t\tlayout: { allowEditing: allowEditingSetting },\n\t} = settings;\n\n\tconst { layout } = attributes;\n\tconst defaultThemeLayout = useSetting( 'layout' );\n\tconst { themeSupportsLayout } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t};\n\t}, [] );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = allowEditingSetting ?? true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = layoutBlockSupport;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t// Only show the inherit toggle if it's supported,\n\t// a default theme layout is set (e.g. one that provides `contentSize` and/or `wideSize` values),\n\t// and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.\n\tconst showInheritToggle = !! (\n\t\tallowInheriting &&\n\t\t!! defaultThemeLayout &&\n\t\t( ! layout?.type ||\n\t\t\tlayout?.type === 'default' ||\n\t\t\tlayout?.type === 'constrained' ||\n\t\t\tlayout?.inherit )\n\t);\n\n\tconst usedLayout = layout || defaultBlockLayout || {};\n\tconst {\n\t\tinherit = false,\n\t\ttype = 'default',\n\t\tcontentSize = null,\n\t} = usedLayout;\n\t/**\n\t * `themeSupportsLayout` is only relevant to the `default/flow` or\n\t * `constrained` layouts and it should not be taken into account when other\n\t * `layout` types are used.\n\t */\n\tif (\n\t\t( type === 'default' || type === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( type );\n\tconst constrainedType = getLayoutType( 'constrained' );\n\tconst displayControlsForLegacyLayouts =\n\t\t! usedLayout.type && ( contentSize || inherit );\n\tconst hasContentSizeOrLegacySettings = !! inherit || !! contentSize;\n\n\tconst onChangeType = ( newType ) =>\n\t\tsetAttributes( { layout: { type: newType } } );\n\tconst onChangeLayout = ( newLayout ) =>\n\t\tsetAttributes( { layout: newLayout } );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Layout' ) }>\n\t\t\t\t\t{ showInheritToggle && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tclassName=\"block-editor-hooks__toggle-control\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Inner blocks use content width' ) }\n\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutType?.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t'constrained' ||\n\t\t\t\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'default'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'constrained',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use content width with options for full and wide widths.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks will fill the width of this container. Toggle to constrain.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! inherit && allowSwitching && (\n\t\t\t\t\t\t<LayoutTypeSwitcher\n\t\t\t\t\t\t\ttype={ type }\n\t\t\t\t\t\t\tonChange={ onChangeType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ layoutType && layoutType.name !== 'default' && (\n\t\t\t\t\t\t<layoutType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ constrainedType && displayControlsForLegacyLayouts && (\n\t\t\t\t\t\t<constrainedType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ ! inherit && blockEditingMode === 'default' && layoutType && (\n\t\t\t\t<layoutType.toolBarControls\n\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ButtonGroup>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tisPressed={ type === name }\n\t\t\t\t\t\tonClick={ () => onChange( name ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ButtonGroup>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include `layout`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( 'type' in ( settings.attributes?.layout ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasLayoutBlockSupport( settings ) ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tlayout: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include layout controls\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\tconst supportLayout = hasLayoutBlockSupport( blockName );\n\n\t\tconst blockEditingMode = useBlockEditingMode();\n\t\treturn [\n\t\t\tsupportLayout && blockEditingMode === 'default' && (\n\t\t\t\t<LayoutPanel key=\"layout\" { ...props } />\n\t\t\t),\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst blockSupportsLayout = hasLayoutBlockSupport( name );\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderLayoutStyles =\n\t\t\tblockSupportsLayout && ! disableLayoutStyles;\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst { layout } = attributes;\n\t\tconst { default: defaultBlockLayout } =\n\t\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\t\tconst usedLayout =\n\t\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t\t: layout || defaultBlockLayout || {};\n\t\tconst layoutClasses = blockSupportsLayout\n\t\t\t? useLayoutClasses( attributes, name )\n\t\t\t: null;\n\t\t// Higher specificity to override defaults from theme.json.\n\t\tconst selector = `.wp-container-${ id }.wp-container-${ id }`;\n\t\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\t\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t\t// Get CSS string for the current layout type.\n\t\t// The CSS and `style` element is only output if it is not empty.\n\t\tlet css;\n\t\tif ( shouldRenderLayoutStyles ) {\n\t\t\tconst fullLayoutType = getLayoutType(\n\t\t\t\tusedLayout?.type || 'default'\n\t\t\t);\n\t\t\tcss = fullLayoutType?.getLayoutStyle?.( {\n\t\t\t\tblockName: name,\n\t\t\t\tselector,\n\t\t\t\tlayout: usedLayout,\n\t\t\t\tstyle: attributes?.style,\n\t\t\t\thasBlockGapSupport,\n\t\t\t} );\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\t\tconst layoutClassNames = classnames(\n\t\t\t{\n\t\t\t\t[ `wp-container-${ id }` ]: shouldRenderLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t},\n\t\t\tlayoutClasses\n\t\t);\n\n\t\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! css ) return;\n\t\t\tsetStyleOverride( selector, { css } );\n\t\t\treturn () => {\n\t\t\t\tdeleteStyleOverride( selector );\n\t\t\t};\n\t\t}, [ selector, css, setStyleOverride, deleteStyleOverride ] );\n\n\t\treturn (\n\t\t\t<BlockListBlock\n\t\t\t\t{ ...props }\n\t\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t/>\n\t\t);\n\t},\n\t'withLayoutStyles'\n);\n\n/**\n * Override the default block element to add the child layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withChildLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { attributes } = props;\n\t\tconst { style: { layout = {} } = {} } = attributes;\n\t\tconst { selfStretch, flexSize } = layout;\n\t\tconst hasChildLayout = selfStretch || flexSize;\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderChildLayoutStyles =\n\t\t\thasChildLayout && ! disableLayoutStyles;\n\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst selector = `.wp-container-content-${ id }`;\n\n\t\tlet css = '';\n\n\t\tif ( selfStretch === 'fixed' && flexSize ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-basis: ${ flexSize };\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}`;\n\t\t} else if ( selfStretch === 'fill' ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-grow: 1;\n\t\t\t}`;\n\t\t}\n\n\t\t// Attach a `wp-container-content` id-based classname.\n\t\tconst className = classnames( props?.className, {\n\t\t\t[ `wp-container-content-${ id }` ]:\n\t\t\t\tshouldRenderChildLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t} );\n\n\t\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! css ) return;\n\t\t\tsetStyleOverride( selector, { css } );\n\t\t\treturn () => {\n\t\t\t\tdeleteStyleOverride( selector );\n\t\t\t};\n\t\t}, [ selector, css, setStyleOverride, deleteStyleOverride ] );\n\n\t\treturn <BlockListBlock { ...props } className={ className } />;\n\t},\n\t'withChildLayoutStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/layout/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-layout-styles',\n\twithLayoutStyles\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-child-layout-styles',\n\twithChildLayoutStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/layout/with-inspector-controls',\n\twithInspectorControls\n);\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,0BAA0B,EAAEC,aAAa,QAAQ,oBAAoB;AAC9E,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,eAAe,EAAEC,eAAe,QAAQ,mBAAmB;AACpE,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SACCC,MAAM,EACNC,WAAW,EACXC,aAAa,EACbC,SAAS,QACH,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,QAAQ,oBAAoB;;AAE9C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,UAAU;AACpD,SAASC,iBAAiB,QAAQ,eAAe;AACjD,OAAOC,UAAU,MAAM,2BAA2B;AAClD,SAASC,aAAa,EAAEC,cAAc,QAAQ,YAAY;AAC1D,SAASC,mBAAmB,QAAQ,kCAAkC;AACtE,SAASC,kBAAkB,QAAQ,wBAAwB;AAC3D,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,gBAAgB,QAAQ,SAAS;AAC1C,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,MAAMC,qBAAqB,GAAG,QAAQ;AAEtC,SAASC,qBAAqBA,CAAEC,SAAS,EAAG;EAC3C,OACCtB,eAAe,CAAEsB,SAAS,EAAE,QAAS,CAAC,IACtCtB,eAAe,CAAEsB,SAAS,EAAE,sBAAuB,CAAC;AAEtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAEC,eAAe,GAAG,CAAC,CAAC,EAAEF,SAAS,GAAG,EAAE,EAAG;EACxE,MAAMG,oBAAoB,GAAGxB,SAAS,CAAIyB,MAAM,IAAM;IACrD,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAEhB,gBAAiB,CAAC;IAClD,OAAOiB,WAAW,CAAC,CAAC,CAACC,sBAAsB,EACxCC,6BAA6B;EACjC,CAAC,EAAE,EAAG,CAAC;EACP,MAAM;IAAEC;EAAO,CAAC,GAAGN,eAAe;EAElC,MAAM;IAAEO,OAAO,EAAEC;EAAmB,CAAC,GACpCjC,eAAe,CAAEuB,SAAS,EAAEF,qBAAsB,CAAC,IAAI,CAAC,CAAC;EAC1D,MAAMa,UAAU,GACfH,MAAM,EAAEI,OAAO,IAAIJ,MAAM,EAAEK,WAAW,IAAIL,MAAM,EAAEM,QAAQ,GACvD;IAAE,GAAGN,MAAM;IAAEO,IAAI,EAAE;EAAc,CAAC,GAClCP,MAAM,IAAIE,kBAAkB,IAAI,CAAC,CAAC;EAEtC,MAAMM,gBAAgB,GAAG,EAAE;EAE3B,IAAKtB,kBAAkB,CAAEiB,UAAU,EAAEI,IAAI,IAAI,SAAS,CAAE,EAAEE,SAAS,EAAG;IACrE,MAAMC,aAAa,GAClBxB,kBAAkB,CAAEiB,UAAU,EAAEI,IAAI,IAAI,SAAS,CAAE,EAAEE,SAAS;IAC/D,MAAME,cAAc,GAAGnB,SAAS,CAACoB,KAAK,CAAE,GAAI,CAAC;IAC7C,MAAMC,aAAa,GAClBF,cAAc,CAAE,CAAC,CAAE,KAAK,MAAM,GAC3BA,cAAc,CAACG,GAAG,CAAC,CAAC,GACpBH,cAAc,CAACI,IAAI,CAAE,GAAI,CAAC;IAC9B,MAAMC,iBAAiB,GAAI,YAAYH,aAAe,IAAIH,aAAe,EAAC;IAC1EF,gBAAgB,CAACS,IAAI,CAAEP,aAAa,EAAEM,iBAAkB,CAAC;EAC1D;EAEA,IACC,CAAEb,UAAU,EAAEC,OAAO,IACpBD,UAAU,EAAEE,WAAW,IACvBF,UAAU,EAAEI,IAAI,KAAK,aAAa,KACnCZ,oBAAoB,EACnB;IACDa,gBAAgB,CAACS,IAAI,CAAE,oBAAqB,CAAC;EAC9C;EAEA,IAAKd,UAAU,EAAEe,WAAW,EAAG;IAC9BV,gBAAgB,CAACS,IAAI,CAAG,MAAM9B,SAAS,CAAEgB,UAAU,CAACe,WAAY,CAAG,EAAE,CAAC;EACvE;EAEA,IAAKf,UAAU,EAAEgB,cAAc,EAAG;IACjCX,gBAAgB,CAACS,IAAI,CACnB,4BAA4B9B,SAAS,CACrCgB,UAAU,CAACgB,cACZ,CAAG,EACJ,CAAC;EACF;EAEA,IAAKhB,UAAU,EAAEiB,QAAQ,IAAIjB,UAAU,CAACiB,QAAQ,KAAK,QAAQ,EAAG;IAC/DZ,gBAAgB,CAACS,IAAI,CAAE,WAAY,CAAC;EACrC;EAEA,OAAOT,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASa,eAAeA,CAAE3B,eAAe,GAAG,CAAC,CAAC,EAAEF,SAAS,EAAE8B,QAAQ,EAAG;EAC5E,MAAM;IAAEtB,MAAM,GAAG,CAAC,CAAC;IAAEuB,KAAK,GAAG,CAAC;EAAE,CAAC,GAAG7B,eAAe;EACnD;EACA,MAAMS,UAAU,GACfH,MAAM,EAAEI,OAAO,IAAIJ,MAAM,EAAEK,WAAW,IAAIL,MAAM,EAAEM,QAAQ,GACvD;IAAE,GAAGN,MAAM;IAAEO,IAAI,EAAE;EAAc,CAAC,GAClCP,MAAM,IAAI,CAAC,CAAC;EAChB,MAAMwB,cAAc,GAAGzC,aAAa,CAAEoB,UAAU,EAAEI,IAAI,IAAI,SAAU,CAAC;EACrE,MAAMkB,eAAe,GAAG3C,UAAU,CAAE,kBAAmB,CAAC;EACxD,MAAM4C,kBAAkB,GAAGD,eAAe,KAAK,IAAI;EACnD,MAAME,GAAG,GAAGH,cAAc,EAAEI,cAAc,GAAI;IAC7CpC,SAAS;IACT8B,QAAQ;IACRtB,MAAM;IACNuB,KAAK;IACLG;EACD,CAAE,CAAC;EACH,OAAOC,GAAG;AACX;AAEA,SAASE,WAAWA,CAAE;EAAEC,aAAa;EAAEC,UAAU;EAAEC,IAAI,EAAExC;AAAU,CAAC,EAAG;EACtE,MAAMyC,QAAQ,GAAG7C,gBAAgB,CAAEI,SAAU,CAAC;EAC9C,MAAM;IACLQ,MAAM,EAAE;MAAEkC,YAAY,EAAEC;IAAoB;EAC7C,CAAC,GAAGF,QAAQ;EAEZ,MAAM;IAAEjC;EAAO,CAAC,GAAG+B,UAAU;EAC7B,MAAMK,kBAAkB,GAAGtD,UAAU,CAAE,QAAS,CAAC;EACjD,MAAM;IAAEuD;EAAoB,CAAC,GAAGlE,SAAS,CAAIyB,MAAM,IAAM;IACxD,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAEhB,gBAAiB,CAAC;IAClD,OAAO;MACNyD,mBAAmB,EAAExC,WAAW,CAAC,CAAC,CAACyC;IACpC,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAMC,gBAAgB,GAAGtD,mBAAmB,CAAC,CAAC;EAE9C,MAAMuD,kBAAkB,GAAGvE,eAAe,CACzCuB,SAAS,EACTF,qBAAqB,EACrB,CAAC,CACF,CAAC;EACD,MAAM;IACLmD,cAAc;IACdP,YAAY,GAAGC,mBAAmB,aAAnBA,mBAAmB,cAAnBA,mBAAmB,GAAI,IAAI;IAC1CO,eAAe,GAAG,IAAI;IACtBzC,OAAO,EAAEC;EACV,CAAC,GAAGsC,kBAAkB;EAEtB,IAAK,CAAEN,YAAY,EAAG;IACrB,OAAO,IAAI;EACZ;;EAEA;EACA;EACA;EACA,MAAMS,iBAAiB,GAAG,CAAC,EAC1BD,eAAe,IACf,CAAC,CAAEN,kBAAkB,KACnB,CAAEpC,MAAM,EAAEO,IAAI,IACfP,MAAM,EAAEO,IAAI,KAAK,SAAS,IAC1BP,MAAM,EAAEO,IAAI,KAAK,aAAa,IAC9BP,MAAM,EAAEI,OAAO,CAAE,CAClB;EAED,MAAMD,UAAU,GAAGH,MAAM,IAAIE,kBAAkB,IAAI,CAAC,CAAC;EACrD,MAAM;IACLE,OAAO,GAAG,KAAK;IACfG,IAAI,GAAG,SAAS;IAChBF,WAAW,GAAG;EACf,CAAC,GAAGF,UAAU;EACd;AACD;AACA;AACA;AACA;EACC,IACC,CAAEI,IAAI,KAAK,SAAS,IAAIA,IAAI,KAAK,aAAa,KAC9C,CAAE8B,mBAAmB,EACpB;IACD,OAAO,IAAI;EACZ;EACA,MAAMO,UAAU,GAAG7D,aAAa,CAAEwB,IAAK,CAAC;EACxC,MAAMsC,eAAe,GAAG9D,aAAa,CAAE,aAAc,CAAC;EACtD,MAAM+D,+BAA+B,GACpC,CAAE3C,UAAU,CAACI,IAAI,KAAMF,WAAW,IAAID,OAAO,CAAE;EAChD,MAAM2C,8BAA8B,GAAG,CAAC,CAAE3C,OAAO,IAAI,CAAC,CAAEC,WAAW;EAEnE,MAAM2C,YAAY,GAAKC,OAAO,IAC7BnB,aAAa,CAAE;IAAE9B,MAAM,EAAE;MAAEO,IAAI,EAAE0C;IAAQ;EAAE,CAAE,CAAC;EAC/C,MAAMC,cAAc,GAAKC,SAAS,IACjCrB,aAAa,CAAE;IAAE9B,MAAM,EAAEmD;EAAU,CAAE,CAAC;EAEvC,OACCC,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACvE,iBAAiB,QACjBuE,aAAA,CAAC5E,SAAS;IAAC8E,KAAK,EAAG7E,EAAE,CAAE,QAAS;EAAG,GAChCkE,iBAAiB,IAClBS,aAAA,CAAAC,QAAA,QACCD,aAAA,CAAC7E,aAAa;IACbgF,uBAAuB;IACvB9C,SAAS,EAAC,oCAAoC;IAC9C+C,KAAK,EAAG/E,EAAE,CAAE,gCAAiC,CAAG;IAChDgF,OAAO,EACNb,UAAU,EAAEZ,IAAI,KAAK,aAAa,IAClCe,8BACA;IACDW,QAAQ,EAAGA,CAAA,KACV5B,aAAa,CAAE;MACd9B,MAAM,EAAE;QACPO,IAAI,EACHqC,UAAU,EAAEZ,IAAI,KACf,aAAa,IACde,8BAA8B,GAC3B,SAAS,GACT;MACL;IACD,CAAE,CACF;IACDY,IAAI,EACHf,UAAU,EAAEZ,IAAI,KAAK,aAAa,IAClCe,8BAA8B,GAC3BtE,EAAE,CACF,wEACA,CAAC,GACDA,EAAE,CACF,2EACA;EACH,CACD,CACA,CACF,EAEC,CAAE2B,OAAO,IAAIqC,cAAc,IAC5BW,aAAA,CAACQ,kBAAkB;IAClBrD,IAAI,EAAGA,IAAM;IACbmD,QAAQ,EAAGV;EAAc,CACzB,CACD,EAECJ,UAAU,IAAIA,UAAU,CAACZ,IAAI,KAAK,SAAS,IAC5CoB,aAAA,CAACR,UAAU,CAACiB,iBAAiB;IAC5B7D,MAAM,EAAGG,UAAY;IACrBuD,QAAQ,EAAGR,cAAgB;IAC3BV,kBAAkB,EAAGA;EAAoB,CACzC,CACD,EACCK,eAAe,IAAIC,+BAA+B,IACnDM,aAAA,CAACP,eAAe,CAACgB,iBAAiB;IACjC7D,MAAM,EAAGG,UAAY;IACrBuD,QAAQ,EAAGR,cAAgB;IAC3BV,kBAAkB,EAAGA;EAAoB,CACzC,CAEQ,CACO,CAAC,EAClB,CAAEpC,OAAO,IAAImC,gBAAgB,KAAK,SAAS,IAAIK,UAAU,IAC1DQ,aAAA,CAACR,UAAU,CAACkB,eAAe;IAC1B9D,MAAM,EAAGG,UAAY;IACrBuD,QAAQ,EAAGR,cAAgB;IAC3BV,kBAAkB,EAAGA;EAAoB,CACzC,CAED,CAAC;AAEL;AAEA,SAASoB,kBAAkBA,CAAE;EAAErD,IAAI;EAAEmD;AAAS,CAAC,EAAG;EACjD,OACCN,aAAA,CAAC9E,WAAW,QACTU,cAAc,CAAC,CAAC,CAAC+E,GAAG,CAAE,CAAE;IAAE/B,IAAI;IAAEwB;EAAM,CAAC,KAAM;IAC9C,OACCJ,aAAA,CAAC/E,MAAM;MACN2F,GAAG,EAAGhC,IAAM;MACZiC,SAAS,EAAG1D,IAAI,KAAKyB,IAAM;MAC3BkC,OAAO,EAAGA,CAAA,KAAMR,QAAQ,CAAE1B,IAAK;IAAG,GAEhCwB,KACK,CAAC;EAEX,CAAE,CACU,CAAC;AAEhB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASW,YAAYA,CAAElC,QAAQ,EAAG;EAAA,IAAAmC,qBAAA;EACxC,IAAK,MAAM,MAAAA,qBAAA,GAAMnC,QAAQ,CAACF,UAAU,EAAE/B,MAAM,cAAAoE,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,CAAE,EAAG;IACtD,OAAOnC,QAAQ;EAChB;EACA,IAAK1C,qBAAqB,CAAE0C,QAAS,CAAC,EAAG;IACxCA,QAAQ,CAACF,UAAU,GAAG;MACrB,GAAGE,QAAQ,CAACF,UAAU;MACtB/B,MAAM,EAAE;QACPO,IAAI,EAAE;MACP;IACD,CAAC;EACF;EAEA,OAAO0B,QAAQ;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMoC,qBAAqB,GAAGvG,0BAA0B,CAC5DwG,SAAS,IAAQC,KAAK,IAAM;EAC7B,MAAM;IAAEvC,IAAI,EAAExC;EAAU,CAAC,GAAG+E,KAAK;EACjC,MAAMC,aAAa,GAAGjF,qBAAqB,CAAEC,SAAU,CAAC;EAExD,MAAM+C,gBAAgB,GAAGtD,mBAAmB,CAAC,CAAC;EAC9C,OAAO,CACNuF,aAAa,IAAIjC,gBAAgB,KAAK,SAAS,IAC9Ca,aAAA,CAACvB,WAAW;IAACmC,GAAG,EAAC,QAAQ;IAAA,GAAMO;EAAK,CAAI,CACxC,EACDnB,aAAA,CAACkB,SAAS;IAACN,GAAG,EAAC,MAAM;IAAA,GAAMO;EAAK,CAAI,CAAC,CACrC;AACF,CAAC,EACD,uBACD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,gBAAgB,GAAG3G,0BAA0B,CACvD4G,cAAc,IAAQH,KAAK,IAAM;EAClC,MAAM;IAAEvC,IAAI;IAAED;EAAW,CAAC,GAAGwC,KAAK;EAClC,MAAMI,mBAAmB,GAAGpF,qBAAqB,CAAEyC,IAAK,CAAC;EACzD,MAAM4C,mBAAmB,GAAGzG,SAAS,CAAIyB,MAAM,IAAM;IACpD,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAEhB,gBAAiB,CAAC;IAClD,OAAO,CAAC,CAAEiB,WAAW,CAAC,CAAC,CAAC+E,mBAAmB;EAC5C,CAAE,CAAC;EACH,MAAMC,wBAAwB,GAC7BF,mBAAmB,IAAI,CAAEC,mBAAmB;EAC7C,MAAME,EAAE,GAAG/G,aAAa,CAAE2G,cAAe,CAAC;EAC1C,MAAM;IAAE1E;EAAO,CAAC,GAAG+B,UAAU;EAC7B,MAAM;IAAE9B,OAAO,EAAEC;EAAmB,CAAC,GACpCjC,eAAe,CAAE+D,IAAI,EAAE1C,qBAAsB,CAAC,IAAI,CAAC,CAAC;EACrD,MAAMa,UAAU,GACfH,MAAM,EAAEI,OAAO,IAAIJ,MAAM,EAAEK,WAAW,IAAIL,MAAM,EAAEM,QAAQ,GACvD;IAAE,GAAGN,MAAM;IAAEO,IAAI,EAAE;EAAc,CAAC,GAClCP,MAAM,IAAIE,kBAAkB,IAAI,CAAC,CAAC;EACtC,MAAM6E,aAAa,GAAGJ,mBAAmB,GACtClF,gBAAgB,CAAEsC,UAAU,EAAEC,IAAK,CAAC,GACpC,IAAI;EACP;EACA,MAAMV,QAAQ,GAAI,iBAAiBwD,EAAI,iBAAiBA,EAAI,EAAC;EAC7D,MAAMrD,eAAe,GAAG3C,UAAU,CAAE,kBAAmB,CAAC;EACxD,MAAM4C,kBAAkB,GAAGD,eAAe,KAAK,IAAI;;EAEnD;EACA;EACA,IAAIE,GAAG;EACP,IAAKkD,wBAAwB,EAAG;IAC/B,MAAMrD,cAAc,GAAGzC,aAAa,CACnCoB,UAAU,EAAEI,IAAI,IAAI,SACrB,CAAC;IACDoB,GAAG,GAAGH,cAAc,EAAEI,cAAc,GAAI;MACvCpC,SAAS,EAAEwC,IAAI;MACfV,QAAQ;MACRtB,MAAM,EAAEG,UAAU;MAClBoB,KAAK,EAAEQ,UAAU,EAAER,KAAK;MACxBG;IACD,CAAE,CAAC;EACJ;;EAEA;EACA,MAAMsD,gBAAgB,GAAGnH,UAAU,CAClC;IACC,CAAG,gBAAgBiH,EAAI,EAAC,GAAID,wBAAwB,IAAI,CAAC,CAAElD,GAAG,CAAE;EACjE,CAAC,EACDoD,aACD,CAAC;EAED,MAAM;IAAEE,gBAAgB;IAAEC;EAAoB,CAAC,GAAG7F,MAAM,CACvDjB,WAAW,CAAEQ,gBAAiB,CAC/B,CAAC;EAEDF,SAAS,CAAE,MAAM;IAChB,IAAK,CAAEiD,GAAG,EAAG;IACbsD,gBAAgB,CAAE3D,QAAQ,EAAE;MAAEK;IAAI,CAAE,CAAC;IACrC,OAAO,MAAM;MACZuD,mBAAmB,CAAE5D,QAAS,CAAC;IAChC,CAAC;EACF,CAAC,EAAE,CAAEA,QAAQ,EAAEK,GAAG,EAAEsD,gBAAgB,EAAEC,mBAAmB,CAAG,CAAC;EAE7D,OACC9B,aAAA,CAACsB,cAAc;IAAA,GACTH,KAAK;IACVY,0BAA0B,EAAGH;EAAkB,CAC/C,CAAC;AAEJ,CAAC,EACD,kBACD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,qBAAqB,GAAGtH,0BAA0B,CAC5D4G,cAAc,IAAQH,KAAK,IAAM;EAClC,MAAM;IAAExC;EAAW,CAAC,GAAGwC,KAAK;EAC5B,MAAM;IAAEhD,KAAK,EAAE;MAAEvB,MAAM,GAAG,CAAC;IAAE,CAAC,GAAG,CAAC;EAAE,CAAC,GAAG+B,UAAU;EAClD,MAAM;IAAEsD,WAAW;IAAEC;EAAS,CAAC,GAAGtF,MAAM;EACxC,MAAMuF,cAAc,GAAGF,WAAW,IAAIC,QAAQ;EAC9C,MAAMV,mBAAmB,GAAGzG,SAAS,CAAIyB,MAAM,IAAM;IACpD,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAEhB,gBAAiB,CAAC;IAClD,OAAO,CAAC,CAAEiB,WAAW,CAAC,CAAC,CAAC+E,mBAAmB;EAC5C,CAAE,CAAC;EACH,MAAMY,6BAA6B,GAClCD,cAAc,IAAI,CAAEX,mBAAmB;EAExC,MAAME,EAAE,GAAG/G,aAAa,CAAE2G,cAAe,CAAC;EAC1C,MAAMpD,QAAQ,GAAI,yBAAyBwD,EAAI,EAAC;EAEhD,IAAInD,GAAG,GAAG,EAAE;EAEZ,IAAK0D,WAAW,KAAK,OAAO,IAAIC,QAAQ,EAAG;IAC1C3D,GAAG,IAAK,GAAGL,QAAU;AACxB,kBAAmBgE,QAAU;AAC7B;AACA,KAAK;EACH,CAAC,MAAM,IAAKD,WAAW,KAAK,MAAM,EAAG;IACpC1D,GAAG,IAAK,GAAGL,QAAU;AACxB;AACA,KAAK;EACH;;EAEA;EACA,MAAMb,SAAS,GAAG5C,UAAU,CAAE0G,KAAK,EAAE9D,SAAS,EAAE;IAC/C,CAAG,wBAAwBqE,EAAI,EAAC,GAC/BU,6BAA6B,IAAI,CAAC,CAAE7D,GAAG,CAAE;EAC3C,CAAE,CAAC;;EAEH,MAAM;IAAEsD,gBAAgB;IAAEC;EAAoB,CAAC,GAAG7F,MAAM,CACvDjB,WAAW,CAAEQ,gBAAiB,CAC/B,CAAC;EAEDF,SAAS,CAAE,MAAM;IAChB,IAAK,CAAEiD,GAAG,EAAG;IACbsD,gBAAgB,CAAE3D,QAAQ,EAAE;MAAEK;IAAI,CAAE,CAAC;IACrC,OAAO,MAAM;MACZuD,mBAAmB,CAAE5D,QAAS,CAAC;IAChC,CAAC;EACF,CAAC,EAAE,CAAEA,QAAQ,EAAEK,GAAG,EAAEsD,gBAAgB,EAAEC,mBAAmB,CAAG,CAAC;EAE7D,OAAO9B,aAAA,CAACsB,cAAc;IAAA,GAAMH,KAAK;IAAG9D,SAAS,EAAGA;EAAW,CAAE,CAAC;AAC/D,CAAC,EACD,uBACD,CAAC;AAEDzC,SAAS,CACR,0BAA0B,EAC1B,0BAA0B,EAC1BmG,YACD,CAAC;AACDnG,SAAS,CACR,uBAAuB,EACvB,uCAAuC,EACvCyG,gBACD,CAAC;AACDzG,SAAS,CACR,uBAAuB,EACvB,6CAA6C,EAC7CoH,qBACD,CAAC;AACDpH,SAAS,CACR,kBAAkB,EAClB,4CAA4C,EAC5CqG,qBACD,CAAC"}
1
+ {"version":3,"names":["classnames","createHigherOrderComponent","useInstanceId","addFilter","getBlockSupport","hasBlockSupport","useSelect","useDispatch","Button","ButtonGroup","ToggleControl","PanelBody","__","useEffect","store","blockEditorStore","InspectorControls","useSettings","getLayoutType","getLayoutTypes","useBlockEditingMode","LAYOUT_DEFINITIONS","kebabCase","useBlockSettings","unlock","layoutBlockSupportKey","hasLayoutBlockSupport","blockName","useLayoutClasses","blockAttributes","rootPaddingAlignment","select","getSettings","__experimentalFeatures","useRootPaddingAwareAlignments","layout","default","defaultBlockLayout","usedLayout","inherit","contentSize","wideSize","type","layoutClassnames","className","baseClassName","splitBlockName","split","fullBlockName","pop","join","compoundClassName","push","orientation","justifyContent","flexWrap","useLayoutStyles","selector","style","fullLayoutType","blockGapSupport","hasBlockGapSupport","css","getLayoutStyle","LayoutPanel","setAttributes","attributes","name","settings","allowEditing","allowEditingSetting","defaultThemeLayout","themeSupportsLayout","supportsLayout","blockEditingMode","layoutBlockSupport","allowSwitching","allowInheriting","showInheritToggle","layoutType","constrainedType","displayControlsForLegacyLayouts","hasContentSizeOrLegacySettings","onChangeType","newType","onChangeLayout","newLayout","createElement","Fragment","title","__nextHasNoMarginBottom","label","checked","onChange","help","LayoutTypeSwitcher","inspectorControls","toolBarControls","map","key","isPressed","onClick","addAttribute","_settings$attributes$","withInspectorControls","BlockEdit","props","supportLayout","withLayoutStyles","BlockListBlock","blockSupportsLayout","disableLayoutStyles","shouldRenderLayoutStyles","id","layoutClasses","layoutClassNames","setStyleOverride","deleteStyleOverride","__unstableLayoutClassNames","withChildLayoutStyles","selfStretch","flexSize","hasChildLayout","shouldRenderChildLayoutStyles"],"sources":["@wordpress/block-editor/src/hooks/layout.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\tButtonGroup,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport { useSettings } from '../components/use-settings';\nimport { getLayoutType, getLayoutTypes } from '../layouts';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { LAYOUT_DEFINITIONS } from '../layouts/definitions';\nimport { kebabCase } from '../utils/object';\nimport { useBlockSettings } from './utils';\nimport { unlock } from '../lock-unlock';\n\nconst layoutBlockSupportKey = 'layout';\n\nfunction hasLayoutBlockSupport( blockName ) {\n\treturn (\n\t\thasBlockSupport( blockName, 'layout' ) ||\n\t\thasBlockSupport( blockName, '__experimentalLayout' )\n\t);\n}\n\n/**\n * Generates the utility classnames for the given block's layout attributes.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n *\n * @return { Array } Array of CSS classname strings.\n */\nexport function useLayoutClasses( blockAttributes = {}, blockName = '' ) {\n\tconst rootPaddingAlignment = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().__experimentalFeatures\n\t\t\t?.useRootPaddingAwareAlignments;\n\t}, [] );\n\tconst { layout } = blockAttributes;\n\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( blockName, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst layoutClassnames = [];\n\n\tif ( LAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className ) {\n\t\tconst baseClassName =\n\t\t\tLAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className;\n\t\tconst splitBlockName = blockName.split( '/' );\n\t\tconst fullBlockName =\n\t\t\tsplitBlockName[ 0 ] === 'core'\n\t\t\t\t? splitBlockName.pop()\n\t\t\t\t: splitBlockName.join( '-' );\n\t\tconst compoundClassName = `wp-block-${ fullBlockName }-${ baseClassName }`;\n\t\tlayoutClassnames.push( baseClassName, compoundClassName );\n\t}\n\n\tif (\n\t\t( usedLayout?.inherit ||\n\t\t\tusedLayout?.contentSize ||\n\t\t\tusedLayout?.type === 'constrained' ) &&\n\t\trootPaddingAlignment\n\t) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( usedLayout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( usedLayout.orientation ) }` );\n\t}\n\n\tif ( usedLayout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase(\n\t\t\t\tusedLayout.justifyContent\n\t\t\t) }`\n\t\t);\n\t}\n\n\tif ( usedLayout?.flexWrap && usedLayout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\n}\n\n/**\n * Generates a CSS rule with the given block's layout styles.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n * @param { string } selector A selector to use in generating the CSS rule.\n *\n * @return { string } CSS rule.\n */\nexport function useLayoutStyles( blockAttributes = {}, blockName, selector ) {\n\tconst { layout = {}, style = {} } = blockAttributes;\n\t// Update type for blocks using legacy layouts.\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || {};\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst [ blockGapSupport ] = useSettings( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\tconst css = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName,\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n\treturn css;\n}\n\nfunction LayoutPanel( { setAttributes, attributes, name: blockName } ) {\n\tconst settings = useBlockSettings( blockName );\n\tconst {\n\t\tlayout: { allowEditing: allowEditingSetting },\n\t} = settings;\n\n\tconst { layout } = attributes;\n\tconst [ defaultThemeLayout ] = useSettings( 'layout' );\n\tconst { themeSupportsLayout } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t};\n\t}, [] );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = allowEditingSetting ?? true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = layoutBlockSupport;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t// Only show the inherit toggle if it's supported,\n\t// a default theme layout is set (e.g. one that provides `contentSize` and/or `wideSize` values),\n\t// and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.\n\tconst showInheritToggle = !! (\n\t\tallowInheriting &&\n\t\t!! defaultThemeLayout &&\n\t\t( ! layout?.type ||\n\t\t\tlayout?.type === 'default' ||\n\t\t\tlayout?.type === 'constrained' ||\n\t\t\tlayout?.inherit )\n\t);\n\n\tconst usedLayout = layout || defaultBlockLayout || {};\n\tconst {\n\t\tinherit = false,\n\t\ttype = 'default',\n\t\tcontentSize = null,\n\t} = usedLayout;\n\t/**\n\t * `themeSupportsLayout` is only relevant to the `default/flow` or\n\t * `constrained` layouts and it should not be taken into account when other\n\t * `layout` types are used.\n\t */\n\tif (\n\t\t( type === 'default' || type === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( type );\n\tconst constrainedType = getLayoutType( 'constrained' );\n\tconst displayControlsForLegacyLayouts =\n\t\t! usedLayout.type && ( contentSize || inherit );\n\tconst hasContentSizeOrLegacySettings = !! inherit || !! contentSize;\n\n\tconst onChangeType = ( newType ) =>\n\t\tsetAttributes( { layout: { type: newType } } );\n\tconst onChangeLayout = ( newLayout ) =>\n\t\tsetAttributes( { layout: newLayout } );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Layout' ) }>\n\t\t\t\t\t{ showInheritToggle && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tclassName=\"block-editor-hooks__toggle-control\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Inner blocks use content width' ) }\n\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutType?.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t'constrained' ||\n\t\t\t\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'default'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'constrained',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use content width with options for full and wide widths.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks will fill the width of this container. Toggle to constrain.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! inherit && allowSwitching && (\n\t\t\t\t\t\t<LayoutTypeSwitcher\n\t\t\t\t\t\t\ttype={ type }\n\t\t\t\t\t\t\tonChange={ onChangeType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ layoutType && layoutType.name !== 'default' && (\n\t\t\t\t\t\t<layoutType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ constrainedType && displayControlsForLegacyLayouts && (\n\t\t\t\t\t\t<constrainedType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ ! inherit && layoutType && (\n\t\t\t\t<layoutType.toolBarControls\n\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ButtonGroup>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tisPressed={ type === name }\n\t\t\t\t\t\tonClick={ () => onChange( name ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ButtonGroup>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include `layout`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( 'type' in ( settings.attributes?.layout ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasLayoutBlockSupport( settings ) ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tlayout: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include layout controls\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst supportLayout = hasLayoutBlockSupport( props.name );\n\n\t\treturn [\n\t\t\tsupportLayout && <LayoutPanel key=\"layout\" { ...props } />,\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst blockSupportsLayout = hasLayoutBlockSupport( name );\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderLayoutStyles =\n\t\t\tblockSupportsLayout && ! disableLayoutStyles;\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst { layout } = attributes;\n\t\tconst { default: defaultBlockLayout } =\n\t\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\t\tconst usedLayout =\n\t\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t\t: layout || defaultBlockLayout || {};\n\t\tconst layoutClasses = blockSupportsLayout\n\t\t\t? useLayoutClasses( attributes, name )\n\t\t\t: null;\n\t\t// Higher specificity to override defaults from theme.json.\n\t\tconst selector = `.wp-container-${ id }.wp-container-${ id }`;\n\t\tconst [ blockGapSupport ] = useSettings( 'spacing.blockGap' );\n\t\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t\t// Get CSS string for the current layout type.\n\t\t// The CSS and `style` element is only output if it is not empty.\n\t\tlet css;\n\t\tif ( shouldRenderLayoutStyles ) {\n\t\t\tconst fullLayoutType = getLayoutType(\n\t\t\t\tusedLayout?.type || 'default'\n\t\t\t);\n\t\t\tcss = fullLayoutType?.getLayoutStyle?.( {\n\t\t\t\tblockName: name,\n\t\t\t\tselector,\n\t\t\t\tlayout: usedLayout,\n\t\t\t\tstyle: attributes?.style,\n\t\t\t\thasBlockGapSupport,\n\t\t\t} );\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\t\tconst layoutClassNames = classnames(\n\t\t\t{\n\t\t\t\t[ `wp-container-${ id }` ]: shouldRenderLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t},\n\t\t\tlayoutClasses\n\t\t);\n\n\t\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! css ) return;\n\t\t\tsetStyleOverride( selector, { css } );\n\t\t\treturn () => {\n\t\t\t\tdeleteStyleOverride( selector );\n\t\t\t};\n\t\t}, [ selector, css, setStyleOverride, deleteStyleOverride ] );\n\n\t\treturn (\n\t\t\t<BlockListBlock\n\t\t\t\t{ ...props }\n\t\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t/>\n\t\t);\n\t},\n\t'withLayoutStyles'\n);\n\n/**\n * Override the default block element to add the child layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withChildLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { attributes } = props;\n\t\tconst { style: { layout = {} } = {} } = attributes;\n\t\tconst { selfStretch, flexSize } = layout;\n\t\tconst hasChildLayout = selfStretch || flexSize;\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderChildLayoutStyles =\n\t\t\thasChildLayout && ! disableLayoutStyles;\n\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst selector = `.wp-container-content-${ id }`;\n\n\t\tlet css = '';\n\n\t\tif ( selfStretch === 'fixed' && flexSize ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-basis: ${ flexSize };\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}`;\n\t\t} else if ( selfStretch === 'fill' ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-grow: 1;\n\t\t\t}`;\n\t\t}\n\n\t\t// Attach a `wp-container-content` id-based classname.\n\t\tconst className = classnames( props?.className, {\n\t\t\t[ `wp-container-content-${ id }` ]:\n\t\t\t\tshouldRenderChildLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t} );\n\n\t\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! css ) return;\n\t\t\tsetStyleOverride( selector, { css } );\n\t\t\treturn () => {\n\t\t\t\tdeleteStyleOverride( selector );\n\t\t\t};\n\t\t}, [ selector, css, setStyleOverride, deleteStyleOverride ] );\n\n\t\treturn <BlockListBlock { ...props } className={ className } />;\n\t},\n\t'withChildLayoutStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/layout/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-layout-styles',\n\twithLayoutStyles\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-child-layout-styles',\n\twithChildLayoutStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/layout/with-inspector-controls',\n\twithInspectorControls\n);\n"],"mappings":"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"}
@@ -9,7 +9,7 @@ import { hasBlockSupport } from '@wordpress/blocks';
9
9
  */
10
10
  import LineHeightControl from '../components/line-height-control';
11
11
  import { cleanEmptyObject } from './utils';
12
- import useSetting from '../components/use-setting';
12
+ import { useSettings } from '../components/use-settings';
13
13
  export const LINE_HEIGHT_SUPPORT_KEY = 'typography.lineHeight';
14
14
 
15
15
  /**
@@ -56,7 +56,7 @@ export function LineHeightEdit(props) {
56
56
  export function useIsLineHeightDisabled({
57
57
  name: blockName
58
58
  } = {}) {
59
- const isDisabled = !useSetting('typography.lineHeight');
60
- return !hasBlockSupport(blockName, LINE_HEIGHT_SUPPORT_KEY) || isDisabled;
59
+ const [isEnabled] = useSettings('typography.lineHeight');
60
+ return !isEnabled || !hasBlockSupport(blockName, LINE_HEIGHT_SUPPORT_KEY);
61
61
  }
62
62
  //# sourceMappingURL=line-height.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["hasBlockSupport","LineHeightControl","cleanEmptyObject","useSetting","LINE_HEIGHT_SUPPORT_KEY","LineHeightEdit","props","attributes","style","setAttributes","onChange","newLineHeightValue","newStyle","typography","lineHeight","createElement","__unstableInputWidth","__nextHasNoMarginBottom","value","size","useIsLineHeightDisabled","name","blockName","isDisabled"],"sources":["@wordpress/block-editor/src/hooks/line-height.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport LineHeightControl from '../components/line-height-control';\nimport { cleanEmptyObject } from './utils';\nimport useSetting from '../components/use-setting';\n\nexport const LINE_HEIGHT_SUPPORT_KEY = 'typography.lineHeight';\n\n/**\n * Inspector control panel containing the line height related configuration\n *\n * @param {Object} props\n *\n * @return {Element} Line height edit element.\n */\nexport function LineHeightEdit( props ) {\n\tconst {\n\t\tattributes: { style },\n\t\tsetAttributes,\n\t} = props;\n\n\tconst onChange = ( newLineHeightValue ) => {\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\ttypography: {\n\t\t\t\t...style?.typography,\n\t\t\t\tlineHeight: newLineHeightValue,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( { style: cleanEmptyObject( newStyle ) } );\n\t};\n\treturn (\n\t\t<LineHeightControl\n\t\t\t__unstableInputWidth=\"100%\"\n\t\t\t__nextHasNoMarginBottom={ true }\n\t\t\tvalue={ style?.typography?.lineHeight }\n\t\t\tonChange={ onChange }\n\t\t\tsize=\"__unstable-large\"\n\t\t/>\n\t);\n}\n\n/**\n * Custom hook that checks if line-height settings have been disabled.\n *\n * @param {string} name The name of the block.\n * @return {boolean} Whether setting is disabled.\n */\nexport function useIsLineHeightDisabled( { name: blockName } = {} ) {\n\tconst isDisabled = ! useSetting( 'typography.lineHeight' );\n\n\treturn (\n\t\t! hasBlockSupport( blockName, LINE_HEIGHT_SUPPORT_KEY ) || isDisabled\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,mBAAmB;;AAEnD;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,mCAAmC;AACjE,SAASC,gBAAgB,QAAQ,SAAS;AAC1C,OAAOC,UAAU,MAAM,2BAA2B;AAElD,OAAO,MAAMC,uBAAuB,GAAG,uBAAuB;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAEC,KAAK,EAAG;EACvC,MAAM;IACLC,UAAU,EAAE;MAAEC;IAAM,CAAC;IACrBC;EACD,CAAC,GAAGH,KAAK;EAET,MAAMI,QAAQ,GAAKC,kBAAkB,IAAM;IAC1C,MAAMC,QAAQ,GAAG;MAChB,GAAGJ,KAAK;MACRK,UAAU,EAAE;QACX,GAAGL,KAAK,EAAEK,UAAU;QACpBC,UAAU,EAAEH;MACb;IACD,CAAC;IAEDF,aAAa,CAAE;MAAED,KAAK,EAAEN,gBAAgB,CAAEU,QAAS;IAAE,CAAE,CAAC;EACzD,CAAC;EACD,OACCG,aAAA,CAACd,iBAAiB;IACjBe,oBAAoB,EAAC,MAAM;IAC3BC,uBAAuB,EAAG,IAAM;IAChCC,KAAK,EAAGV,KAAK,EAAEK,UAAU,EAAEC,UAAY;IACvCJ,QAAQ,EAAGA,QAAU;IACrBS,IAAI,EAAC;EAAkB,CACvB,CAAC;AAEJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAAE;EAAEC,IAAI,EAAEC;AAAU,CAAC,GAAG,CAAC,CAAC,EAAG;EACnE,MAAMC,UAAU,GAAG,CAAEpB,UAAU,CAAE,uBAAwB,CAAC;EAE1D,OACC,CAAEH,eAAe,CAAEsB,SAAS,EAAElB,uBAAwB,CAAC,IAAImB,UAAU;AAEvE"}
1
+ {"version":3,"names":["hasBlockSupport","LineHeightControl","cleanEmptyObject","useSettings","LINE_HEIGHT_SUPPORT_KEY","LineHeightEdit","props","attributes","style","setAttributes","onChange","newLineHeightValue","newStyle","typography","lineHeight","createElement","__unstableInputWidth","__nextHasNoMarginBottom","value","size","useIsLineHeightDisabled","name","blockName","isEnabled"],"sources":["@wordpress/block-editor/src/hooks/line-height.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport LineHeightControl from '../components/line-height-control';\nimport { cleanEmptyObject } from './utils';\nimport { useSettings } from '../components/use-settings';\n\nexport const LINE_HEIGHT_SUPPORT_KEY = 'typography.lineHeight';\n\n/**\n * Inspector control panel containing the line height related configuration\n *\n * @param {Object} props\n *\n * @return {Element} Line height edit element.\n */\nexport function LineHeightEdit( props ) {\n\tconst {\n\t\tattributes: { style },\n\t\tsetAttributes,\n\t} = props;\n\n\tconst onChange = ( newLineHeightValue ) => {\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\ttypography: {\n\t\t\t\t...style?.typography,\n\t\t\t\tlineHeight: newLineHeightValue,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( { style: cleanEmptyObject( newStyle ) } );\n\t};\n\treturn (\n\t\t<LineHeightControl\n\t\t\t__unstableInputWidth=\"100%\"\n\t\t\t__nextHasNoMarginBottom={ true }\n\t\t\tvalue={ style?.typography?.lineHeight }\n\t\t\tonChange={ onChange }\n\t\t\tsize=\"__unstable-large\"\n\t\t/>\n\t);\n}\n\n/**\n * Custom hook that checks if line-height settings have been disabled.\n *\n * @param {string} name The name of the block.\n * @return {boolean} Whether setting is disabled.\n */\nexport function useIsLineHeightDisabled( { name: blockName } = {} ) {\n\tconst [ isEnabled ] = useSettings( 'typography.lineHeight' );\n\n\treturn (\n\t\t! isEnabled || ! hasBlockSupport( blockName, LINE_HEIGHT_SUPPORT_KEY )\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,mBAAmB;;AAEnD;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,mCAAmC;AACjE,SAASC,gBAAgB,QAAQ,SAAS;AAC1C,SAASC,WAAW,QAAQ,4BAA4B;AAExD,OAAO,MAAMC,uBAAuB,GAAG,uBAAuB;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAEC,KAAK,EAAG;EACvC,MAAM;IACLC,UAAU,EAAE;MAAEC;IAAM,CAAC;IACrBC;EACD,CAAC,GAAGH,KAAK;EAET,MAAMI,QAAQ,GAAKC,kBAAkB,IAAM;IAC1C,MAAMC,QAAQ,GAAG;MAChB,GAAGJ,KAAK;MACRK,UAAU,EAAE;QACX,GAAGL,KAAK,EAAEK,UAAU;QACpBC,UAAU,EAAEH;MACb;IACD,CAAC;IAEDF,aAAa,CAAE;MAAED,KAAK,EAAEN,gBAAgB,CAAEU,QAAS;IAAE,CAAE,CAAC;EACzD,CAAC;EACD,OACCG,aAAA,CAACd,iBAAiB;IACjBe,oBAAoB,EAAC,MAAM;IAC3BC,uBAAuB,EAAG,IAAM;IAChCC,KAAK,EAAGV,KAAK,EAAEK,UAAU,EAAEC,UAAY;IACvCJ,QAAQ,EAAGA,QAAU;IACrBS,IAAI,EAAC;EAAkB,CACvB,CAAC;AAEJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAAE;EAAEC,IAAI,EAAEC;AAAU,CAAC,GAAG,CAAC,CAAC,EAAG;EACnE,MAAM,CAAEC,SAAS,CAAE,GAAGpB,WAAW,CAAE,uBAAwB,CAAC;EAE5D,OACC,CAAEoB,SAAS,IAAI,CAAEvB,eAAe,CAAEsB,SAAS,EAAElB,uBAAwB,CAAC;AAExE"}
@@ -19,7 +19,7 @@ import { addFilter } from '@wordpress/hooks';
19
19
  * Internal dependencies
20
20
  */
21
21
  import BlockList from '../components/block-list';
22
- import useSetting from '../components/use-setting';
22
+ import { useSettings } from '../components/use-settings';
23
23
  import InspectorControls from '../components/inspector-controls';
24
24
  import useBlockDisplayInformation from '../components/use-block-display-information';
25
25
  import { cleanEmptyObject } from './utils';
@@ -185,8 +185,7 @@ export function resetPosition({
185
185
  export function useIsPositionDisabled({
186
186
  name: blockName
187
187
  } = {}) {
188
- const allowFixed = useSetting('position.fixed');
189
- const allowSticky = useSetting('position.sticky');
188
+ const [allowFixed, allowSticky] = useSettings('position.fixed', 'position.sticky');
190
189
  const isDisabled = !allowFixed && !allowSticky;
191
190
  return !hasPositionSupport(blockName) || isDisabled;
192
191
  }