@wordpress/block-editor 15.19.1-next.v.202605131032.0 → 15.21.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 (342) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/build/components/block-card/index.cjs +51 -41
  3. package/build/components/block-card/index.cjs.map +3 -3
  4. package/build/components/block-heading-level-dropdown/heading-level-icon.cjs.map +3 -3
  5. package/build/components/block-icon/index.cjs +7 -1
  6. package/build/components/block-icon/index.cjs.map +3 -3
  7. package/build/components/block-inspector/index.cjs +156 -11
  8. package/build/components/block-inspector/index.cjs.map +3 -3
  9. package/build/components/block-inspector/inspector-pre-tabs-slot-fill.cjs +38 -0
  10. package/build/components/block-inspector/inspector-pre-tabs-slot-fill.cjs.map +7 -0
  11. package/build/components/block-list/use-block-props/use-focus-handler.cjs +3 -4
  12. package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +3 -3
  13. package/build/components/block-list/use-block-props/use-is-hovered.cjs +24 -14
  14. package/build/components/block-list/use-block-props/use-is-hovered.cjs.map +3 -3
  15. package/build/components/block-lock/modal.cjs.map +3 -3
  16. package/build/components/block-patterns-list/index.cjs +13 -2
  17. package/build/components/block-patterns-list/index.cjs.map +2 -2
  18. package/build/components/block-popover/index.cjs +13 -3
  19. package/build/components/block-popover/index.cjs.map +2 -2
  20. package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
  21. package/build/components/block-visibility/modal.cjs.map +3 -3
  22. package/build/components/block-visibility/viewport-visibility-info.cjs.map +3 -3
  23. package/build/components/child-layout-control/index.cjs +10 -5
  24. package/build/components/child-layout-control/index.cjs.map +2 -2
  25. package/build/components/colors-gradients/control.cjs +7 -4
  26. package/build/components/colors-gradients/control.cjs.map +2 -2
  27. package/build/components/global-styles/advanced-panel.cjs +24 -22
  28. package/build/components/global-styles/advanced-panel.cjs.map +3 -3
  29. package/build/components/global-styles/color-panel.cjs +95 -58
  30. package/build/components/global-styles/color-panel.cjs.map +2 -2
  31. package/build/components/global-styles/dimensions-panel.cjs +15 -8
  32. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  33. package/build/components/global-styles/index.cjs +3 -0
  34. package/build/components/global-styles/index.cjs.map +2 -2
  35. package/build/components/global-styles/shadow-panel-components.cjs +38 -26
  36. package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
  37. package/build/components/global-styles/state-control-badges.cjs +69 -0
  38. package/build/components/global-styles/state-control-badges.cjs.map +7 -0
  39. package/build/components/global-styles/state-control.cjs +54 -63
  40. package/build/components/global-styles/state-control.cjs.map +3 -3
  41. package/build/components/iframe/use-scale-canvas.cjs +4 -1
  42. package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
  43. package/build/components/inserter/hooks/use-patterns-state.cjs +4 -6
  44. package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
  45. package/build/components/inserter/index.cjs +1 -0
  46. package/build/components/inserter/index.cjs.map +2 -2
  47. package/build/components/inserter/media-tab/media-preview.cjs +27 -18
  48. package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
  49. package/build/components/inserter/panel.cjs.map +3 -3
  50. package/build/components/inspector-controls/block-support-tools-panel.cjs +10 -2
  51. package/build/components/inspector-controls/block-support-tools-panel.cjs.map +2 -2
  52. package/build/components/inspector-controls/fill.cjs +14 -4
  53. package/build/components/inspector-controls/fill.cjs.map +2 -2
  54. package/build/components/inspector-controls/groups.cjs +2 -0
  55. package/build/components/inspector-controls/groups.cjs.map +2 -2
  56. package/build/components/inspector-controls-tabs/index.cjs +13 -8
  57. package/build/components/inspector-controls-tabs/index.cjs.map +3 -3
  58. package/build/components/inspector-controls-tabs/settings-tab.cjs +1 -4
  59. package/build/components/inspector-controls-tabs/settings-tab.cjs.map +3 -3
  60. package/build/components/inspector-controls-tabs/styles-tab.cjs +9 -0
  61. package/build/components/inspector-controls-tabs/styles-tab.cjs.map +3 -3
  62. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs +11 -5
  63. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs.map +2 -2
  64. package/build/components/list-view/block-select-button.cjs +20 -8
  65. package/build/components/list-view/block-select-button.cjs.map +2 -2
  66. package/build/components/list-view/block.cjs +2 -1
  67. package/build/components/list-view/block.cjs.map +2 -2
  68. package/build/components/preset-input-control/custom-value-controls.cjs +10 -1
  69. package/build/components/preset-input-control/custom-value-controls.cjs.map +2 -2
  70. package/build/components/preset-input-control/index.cjs.map +3 -3
  71. package/build/components/provider/use-media-upload-settings.cjs +1 -0
  72. package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
  73. package/build/components/rich-text/event-listeners/enter.cjs +9 -2
  74. package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
  75. package/build/components/rich-text/event-listeners/paste-handler.cjs +4 -4
  76. package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
  77. package/build/hooks/background.cjs +13 -3
  78. package/build/hooks/background.cjs.map +2 -2
  79. package/build/hooks/block-fields/link/index.cjs.map +3 -3
  80. package/build/hooks/block-fields/media/index.cjs.map +3 -3
  81. package/build/hooks/block-style-state.cjs +112 -0
  82. package/build/hooks/block-style-state.cjs.map +7 -0
  83. package/build/hooks/border.cjs +13 -3
  84. package/build/hooks/border.cjs.map +2 -2
  85. package/build/hooks/color.cjs +28 -9
  86. package/build/hooks/color.cjs.map +2 -2
  87. package/build/hooks/dimensions.cjs +15 -6
  88. package/build/hooks/dimensions.cjs.map +2 -2
  89. package/build/hooks/layout-child.cjs +147 -61
  90. package/build/hooks/layout-child.cjs.map +2 -2
  91. package/build/hooks/layout.cjs +263 -56
  92. package/build/hooks/layout.cjs.map +3 -3
  93. package/build/hooks/state-utils.cjs +94 -0
  94. package/build/hooks/state-utils.cjs.map +7 -0
  95. package/build/hooks/states.cjs +124 -0
  96. package/build/hooks/states.cjs.map +7 -0
  97. package/build/hooks/style.cjs +304 -17
  98. package/build/hooks/style.cjs.map +3 -3
  99. package/build/hooks/typography.cjs +14 -5
  100. package/build/hooks/typography.cjs.map +2 -2
  101. package/build/layouts/constrained.cjs +128 -55
  102. package/build/layouts/constrained.cjs.map +3 -3
  103. package/build/layouts/flex.cjs +119 -31
  104. package/build/layouts/flex.cjs.map +3 -3
  105. package/build/layouts/grid.cjs +103 -40
  106. package/build/layouts/grid.cjs.map +3 -3
  107. package/build/private-apis.cjs +2 -0
  108. package/build/private-apis.cjs.map +2 -2
  109. package/build/store/private-actions.cjs +18 -0
  110. package/build/store/private-actions.cjs.map +2 -2
  111. package/build/store/private-keys.cjs +10 -2
  112. package/build/store/private-keys.cjs.map +2 -2
  113. package/build/store/private-selectors.cjs +32 -2
  114. package/build/store/private-selectors.cjs.map +2 -2
  115. package/build/store/reducer.cjs +70 -1
  116. package/build/store/reducer.cjs.map +2 -2
  117. package/build/store/utils.cjs +1 -1
  118. package/build/store/utils.cjs.map +2 -2
  119. package/build/utils/color-values.cjs +44 -0
  120. package/build/utils/color-values.cjs.map +7 -0
  121. package/build-module/components/block-card/index.mjs +52 -45
  122. package/build-module/components/block-card/index.mjs.map +2 -2
  123. package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs +2 -2
  124. package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs.map +2 -2
  125. package/build-module/components/block-icon/index.mjs +8 -2
  126. package/build-module/components/block-icon/index.mjs.map +2 -2
  127. package/build-module/components/block-inspector/index.mjs +166 -13
  128. package/build-module/components/block-inspector/index.mjs.map +2 -2
  129. package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs +12 -0
  130. package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs.map +7 -0
  131. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +7 -5
  132. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
  133. package/build-module/components/block-list/use-block-props/use-is-hovered.mjs +28 -15
  134. package/build-module/components/block-list/use-block-props/use-is-hovered.mjs.map +2 -2
  135. package/build-module/components/block-lock/modal.mjs +4 -4
  136. package/build-module/components/block-lock/modal.mjs.map +2 -2
  137. package/build-module/components/block-patterns-list/index.mjs +14 -4
  138. package/build-module/components/block-patterns-list/index.mjs.map +2 -2
  139. package/build-module/components/block-popover/index.mjs +13 -3
  140. package/build-module/components/block-popover/index.mjs.map +2 -2
  141. package/build-module/components/block-toolbar/switch-section-style.mjs +2 -2
  142. package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
  143. package/build-module/components/block-visibility/modal.mjs +2 -2
  144. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  145. package/build-module/components/block-visibility/viewport-visibility-info.mjs +2 -2
  146. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  147. package/build-module/components/child-layout-control/index.mjs +10 -5
  148. package/build-module/components/child-layout-control/index.mjs.map +2 -2
  149. package/build-module/components/colors-gradients/control.mjs +7 -4
  150. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  151. package/build-module/components/global-styles/advanced-panel.mjs +25 -27
  152. package/build-module/components/global-styles/advanced-panel.mjs.map +2 -2
  153. package/build-module/components/global-styles/color-panel.mjs +96 -59
  154. package/build-module/components/global-styles/color-panel.mjs.map +2 -2
  155. package/build-module/components/global-styles/dimensions-panel.mjs +20 -8
  156. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  157. package/build-module/components/global-styles/index.mjs +2 -0
  158. package/build-module/components/global-styles/index.mjs.map +2 -2
  159. package/build-module/components/global-styles/shadow-panel-components.mjs +39 -28
  160. package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
  161. package/build-module/components/global-styles/state-control-badges.mjs +48 -0
  162. package/build-module/components/global-styles/state-control-badges.mjs.map +7 -0
  163. package/build-module/components/global-styles/state-control.mjs +57 -71
  164. package/build-module/components/global-styles/state-control.mjs.map +2 -2
  165. package/build-module/components/iframe/use-scale-canvas.mjs +4 -1
  166. package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
  167. package/build-module/components/inserter/hooks/use-patterns-state.mjs +8 -7
  168. package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
  169. package/build-module/components/inserter/index.mjs +1 -0
  170. package/build-module/components/inserter/index.mjs.map +2 -2
  171. package/build-module/components/inserter/media-tab/media-preview.mjs +27 -19
  172. package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
  173. package/build-module/components/inserter/panel.mjs +2 -2
  174. package/build-module/components/inserter/panel.mjs.map +2 -2
  175. package/build-module/components/inspector-controls/block-support-tools-panel.mjs +10 -2
  176. package/build-module/components/inspector-controls/block-support-tools-panel.mjs.map +2 -2
  177. package/build-module/components/inspector-controls/fill.mjs +18 -5
  178. package/build-module/components/inspector-controls/fill.mjs.map +2 -2
  179. package/build-module/components/inspector-controls/groups.mjs +2 -0
  180. package/build-module/components/inspector-controls/groups.mjs.map +2 -2
  181. package/build-module/components/inspector-controls-tabs/index.mjs +14 -10
  182. package/build-module/components/inspector-controls-tabs/index.mjs.map +2 -2
  183. package/build-module/components/inspector-controls-tabs/settings-tab.mjs +1 -4
  184. package/build-module/components/inspector-controls-tabs/settings-tab.mjs.map +2 -2
  185. package/build-module/components/inspector-controls-tabs/styles-tab.mjs +9 -0
  186. package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
  187. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs +11 -5
  188. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs.map +2 -2
  189. package/build-module/components/list-view/block-select-button.mjs +20 -9
  190. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  191. package/build-module/components/list-view/block.mjs +2 -1
  192. package/build-module/components/list-view/block.mjs.map +2 -2
  193. package/build-module/components/preset-input-control/custom-value-controls.mjs +10 -2
  194. package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
  195. package/build-module/components/preset-input-control/index.mjs +2 -2
  196. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  197. package/build-module/components/provider/use-media-upload-settings.mjs +1 -0
  198. package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
  199. package/build-module/components/rich-text/event-listeners/enter.mjs +9 -2
  200. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  201. package/build-module/components/rich-text/event-listeners/paste-handler.mjs +4 -4
  202. package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
  203. package/build-module/hooks/background.mjs +18 -3
  204. package/build-module/hooks/background.mjs.map +2 -2
  205. package/build-module/hooks/block-fields/link/index.mjs +3 -3
  206. package/build-module/hooks/block-fields/link/index.mjs.map +2 -2
  207. package/build-module/hooks/block-fields/media/index.mjs +3 -3
  208. package/build-module/hooks/block-fields/media/index.mjs.map +2 -2
  209. package/build-module/hooks/block-style-state.mjs +79 -0
  210. package/build-module/hooks/block-style-state.mjs.map +7 -0
  211. package/build-module/hooks/border.mjs +18 -3
  212. package/build-module/hooks/border.mjs.map +2 -2
  213. package/build-module/hooks/color.mjs +33 -9
  214. package/build-module/hooks/color.mjs.map +2 -2
  215. package/build-module/hooks/dimensions.mjs +20 -6
  216. package/build-module/hooks/dimensions.mjs.map +2 -2
  217. package/build-module/hooks/layout-child.mjs +141 -61
  218. package/build-module/hooks/layout-child.mjs.map +2 -2
  219. package/build-module/hooks/layout.mjs +270 -58
  220. package/build-module/hooks/layout.mjs.map +2 -2
  221. package/build-module/hooks/state-utils.mjs +64 -0
  222. package/build-module/hooks/state-utils.mjs.map +7 -0
  223. package/build-module/hooks/states.mjs +85 -0
  224. package/build-module/hooks/states.mjs.map +7 -0
  225. package/build-module/hooks/style.mjs +309 -18
  226. package/build-module/hooks/style.mjs.map +2 -2
  227. package/build-module/hooks/typography.mjs +19 -5
  228. package/build-module/hooks/typography.mjs.map +2 -2
  229. package/build-module/layouts/constrained.mjs +130 -57
  230. package/build-module/layouts/constrained.mjs.map +2 -2
  231. package/build-module/layouts/flex.mjs +123 -35
  232. package/build-module/layouts/flex.mjs.map +2 -2
  233. package/build-module/layouts/grid.mjs +105 -42
  234. package/build-module/layouts/grid.mjs.map +2 -2
  235. package/build-module/private-apis.mjs +4 -0
  236. package/build-module/private-apis.mjs.map +2 -2
  237. package/build-module/store/private-actions.mjs +16 -0
  238. package/build-module/store/private-actions.mjs.map +2 -2
  239. package/build-module/store/private-keys.mjs +7 -1
  240. package/build-module/store/private-keys.mjs.map +2 -2
  241. package/build-module/store/private-selectors.mjs +30 -2
  242. package/build-module/store/private-selectors.mjs.map +2 -2
  243. package/build-module/store/reducer.mjs +69 -1
  244. package/build-module/store/reducer.mjs.map +2 -2
  245. package/build-module/store/utils.mjs +5 -2
  246. package/build-module/store/utils.mjs.map +2 -2
  247. package/build-module/utils/color-values.mjs +19 -0
  248. package/build-module/utils/color-values.mjs.map +7 -0
  249. package/build-style/content-rtl.css +18 -3
  250. package/build-style/content.css +18 -3
  251. package/build-style/style-rtl.css +14 -17
  252. package/build-style/style.css +14 -17
  253. package/package.json +39 -39
  254. package/src/components/audio-player/index.native.js +7 -3
  255. package/src/components/block-card/index.js +67 -60
  256. package/src/components/block-heading-level-dropdown/heading-level-icon.js +2 -2
  257. package/src/components/block-icon/index.js +5 -2
  258. package/src/components/block-icon/index.native.js +2 -2
  259. package/src/components/block-inspector/index.js +153 -7
  260. package/src/components/block-inspector/inspector-pre-tabs-slot-fill.js +11 -0
  261. package/src/components/block-list/block-selection-button.native.js +3 -3
  262. package/src/components/block-list/content.scss +0 -6
  263. package/src/components/block-list/use-block-props/use-focus-handler.js +8 -6
  264. package/src/components/block-list/use-block-props/use-is-hovered.js +32 -15
  265. package/src/components/block-lock/modal.js +4 -4
  266. package/src/components/block-patterns-list/index.js +14 -5
  267. package/src/components/block-patterns-list/stories/index.story.jsx +2 -0
  268. package/src/components/block-patterns-list/style.scss +0 -1
  269. package/src/components/block-popover/index.js +20 -10
  270. package/src/components/block-toolbar/switch-section-style.js +2 -2
  271. package/src/components/block-visibility/modal.js +2 -2
  272. package/src/components/block-visibility/viewport-visibility-info.js +2 -2
  273. package/src/components/child-layout-control/index.js +15 -8
  274. package/src/components/child-layout-control/test/index.js +126 -0
  275. package/src/components/colors-gradients/control.js +10 -8
  276. package/src/components/colors-gradients/test/control.js +98 -1
  277. package/src/components/global-styles/advanced-panel.js +44 -39
  278. package/src/components/global-styles/color-panel.js +133 -60
  279. package/src/components/global-styles/dimensions-panel.js +29 -8
  280. package/src/components/global-styles/index.js +1 -0
  281. package/src/components/global-styles/shadow-panel-components.js +29 -19
  282. package/src/components/global-styles/state-control-badges.js +58 -0
  283. package/src/components/global-styles/state-control.js +28 -36
  284. package/src/components/global-styles/test/color-panel.js +135 -0
  285. package/src/components/iframe/use-scale-canvas.js +8 -2
  286. package/src/components/inserter/hooks/use-patterns-state.js +12 -7
  287. package/src/components/inserter/index.js +1 -0
  288. package/src/components/inserter/media-tab/media-preview.js +29 -20
  289. package/src/components/inserter/panel.js +2 -2
  290. package/src/components/inserter/style.scss +1 -0
  291. package/src/components/inserter-button/index.native.js +5 -2
  292. package/src/components/inspector-controls/block-support-tools-panel.js +10 -2
  293. package/src/components/inspector-controls/fill.js +18 -5
  294. package/src/components/inspector-controls/groups.js +2 -0
  295. package/src/components/inspector-controls-tabs/index.js +9 -5
  296. package/src/components/inspector-controls-tabs/settings-tab.js +1 -7
  297. package/src/components/inspector-controls-tabs/styles-tab.js +6 -0
  298. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +13 -7
  299. package/src/components/list-view/block-select-button.js +19 -9
  300. package/src/components/list-view/block.js +6 -1
  301. package/src/components/media-replace-flow/style.scss +0 -18
  302. package/src/components/preset-input-control/custom-value-controls.js +13 -6
  303. package/src/components/preset-input-control/index.js +2 -2
  304. package/src/components/provider/use-media-upload-settings.js +1 -0
  305. package/src/components/rich-text/event-listeners/enter.js +14 -2
  306. package/src/components/rich-text/event-listeners/paste-handler.js +5 -4
  307. package/src/components/unsupported-block-details/index.native.js +6 -2
  308. package/src/components/video-player/index.native.js +2 -2
  309. package/src/components/warning/index.native.js +2 -2
  310. package/src/hooks/background.js +59 -37
  311. package/src/hooks/block-fields/link/index.js +3 -3
  312. package/src/hooks/block-fields/media/index.js +3 -3
  313. package/src/hooks/block-style-state.js +127 -0
  314. package/src/hooks/border.js +25 -6
  315. package/src/hooks/color.js +40 -18
  316. package/src/hooks/dimensions.js +32 -11
  317. package/src/hooks/layout-child.js +179 -62
  318. package/src/hooks/layout.js +349 -75
  319. package/src/hooks/layout.scss +6 -0
  320. package/src/hooks/state-utils.js +158 -0
  321. package/src/hooks/states.js +109 -0
  322. package/src/hooks/style.js +456 -19
  323. package/src/hooks/test/block-style-state.js +270 -0
  324. package/src/hooks/test/layout.js +185 -0
  325. package/src/hooks/test/state-utils.js +193 -0
  326. package/src/hooks/test/style.js +301 -1
  327. package/src/hooks/typography.js +33 -14
  328. package/src/layouts/constrained.js +182 -95
  329. package/src/layouts/flex.js +141 -36
  330. package/src/layouts/grid.js +122 -32
  331. package/src/layouts/test/flex.js +57 -20
  332. package/src/private-apis.js +4 -0
  333. package/src/store/private-actions.js +32 -0
  334. package/src/store/private-keys.js +4 -0
  335. package/src/store/private-selectors.js +61 -2
  336. package/src/store/reducer.js +105 -1
  337. package/src/store/test/private-actions.js +26 -0
  338. package/src/store/test/private-selectors.js +143 -0
  339. package/src/store/test/reducer.js +363 -0
  340. package/src/store/utils.js +6 -2
  341. package/src/utils/color-values.js +28 -0
  342. package/src/utils/test/color-values.js +78 -0
@@ -32,6 +32,8 @@ var layout_exports = {};
32
32
  __export(layout_exports, {
33
33
  addAttribute: () => addAttribute,
34
34
  default: () => layout_default,
35
+ getResetLayout: () => getResetLayout,
36
+ getResponsiveLayoutStyles: () => getResponsiveLayoutStyles,
35
37
  useLayoutClasses: () => useLayoutClasses,
36
38
  useLayoutStyles: () => useLayoutStyles,
37
39
  withLayoutStyles: () => withLayoutStyles
@@ -40,6 +42,7 @@ module.exports = __toCommonJS(layout_exports);
40
42
  var import_clsx = __toESM(require("clsx"));
41
43
  var import_compose = require("@wordpress/compose");
42
44
  var import_hooks = require("@wordpress/hooks");
45
+ var import_element = require("@wordpress/element");
43
46
  var import_blocks = require("@wordpress/blocks");
44
47
  var import_data = require("@wordpress/data");
45
48
  var import_components = require("@wordpress/components");
@@ -54,10 +57,56 @@ var import_utils = require("./utils.cjs");
54
57
  var import_lock_unlock = require("../lock-unlock.cjs");
55
58
  var import_private_keys = require("../store/private-keys.cjs");
56
59
  var import_block_style_variation = require("./block-style-variation.cjs");
60
+ var import_block_style_state = require("./block-style-state.cjs");
57
61
  var import_jsx_runtime = require("react/jsx-runtime");
58
62
  var VARIATION_PREFIX = "is-style-";
59
63
  var layoutBlockSupportKey = "layout";
64
+ var RESPONSIVE_BREAKPOINTS = {
65
+ mobile: "@media (width <= 480px)",
66
+ tablet: "@media (480px < width <= 782px)"
67
+ };
68
+ var CHILD_LAYOUT_KEYS = [
69
+ "selfStretch",
70
+ "flexSize",
71
+ "columnStart",
72
+ "columnSpan",
73
+ "rowStart",
74
+ "rowSpan"
75
+ ];
60
76
  var { kebabCase } = (0, import_lock_unlock.unlock)(import_components.privateApis);
77
+ function getDefaultLayout(layoutBlockSupport = {}, blockVariation) {
78
+ const defaultBlockLayout = layoutBlockSupport?.default;
79
+ return blockVariation?.attributes?.layout ?? defaultBlockLayout;
80
+ }
81
+ function getResetLayout(layoutBlockSupport = {}, blockVariation) {
82
+ return (0, import_utils.cleanEmptyObject)({
83
+ ...getDefaultLayout(layoutBlockSupport, blockVariation)
84
+ });
85
+ }
86
+ function getLayoutStateOverrides(layout = {}, baseLayout = {}, existingLayout = {}) {
87
+ const overrides = {};
88
+ const childLayoutValues = Object.fromEntries(
89
+ CHILD_LAYOUT_KEYS.filter(
90
+ (key) => Object.hasOwn(existingLayout || {}, key)
91
+ ).map((key) => [key, existingLayout[key]])
92
+ );
93
+ Object.entries(layout || {}).forEach(([key, value]) => {
94
+ if (!CHILD_LAYOUT_KEYS.includes(key) && value !== baseLayout?.[key]) {
95
+ overrides[key] = value;
96
+ }
97
+ });
98
+ return (0, import_utils.cleanEmptyObject)({
99
+ ...childLayoutValues,
100
+ ...overrides
101
+ });
102
+ }
103
+ function getLayoutContainerValues(layout = {}) {
104
+ return Object.fromEntries(
105
+ Object.entries(layout || {}).filter(
106
+ ([key]) => !CHILD_LAYOUT_KEYS.includes(key)
107
+ )
108
+ );
109
+ }
61
110
  function hasLayoutBlockSupport(blockName) {
62
111
  return (0, import_blocks.hasBlockSupport)(blockName, "layout") || (0, import_blocks.hasBlockSupport)(blockName, "__experimentalLayout");
63
112
  }
@@ -114,21 +163,110 @@ function useLayoutStyles(blockAttributes = {}, blockName, selector) {
114
163
  hasBlockGapSupport
115
164
  });
116
165
  }
166
+ function getResponsiveLayoutStyles({
167
+ attributes = {},
168
+ blockName,
169
+ selector,
170
+ layout = {},
171
+ hasBlockGapSupport,
172
+ globalBlockGapValue
173
+ }) {
174
+ return Object.entries(RESPONSIVE_BREAKPOINTS).map(([viewport, mediaQuery]) => {
175
+ const viewportStyle = attributes?.style?.[viewport];
176
+ const viewportLayout = getLayoutContainerValues(
177
+ viewportStyle?.layout
178
+ );
179
+ const hasViewportLayout = Object.keys(viewportLayout).length > 0;
180
+ const hasViewportBlockGap = viewportStyle?.spacing && Object.hasOwn(viewportStyle.spacing, "blockGap");
181
+ const hasViewportPadding = viewportStyle?.spacing && Object.hasOwn(viewportStyle.spacing, "padding");
182
+ if (!hasViewportLayout && !hasViewportBlockGap && !hasViewportPadding) {
183
+ return "";
184
+ }
185
+ const layoutType = (0, import_layouts.getLayoutType)(layout?.type || "default");
186
+ const viewportCSS = layoutType?.getLayoutStyle?.({
187
+ blockName,
188
+ selector,
189
+ layout,
190
+ viewportOverrides: viewportLayout,
191
+ style: viewportStyle,
192
+ hasBlockGapSupport,
193
+ globalBlockGapValue
194
+ });
195
+ return viewportCSS ? `${mediaQuery}{${viewportCSS}}` : "";
196
+ }).filter(Boolean).join("");
197
+ }
117
198
  function LayoutPanelPure({
118
199
  layout,
200
+ style,
119
201
  setAttributes,
120
202
  name: blockName,
121
203
  clientId
122
204
  }) {
123
205
  const settings = (0, import_utils.useBlockSettings)(blockName);
124
206
  const { layout: layoutSettings } = settings;
125
- const { themeSupportsLayout } = (0, import_data.useSelect)((select) => {
126
- const { getSettings } = select(import_store.store);
127
- return {
128
- themeSupportsLayout: getSettings().supportsLayout
129
- };
130
- }, []);
207
+ const { themeSupportsLayout, activeBlockVariation, selectedState } = (0, import_data.useSelect)(
208
+ (select) => {
209
+ const blockEditorSelect = select(import_store.store);
210
+ const { getBlockAttributes, getSettings } = blockEditorSelect;
211
+ const { getSelectedBlockStyleState } = (0, import_lock_unlock.unlock)(blockEditorSelect);
212
+ return {
213
+ activeBlockVariation: select(
214
+ import_blocks.store
215
+ ).getActiveBlockVariation(
216
+ blockName,
217
+ getBlockAttributes(clientId) || {},
218
+ "block"
219
+ ),
220
+ themeSupportsLayout: getSettings().supportsLayout,
221
+ selectedState: getSelectedBlockStyleState?.(clientId) ?? import_block_style_state.DEFAULT_BLOCK_STYLE_STATE
222
+ };
223
+ },
224
+ [blockName, clientId]
225
+ );
131
226
  const blockEditingMode = (0, import_block_editing_mode.useBlockEditingMode)();
227
+ const isViewportLayoutState = (0, import_block_style_state.hasViewportBlockStyleState)(selectedState) && !(0, import_block_style_state.hasPseudoBlockStyleState)(selectedState);
228
+ const resetLayoutFilter = (0, import_element.useCallback)(
229
+ (...resetArgs) => {
230
+ const attributes = resetArgs[0] || {};
231
+ const context = resetArgs[1] || {};
232
+ if (isViewportLayoutState) {
233
+ const existingStateStyle = (0, import_block_style_state.getStyleForState)(
234
+ attributes.style ?? style,
235
+ selectedState
236
+ ) || {};
237
+ const nextStateStyle = (0, import_utils.cleanEmptyObject)({
238
+ ...existingStateStyle,
239
+ layout: void 0
240
+ });
241
+ return {
242
+ style: (0, import_block_style_state.setStyleForState)(
243
+ attributes.style ?? style,
244
+ selectedState,
245
+ nextStateStyle
246
+ )
247
+ };
248
+ }
249
+ const resetBlockName = context.name || blockName;
250
+ const resetLayoutBlockSupport = (0, import_blocks.getBlockSupport)(
251
+ resetBlockName,
252
+ layoutBlockSupportKey,
253
+ {}
254
+ );
255
+ return {
256
+ layout: getResetLayout(
257
+ resetLayoutBlockSupport,
258
+ activeBlockVariation
259
+ )
260
+ };
261
+ },
262
+ [
263
+ blockName,
264
+ activeBlockVariation,
265
+ isViewportLayoutState,
266
+ selectedState,
267
+ style
268
+ ]
269
+ );
132
270
  if (blockEditingMode !== "default") {
133
271
  return null;
134
272
  }
@@ -150,14 +288,21 @@ function LayoutPanelPure({
150
288
  if (!allowEditing) {
151
289
  return null;
152
290
  }
291
+ const baseLayout = layout || defaultBlockLayout || {};
292
+ const stateStyle = isViewportLayoutState ? (0, import_block_style_state.getStyleForState)(style, selectedState) : void 0;
293
+ const stateLayout = stateStyle?.layout;
294
+ const usedLayout = isViewportLayoutState ? (0, import_utils.cleanEmptyObject)({
295
+ ...baseLayout,
296
+ ...stateLayout
297
+ }) || {} : baseLayout;
298
+ const resetLayoutDefaults = isViewportLayoutState ? baseLayout : getResetLayout(layoutBlockSupport, activeBlockVariation);
153
299
  const blockSupportAndLayout = {
154
300
  ...layoutBlockSupport,
155
- ...layout
301
+ ...usedLayout
156
302
  };
157
303
  const { type, default: { type: defaultType = "default" } = {} } = blockSupportAndLayout;
158
304
  const blockLayoutType = type || defaultType;
159
305
  const showInheritToggle = !!(allowInheriting && (!blockLayoutType || blockLayoutType === "default" || blockLayoutType === "constrained" || blockSupportAndLayout.inherit));
160
- const usedLayout = layout || defaultBlockLayout || {};
161
306
  const { inherit = false, contentSize = null } = usedLayout;
162
307
  if ((blockLayoutType === "default" || blockLayoutType === "constrained") && !themeSupportsLayout) {
163
308
  return null;
@@ -166,55 +311,106 @@ function LayoutPanelPure({
166
311
  const constrainedType = (0, import_layouts.getLayoutType)("constrained");
167
312
  const displayControlsForLegacyLayouts = !usedLayout.type && (contentSize || inherit);
168
313
  const hasContentSizeOrLegacySettings = !!inherit || !!contentSize;
169
- const onChangeType = (newType) => setAttributes({ layout: { type: newType } });
170
- const onChangeLayout = (newLayout) => setAttributes({ layout: newLayout });
314
+ const showLayoutTypeSwitcher = (0, import_block_style_state.isDefaultBlockStyleState)(selectedState) && !inherit && allowSwitching;
315
+ const onChangeLayout = (newLayout) => {
316
+ if (isViewportLayoutState) {
317
+ const nextStateStyle = (0, import_utils.cleanEmptyObject)({
318
+ ...stateStyle,
319
+ layout: getLayoutStateOverrides(
320
+ (0, import_utils.cleanEmptyObject)(newLayout),
321
+ baseLayout,
322
+ stateStyle?.layout
323
+ )
324
+ });
325
+ setAttributes({
326
+ style: (0, import_block_style_state.setStyleForState)(style, selectedState, nextStateStyle)
327
+ });
328
+ return;
329
+ }
330
+ setAttributes({ layout: (0, import_utils.cleanEmptyObject)(newLayout) });
331
+ };
332
+ const onChangeType = (newType) => onChangeLayout({ type: newType });
333
+ const resetLayout = () => onChangeLayout(resetLayoutDefaults);
334
+ const resetInheritToggle = () => onChangeLayout({ type: "default" });
335
+ const isUsingContentWidth = () => layoutType?.name === "constrained" || hasContentSizeOrLegacySettings;
336
+ const hasInheritToggleValue = () => isViewportLayoutState ? (usedLayout?.type ?? "default") !== (resetLayoutDefaults?.type ?? "default") : layout?.type === "constrained";
337
+ const hasLayoutTypeValue = () => (usedLayout?.type ?? "default") !== (resetLayoutDefaults?.type ?? "default");
171
338
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
172
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components2.InspectorControls, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.PanelBody, { title: (0, import_i18n.__)("Layout"), children: [
173
- showInheritToggle && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
174
- import_components.ToggleControl,
175
- {
176
- label: (0, import_i18n.__)("Inner blocks use content width"),
177
- checked: layoutType?.name === "constrained" || hasContentSizeOrLegacySettings,
178
- onChange: () => setAttributes({
179
- layout: {
180
- type: layoutType?.name === "constrained" || hasContentSizeOrLegacySettings ? "default" : "constrained"
339
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
340
+ import_components2.InspectorControls,
341
+ {
342
+ group: "layout",
343
+ resetAllFilter: resetLayoutFilter,
344
+ children: [
345
+ showInheritToggle && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
346
+ import_components.__experimentalToolsPanelItem,
347
+ {
348
+ label: (0, import_i18n.__)("Use content width"),
349
+ hasValue: hasInheritToggleValue,
350
+ onDeselect: resetInheritToggle,
351
+ isShownByDefault: true,
352
+ panelId: clientId,
353
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
354
+ import_components.ToggleControl,
355
+ {
356
+ label: (0, import_i18n.__)("Inner blocks use content width"),
357
+ checked: isUsingContentWidth(),
358
+ onChange: () => onChangeLayout({
359
+ type: isUsingContentWidth() ? "default" : "constrained"
360
+ }),
361
+ help: isUsingContentWidth() ? (0, import_i18n.__)(
362
+ "Nested blocks use content width with options for full and wide widths."
363
+ ) : (0, import_i18n.__)(
364
+ "Nested blocks will fill the width of this container."
365
+ )
366
+ }
367
+ )
368
+ }
369
+ ),
370
+ showLayoutTypeSwitcher && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
371
+ import_components.__experimentalToolsPanelItem,
372
+ {
373
+ label: (0, import_i18n.__)("Layout type"),
374
+ hasValue: hasLayoutTypeValue,
375
+ onDeselect: resetLayout,
376
+ isShownByDefault: true,
377
+ panelId: clientId,
378
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
379
+ LayoutTypeSwitcher,
380
+ {
381
+ type: blockLayoutType,
382
+ onChange: onChangeType
383
+ }
384
+ )
385
+ }
386
+ ),
387
+ layoutType && layoutType.name !== "default" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
388
+ layoutType.inspectorControls,
389
+ {
390
+ layout: usedLayout,
391
+ value: layout,
392
+ onChange: onChangeLayout,
393
+ layoutBlockSupport: blockSupportAndThemeSettings,
394
+ resetLayout: resetLayoutDefaults,
395
+ name: blockName,
396
+ clientId
397
+ }
398
+ ),
399
+ constrainedType && displayControlsForLegacyLayouts && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
400
+ constrainedType.inspectorControls,
401
+ {
402
+ layout: usedLayout,
403
+ value: layout,
404
+ onChange: onChangeLayout,
405
+ layoutBlockSupport: blockSupportAndThemeSettings,
406
+ resetLayout: resetLayoutDefaults,
407
+ name: blockName,
408
+ clientId
181
409
  }
182
- }),
183
- help: layoutType?.name === "constrained" || hasContentSizeOrLegacySettings ? (0, import_i18n.__)(
184
- "Nested blocks use content width with options for full and wide widths."
185
- ) : (0, import_i18n.__)(
186
- "Nested blocks will fill the width of this container."
187
410
  )
188
- }
189
- ) }),
190
- !inherit && allowSwitching && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
191
- LayoutTypeSwitcher,
192
- {
193
- type: blockLayoutType,
194
- onChange: onChangeType
195
- }
196
- ),
197
- layoutType && layoutType.name !== "default" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
198
- layoutType.inspectorControls,
199
- {
200
- layout: usedLayout,
201
- onChange: onChangeLayout,
202
- layoutBlockSupport: blockSupportAndThemeSettings,
203
- name: blockName,
204
- clientId
205
- }
206
- ),
207
- constrainedType && displayControlsForLegacyLayouts && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
208
- constrainedType.inspectorControls,
209
- {
210
- layout: usedLayout,
211
- onChange: onChangeLayout,
212
- layoutBlockSupport: blockSupportAndThemeSettings,
213
- name: blockName,
214
- clientId
215
- }
216
- )
217
- ] }) }),
411
+ ]
412
+ }
413
+ ),
218
414
  !inherit && layoutType && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
219
415
  layoutType.toolBarControls,
220
416
  {
@@ -230,7 +426,7 @@ function LayoutPanelPure({
230
426
  var layout_default = {
231
427
  shareWithChildBlocks: true,
232
428
  edit: LayoutPanelPure,
233
- attributeKeys: ["layout"],
429
+ attributeKeys: ["layout", "style"],
234
430
  hasSupport(name) {
235
431
  return hasLayoutBlockSupport(name);
236
432
  }
@@ -289,7 +485,7 @@ function BlockWithLayoutStyles({
289
485
  const selector = `.${selectorPrefix}${id}`;
290
486
  const hasBlockGapSupport = blockGapSupport !== null;
291
487
  const fullLayoutType = (0, import_layouts.getLayoutType)(usedLayout?.type || "default");
292
- const css = fullLayoutType?.getLayoutStyle?.({
488
+ const baseLayoutCSS = fullLayoutType?.getLayoutStyle?.({
293
489
  blockName: name,
294
490
  selector,
295
491
  layout: usedLayout,
@@ -297,6 +493,15 @@ function BlockWithLayoutStyles({
297
493
  hasBlockGapSupport,
298
494
  globalBlockGapValue
299
495
  });
496
+ const responsiveLayoutCSS = getResponsiveLayoutStyles({
497
+ attributes,
498
+ blockName: name,
499
+ selector,
500
+ layout: usedLayout,
501
+ hasBlockGapSupport,
502
+ globalBlockGapValue
503
+ });
504
+ const css = [baseLayoutCSS, responsiveLayoutCSS].filter(Boolean).join("");
300
505
  const layoutClassNames = (0, import_clsx.default)(
301
506
  {
302
507
  [`${selectorPrefix}${id}`]: !!css
@@ -386,6 +591,8 @@ var withLayoutStyles = (0, import_compose.createHigherOrderComponent)(
386
591
  // Annotate the CommonJS export names for ESM import in node:
387
592
  0 && (module.exports = {
388
593
  addAttribute,
594
+ getResetLayout,
595
+ getResponsiveLayoutStyles,
389
596
  useLayoutClasses,
390
597
  useLayoutStyles,
391
598
  withLayoutStyles
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/layout.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockSupport,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\tToggleControl,\n\tPanelBody,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\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 { useBlockSettings, useStyleOverride } from './utils';\nimport { unlock } from '../lock-unlock';\nimport { globalStylesDataKey } from '../store/private-keys';\nimport { getVariationNameFromClass } from './block-style-variation';\n\nconst VARIATION_PREFIX = 'is-style-';\n\nconst layoutBlockSupportKey = 'layout';\nconst { kebabCase } = unlock( componentsPrivateApis );\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 { layout } = blockAttributes;\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\tconst hasGlobalPadding = useSelect(\n\t\t( select ) => {\n\t\t\t// Early return to avoid subscription when layout doesn't use global padding\n\t\t\tif (\n\t\t\t\t! usedLayout?.inherit &&\n\t\t\t\t! usedLayout?.contentSize &&\n\t\t\t\tusedLayout?.type !== 'constrained'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn select( blockEditorStore ).getSettings()\n\t\t\t\t.__experimentalFeatures?.useRootPaddingAwareAlignments;\n\t\t},\n\t\t[ usedLayout?.contentSize, usedLayout?.inherit, usedLayout?.type ]\n\t);\n\n\tif ( hasGlobalPadding ) {\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\treturn fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName,\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n}\n\nfunction LayoutPanelPure( {\n\tlayout,\n\tsetAttributes,\n\tname: blockName,\n\tclientId,\n} ) {\n\tconst settings = useBlockSettings( blockName );\n\t// Block settings come from theme.json under settings.[blockName].\n\tconst { layout: layoutSettings } = settings;\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\t// Layout block support comes from the block's block.json.\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst blockSupportAndThemeSettings = {\n\t\t...layoutSettings,\n\t\t...layoutBlockSupport,\n\t};\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = blockSupportAndThemeSettings;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t/*\n\t * Try to find the layout type from either the\n\t * block's layout settings or any saved layout config.\n\t */\n\tconst blockSupportAndLayout = {\n\t\t...layoutBlockSupport,\n\t\t...layout,\n\t};\n\tconst { type, default: { type: defaultType = 'default' } = {} } =\n\t\tblockSupportAndLayout;\n\tconst blockLayoutType = type || defaultType;\n\n\t// Only show the inherit toggle if it's supported,\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( ! blockLayoutType ||\n\t\t\tblockLayoutType === 'default' ||\n\t\t\tblockLayoutType === 'constrained' ||\n\t\t\tblockSupportAndLayout.inherit )\n\t);\n\n\tconst usedLayout = layout || defaultBlockLayout || {};\n\tconst { inherit = false, contentSize = null } = 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( blockLayoutType === 'default' ||\n\t\t\tblockLayoutType === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( blockLayoutType );\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\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.'\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={ blockLayoutType }\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={ blockSupportAndThemeSettings }\n\t\t\t\t\t\t\tname={ blockName }\n\t\t\t\t\t\t\tclientId={ clientId }\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={ blockSupportAndThemeSettings }\n\t\t\t\t\t\t\tname={ blockName }\n\t\t\t\t\t\t\tclientId={ clientId }\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\tname={ blockName }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default {\n\tshareWithChildBlocks: true,\n\tedit: LayoutPanelPure,\n\tattributeKeys: [ 'layout' ],\n\thasSupport( name ) {\n\t\treturn hasLayoutBlockSupport( name );\n\t},\n};\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Layout type' ) }\n\t\t\thideLabelFromVision\n\t\t\tisAdaptiveWidth\n\t\t\tvalue={ type }\n\t\t\tonChange={ onChange }\n\t\t>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tvalue={ name }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\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\nfunction BlockWithLayoutStyles( {\n\tblock: BlockListBlock,\n\tprops,\n\tblockGapSupport,\n\tglobalBlockGapValue,\n\tlayoutClasses,\n} ) {\n\tconst { name, attributes } = props;\n\tconst id = useInstanceId( BlockListBlock );\n\tconst { layout } = attributes;\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( name, 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 selectorPrefix = `wp-container-${ kebabCase( name ) }-is-layout-`;\n\t// Higher specificity to override defaults from theme.json.\n\tconst selector = `.${ selectorPrefix }${ id }`;\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t// Get CSS string for the current layout type.\n\t// The CSS and `style` element is only output if it is not empty.\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst css = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName: name,\n\t\tselector,\n\t\tlayout: usedLayout,\n\t\tstyle: attributes?.style,\n\t\thasBlockGapSupport,\n\t\tglobalBlockGapValue,\n\t} );\n\n\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\tconst layoutClassNames = clsx(\n\t\t{\n\t\t\t[ `${ selectorPrefix }${ id }` ]: !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t},\n\t\tlayoutClasses\n\t);\n\n\tuseStyleOverride( { css } );\n\n\treturn (\n\t\t<BlockListBlock\n\t\t\t{ ...props }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t/>\n\t);\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 ) =>\n\t\tfunction WithLayoutStyles( props ) {\n\t\t\tconst { clientId, name, attributes } = props;\n\t\t\tconst blockSupportsLayout = hasLayoutBlockSupport( name );\n\t\t\tconst layoutClasses = useLayoutClasses( attributes, name );\n\t\t\tconst extraProps = useSelect(\n\t\t\t\t( select ) => {\n\t\t\t\t\t// The callback returns early to avoid block editor subscription.\n\t\t\t\t\tif ( ! blockSupportsLayout ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { getSettings, getBlockSettings } = unlock(\n\t\t\t\t\t\tselect( blockEditorStore )\n\t\t\t\t\t);\n\t\t\t\t\tconst settings = getSettings();\n\t\t\t\t\tconst { disableLayoutStyles } = settings;\n\n\t\t\t\t\tif ( disableLayoutStyles ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [ blockGapSupport ] = getBlockSettings(\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t'spacing.blockGap'\n\t\t\t\t\t);\n\n\t\t\t\t\t// Get default blockGap value from global styles for use in layouts like grid.\n\t\t\t\t\t// Check style variation first, then block-specific styles, then fall back to root styles.\n\t\t\t\t\tconst globalStyles = settings[ globalStylesDataKey ];\n\n\t\t\t\t\t// Check if the block has an active style variation with a blockGap value.\n\t\t\t\t\t// Only check the registry if the className contains a variation class to avoid unnecessary lookups.\n\t\t\t\t\tlet variationBlockGapValue;\n\t\t\t\t\tconst className = attributes?.className;\n\t\t\t\t\tif ( className?.includes( VARIATION_PREFIX ) ) {\n\t\t\t\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\t\t\t\tconst registeredStyles = getBlockStyles( name );\n\t\t\t\t\t\tconst variationName = getVariationNameFromClass(\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\tregisteredStyles\n\t\t\t\t\t\t);\n\t\t\t\t\t\tvariationBlockGapValue = variationName\n\t\t\t\t\t\t\t? globalStyles?.blocks?.[ name ]?.variations?.[\n\t\t\t\t\t\t\t\t\tvariationName\n\t\t\t\t\t\t\t ]?.spacing?.blockGap\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst globalBlockGapValue =\n\t\t\t\t\t\tvariationBlockGapValue ??\n\t\t\t\t\t\tglobalStyles?.blocks?.[ name ]?.spacing?.blockGap ??\n\t\t\t\t\t\tglobalStyles?.spacing?.blockGap;\n\n\t\t\t\t\treturn { blockGapSupport, globalBlockGapValue };\n\t\t\t\t},\n\t\t\t\t[ blockSupportsLayout, clientId, attributes?.className, name ]\n\t\t\t);\n\n\t\t\tif ( ! extraProps ) {\n\t\t\t\treturn (\n\t\t\t\t\t<BlockListBlock\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t__unstableLayoutClassNames={\n\t\t\t\t\t\t\tblockSupportsLayout ? layoutClasses : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<BlockWithLayoutStyles\n\t\t\t\t\tblock={ BlockListBlock }\n\t\t\t\t\tprops={ props }\n\t\t\t\t\tlayoutClasses={ layoutClasses }\n\t\t\t\t\t{ ...extraProps }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t'withLayoutStyles'\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);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAiB;AAKjB,qBAA0D;AAC1D,mBAA0B;AAC1B,oBAIO;AACP,kBAA0B;AAC1B,wBAMO;AACP,kBAAmB;AAKnB,mBAA0C;AAC1C,IAAAA,qBAAkC;AAClC,0BAA4B;AAC5B,qBAA8C;AAC9C,gCAAoC;AACpC,yBAAmC;AACnC,mBAAmD;AACnD,yBAAuB;AACvB,0BAAoC;AACpC,mCAA0C;AA6MtC;AA3MJ,IAAM,mBAAmB;AAEzB,IAAM,wBAAwB;AAC9B,IAAM,EAAE,UAAU,QAAI,2BAAQ,kBAAAC,WAAsB;AAEpD,SAAS,sBAAuB,WAAY;AAC3C,aACC,+BAAiB,WAAW,QAAS,SACrC,+BAAiB,WAAW,sBAAuB;AAErD;AAUO,SAAS,iBAAkB,kBAAkB,CAAC,GAAG,YAAY,IAAK;AACxE,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,EAAE,SAAS,mBAAmB,QACnC,+BAAiB,WAAW,qBAAsB,KAAK,CAAC;AACzD,QAAM,aACL,QAAQ,WAAW,QAAQ,eAAe,QAAQ,WAC/C,EAAE,GAAG,QAAQ,MAAM,cAAc,IACjC,UAAU,sBAAsB,CAAC;AAErC,QAAM,mBAAmB,CAAC;AAE1B,MAAK,sCAAoB,YAAY,QAAQ,SAAU,GAAG,WAAY;AACrE,UAAM,gBACL,sCAAoB,YAAY,QAAQ,SAAU,GAAG;AACtD,UAAM,iBAAiB,UAAU,MAAO,GAAI;AAC5C,UAAM,gBACL,eAAgB,CAAE,MAAM,SACrB,eAAe,IAAI,IACnB,eAAe,KAAM,GAAI;AAC7B,UAAM,oBAAoB,YAAa,aAAc,IAAK,aAAc;AACxE,qBAAiB,KAAM,eAAe,iBAAkB;AAAA,EACzD;AAEA,QAAM,uBAAmB;AAAA,IACxB,CAAE,WAAY;AAEb,UACC,CAAE,YAAY,WACd,CAAE,YAAY,eACd,YAAY,SAAS,eACpB;AACD,eAAO;AAAA,MACR;AAEA,aAAO,OAAQ,aAAAC,KAAiB,EAAE,YAAY,EAC5C,wBAAwB;AAAA,IAC3B;AAAA,IACA,CAAE,YAAY,aAAa,YAAY,SAAS,YAAY,IAAK;AAAA,EAClE;AAEA,MAAK,kBAAmB;AACvB,qBAAiB,KAAM,oBAAqB;AAAA,EAC7C;AAEA,MAAK,YAAY,aAAc;AAC9B,qBAAiB,KAAM,MAAO,UAAW,WAAW,WAAY,CAAE,EAAG;AAAA,EACtE;AAEA,MAAK,YAAY,gBAAiB;AACjC,qBAAiB;AAAA,MAChB,4BAA6B;AAAA,QAC5B,WAAW;AAAA,MACZ,CAAE;AAAA,IACH;AAAA,EACD;AAEA,MAAK,YAAY,YAAY,WAAW,aAAa,UAAW;AAC/D,qBAAiB,KAAM,WAAY;AAAA,EACpC;AAEA,SAAO;AACR;AAWO,SAAS,gBAAiB,kBAAkB,CAAC,GAAG,WAAW,UAAW;AAC5E,QAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI;AAEpC,QAAM,aACL,QAAQ,WAAW,QAAQ,eAAe,QAAQ,WAC/C,EAAE,GAAG,QAAQ,MAAM,cAAc,IACjC,UAAU,CAAC;AACf,QAAM,qBAAiB,8BAAe,YAAY,QAAQ,SAAU;AACpE,QAAM,CAAE,eAAgB,QAAI,iCAAa,kBAAmB;AAC5D,QAAM,qBAAqB,oBAAoB;AAC/C,SAAO,gBAAgB,iBAAkB;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AACH;AAEA,SAAS,gBAAiB;AAAA,EACzB;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AACD,GAAI;AACH,QAAM,eAAW,+BAAkB,SAAU;AAE7C,QAAM,EAAE,QAAQ,eAAe,IAAI;AACnC,QAAM,EAAE,oBAAoB,QAAI,uBAAW,CAAE,WAAY;AACxD,UAAM,EAAE,YAAY,IAAI,OAAQ,aAAAA,KAAiB;AACjD,WAAO;AAAA,MACN,qBAAqB,YAAY,EAAE;AAAA,IACpC;AAAA,EACD,GAAG,CAAC,CAAE;AACN,QAAM,uBAAmB,+CAAoB;AAE7C,MAAK,qBAAqB,WAAY;AACrC,WAAO;AAAA,EACR;AAGA,QAAM,yBAAqB;AAAA,IAC1B;AAAA,IACA;AAAA,IACA,CAAC;AAAA,EACF;AACA,QAAM,+BAA+B;AAAA,IACpC,GAAG;AAAA,IACH,GAAG;AAAA,EACJ;AACA,QAAM;AAAA,IACL;AAAA,IACA,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,SAAS;AAAA,EACV,IAAI;AAEJ,MAAK,CAAE,cAAe;AACrB,WAAO;AAAA,EACR;AAMA,QAAM,wBAAwB;AAAA,IAC7B,GAAG;AAAA,IACH,GAAG;AAAA,EACJ;AACA,QAAM,EAAE,MAAM,SAAS,EAAE,MAAM,cAAc,UAAU,IAAI,CAAC,EAAE,IAC7D;AACD,QAAM,kBAAkB,QAAQ;AAIhC,QAAM,oBAAoB,CAAC,EAC1B,oBACE,CAAE,mBACH,oBAAoB,aACpB,oBAAoB,iBACpB,sBAAsB;AAGxB,QAAM,aAAa,UAAU,sBAAsB,CAAC;AACpD,QAAM,EAAE,UAAU,OAAO,cAAc,KAAK,IAAI;AAMhD,OACG,oBAAoB,aACrB,oBAAoB,kBACrB,CAAE,qBACD;AACD,WAAO;AAAA,EACR;AACA,QAAM,iBAAa,8BAAe,eAAgB;AAClD,QAAM,sBAAkB,8BAAe,aAAc;AACrD,QAAM,kCACL,CAAE,WAAW,SAAU,eAAe;AACvC,QAAM,iCAAiC,CAAC,CAAE,WAAW,CAAC,CAAE;AAExD,QAAM,eAAe,CAAE,YACtB,cAAe,EAAE,QAAQ,EAAE,MAAM,QAAQ,EAAE,CAAE;AAC9C,QAAM,iBAAiB,CAAE,cACxB,cAAe,EAAE,QAAQ,UAAU,CAAE;AAEtC,SACC,4EACC;AAAA,gDAAC,wCACA,uDAAC,+BAAU,WAAQ,gBAAI,QAAS,GAC7B;AAAA,2BACD,2EACC;AAAA,QAAC;AAAA;AAAA,UACA,WAAQ,gBAAI,gCAAiC;AAAA,UAC7C,SACC,YAAY,SAAS,iBACrB;AAAA,UAED,UAAW,MACV,cAAe;AAAA,YACd,QAAQ;AAAA,cACP,MACC,YAAY,SACX,iBACD,iCACG,YACA;AAAA,YACL;AAAA,UACD,CAAE;AAAA,UAEH,MACC,YAAY,SAAS,iBACrB,qCACG;AAAA,YACA;AAAA,UACA,QACA;AAAA,YACA;AAAA,UACA;AAAA;AAAA,MAEL,GACD;AAAA,MAGC,CAAE,WAAW,kBACd;AAAA,QAAC;AAAA;AAAA,UACA,MAAO;AAAA,UACP,UAAW;AAAA;AAAA,MACZ;AAAA,MAGC,cAAc,WAAW,SAAS,aACnC;AAAA,QAAC,WAAW;AAAA,QAAX;AAAA,UACA,QAAS;AAAA,UACT,UAAW;AAAA,UACX,oBAAqB;AAAA,UACrB,MAAO;AAAA,UACP;AAAA;AAAA,MACD;AAAA,MAEC,mBAAmB,mCACpB;AAAA,QAAC,gBAAgB;AAAA,QAAhB;AAAA,UACA,QAAS;AAAA,UACT,UAAW;AAAA,UACX,oBAAqB;AAAA,UACrB,MAAO;AAAA,UACP;AAAA;AAAA,MACD;AAAA,OAEF,GACD;AAAA,IACE,CAAE,WAAW,cACd;AAAA,MAAC,WAAW;AAAA,MAAX;AAAA,QACA,QAAS;AAAA,QACT,UAAW;AAAA,QACX;AAAA,QACA,MAAO;AAAA,QACP;AAAA;AAAA,IACD;AAAA,KAEF;AAEF;AAEA,IAAO,iBAAQ;AAAA,EACd,sBAAsB;AAAA,EACtB,MAAM;AAAA,EACN,eAAe,CAAE,QAAS;AAAA,EAC1B,WAAY,MAAO;AAClB,WAAO,sBAAuB,IAAK;AAAA,EACpC;AACD;AAEA,SAAS,mBAAoB,EAAE,MAAM,SAAS,GAAI;AACjD,SACC;AAAA,IAAC,kBAAAC;AAAA,IAAA;AAAA,MACA,uBAAqB;AAAA,MACrB,SAAO;AAAA,MACP,WAAQ,gBAAI,aAAc;AAAA,MAC1B,qBAAmB;AAAA,MACnB,iBAAe;AAAA,MACf,OAAQ;AAAA,MACR;AAAA,MAEE,6CAAe,EAAE,IAAK,CAAE,EAAE,MAAM,MAAM,MAAO;AAC9C,eACC;AAAA,UAAC,kBAAAC;AAAA,UAAA;AAAA,YAEA,OAAQ;AAAA,YACR;AAAA;AAAA,UAFM;AAAA,QAGP;AAAA,MAEF,CAAE;AAAA;AAAA,EACH;AAEF;AASO,SAAS,aAAc,UAAW;AACxC,MAAK,WAAY,SAAS,YAAY,UAAU,CAAC,IAAM;AACtD,WAAO;AAAA,EACR;AACA,MAAK,sBAAuB,QAAS,GAAI;AACxC,aAAS,aAAa;AAAA,MACrB,GAAG,SAAS;AAAA,MACZ,QAAQ;AAAA,QACP,MAAM;AAAA,MACP;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;AAEA,SAAS,sBAAuB;AAAA,EAC/B,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,EAAE,MAAM,WAAW,IAAI;AAC7B,QAAM,SAAK,8BAAe,cAAe;AACzC,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,EAAE,SAAS,mBAAmB,QACnC,+BAAiB,MAAM,qBAAsB,KAAK,CAAC;AACpD,QAAM,aACL,QAAQ,WAAW,QAAQ,eAAe,QAAQ,WAC/C,EAAE,GAAG,QAAQ,MAAM,cAAc,IACjC,UAAU,sBAAsB,CAAC;AAErC,QAAM,iBAAiB,gBAAiB,UAAW,IAAK,CAAE;AAE1D,QAAM,WAAW,IAAK,cAAe,GAAI,EAAG;AAC5C,QAAM,qBAAqB,oBAAoB;AAI/C,QAAM,qBAAiB,8BAAe,YAAY,QAAQ,SAAU;AACpE,QAAM,MAAM,gBAAgB,iBAAkB;AAAA,IAC7C,WAAW;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,EACD,CAAE;AAGF,QAAM,uBAAmB,YAAAC;AAAA,IACxB;AAAA,MACC,CAAE,GAAI,cAAe,GAAI,EAAG,EAAG,GAAG,CAAC,CAAE;AAAA;AAAA,IACtC;AAAA,IACA;AAAA,EACD;AAEA,qCAAkB,EAAE,IAAI,CAAE;AAE1B,SACC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACL,4BAA6B;AAAA;AAAA,EAC9B;AAEF;AASO,IAAM,uBAAmB;AAAA,EAC/B,CAAE,mBACD,SAAS,iBAAkB,OAAQ;AAClC,UAAM,EAAE,UAAU,MAAM,WAAW,IAAI;AACvC,UAAM,sBAAsB,sBAAuB,IAAK;AACxD,UAAM,gBAAgB,iBAAkB,YAAY,IAAK;AACzD,UAAM,iBAAa;AAAA,MAClB,CAAE,WAAY;AAEb,YAAK,CAAE,qBAAsB;AAC5B;AAAA,QACD;AAEA,cAAM,EAAE,aAAa,iBAAiB,QAAI;AAAA,UACzC,OAAQ,aAAAH,KAAiB;AAAA,QAC1B;AACA,cAAM,WAAW,YAAY;AAC7B,cAAM,EAAE,oBAAoB,IAAI;AAEhC,YAAK,qBAAsB;AAC1B;AAAA,QACD;AAEA,cAAM,CAAE,eAAgB,IAAI;AAAA,UAC3B;AAAA,UACA;AAAA,QACD;AAIA,cAAM,eAAe,SAAU,uCAAoB;AAInD,YAAI;AACJ,cAAM,YAAY,YAAY;AAC9B,YAAK,WAAW,SAAU,gBAAiB,GAAI;AAC9C,gBAAM,EAAE,eAAe,IAAI,OAAQ,cAAAI,KAAY;AAC/C,gBAAM,mBAAmB,eAAgB,IAAK;AAC9C,gBAAM,oBAAgB;AAAA,YACrB;AAAA,YACA;AAAA,UACD;AACA,mCAAyB,gBACtB,cAAc,SAAU,IAAK,GAAG,aAChC,aACA,GAAG,SAAS,WACZ;AAAA,QACJ;AAEA,cAAM,sBACL,0BACA,cAAc,SAAU,IAAK,GAAG,SAAS,YACzC,cAAc,SAAS;AAExB,eAAO,EAAE,iBAAiB,oBAAoB;AAAA,MAC/C;AAAA,MACA,CAAE,qBAAqB,UAAU,YAAY,WAAW,IAAK;AAAA,IAC9D;AAEA,QAAK,CAAE,YAAa;AACnB,aACC;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACL,4BACC,sBAAsB,gBAAgB;AAAA;AAAA,MAExC;AAAA,IAEF;AAEA,WACC;AAAA,MAAC;AAAA;AAAA,QACA,OAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACE,GAAG;AAAA;AAAA,IACN;AAAA,EAEF;AAAA,EACD;AACD;AAAA,IAEA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AACD;AAAA,IACA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AACD;",
6
- "names": ["import_components", "componentsPrivateApis", "blockEditorStore", "ToggleGroupControl", "ToggleGroupControlOption", "clsx", "blocksStore"]
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useCallback } from '@wordpress/element';\nimport {\n\tgetBlockSupport,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\tToggleControl,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\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 { cleanEmptyObject, useBlockSettings, useStyleOverride } from './utils';\nimport { unlock } from '../lock-unlock';\nimport { globalStylesDataKey } from '../store/private-keys';\nimport { getVariationNameFromClass } from './block-style-variation';\nimport {\n\tDEFAULT_BLOCK_STYLE_STATE,\n\tgetStyleForState,\n\thasPseudoBlockStyleState,\n\thasViewportBlockStyleState,\n\tisDefaultBlockStyleState,\n\tsetStyleForState,\n} from './block-style-state';\n\nconst VARIATION_PREFIX = 'is-style-';\n\nconst layoutBlockSupportKey = 'layout';\n// Keep in sync with WP_Theme_JSON_Gutenberg::RESPONSIVE_BREAKPOINTS and\n// packages/global-styles-engine/src/core/render.tsx.\nconst RESPONSIVE_BREAKPOINTS = {\n\tmobile: '@media (width <= 480px)',\n\ttablet: '@media (480px < width <= 782px)',\n};\nconst CHILD_LAYOUT_KEYS = [\n\t'selfStretch',\n\t'flexSize',\n\t'columnStart',\n\t'columnSpan',\n\t'rowStart',\n\t'rowSpan',\n];\nconst { kebabCase } = unlock( componentsPrivateApis );\n\nfunction getDefaultLayout( layoutBlockSupport = {}, blockVariation ) {\n\tconst defaultBlockLayout = layoutBlockSupport?.default;\n\n\treturn blockVariation?.attributes?.layout ?? defaultBlockLayout;\n}\n\n/**\n * Returns the layout values to use when resetting layout controls.\n *\n * @param { Object } layoutBlockSupport Block layout support settings.\n * @param { Object|undefined } blockVariation Block variation settings.\n *\n * @return { Object|undefined } Reset layout values.\n */\nexport function getResetLayout( layoutBlockSupport = {}, blockVariation ) {\n\treturn cleanEmptyObject( {\n\t\t...getDefaultLayout( layoutBlockSupport, blockVariation ),\n\t} );\n}\n\nfunction getLayoutStateOverrides(\n\tlayout = {},\n\tbaseLayout = {},\n\texistingLayout = {}\n) {\n\tconst overrides = {};\n\tconst childLayoutValues = Object.fromEntries(\n\t\tCHILD_LAYOUT_KEYS.filter( ( key ) =>\n\t\t\tObject.hasOwn( existingLayout || {}, key )\n\t\t).map( ( key ) => [ key, existingLayout[ key ] ] )\n\t);\n\n\tObject.entries( layout || {} ).forEach( ( [ key, value ] ) => {\n\t\tif (\n\t\t\t! CHILD_LAYOUT_KEYS.includes( key ) &&\n\t\t\tvalue !== baseLayout?.[ key ]\n\t\t) {\n\t\t\toverrides[ key ] = value;\n\t\t}\n\t} );\n\n\treturn cleanEmptyObject( {\n\t\t...childLayoutValues,\n\t\t...overrides,\n\t} );\n}\n\nfunction getLayoutContainerValues( layout = {} ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( layout || {} ).filter(\n\t\t\t( [ key ] ) => ! CHILD_LAYOUT_KEYS.includes( key )\n\t\t)\n\t);\n}\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 { layout } = blockAttributes;\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\tconst hasGlobalPadding = useSelect(\n\t\t( select ) => {\n\t\t\t// Early return to avoid subscription when layout doesn't use global padding\n\t\t\tif (\n\t\t\t\t! usedLayout?.inherit &&\n\t\t\t\t! usedLayout?.contentSize &&\n\t\t\t\tusedLayout?.type !== 'constrained'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn select( blockEditorStore ).getSettings()\n\t\t\t\t.__experimentalFeatures?.useRootPaddingAwareAlignments;\n\t\t},\n\t\t[ usedLayout?.contentSize, usedLayout?.inherit, usedLayout?.type ]\n\t);\n\n\tif ( hasGlobalPadding ) {\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\treturn fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName,\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n}\n\n/**\n * Generates responsive layout CSS for viewport state styles.\n *\n * Viewport state blockGap values need to go through the layout definitions\n * because flow/constrained layouts use child margins while flex/grid use gap.\n *\n * @param { Object } options Options.\n * @param { Object } options.attributes Block attributes.\n * @param { string } options.blockName Block name.\n * @param { string } options.selector CSS selector.\n * @param { Object } options.layout Active block layout.\n * @param { boolean } options.hasBlockGapSupport Whether block gap is supported.\n * @param { * } options.globalBlockGapValue Global block gap fallback.\n *\n * @return { string } CSS rule.\n */\nexport function getResponsiveLayoutStyles( {\n\tattributes = {},\n\tblockName,\n\tselector,\n\tlayout = {},\n\thasBlockGapSupport,\n\tglobalBlockGapValue,\n} ) {\n\treturn Object.entries( RESPONSIVE_BREAKPOINTS )\n\t\t.map( ( [ viewport, mediaQuery ] ) => {\n\t\t\tconst viewportStyle = attributes?.style?.[ viewport ];\n\t\t\tconst viewportLayout = getLayoutContainerValues(\n\t\t\t\tviewportStyle?.layout\n\t\t\t);\n\t\t\tconst hasViewportLayout = Object.keys( viewportLayout ).length > 0;\n\t\t\tconst hasViewportBlockGap =\n\t\t\t\tviewportStyle?.spacing &&\n\t\t\t\tObject.hasOwn( viewportStyle.spacing, 'blockGap' );\n\t\t\tconst hasViewportPadding =\n\t\t\t\tviewportStyle?.spacing &&\n\t\t\t\tObject.hasOwn( viewportStyle.spacing, 'padding' );\n\t\t\tif (\n\t\t\t\t! hasViewportLayout &&\n\t\t\t\t! hasViewportBlockGap &&\n\t\t\t\t! hasViewportPadding\n\t\t\t) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst layoutType = getLayoutType( layout?.type || 'default' );\n\t\t\tconst viewportCSS = layoutType?.getLayoutStyle?.( {\n\t\t\t\tblockName,\n\t\t\t\tselector,\n\t\t\t\tlayout,\n\t\t\t\tviewportOverrides: viewportLayout,\n\t\t\t\tstyle: viewportStyle,\n\t\t\t\thasBlockGapSupport,\n\t\t\t\tglobalBlockGapValue,\n\t\t\t} );\n\n\t\t\treturn viewportCSS ? `${ mediaQuery }{${ viewportCSS }}` : '';\n\t\t} )\n\t\t.filter( Boolean )\n\t\t.join( '' );\n}\n\nfunction LayoutPanelPure( {\n\tlayout,\n\tstyle,\n\tsetAttributes,\n\tname: blockName,\n\tclientId,\n} ) {\n\tconst settings = useBlockSettings( blockName );\n\t// Block settings come from theme.json under settings.[blockName].\n\tconst { layout: layoutSettings } = settings;\n\tconst { themeSupportsLayout, activeBlockVariation, selectedState } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst blockEditorSelect = select( blockEditorStore );\n\t\t\t\tconst { getBlockAttributes, getSettings } = blockEditorSelect;\n\t\t\t\tconst { getSelectedBlockStyleState } =\n\t\t\t\t\tunlock( blockEditorSelect );\n\t\t\t\treturn {\n\t\t\t\t\tactiveBlockVariation: select(\n\t\t\t\t\t\tblocksStore\n\t\t\t\t\t).getActiveBlockVariation(\n\t\t\t\t\t\tblockName,\n\t\t\t\t\t\tgetBlockAttributes( clientId ) || {},\n\t\t\t\t\t\t'block'\n\t\t\t\t\t),\n\t\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\t\tselectedState:\n\t\t\t\t\t\tgetSelectedBlockStyleState?.( clientId ) ??\n\t\t\t\t\t\tDEFAULT_BLOCK_STYLE_STATE,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ blockName, clientId ]\n\t\t);\n\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst isViewportLayoutState =\n\t\thasViewportBlockStyleState( selectedState ) &&\n\t\t! hasPseudoBlockStyleState( selectedState );\n\tconst resetLayoutFilter = useCallback(\n\t\t( ...resetArgs ) => {\n\t\t\tconst attributes = resetArgs[ 0 ] || {};\n\t\t\tconst context = resetArgs[ 1 ] || {};\n\n\t\t\tif ( isViewportLayoutState ) {\n\t\t\t\tconst existingStateStyle =\n\t\t\t\t\tgetStyleForState(\n\t\t\t\t\t\tattributes.style ?? style,\n\t\t\t\t\t\tselectedState\n\t\t\t\t\t) || {};\n\t\t\t\tconst nextStateStyle = cleanEmptyObject( {\n\t\t\t\t\t...existingStateStyle,\n\t\t\t\t\tlayout: undefined,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tstyle: setStyleForState(\n\t\t\t\t\t\tattributes.style ?? style,\n\t\t\t\t\t\tselectedState,\n\t\t\t\t\t\tnextStateStyle\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst resetBlockName = context.name || blockName;\n\t\t\tconst resetLayoutBlockSupport = getBlockSupport(\n\t\t\t\tresetBlockName,\n\t\t\t\tlayoutBlockSupportKey,\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlayout: getResetLayout(\n\t\t\t\t\tresetLayoutBlockSupport,\n\t\t\t\t\tactiveBlockVariation\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tblockName,\n\t\t\tactiveBlockVariation,\n\t\t\tisViewportLayoutState,\n\t\t\tselectedState,\n\t\t\tstyle,\n\t\t]\n\t);\n\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\t// Layout block support comes from the block's block.json.\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst blockSupportAndThemeSettings = {\n\t\t...layoutSettings,\n\t\t...layoutBlockSupport,\n\t};\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = blockSupportAndThemeSettings;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t/*\n\t * Try to find the layout type from either the\n\t * block's layout settings or any saved layout config.\n\t */\n\tconst baseLayout = layout || defaultBlockLayout || {};\n\tconst stateStyle = isViewportLayoutState\n\t\t? getStyleForState( style, selectedState )\n\t\t: undefined;\n\tconst stateLayout = stateStyle?.layout;\n\tconst usedLayout = isViewportLayoutState\n\t\t? cleanEmptyObject( {\n\t\t\t\t...baseLayout,\n\t\t\t\t...stateLayout,\n\t\t } ) || {}\n\t\t: baseLayout;\n\tconst resetLayoutDefaults = isViewportLayoutState\n\t\t? baseLayout\n\t\t: getResetLayout( layoutBlockSupport, activeBlockVariation );\n\tconst blockSupportAndLayout = {\n\t\t...layoutBlockSupport,\n\t\t...usedLayout,\n\t};\n\tconst { type, default: { type: defaultType = 'default' } = {} } =\n\t\tblockSupportAndLayout;\n\tconst blockLayoutType = type || defaultType;\n\n\t// Only show the inherit toggle if it's supported,\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( ! blockLayoutType ||\n\t\t\tblockLayoutType === 'default' ||\n\t\t\tblockLayoutType === 'constrained' ||\n\t\t\tblockSupportAndLayout.inherit )\n\t);\n\n\tconst { inherit = false, contentSize = null } = 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( blockLayoutType === 'default' ||\n\t\t\tblockLayoutType === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( blockLayoutType );\n\tconst constrainedType = getLayoutType( 'constrained' );\n\tconst displayControlsForLegacyLayouts =\n\t\t! usedLayout.type && ( contentSize || inherit );\n\tconst hasContentSizeOrLegacySettings = !! inherit || !! contentSize;\n\tconst showLayoutTypeSwitcher =\n\t\tisDefaultBlockStyleState( selectedState ) &&\n\t\t! inherit &&\n\t\tallowSwitching;\n\n\tconst onChangeLayout = ( newLayout ) => {\n\t\tif ( isViewportLayoutState ) {\n\t\t\tconst nextStateStyle = cleanEmptyObject( {\n\t\t\t\t...stateStyle,\n\t\t\t\tlayout: getLayoutStateOverrides(\n\t\t\t\t\tcleanEmptyObject( newLayout ),\n\t\t\t\t\tbaseLayout,\n\t\t\t\t\tstateStyle?.layout\n\t\t\t\t),\n\t\t\t} );\n\t\t\tsetAttributes( {\n\t\t\t\tstyle: setStyleForState( style, selectedState, nextStateStyle ),\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( { layout: cleanEmptyObject( newLayout ) } );\n\t};\n\tconst onChangeType = ( newType ) => onChangeLayout( { type: newType } );\n\tconst resetLayout = () => onChangeLayout( resetLayoutDefaults );\n\tconst resetInheritToggle = () => onChangeLayout( { type: 'default' } );\n\tconst isUsingContentWidth = () =>\n\t\tlayoutType?.name === 'constrained' || hasContentSizeOrLegacySettings;\n\tconst hasInheritToggleValue = () =>\n\t\tisViewportLayoutState\n\t\t\t? ( usedLayout?.type ?? 'default' ) !==\n\t\t\t ( resetLayoutDefaults?.type ?? 'default' )\n\t\t\t: layout?.type === 'constrained';\n\tconst hasLayoutTypeValue = () =>\n\t\t( usedLayout?.type ?? 'default' ) !==\n\t\t( resetLayoutDefaults?.type ?? 'default' );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls\n\t\t\t\tgroup=\"layout\"\n\t\t\t\tresetAllFilter={ resetLayoutFilter }\n\t\t\t>\n\t\t\t\t{ showInheritToggle && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Use content width' ) }\n\t\t\t\t\t\thasValue={ hasInheritToggleValue }\n\t\t\t\t\t\tonDeselect={ resetInheritToggle }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Inner blocks use content width' ) }\n\t\t\t\t\t\t\tchecked={ isUsingContentWidth() }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tonChangeLayout( {\n\t\t\t\t\t\t\t\t\ttype: isUsingContentWidth()\n\t\t\t\t\t\t\t\t\t\t? 'default'\n\t\t\t\t\t\t\t\t\t\t: 'constrained',\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\tisUsingContentWidth()\n\t\t\t\t\t\t\t\t\t? __(\n\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 )\n\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t'Nested blocks will fill the width of this container.'\n\t\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</ToolsPanelItem>\n\t\t\t\t) }\n\n\t\t\t\t{ showLayoutTypeSwitcher && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Layout type' ) }\n\t\t\t\t\t\thasValue={ hasLayoutTypeValue }\n\t\t\t\t\t\tonDeselect={ resetLayout }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LayoutTypeSwitcher\n\t\t\t\t\t\t\ttype={ blockLayoutType }\n\t\t\t\t\t\t\tonChange={ onChangeType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\n\t\t\t\t{ layoutType && layoutType.name !== 'default' && (\n\t\t\t\t\t<layoutType.inspectorControls\n\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\tvalue={ layout }\n\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\tlayoutBlockSupport={ blockSupportAndThemeSettings }\n\t\t\t\t\t\tresetLayout={ resetLayoutDefaults }\n\t\t\t\t\t\tname={ blockName }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ constrainedType && displayControlsForLegacyLayouts && (\n\t\t\t\t\t<constrainedType.inspectorControls\n\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\tvalue={ layout }\n\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\tlayoutBlockSupport={ blockSupportAndThemeSettings }\n\t\t\t\t\t\tresetLayout={ resetLayoutDefaults }\n\t\t\t\t\t\tname={ blockName }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\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\tname={ blockName }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default {\n\tshareWithChildBlocks: true,\n\tedit: LayoutPanelPure,\n\tattributeKeys: [ 'layout', 'style' ],\n\thasSupport( name ) {\n\t\treturn hasLayoutBlockSupport( name );\n\t},\n};\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Layout type' ) }\n\t\t\thideLabelFromVision\n\t\t\tisAdaptiveWidth\n\t\t\tvalue={ type }\n\t\t\tonChange={ onChange }\n\t\t>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tvalue={ name }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\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\nfunction BlockWithLayoutStyles( {\n\tblock: BlockListBlock,\n\tprops,\n\tblockGapSupport,\n\tglobalBlockGapValue,\n\tlayoutClasses,\n} ) {\n\tconst { name, attributes } = props;\n\tconst id = useInstanceId( BlockListBlock );\n\tconst { layout } = attributes;\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( name, 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 selectorPrefix = `wp-container-${ kebabCase( name ) }-is-layout-`;\n\t// Higher specificity to override defaults from theme.json.\n\tconst selector = `.${ selectorPrefix }${ id }`;\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t// Get CSS string for the current layout type.\n\t// The CSS and `style` element is only output if it is not empty.\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst baseLayoutCSS = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName: name,\n\t\tselector,\n\t\tlayout: usedLayout,\n\t\tstyle: attributes?.style,\n\t\thasBlockGapSupport,\n\t\tglobalBlockGapValue,\n\t} );\n\tconst responsiveLayoutCSS = getResponsiveLayoutStyles( {\n\t\tattributes,\n\t\tblockName: name,\n\t\tselector,\n\t\tlayout: usedLayout,\n\t\thasBlockGapSupport,\n\t\tglobalBlockGapValue,\n\t} );\n\tconst css = [ baseLayoutCSS, responsiveLayoutCSS ]\n\t\t.filter( Boolean )\n\t\t.join( '' );\n\n\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\tconst layoutClassNames = clsx(\n\t\t{\n\t\t\t[ `${ selectorPrefix }${ id }` ]: !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t},\n\t\tlayoutClasses\n\t);\n\n\tuseStyleOverride( { css } );\n\n\treturn (\n\t\t<BlockListBlock\n\t\t\t{ ...props }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t/>\n\t);\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 ) =>\n\t\tfunction WithLayoutStyles( props ) {\n\t\t\tconst { clientId, name, attributes } = props;\n\t\t\tconst blockSupportsLayout = hasLayoutBlockSupport( name );\n\t\t\tconst layoutClasses = useLayoutClasses( attributes, name );\n\t\t\tconst extraProps = useSelect(\n\t\t\t\t( select ) => {\n\t\t\t\t\t// The callback returns early to avoid block editor subscription.\n\t\t\t\t\tif ( ! blockSupportsLayout ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { getSettings, getBlockSettings } = unlock(\n\t\t\t\t\t\tselect( blockEditorStore )\n\t\t\t\t\t);\n\t\t\t\t\tconst settings = getSettings();\n\t\t\t\t\tconst { disableLayoutStyles } = settings;\n\n\t\t\t\t\tif ( disableLayoutStyles ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [ blockGapSupport ] = getBlockSettings(\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t'spacing.blockGap'\n\t\t\t\t\t);\n\n\t\t\t\t\t// Get default blockGap value from global styles for use in layouts like grid.\n\t\t\t\t\t// Check style variation first, then block-specific styles, then fall back to root styles.\n\t\t\t\t\tconst globalStyles = settings[ globalStylesDataKey ];\n\n\t\t\t\t\t// Check if the block has an active style variation with a blockGap value.\n\t\t\t\t\t// Only check the registry if the className contains a variation class to avoid unnecessary lookups.\n\t\t\t\t\tlet variationBlockGapValue;\n\t\t\t\t\tconst className = attributes?.className;\n\t\t\t\t\tif ( className?.includes( VARIATION_PREFIX ) ) {\n\t\t\t\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\t\t\t\tconst registeredStyles = getBlockStyles( name );\n\t\t\t\t\t\tconst variationName = getVariationNameFromClass(\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\tregisteredStyles\n\t\t\t\t\t\t);\n\t\t\t\t\t\tvariationBlockGapValue = variationName\n\t\t\t\t\t\t\t? globalStyles?.blocks?.[ name ]?.variations?.[\n\t\t\t\t\t\t\t\t\tvariationName\n\t\t\t\t\t\t\t ]?.spacing?.blockGap\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst globalBlockGapValue =\n\t\t\t\t\t\tvariationBlockGapValue ??\n\t\t\t\t\t\tglobalStyles?.blocks?.[ name ]?.spacing?.blockGap ??\n\t\t\t\t\t\tglobalStyles?.spacing?.blockGap;\n\n\t\t\t\t\treturn { blockGapSupport, globalBlockGapValue };\n\t\t\t\t},\n\t\t\t\t[ blockSupportsLayout, clientId, attributes?.className, name ]\n\t\t\t);\n\n\t\t\tif ( ! extraProps ) {\n\t\t\t\treturn (\n\t\t\t\t\t<BlockListBlock\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t__unstableLayoutClassNames={\n\t\t\t\t\t\t\tblockSupportsLayout ? layoutClasses : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<BlockWithLayoutStyles\n\t\t\t\t\tblock={ BlockListBlock }\n\t\t\t\t\tprops={ props }\n\t\t\t\t\tlayoutClasses={ layoutClasses }\n\t\t\t\t\t{ ...extraProps }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t'withLayoutStyles'\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);\n"],
5
+ "mappings": "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",
6
+ "names": ["import_components", "componentsPrivateApis", "blockEditorStore", "blocksStore", "ToolsPanelItem", "ToggleGroupControl", "ToggleGroupControlOption", "clsx"]
7
7
  }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // packages/block-editor/src/hooks/state-utils.js
21
+ var state_utils_exports = {};
22
+ __export(state_utils_exports, {
23
+ buildCanvasStateSelector: () => buildCanvasStateSelector,
24
+ buildPseudoStyleStateSelector: () => buildPseudoStyleStateSelector,
25
+ buildRootStyleStateSelector: () => buildRootStyleStateSelector,
26
+ buildScopedBlockSelector: () => buildScopedBlockSelector,
27
+ buildStateSelector: () => buildStateSelector,
28
+ getRelativeRootSelector: () => getRelativeRootSelector
29
+ });
30
+ module.exports = __toCommonJS(state_utils_exports);
31
+ var import_blocks = require("@wordpress/blocks");
32
+ var import_global_styles_engine = require("@wordpress/global-styles-engine");
33
+ function getRelativeRootSelector(rootSelector) {
34
+ const match = rootSelector.trim().match(/^[^ >+~]+[ >+~](.*)$/);
35
+ if (!match) {
36
+ return null;
37
+ }
38
+ const rest = match[1].trim();
39
+ return rest || null;
40
+ }
41
+ function buildScopedBlockSelector(baseSelector, blockSelector, suffix = "") {
42
+ if (typeof blockSelector !== "string" || !blockSelector) {
43
+ return (0, import_global_styles_engine.splitSelectorList)(baseSelector).map((selector) => `${selector.trim()}${suffix}`).join(", ");
44
+ }
45
+ const baseSelectors = (0, import_global_styles_engine.splitSelectorList)(baseSelector).filter(
46
+ (selector) => selector.trim()
47
+ );
48
+ const selectors = (0, import_global_styles_engine.splitSelectorList)(blockSelector).filter(
49
+ (selector) => selector.trim()
50
+ );
51
+ if (!selectors.length) {
52
+ return baseSelectors.map((selector) => `${selector.trim()}${suffix}`).join(", ");
53
+ }
54
+ return selectors.map((selector) => {
55
+ selector = selector.trim();
56
+ const match = selector.match(/^([.#]?[-_a-zA-Z0-9]+|\[[^\]]+\])/);
57
+ if (match) {
58
+ return baseSelectors.map(
59
+ (base) => `${base.trim()}${selector.slice(
60
+ match[0].length
61
+ )}${suffix}`
62
+ ).join(", ");
63
+ }
64
+ return baseSelectors.map((base) => `${base.trim()}${suffix}`).join(", ");
65
+ }).join(", ");
66
+ }
67
+ function buildRootStyleStateSelector(baseSelector, name) {
68
+ const rootSelector = (0, import_blocks.getBlockType)(name)?.selectors?.root;
69
+ return buildScopedBlockSelector(baseSelector, rootSelector);
70
+ }
71
+ function buildPseudoStyleStateSelector(baseSelector, name, state) {
72
+ return `${buildRootStyleStateSelector(baseSelector, name)}${state}`;
73
+ }
74
+ function buildStateSelector(baseSelector, name, state) {
75
+ const rootSelector = (0, import_blocks.getBlockType)(name)?.selectors?.root;
76
+ return buildScopedBlockSelector(baseSelector, rootSelector, state);
77
+ }
78
+ function buildCanvasStateSelector(clientId, name) {
79
+ const rootSelector = (0, import_blocks.getBlockType)(name)?.selectors?.root;
80
+ return buildScopedBlockSelector(
81
+ `[data-block="${clientId}"]`,
82
+ rootSelector
83
+ );
84
+ }
85
+ // Annotate the CommonJS export names for ESM import in node:
86
+ 0 && (module.exports = {
87
+ buildCanvasStateSelector,
88
+ buildPseudoStyleStateSelector,
89
+ buildRootStyleStateSelector,
90
+ buildScopedBlockSelector,
91
+ buildStateSelector,
92
+ getRelativeRootSelector
93
+ });
94
+ //# sourceMappingURL=state-utils.cjs.map