@wordpress/block-editor 12.9.1-next.5a1d1283.0 → 12.10.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 (453) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +33 -3
  3. package/build/components/block-canvas/index.js +107 -0
  4. package/build/components/block-canvas/index.js.map +1 -0
  5. package/build/components/block-inspector/index.js +4 -1
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-patterns-list/index.js +19 -4
  8. package/build/components/block-patterns-list/index.js.map +1 -1
  9. package/build/components/block-patterns-paging/index.js +66 -0
  10. package/build/components/block-patterns-paging/index.js.map +1 -0
  11. package/build/components/block-settings-menu/block-settings-dropdown.js +28 -0
  12. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  13. package/build/components/block-settings-menu-controls/index.js +4 -7
  14. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  15. package/build/components/block-styles/index.js +1 -0
  16. package/build/components/block-styles/index.js.map +1 -1
  17. package/build/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  18. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  19. package/build/components/block-tools/block-contextual-toolbar.js +18 -7
  20. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  21. package/build/components/block-tools/block-selection-button.js +5 -1
  22. package/build/components/block-tools/block-selection-button.js.map +1 -1
  23. package/build/components/border-radius-control/input-controls.js +1 -1
  24. package/build/components/border-radius-control/input-controls.js.map +1 -1
  25. package/build/components/border-radius-control/linked-button.js +2 -4
  26. package/build/components/border-radius-control/linked-button.js.map +1 -1
  27. package/build/components/colors/with-colors.js.map +1 -1
  28. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  29. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  30. package/build/components/default-block-appender/index.native.js +20 -1
  31. package/build/components/default-block-appender/index.native.js.map +1 -1
  32. package/build/components/duotone/utils.js +68 -0
  33. package/build/components/duotone/utils.js.map +1 -1
  34. package/build/components/editor-styles/index.js +28 -9
  35. package/build/components/editor-styles/index.js.map +1 -1
  36. package/build/components/global-styles/hooks.js +2 -101
  37. package/build/components/global-styles/hooks.js.map +1 -1
  38. package/build/components/global-styles/image-settings-panel.js +61 -0
  39. package/build/components/global-styles/image-settings-panel.js.map +1 -0
  40. package/build/components/global-styles/index.js +11 -17
  41. package/build/components/global-styles/index.js.map +1 -1
  42. package/build/components/global-styles/use-global-styles-output.js +19 -15
  43. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  44. package/build/components/global-styles/utils.js +1 -1
  45. package/build/components/global-styles/utils.js.map +1 -1
  46. package/build/components/iframe/index.js +67 -33
  47. package/build/components/iframe/index.js.map +1 -1
  48. package/build/components/image-editor/use-save-image.js +2 -5
  49. package/build/components/image-editor/use-save-image.js.map +1 -1
  50. package/build/components/image-editor/use-transform-image.js +9 -9
  51. package/build/components/image-editor/use-transform-image.js.map +1 -1
  52. package/build/components/index.js +8 -12
  53. package/build/components/index.js.map +1 -1
  54. package/build/components/index.native.js +6 -5
  55. package/build/components/index.native.js.map +1 -1
  56. package/build/components/inner-blocks/use-nested-settings-update.js +13 -7
  57. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  58. package/build/components/inserter/block-patterns-explorer/explorer.js +12 -6
  59. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  60. package/build/components/inserter/block-patterns-explorer/patterns-list.js +57 -23
  61. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  62. package/build/components/inserter/block-patterns-explorer/sidebar.js +24 -9
  63. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  64. package/build/components/inserter/block-patterns-source-filter.js +54 -0
  65. package/build/components/inserter/block-patterns-source-filter.js.map +1 -0
  66. package/build/components/inserter/block-patterns-sync-filter.js +46 -0
  67. package/build/components/inserter/block-patterns-sync-filter.js.map +1 -0
  68. package/build/components/inserter/block-patterns-tab.js +91 -45
  69. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  70. package/build/components/inserter/hooks/use-patterns-paging.js +57 -0
  71. package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  72. package/build/components/inserter/hooks/use-patterns-state.js +21 -10
  73. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  74. package/build/components/inserter/menu.js +13 -11
  75. package/build/components/inserter/menu.js.map +1 -1
  76. package/build/components/inserter/search-results.js +4 -3
  77. package/build/components/inserter/search-results.js.map +1 -1
  78. package/build/components/inserter/tabs.js +1 -12
  79. package/build/components/inserter/tabs.js.map +1 -1
  80. package/build/components/inspector-controls/block-support-slot-container.js +12 -1
  81. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
  82. package/build/components/inspector-controls/fill.js +24 -13
  83. package/build/components/inspector-controls/fill.js.map +1 -1
  84. package/build/components/inspector-controls/groups.js +5 -3
  85. package/build/components/inspector-controls/groups.js.map +1 -1
  86. package/build/components/inspector-controls/slot.js +13 -0
  87. package/build/components/inspector-controls/slot.js.map +1 -1
  88. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  89. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  90. package/build/components/link-control/index.js +12 -2
  91. package/build/components/link-control/index.js.map +1 -1
  92. package/build/components/list-view/block-select-button.js +1 -3
  93. package/build/components/list-view/block-select-button.js.map +1 -1
  94. package/build/components/list-view/block.js +13 -1
  95. package/build/components/list-view/block.js.map +1 -1
  96. package/build/components/list-view/use-block-selection.js +29 -24
  97. package/build/components/list-view/use-block-selection.js.map +1 -1
  98. package/build/components/media-placeholder/index.js +2 -2
  99. package/build/components/media-placeholder/index.js.map +1 -1
  100. package/build/components/media-placeholder/index.native.js +11 -11
  101. package/build/components/media-placeholder/index.native.js.map +1 -1
  102. package/build/components/media-replace-flow/index.js +2 -3
  103. package/build/components/media-replace-flow/index.js.map +1 -1
  104. package/build/components/media-upload/constants.js +30 -0
  105. package/build/components/media-upload/constants.js.map +1 -0
  106. package/build/components/media-upload/index.native.js +63 -53
  107. package/build/components/media-upload/index.native.js.map +1 -1
  108. package/build/components/preview-options/index.js +1 -1
  109. package/build/components/preview-options/index.js.map +1 -1
  110. package/build/components/rich-text/index.js +34 -35
  111. package/build/components/rich-text/index.js.map +1 -1
  112. package/build/components/rich-text/index.native.js +14 -32
  113. package/build/components/rich-text/index.native.js.map +1 -1
  114. package/build/components/rich-text/multiline.js +95 -0
  115. package/build/components/rich-text/multiline.js.map +1 -0
  116. package/build/components/rich-text/split-value.js +10 -16
  117. package/build/components/rich-text/split-value.js.map +1 -1
  118. package/build/components/rich-text/use-enter.js +31 -40
  119. package/build/components/rich-text/use-enter.js.map +1 -1
  120. package/build/components/rich-text/use-paste-handler.js +18 -33
  121. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  122. package/build/components/spacing-sizes-control/utils.js +1 -1
  123. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  124. package/build/components/use-block-commands/index.js +30 -18
  125. package/build/components/use-block-commands/index.js.map +1 -1
  126. package/build/components/use-block-display-information/index.js +5 -2
  127. package/build/components/use-block-display-information/index.js.map +1 -1
  128. package/build/hooks/background.js +258 -0
  129. package/build/hooks/background.js.map +1 -0
  130. package/build/hooks/block-hooks.js +188 -0
  131. package/build/hooks/block-hooks.js.map +1 -0
  132. package/build/hooks/block-rename-ui.js +160 -0
  133. package/build/hooks/block-rename-ui.js.map +1 -0
  134. package/build/hooks/duotone.js +29 -42
  135. package/build/hooks/duotone.js.map +1 -1
  136. package/build/hooks/index.js +2 -2
  137. package/build/hooks/index.js.map +1 -1
  138. package/build/hooks/layout.js +31 -14
  139. package/build/hooks/layout.js.map +1 -1
  140. package/build/hooks/position.js +4 -2
  141. package/build/hooks/position.js.map +1 -1
  142. package/build/hooks/style.js +10 -3
  143. package/build/hooks/style.js.map +1 -1
  144. package/build/private-apis.js +2 -0
  145. package/build/private-apis.js.map +1 -1
  146. package/build/store/actions.js +33 -10
  147. package/build/store/actions.js.map +1 -1
  148. package/build/store/private-actions.js +42 -8
  149. package/build/store/private-actions.js.map +1 -1
  150. package/build/store/private-selectors.js +23 -0
  151. package/build/store/private-selectors.js.map +1 -1
  152. package/build/store/reducer.js +43 -1
  153. package/build/store/reducer.js.map +1 -1
  154. package/build/store/selectors.js +84 -23
  155. package/build/store/selectors.js.map +1 -1
  156. package/build/store/utils.js +0 -4
  157. package/build/store/utils.js.map +1 -1
  158. package/build-module/components/block-canvas/index.js +97 -0
  159. package/build-module/components/block-canvas/index.js.map +1 -0
  160. package/build-module/components/block-inspector/index.js +4 -1
  161. package/build-module/components/block-inspector/index.js.map +1 -1
  162. package/build-module/components/block-patterns-list/index.js +20 -5
  163. package/build-module/components/block-patterns-list/index.js.map +1 -1
  164. package/build-module/components/block-patterns-paging/index.js +59 -0
  165. package/build-module/components/block-patterns-paging/index.js.map +1 -0
  166. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -0
  167. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  168. package/build-module/components/block-settings-menu-controls/index.js +4 -7
  169. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  170. package/build-module/components/block-styles/index.js +1 -0
  171. package/build-module/components/block-styles/index.js.map +1 -1
  172. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  173. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  174. package/build-module/components/block-tools/block-contextual-toolbar.js +18 -7
  175. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  176. package/build-module/components/block-tools/block-selection-button.js +5 -1
  177. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  178. package/build-module/components/border-radius-control/input-controls.js +1 -1
  179. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  180. package/build-module/components/border-radius-control/linked-button.js +2 -4
  181. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  182. package/build-module/components/colors/with-colors.js.map +1 -1
  183. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  184. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  185. package/build-module/components/default-block-appender/index.native.js +20 -1
  186. package/build-module/components/default-block-appender/index.native.js.map +1 -1
  187. package/build-module/components/duotone/utils.js +65 -0
  188. package/build-module/components/duotone/utils.js.map +1 -1
  189. package/build-module/components/editor-styles/index.js +28 -9
  190. package/build-module/components/editor-styles/index.js.map +1 -1
  191. package/build-module/components/global-styles/hooks.js +3 -100
  192. package/build-module/components/global-styles/hooks.js.map +1 -1
  193. package/build-module/components/global-styles/image-settings-panel.js +53 -0
  194. package/build-module/components/global-styles/image-settings-panel.js.map +1 -0
  195. package/build-module/components/global-styles/index.js +2 -2
  196. package/build-module/components/global-styles/index.js.map +1 -1
  197. package/build-module/components/global-styles/use-global-styles-output.js +18 -16
  198. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  199. package/build-module/components/global-styles/utils.js +1 -1
  200. package/build-module/components/global-styles/utils.js.map +1 -1
  201. package/build-module/components/iframe/index.js +66 -33
  202. package/build-module/components/iframe/index.js.map +1 -1
  203. package/build-module/components/image-editor/use-save-image.js +2 -5
  204. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  205. package/build-module/components/image-editor/use-transform-image.js +9 -9
  206. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  207. package/build-module/components/index.js +1 -1
  208. package/build-module/components/index.js.map +1 -1
  209. package/build-module/components/index.native.js +2 -1
  210. package/build-module/components/index.native.js.map +1 -1
  211. package/build-module/components/inner-blocks/use-nested-settings-update.js +14 -8
  212. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  213. package/build-module/components/inserter/block-patterns-explorer/explorer.js +12 -6
  214. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  215. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +59 -25
  216. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  217. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +23 -9
  218. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  219. package/build-module/components/inserter/block-patterns-source-filter.js +44 -0
  220. package/build-module/components/inserter/block-patterns-source-filter.js.map +1 -0
  221. package/build-module/components/inserter/block-patterns-sync-filter.js +38 -0
  222. package/build-module/components/inserter/block-patterns-sync-filter.js.map +1 -0
  223. package/build-module/components/inserter/block-patterns-tab.js +87 -46
  224. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  225. package/build-module/components/inserter/hooks/use-patterns-paging.js +50 -0
  226. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  227. package/build-module/components/inserter/hooks/use-patterns-state.js +22 -10
  228. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  229. package/build-module/components/inserter/menu.js +13 -11
  230. package/build-module/components/inserter/menu.js.map +1 -1
  231. package/build-module/components/inserter/search-results.js +4 -3
  232. package/build-module/components/inserter/search-results.js.map +1 -1
  233. package/build-module/components/inserter/tabs.js +1 -12
  234. package/build-module/components/inserter/tabs.js.map +1 -1
  235. package/build-module/components/inspector-controls/block-support-slot-container.js +13 -2
  236. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
  237. package/build-module/components/inspector-controls/fill.js +25 -14
  238. package/build-module/components/inspector-controls/fill.js.map +1 -1
  239. package/build-module/components/inspector-controls/groups.js +5 -3
  240. package/build-module/components/inspector-controls/groups.js.map +1 -1
  241. package/build-module/components/inspector-controls/slot.js +15 -1
  242. package/build-module/components/inspector-controls/slot.js.map +1 -1
  243. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  244. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  245. package/build-module/components/link-control/index.js +12 -2
  246. package/build-module/components/link-control/index.js.map +1 -1
  247. package/build-module/components/list-view/block-select-button.js +1 -3
  248. package/build-module/components/list-view/block-select-button.js.map +1 -1
  249. package/build-module/components/list-view/block.js +13 -1
  250. package/build-module/components/list-view/block.js.map +1 -1
  251. package/build-module/components/list-view/use-block-selection.js +30 -25
  252. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  253. package/build-module/components/media-placeholder/index.js +2 -2
  254. package/build-module/components/media-placeholder/index.js.map +1 -1
  255. package/build-module/components/media-placeholder/index.native.js +7 -7
  256. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  257. package/build-module/components/media-replace-flow/index.js +2 -3
  258. package/build-module/components/media-replace-flow/index.js.map +1 -1
  259. package/build-module/components/media-upload/constants.js +14 -0
  260. package/build-module/components/media-upload/constants.js.map +1 -0
  261. package/build-module/components/media-upload/index.native.js +53 -34
  262. package/build-module/components/media-upload/index.native.js.map +1 -1
  263. package/build-module/components/preview-options/index.js +1 -1
  264. package/build-module/components/preview-options/index.js.map +1 -1
  265. package/build-module/components/rich-text/index.js +35 -37
  266. package/build-module/components/rich-text/index.js.map +1 -1
  267. package/build-module/components/rich-text/index.native.js +15 -33
  268. package/build-module/components/rich-text/index.native.js.map +1 -1
  269. package/build-module/components/rich-text/multiline.js +87 -0
  270. package/build-module/components/rich-text/multiline.js.map +1 -0
  271. package/build-module/components/rich-text/split-value.js +10 -16
  272. package/build-module/components/rich-text/split-value.js.map +1 -1
  273. package/build-module/components/rich-text/use-enter.js +33 -42
  274. package/build-module/components/rich-text/use-enter.js.map +1 -1
  275. package/build-module/components/rich-text/use-paste-handler.js +19 -34
  276. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  277. package/build-module/components/spacing-sizes-control/utils.js +2 -2
  278. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  279. package/build-module/components/use-block-commands/index.js +28 -16
  280. package/build-module/components/use-block-commands/index.js.map +1 -1
  281. package/build-module/components/use-block-display-information/index.js +5 -2
  282. package/build-module/components/use-block-display-information/index.js.map +1 -1
  283. package/build-module/hooks/background.js +244 -0
  284. package/build-module/hooks/background.js.map +1 -0
  285. package/build-module/hooks/block-hooks.js +181 -0
  286. package/build-module/hooks/block-hooks.js.map +1 -0
  287. package/build-module/hooks/block-rename-ui.js +153 -0
  288. package/build-module/hooks/block-rename-ui.js.map +1 -0
  289. package/build-module/hooks/duotone.js +26 -39
  290. package/build-module/hooks/duotone.js.map +1 -1
  291. package/build-module/hooks/index.js +2 -2
  292. package/build-module/hooks/index.js.map +1 -1
  293. package/build-module/hooks/layout.js +33 -16
  294. package/build-module/hooks/layout.js.map +1 -1
  295. package/build-module/hooks/position.js +4 -2
  296. package/build-module/hooks/position.js.map +1 -1
  297. package/build-module/hooks/style.js +10 -3
  298. package/build-module/hooks/style.js.map +1 -1
  299. package/build-module/private-apis.js +2 -0
  300. package/build-module/private-apis.js.map +1 -1
  301. package/build-module/store/actions.js +33 -10
  302. package/build-module/store/actions.js.map +1 -1
  303. package/build-module/store/private-actions.js +39 -8
  304. package/build-module/store/private-actions.js.map +1 -1
  305. package/build-module/store/private-selectors.js +21 -0
  306. package/build-module/store/private-selectors.js.map +1 -1
  307. package/build-module/store/reducer.js +41 -1
  308. package/build-module/store/reducer.js.map +1 -1
  309. package/build-module/store/selectors.js +78 -22
  310. package/build-module/store/selectors.js.map +1 -1
  311. package/build-module/store/utils.js +0 -4
  312. package/build-module/store/utils.js.map +1 -1
  313. package/build-style/content-rtl.css +0 -1
  314. package/build-style/content.css +0 -1
  315. package/build-style/style-rtl.css +170 -127
  316. package/build-style/style.css +170 -127
  317. package/package.json +32 -32
  318. package/src/components/block-canvas/index.js +108 -0
  319. package/src/components/block-inspector/index.js +5 -1
  320. package/src/components/block-list/content.scss +0 -1
  321. package/src/components/block-patterns-list/index.js +32 -7
  322. package/src/components/block-patterns-list/style.scss +26 -9
  323. package/src/components/block-patterns-paging/index.js +92 -0
  324. package/src/components/block-patterns-paging/style.scss +42 -0
  325. package/src/components/block-settings-menu/block-settings-dropdown.js +44 -0
  326. package/src/components/block-settings-menu-controls/index.js +4 -9
  327. package/src/components/block-styles/index.js +1 -0
  328. package/src/components/block-styles/style.scss +3 -3
  329. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -6
  330. package/src/components/block-tools/block-contextual-toolbar.js +16 -5
  331. package/src/components/block-tools/block-selection-button.js +9 -1
  332. package/src/components/block-tools/style.scss +0 -98
  333. package/src/components/border-radius-control/input-controls.js +1 -1
  334. package/src/components/border-radius-control/linked-button.js +8 -11
  335. package/src/components/color-palette/test/__snapshots__/control.js.snap +34 -21
  336. package/src/components/colors/with-colors.js +3 -2
  337. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -35
  338. package/src/components/default-block-appender/index.native.js +26 -3
  339. package/src/components/duotone/utils.js +65 -0
  340. package/src/components/editor-styles/index.js +32 -23
  341. package/src/components/global-styles/hooks.js +4 -112
  342. package/src/components/global-styles/image-settings-panel.js +71 -0
  343. package/src/components/global-styles/index.js +4 -3
  344. package/src/components/global-styles/use-global-styles-output.js +25 -16
  345. package/src/components/global-styles/utils.js +1 -2
  346. package/src/components/iframe/index.js +72 -33
  347. package/src/components/image-editor/use-save-image.js +2 -9
  348. package/src/components/image-editor/use-transform-image.js +9 -9
  349. package/src/components/index.js +1 -1
  350. package/src/components/index.native.js +2 -2
  351. package/src/components/inner-blocks/use-nested-settings-update.js +15 -10
  352. package/src/components/inserter/block-patterns-explorer/explorer.js +17 -5
  353. package/src/components/inserter/block-patterns-explorer/patterns-list.js +109 -40
  354. package/src/components/inserter/block-patterns-explorer/sidebar.js +23 -8
  355. package/src/components/inserter/block-patterns-source-filter.js +40 -0
  356. package/src/components/inserter/block-patterns-sync-filter.js +35 -0
  357. package/src/components/inserter/block-patterns-tab.js +168 -57
  358. package/src/components/inserter/hooks/use-patterns-paging.js +65 -0
  359. package/src/components/inserter/hooks/use-patterns-state.js +27 -16
  360. package/src/components/inserter/menu.js +15 -17
  361. package/src/components/inserter/search-results.js +6 -4
  362. package/src/components/inserter/style.scss +23 -2
  363. package/src/components/inserter/tabs.js +2 -12
  364. package/src/components/inserter/test/index.native.js +8 -12
  365. package/src/components/inspector-controls/block-support-slot-container.js +19 -3
  366. package/src/components/inspector-controls/fill.js +28 -14
  367. package/src/components/inspector-controls/groups.js +6 -2
  368. package/src/components/inspector-controls/slot.js +28 -3
  369. package/src/components/inspector-controls-tabs/styles-tab.js +4 -0
  370. package/src/components/link-control/index.js +13 -0
  371. package/src/components/link-control/style.scss +23 -2
  372. package/src/components/link-control/test/index.js +88 -6
  373. package/src/components/list-view/block-select-button.js +1 -3
  374. package/src/components/list-view/block.js +19 -1
  375. package/src/components/list-view/style.scss +1 -2
  376. package/src/components/list-view/use-block-selection.js +38 -32
  377. package/src/components/media-placeholder/README.md +2 -2
  378. package/src/components/media-placeholder/index.js +2 -2
  379. package/src/components/media-placeholder/index.native.js +11 -12
  380. package/src/components/media-replace-flow/index.js +2 -2
  381. package/src/components/media-replace-flow/test/index.js +5 -23
  382. package/src/components/media-upload/README.md +3 -2
  383. package/src/components/media-upload/constants.js +15 -0
  384. package/src/components/media-upload/index.native.js +66 -40
  385. package/src/components/media-upload/style.native.scss +4 -0
  386. package/src/components/media-upload/test/index.native.js +2 -2
  387. package/src/components/preview-options/README.md +7 -0
  388. package/src/components/preview-options/index.js +1 -1
  389. package/src/components/rich-text/index.js +48 -44
  390. package/src/components/rich-text/index.native.js +14 -42
  391. package/src/components/rich-text/multiline.js +121 -0
  392. package/src/components/rich-text/split-value.js +10 -35
  393. package/src/components/rich-text/use-enter.js +32 -42
  394. package/src/components/rich-text/use-paste-handler.js +16 -40
  395. package/src/components/spacing-sizes-control/style.scss +5 -7
  396. package/src/components/spacing-sizes-control/utils.js +1 -2
  397. package/src/components/use-block-commands/index.js +28 -20
  398. package/src/components/use-block-display-information/index.js +3 -0
  399. package/src/hooks/background.js +288 -0
  400. package/src/hooks/background.scss +57 -0
  401. package/src/hooks/block-hooks.js +257 -0
  402. package/src/hooks/block-hooks.scss +16 -0
  403. package/src/hooks/block-rename-ui.js +230 -0
  404. package/src/hooks/block-rename-ui.scss +3 -0
  405. package/src/hooks/duotone.js +42 -43
  406. package/src/hooks/index.js +2 -2
  407. package/src/hooks/layout.js +31 -33
  408. package/src/hooks/position.js +4 -3
  409. package/src/hooks/style.js +11 -2
  410. package/src/hooks/test/align.native.js +4 -3
  411. package/src/private-apis.js +2 -0
  412. package/src/store/actions.js +52 -10
  413. package/src/store/private-actions.js +37 -6
  414. package/src/store/private-selectors.js +21 -0
  415. package/src/store/reducer.js +38 -0
  416. package/src/store/selectors.js +107 -26
  417. package/src/store/test/actions.js +19 -8
  418. package/src/store/test/private-actions.js +17 -0
  419. package/src/store/test/reducer.js +25 -0
  420. package/src/store/test/selectors.js +130 -123
  421. package/src/store/utils.js +3 -10
  422. package/src/style.scss +4 -0
  423. package/build/components/duotone/components.js +0 -135
  424. package/build/components/duotone/components.js.map +0 -1
  425. package/build/components/duotone/index.js +0 -38
  426. package/build/components/duotone/index.js.map +0 -1
  427. package/build/components/global-styles/behaviors-panel.js +0 -64
  428. package/build/components/global-styles/behaviors-panel.js.map +0 -1
  429. package/build/components/inserter/reusable-blocks-tab.js +0 -85
  430. package/build/components/inserter/reusable-blocks-tab.js.map +0 -1
  431. package/build/hooks/auto-inserting-blocks.js +0 -174
  432. package/build/hooks/auto-inserting-blocks.js.map +0 -1
  433. package/build/hooks/behaviors.js +0 -173
  434. package/build/hooks/behaviors.js.map +0 -1
  435. package/build-module/components/duotone/components.js +0 -126
  436. package/build-module/components/duotone/components.js.map +0 -1
  437. package/build-module/components/duotone/index.js +0 -3
  438. package/build-module/components/duotone/index.js.map +0 -1
  439. package/build-module/components/global-styles/behaviors-panel.js +0 -57
  440. package/build-module/components/global-styles/behaviors-panel.js.map +0 -1
  441. package/build-module/components/inserter/reusable-blocks-tab.js +0 -76
  442. package/build-module/components/inserter/reusable-blocks-tab.js.map +0 -1
  443. package/build-module/hooks/auto-inserting-blocks.js +0 -167
  444. package/build-module/hooks/auto-inserting-blocks.js.map +0 -1
  445. package/build-module/hooks/behaviors.js +0 -166
  446. package/build-module/hooks/behaviors.js.map +0 -1
  447. package/src/components/duotone/components.js +0 -133
  448. package/src/components/duotone/index.js +0 -7
  449. package/src/components/global-styles/behaviors-panel.js +0 -71
  450. package/src/components/inserter/reusable-blocks-tab.js +0 -84
  451. package/src/components/inserter/test/reusable-blocks-tab.js +0 -73
  452. package/src/hooks/auto-inserting-blocks.js +0 -232
  453. package/src/hooks/behaviors.js +0 -206
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_element","require","_compose","_hooks","_i18n","_blocks","_components","_a11y","_components2","emptyString","testString","trim","length","RenameModal","blockName","originalBlockName","onClose","onSave","editedBlockName","setEditedBlockName","useState","nameHasChanged","nameIsOriginal","nameIsEmpty","isNameValid","autoSelectInputText","event","target","select","dialogDescription","useInstanceId","handleSubmit","speak","sprintf","__","createElement","Modal","title","onRequestClose","overlayClassName","aria","describedby","id","onSubmit","e","preventDefault","__experimentalVStack","spacing","TextControl","__nextHasNoMarginBottom","value","label","hideLabelFromVision","placeholder","onChange","onFocus","__experimentalHStack","justify","Button","variant","onClick","type","BlockRenameControl","props","renamingBlock","setRenamingBlock","clientId","customName","blockInformation","useBlockDisplayInformation","Fragment","InspectorControls","group","BlockSettingsMenuControls","selectedClientIds","canRename","MenuItem","newName","undefined","withBlockRenameControl","createHigherOrderComponent","BlockEdit","name","attributes","setAttributes","metaDataSupport","getBlockSupport","supportsBlockNaming","metadata","key","exports","addFilter"],"sources":["@wordpress/block-editor/src/hooks/block-rename-ui.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport {\n\tMenuItem,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tTextControl,\n\tModal,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockSettingsMenuControls,\n\tuseBlockDisplayInformation,\n\tInspectorControls,\n} from '../components';\n\nconst emptyString = ( testString ) => testString?.trim()?.length === 0;\n\nfunction RenameModal( { blockName, originalBlockName, onClose, onSave } ) {\n\tconst [ editedBlockName, setEditedBlockName ] = useState( blockName );\n\n\tconst nameHasChanged = editedBlockName !== blockName;\n\tconst nameIsOriginal = editedBlockName === originalBlockName;\n\tconst nameIsEmpty = emptyString( editedBlockName );\n\n\tconst isNameValid = nameHasChanged || nameIsOriginal;\n\n\tconst autoSelectInputText = ( event ) => event.target.select();\n\n\tconst dialogDescription = useInstanceId(\n\t\tRenameModal,\n\t\t`block-editor-rename-modal__description`\n\t);\n\n\tconst handleSubmit = () => {\n\t\t// Must be assertive to immediately announce change.\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %1$s: type of update (either reset of changed). %2$s: new name/label for the block */\n\t\t\t\t__( 'Block name %1$s to: \"%2$s\".' ),\n\t\t\t\tnameIsOriginal || nameIsEmpty ? __( 'reset' ) : __( 'changed' ),\n\t\t\t\teditedBlockName\n\t\t\t),\n\t\t\t'assertive'\n\t\t);\n\n\t\tonSave( editedBlockName );\n\n\t\t// Immediate close avoids ability to hit save multiple times.\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Rename' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t\toverlayClassName=\"block-editor-block-rename-modal\"\n\t\t\taria={ {\n\t\t\t\tdescribedby: dialogDescription,\n\t\t\t} }\n\t\t>\n\t\t\t<p id={ dialogDescription }>\n\t\t\t\t{ __( 'Enter a custom name for this block.' ) }\n\t\t\t</p>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( e ) => {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif ( ! isNameValid ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\thandleSubmit();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<VStack spacing=\"3\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ editedBlockName }\n\t\t\t\t\t\tlabel={ __( 'Block name' ) }\n\t\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t\tplaceholder={ originalBlockName }\n\t\t\t\t\t\tonChange={ setEditedBlockName }\n\t\t\t\t\t\tonFocus={ autoSelectInputText }\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\taria-disabled={ ! isNameValid }\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n\nfunction BlockRenameControl( props ) {\n\tconst [ renamingBlock, setRenamingBlock ] = useState( false );\n\n\tconst { clientId, customName, onChange } = props;\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Block name' ) }\n\t\t\t\t\tvalue={ customName || '' }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t{ ( { selectedClientIds } ) => {\n\t\t\t\t\t// Only enabled for single selections.\n\t\t\t\t\tconst canRename =\n\t\t\t\t\t\tselectedClientIds.length === 1 &&\n\t\t\t\t\t\tclientId === selectedClientIds[ 0 ];\n\n\t\t\t\t\t// This check ensures the `BlockSettingsMenuControls` fill\n\t\t\t\t\t// doesn't render multiple times and also that it renders for\n\t\t\t\t\t// the block from which the menu was triggered.\n\t\t\t\t\tif ( ! canRename ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetRenamingBlock( true );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\taria-expanded={ renamingBlock }\n\t\t\t\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Rename' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t</BlockSettingsMenuControls>\n\n\t\t\t{ renamingBlock && (\n\t\t\t\t<RenameModal\n\t\t\t\t\tblockName={ customName || '' }\n\t\t\t\t\toriginalBlockName={ blockInformation?.title }\n\t\t\t\t\tonClose={ () => setRenamingBlock( false ) }\n\t\t\t\t\tonSave={ ( newName ) => {\n\t\t\t\t\t\t// If the new value is the block's original name (e.g. `Group`)\n\t\t\t\t\t\t// or it is an empty string then assume the intent is to reset\n\t\t\t\t\t\t// the value. Therefore reset the metadata.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnewName === blockInformation?.title ||\n\t\t\t\t\t\t\temptyString( newName )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnewName = undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonChange( newName );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const withBlockRenameControl = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { clientId, name, attributes, setAttributes } = props;\n\n\t\tconst metaDataSupport = getBlockSupport(\n\t\t\tname,\n\t\t\t'__experimentalMetadata',\n\t\t\tfalse\n\t\t);\n\n\t\tconst supportsBlockNaming = !! (\n\t\t\ttrue === metaDataSupport || metaDataSupport?.name\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ supportsBlockNaming && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockRenameControl\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tcustomName={ attributes?.metadata?.name }\n\t\t\t\t\t\t\tonChange={ ( newName ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\t\t\t...( attributes?.metadata &&\n\t\t\t\t\t\t\t\t\t\t\tattributes?.metadata ),\n\t\t\t\t\t\t\t\t\t\tname: newName,\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} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\n\t\t\t\t<BlockEdit key=\"edit\" { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/block-rename-ui/with-block-rename-control',\n\twithBlockRenameControl\n);\n"],"mappings":"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"}
@@ -13,14 +13,16 @@ var _names = _interopRequireDefault(require("colord/plugins/names"));
13
13
  var _blocks = require("@wordpress/blocks");
14
14
  var _compose = require("@wordpress/compose");
15
15
  var _hooks = require("@wordpress/hooks");
16
+ var _data = require("@wordpress/data");
16
17
  var _components = require("../components");
17
- var _blockList = _interopRequireDefault(require("../components/block-list"));
18
- var _duotone = require("../components/duotone");
18
+ var _utils = require("../components/duotone/utils");
19
19
  var _getBlockCssSelector = require("../components/global-styles/get-block-css-selector");
20
- var _utils = require("../components/global-styles/utils");
21
- var _utils2 = require("./utils");
20
+ var _utils2 = require("../components/global-styles/utils");
21
+ var _utils3 = require("./utils");
22
22
  var _filtersPanel = _interopRequireDefault(require("../components/global-styles/filters-panel"));
23
23
  var _blockEditingMode = require("../components/block-editing-mode");
24
+ var _store = require("../store");
25
+ var _lockUnlock = require("../lock-unlock");
24
26
  /**
25
27
  * External dependencies
26
28
  */
@@ -35,35 +37,6 @@ var _blockEditingMode = require("../components/block-editing-mode");
35
37
 
36
38
  const EMPTY_ARRAY = [];
37
39
  (0, _colord.extend)([_names.default]);
38
-
39
- /**
40
- * SVG and stylesheet needed for rendering the duotone filter.
41
- *
42
- * @param {Object} props Duotone props.
43
- * @param {string} props.selector Selector to apply the filter to.
44
- * @param {string} props.id Unique id for this duotone filter.
45
- * @param {string[]|"unset"} props.colors Array of RGB color strings ordered from dark to light.
46
- *
47
- * @return {WPElement} Duotone element.
48
- */
49
- function InlineDuotone({
50
- selector,
51
- id,
52
- colors
53
- }) {
54
- if (colors === 'unset') {
55
- return (0, _element.createElement)(_duotone.__unstableDuotoneUnsetStylesheet, {
56
- selector: selector
57
- });
58
- }
59
- return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_duotone.__unstableDuotoneFilter, {
60
- id: id,
61
- colors: colors
62
- }), (0, _element.createElement)(_duotone.__unstableDuotoneStylesheet, {
63
- id: id,
64
- selector: selector
65
- }));
66
- }
67
40
  function useMultiOriginPresets({
68
41
  presetSetting,
69
42
  defaultSetting
@@ -101,7 +74,7 @@ function DuotonePanel({
101
74
  }) {
102
75
  const style = attributes?.style;
103
76
  const duotoneStyle = style?.color?.duotone;
104
- const settings = (0, _utils2.useBlockSettings)(name);
77
+ const settings = (0, _utils3.useBlockSettings)(name);
105
78
  const duotonePalette = useMultiOriginPresets({
106
79
  presetSetting: 'color.duotone',
107
80
  defaultSetting: 'color.defaultDuotone'
@@ -219,7 +192,6 @@ function DuotoneStyles({
219
192
  selector: duotoneSelector,
220
193
  attribute: duotoneAttr
221
194
  }) {
222
- const element = (0, _element.useContext)(_blockList.default.__unstableElementContext);
223
195
  const duotonePalette = useMultiOriginPresets({
224
196
  presetSetting: 'color.duotone',
225
197
  defaultSetting: 'color.defaultDuotone'
@@ -257,15 +229,30 @@ function DuotoneStyles({
257
229
  // Assuming the selector part is a subclass selector (not a tag name)
258
230
  // so we can prepend the filter id class. If we want to support elements
259
231
  // such as `img` or namespaces, we'll need to add a case for that here.
260
- return `.editor-styles-wrapper .${filterId}${selectorPart.trim()}`;
232
+ return `.${filterId}${selectorPart.trim()}`;
261
233
  });
262
234
  const selector = selectorsScoped.join(', ');
263
235
  const isValidFilter = Array.isArray(colors) || colors === 'unset';
264
- return element && isValidFilter && (0, _element.createPortal)((0, _element.createElement)(InlineDuotone, {
265
- selector: selector,
266
- id: filterId,
267
- colors: colors
268
- }), element);
236
+ const {
237
+ setStyleOverride,
238
+ deleteStyleOverride
239
+ } = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
240
+ (0, _element.useEffect)(() => {
241
+ if (!isValidFilter) return;
242
+ setStyleOverride(filterId, {
243
+ css: colors !== 'unset' ? (0, _utils.getDuotoneStylesheet)(selector, filterId) : (0, _utils.getDuotoneUnsetStylesheet)(selector),
244
+ __unstableType: 'presets'
245
+ });
246
+ setStyleOverride(`duotone-${filterId}`, {
247
+ assets: colors !== 'unset' ? (0, _utils.getDuotoneFilter)(filterId, colors) : '',
248
+ __unstableType: 'svgs'
249
+ });
250
+ return () => {
251
+ deleteStyleOverride(filterId);
252
+ deleteStyleOverride(`duotone-${filterId}`);
253
+ };
254
+ }, [isValidFilter, colors, selector, filterId, setStyleOverride, deleteStyleOverride]);
255
+ return null;
269
256
  }
270
257
 
271
258
  /**
@@ -295,7 +282,7 @@ const withDuotoneStyles = (0, _compose.createHigherOrderComponent)(BlockListBloc
295
282
  const experimentalDuotone = (0, _blocks.getBlockSupport)(blockType, 'color.__experimentalDuotone', false);
296
283
  if (experimentalDuotone) {
297
284
  const rootSelector = (0, _getBlockCssSelector.getBlockCSSSelector)(blockType);
298
- return typeof experimentalDuotone === 'string' ? (0, _utils.scopeSelector)(rootSelector, experimentalDuotone) : rootSelector;
285
+ return typeof experimentalDuotone === 'string' ? (0, _utils2.scopeSelector)(rootSelector, experimentalDuotone) : rootSelector;
299
286
  }
300
287
 
301
288
  // Regular filter.duotone support uses filter.duotone selectors with fallbacks.
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_classnames","_interopRequireDefault","_colord","_names","_blocks","_compose","_hooks","_components","_blockList","_duotone","_getBlockCssSelector","_utils","_utils2","_filtersPanel","_blockEditingMode","EMPTY_ARRAY","extend","namesPlugin","InlineDuotone","selector","id","colors","createElement","__unstableDuotoneUnsetStylesheet","Fragment","__unstableDuotoneFilter","__unstableDuotoneStylesheet","useMultiOriginPresets","presetSetting","defaultSetting","disableDefault","useSetting","userPresets","themePresets","defaultPresets","useMemo","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanel","attributes","setAttributes","name","style","duotoneStyle","color","settings","useBlockSettings","colorPalette","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","InspectorControls","group","default","value","filter","onChange","newDuotone","newStyle","BlockControls","__experimentalShareWithChildBlocks","__experimentalDuotoneControl","maybePreset","addDuotoneAttributes","hasBlockSupport","Object","assign","type","withDuotoneControls","createHigherOrderComponent","BlockEdit","props","hasDuotoneSupport","blockEditingMode","useBlockEditingMode","DuotoneStyles","filterId","duotoneSelector","attribute","duotoneAttr","element","useContext","BlockList","__unstableElementContext","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","createPortal","withDuotoneStyles","BlockListBlock","useInstanceId","blockType","getBlockType","duotoneSupport","getBlockSupport","experimentalDuotone","rootSelector","getBlockCSSSelector","scopeSelector","fallback","filterClass","shouldRender","className","classnames","addFilter"],"sources":["@wordpress/block-editor/src/hooks/duotone.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useMemo, useContext, createPortal } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalDuotoneControl as DuotoneControl,\n\tuseSetting,\n} from '../components';\nimport BlockList from '../components/block-list';\nimport {\n\t__unstableDuotoneFilter as DuotoneFilter,\n\t__unstableDuotoneStylesheet as DuotoneStylesheet,\n\t__unstableDuotoneUnsetStylesheet as DuotoneUnsetStylesheet,\n} from '../components/duotone';\nimport { getBlockCSSSelector } from '../components/global-styles/get-block-css-selector';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockSettings } from './utils';\nimport { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\n\nconst EMPTY_ARRAY = [];\n\nextend( [ namesPlugin ] );\n\n/**\n * SVG and stylesheet needed for rendering the duotone filter.\n *\n * @param {Object} props Duotone props.\n * @param {string} props.selector Selector to apply the filter to.\n * @param {string} props.id Unique id for this duotone filter.\n * @param {string[]|\"unset\"} props.colors Array of RGB color strings ordered from dark to light.\n *\n * @return {WPElement} Duotone element.\n */\nfunction InlineDuotone( { selector, id, colors } ) {\n\tif ( colors === 'unset' ) {\n\t\treturn <DuotoneUnsetStylesheet selector={ selector } />;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<DuotoneFilter id={ id } colors={ colors } />\n\t\t\t<DuotoneStylesheet id={ id } selector={ selector } />\n\t\t</>\n\t);\n}\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst disableDefault = ! useSetting( defaultSetting );\n\tconst userPresets =\n\t\tuseSetting( `${ presetSetting }.custom` ) || EMPTY_ARRAY;\n\tconst themePresets =\n\t\tuseSetting( `${ presetSetting }.theme` ) || EMPTY_ARRAY;\n\tconst defaultPresets =\n\t\tuseSetting( `${ presetSetting }.default` ) || EMPTY_ARRAY;\n\treturn useMemo(\n\t\t() => [\n\t\t\t...userPresets,\n\t\t\t...themePresets,\n\t\t\t...( disableDefault ? EMPTY_ARRAY : defaultPresets ),\n\t\t],\n\t\t[ disableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function getColorsFromDuotonePreset( duotone, duotonePalette ) {\n\tif ( ! duotone ) {\n\t\treturn;\n\t}\n\tconst preset = duotonePalette?.find( ( { slug } ) => {\n\t\treturn duotone === `var:preset|duotone|${ slug }`;\n\t} );\n\n\treturn preset ? preset.colors : undefined;\n}\n\nexport function getDuotonePresetFromColors( colors, duotonePalette ) {\n\tif ( ! colors || ! Array.isArray( colors ) ) {\n\t\treturn;\n\t}\n\n\tconst preset = duotonePalette?.find( ( duotonePreset ) => {\n\t\treturn duotonePreset?.colors?.every(\n\t\t\t( val, index ) => val === colors[ index ]\n\t\t);\n\t} );\n\n\treturn preset ? `var:preset|duotone|${ preset.slug }` : undefined;\n}\n\nfunction DuotonePanel( { attributes, setAttributes, name } ) {\n\tconst style = attributes?.style;\n\tconst duotoneStyle = style?.color?.duotone;\n\tconst settings = useBlockSettings( name );\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.palette',\n\t\tdefaultSetting: 'color.defaultPalette',\n\t} );\n\tconst disableCustomColors = ! useSetting( 'color.custom' );\n\tconst disableCustomDuotone =\n\t\t! useSetting( 'color.customDuotone' ) ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tif ( duotonePalette?.length === 0 && disableCustomDuotone ) {\n\t\treturn null;\n\t}\n\n\tconst duotonePresetOrColors = ! Array.isArray( duotoneStyle )\n\t\t? getColorsFromDuotonePreset( duotoneStyle, duotonePalette )\n\t\t: duotoneStyle;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"filter\">\n\t\t\t\t<StylesFiltersPanel\n\t\t\t\t\tvalue={ { filter: { duotone: duotonePresetOrColors } } }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...newDuotone?.filter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t<DuotoneControl\n\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\tdisableCustomDuotone={ disableCustomDuotone }\n\t\t\t\t\tdisableCustomColors={ disableCustomColors }\n\t\t\t\t\tvalue={ duotonePresetOrColors }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst maybePreset = getDuotonePresetFromColors(\n\t\t\t\t\t\t\tnewDuotone,\n\t\t\t\t\t\t\tduotonePalette\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...style?.color,\n\t\t\t\t\t\t\t\tduotone: maybePreset ?? newDuotone, // use preset or fallback to custom colors.\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include\n * the `duotone` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addDuotoneAttributes( settings ) {\n\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\tif ( ! hasBlockSupport( settings, 'filter.duotone' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default\n\t// values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include toolbar controls for duotone if the\n * block supports duotone.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\t\tconst hasDuotoneSupport = hasBlockSupport(\n\t\t\tprops.name,\n\t\t\t'filter.duotone'\n\t\t);\n\n\t\tconst blockEditingMode = useBlockEditingMode();\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ hasDuotoneSupport && blockEditingMode === 'default' && (\n\t\t\t\t\t<DuotonePanel { ...props } />\n\t\t\t\t) }\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneControls'\n);\n\nfunction DuotoneStyles( {\n\tid: filterId,\n\tselector: duotoneSelector,\n\tattribute: duotoneAttr,\n} ) {\n\tconst element = useContext( BlockList.__unstableElementContext );\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\n\t// Possible values for duotone attribute:\n\t// 1. Array of colors - e.g. ['#000000', '#ffffff'].\n\t// 2. Variable for an existing Duotone preset - e.g. 'var:preset|duotone|green-blue' or 'var(--wp--preset--duotone--green-blue)''\n\t// 3. A CSS string - e.g. 'unset' to remove globally applied duotone.\n\tconst isCustom = Array.isArray( duotoneAttr );\n\tconst duotonePreset = isCustom\n\t\t? undefined\n\t\t: getColorsFromDuotonePreset( duotoneAttr, duotonePalette );\n\tconst isPreset = typeof duotoneAttr === 'string' && duotonePreset;\n\tconst isCSS = typeof duotoneAttr === 'string' && ! isPreset;\n\n\t// Match the structure of WP_Duotone_Gutenberg::render_duotone_support() in PHP.\n\tlet colors = null;\n\tif ( isPreset ) {\n\t\t// Array of colors.\n\t\tcolors = duotonePreset;\n\t} else if ( isCSS ) {\n\t\t// CSS filter property string (e.g. 'unset').\n\t\tcolors = duotoneAttr;\n\t} else if ( isCustom ) {\n\t\t// Array of colors.\n\t\tcolors = duotoneAttr;\n\t}\n\n\t// Build the CSS selectors to which the filter will be applied.\n\tconst selectors = duotoneSelector.split( ',' );\n\n\tconst selectorsScoped = selectors.map( ( selectorPart ) => {\n\t\t// Extra .editor-styles-wrapper specificity is needed in the editor\n\t\t// since we're not using inline styles to apply the filter. We need to\n\t\t// override duotone applied by global styles and theme.json.\n\n\t\t// Assuming the selector part is a subclass selector (not a tag name)\n\t\t// so we can prepend the filter id class. If we want to support elements\n\t\t// such as `img` or namespaces, we'll need to add a case for that here.\n\t\treturn `.editor-styles-wrapper .${ filterId }${ selectorPart.trim() }`;\n\t} );\n\n\tconst selector = selectorsScoped.join( ', ' );\n\n\tconst isValidFilter = Array.isArray( colors ) || colors === 'unset';\n\n\treturn (\n\t\telement &&\n\t\tisValidFilter &&\n\t\tcreatePortal(\n\t\t\t<InlineDuotone\n\t\t\t\tselector={ selector }\n\t\t\t\tid={ filterId }\n\t\t\t\tcolors={ colors }\n\t\t\t/>,\n\t\t\telement\n\t\t)\n\t);\n}\n\n/**\n * Override the default block element to include duotone styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst id = useInstanceId( BlockListBlock );\n\n\t\tconst selector = useMemo( () => {\n\t\t\tconst blockType = getBlockType( props.name );\n\n\t\t\tif ( blockType ) {\n\t\t\t\t// Backwards compatibility for `supports.color.__experimentalDuotone`\n\t\t\t\t// is provided via the `block_type_metadata_settings` filter. If\n\t\t\t\t// `supports.filter.duotone` has not been set and the\n\t\t\t\t// experimental property has been, the experimental property\n\t\t\t\t// value is copied into `supports.filter.duotone`.\n\t\t\t\tconst duotoneSupport = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'filter.duotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( ! duotoneSupport ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// If the experimental duotone support was set, that value is\n\t\t\t\t// to be treated as a selector and requires scoping.\n\t\t\t\tconst experimentalDuotone = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'color.__experimentalDuotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( experimentalDuotone ) {\n\t\t\t\t\tconst rootSelector = getBlockCSSSelector( blockType );\n\t\t\t\t\treturn typeof experimentalDuotone === 'string'\n\t\t\t\t\t\t? scopeSelector( rootSelector, experimentalDuotone )\n\t\t\t\t\t\t: rootSelector;\n\t\t\t\t}\n\n\t\t\t\t// Regular filter.duotone support uses filter.duotone selectors with fallbacks.\n\t\t\t\treturn getBlockCSSSelector( blockType, 'filter.duotone', {\n\t\t\t\t\tfallback: true,\n\t\t\t\t} );\n\t\t\t}\n\t\t}, [ props.name ] );\n\n\t\tconst attribute = props?.attributes?.style?.color?.duotone;\n\n\t\tconst filterClass = `wp-duotone-${ id }`;\n\n\t\tconst shouldRender = selector && attribute;\n\n\t\tconst className = shouldRender\n\t\t\t? classnames( props?.className, filterClass )\n\t\t\t: props?.className;\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRender && (\n\t\t\t\t\t<DuotoneStyles\n\t\t\t\t\t\tid={ filterClass }\n\t\t\t\t\t\tselector={ selector }\n\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/duotone/add-attributes',\n\taddDuotoneAttributes\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/duotone/with-editor-controls',\n\twithDuotoneControls\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/duotone/with-styles',\n\twithDuotoneStyles\n);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_classnames","_interopRequireDefault","_colord","_names","_blocks","_compose","_hooks","_data","_components","_utils","_getBlockCssSelector","_utils2","_utils3","_filtersPanel","_blockEditingMode","_store","_lockUnlock","EMPTY_ARRAY","extend","namesPlugin","useMultiOriginPresets","presetSetting","defaultSetting","disableDefault","useSetting","userPresets","themePresets","defaultPresets","useMemo","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","colors","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanel","attributes","setAttributes","name","style","duotoneStyle","color","settings","useBlockSettings","colorPalette","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","createElement","Fragment","InspectorControls","group","default","value","filter","onChange","newDuotone","newStyle","BlockControls","__experimentalShareWithChildBlocks","__experimentalDuotoneControl","maybePreset","addDuotoneAttributes","hasBlockSupport","Object","assign","type","withDuotoneControls","createHigherOrderComponent","BlockEdit","props","hasDuotoneSupport","blockEditingMode","useBlockEditingMode","DuotoneStyles","id","filterId","selector","duotoneSelector","attribute","duotoneAttr","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","setStyleOverride","deleteStyleOverride","unlock","useDispatch","blockEditorStore","useEffect","css","getDuotoneStylesheet","getDuotoneUnsetStylesheet","__unstableType","assets","getDuotoneFilter","withDuotoneStyles","BlockListBlock","useInstanceId","blockType","getBlockType","duotoneSupport","getBlockSupport","experimentalDuotone","rootSelector","getBlockCSSSelector","scopeSelector","fallback","filterClass","shouldRender","className","classnames","addFilter"],"sources":["@wordpress/block-editor/src/hooks/duotone.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalDuotoneControl as DuotoneControl,\n\tuseSetting,\n} from '../components';\nimport {\n\tgetDuotoneFilter,\n\tgetDuotoneStylesheet,\n\tgetDuotoneUnsetStylesheet,\n} from '../components/duotone/utils';\nimport { getBlockCSSSelector } from '../components/global-styles/get-block-css-selector';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockSettings } from './utils';\nimport { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nconst EMPTY_ARRAY = [];\n\nextend( [ namesPlugin ] );\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst disableDefault = ! useSetting( defaultSetting );\n\tconst userPresets =\n\t\tuseSetting( `${ presetSetting }.custom` ) || EMPTY_ARRAY;\n\tconst themePresets =\n\t\tuseSetting( `${ presetSetting }.theme` ) || EMPTY_ARRAY;\n\tconst defaultPresets =\n\t\tuseSetting( `${ presetSetting }.default` ) || EMPTY_ARRAY;\n\treturn useMemo(\n\t\t() => [\n\t\t\t...userPresets,\n\t\t\t...themePresets,\n\t\t\t...( disableDefault ? EMPTY_ARRAY : defaultPresets ),\n\t\t],\n\t\t[ disableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function getColorsFromDuotonePreset( duotone, duotonePalette ) {\n\tif ( ! duotone ) {\n\t\treturn;\n\t}\n\tconst preset = duotonePalette?.find( ( { slug } ) => {\n\t\treturn duotone === `var:preset|duotone|${ slug }`;\n\t} );\n\n\treturn preset ? preset.colors : undefined;\n}\n\nexport function getDuotonePresetFromColors( colors, duotonePalette ) {\n\tif ( ! colors || ! Array.isArray( colors ) ) {\n\t\treturn;\n\t}\n\n\tconst preset = duotonePalette?.find( ( duotonePreset ) => {\n\t\treturn duotonePreset?.colors?.every(\n\t\t\t( val, index ) => val === colors[ index ]\n\t\t);\n\t} );\n\n\treturn preset ? `var:preset|duotone|${ preset.slug }` : undefined;\n}\n\nfunction DuotonePanel( { attributes, setAttributes, name } ) {\n\tconst style = attributes?.style;\n\tconst duotoneStyle = style?.color?.duotone;\n\tconst settings = useBlockSettings( name );\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.palette',\n\t\tdefaultSetting: 'color.defaultPalette',\n\t} );\n\tconst disableCustomColors = ! useSetting( 'color.custom' );\n\tconst disableCustomDuotone =\n\t\t! useSetting( 'color.customDuotone' ) ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tif ( duotonePalette?.length === 0 && disableCustomDuotone ) {\n\t\treturn null;\n\t}\n\n\tconst duotonePresetOrColors = ! Array.isArray( duotoneStyle )\n\t\t? getColorsFromDuotonePreset( duotoneStyle, duotonePalette )\n\t\t: duotoneStyle;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"filter\">\n\t\t\t\t<StylesFiltersPanel\n\t\t\t\t\tvalue={ { filter: { duotone: duotonePresetOrColors } } }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...newDuotone?.filter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t<DuotoneControl\n\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\tdisableCustomDuotone={ disableCustomDuotone }\n\t\t\t\t\tdisableCustomColors={ disableCustomColors }\n\t\t\t\t\tvalue={ duotonePresetOrColors }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst maybePreset = getDuotonePresetFromColors(\n\t\t\t\t\t\t\tnewDuotone,\n\t\t\t\t\t\t\tduotonePalette\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...style?.color,\n\t\t\t\t\t\t\t\tduotone: maybePreset ?? newDuotone, // use preset or fallback to custom colors.\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include\n * the `duotone` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addDuotoneAttributes( settings ) {\n\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\tif ( ! hasBlockSupport( settings, 'filter.duotone' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default\n\t// values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include toolbar controls for duotone if the\n * block supports duotone.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\t\tconst hasDuotoneSupport = hasBlockSupport(\n\t\t\tprops.name,\n\t\t\t'filter.duotone'\n\t\t);\n\n\t\tconst blockEditingMode = useBlockEditingMode();\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ hasDuotoneSupport && blockEditingMode === 'default' && (\n\t\t\t\t\t<DuotonePanel { ...props } />\n\t\t\t\t) }\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneControls'\n);\n\nfunction DuotoneStyles( {\n\tid: filterId,\n\tselector: duotoneSelector,\n\tattribute: duotoneAttr,\n} ) {\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\n\t// Possible values for duotone attribute:\n\t// 1. Array of colors - e.g. ['#000000', '#ffffff'].\n\t// 2. Variable for an existing Duotone preset - e.g. 'var:preset|duotone|green-blue' or 'var(--wp--preset--duotone--green-blue)''\n\t// 3. A CSS string - e.g. 'unset' to remove globally applied duotone.\n\tconst isCustom = Array.isArray( duotoneAttr );\n\tconst duotonePreset = isCustom\n\t\t? undefined\n\t\t: getColorsFromDuotonePreset( duotoneAttr, duotonePalette );\n\tconst isPreset = typeof duotoneAttr === 'string' && duotonePreset;\n\tconst isCSS = typeof duotoneAttr === 'string' && ! isPreset;\n\n\t// Match the structure of WP_Duotone_Gutenberg::render_duotone_support() in PHP.\n\tlet colors = null;\n\tif ( isPreset ) {\n\t\t// Array of colors.\n\t\tcolors = duotonePreset;\n\t} else if ( isCSS ) {\n\t\t// CSS filter property string (e.g. 'unset').\n\t\tcolors = duotoneAttr;\n\t} else if ( isCustom ) {\n\t\t// Array of colors.\n\t\tcolors = duotoneAttr;\n\t}\n\n\t// Build the CSS selectors to which the filter will be applied.\n\tconst selectors = duotoneSelector.split( ',' );\n\n\tconst selectorsScoped = selectors.map( ( selectorPart ) => {\n\t\t// Extra .editor-styles-wrapper specificity is needed in the editor\n\t\t// since we're not using inline styles to apply the filter. We need to\n\t\t// override duotone applied by global styles and theme.json.\n\n\t\t// Assuming the selector part is a subclass selector (not a tag name)\n\t\t// so we can prepend the filter id class. If we want to support elements\n\t\t// such as `img` or namespaces, we'll need to add a case for that here.\n\t\treturn `.${ filterId }${ selectorPart.trim() }`;\n\t} );\n\n\tconst selector = selectorsScoped.join( ', ' );\n\n\tconst isValidFilter = Array.isArray( colors ) || colors === 'unset';\n\n\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tuseEffect( () => {\n\t\tif ( ! isValidFilter ) return;\n\n\t\tsetStyleOverride( filterId, {\n\t\t\tcss:\n\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t? getDuotoneStylesheet( selector, filterId )\n\t\t\t\t\t: getDuotoneUnsetStylesheet( selector ),\n\t\t\t__unstableType: 'presets',\n\t\t} );\n\t\tsetStyleOverride( `duotone-${ filterId }`, {\n\t\t\tassets:\n\t\t\t\tcolors !== 'unset' ? getDuotoneFilter( filterId, colors ) : '',\n\t\t\t__unstableType: 'svgs',\n\t\t} );\n\n\t\treturn () => {\n\t\t\tdeleteStyleOverride( filterId );\n\t\t\tdeleteStyleOverride( `duotone-${ filterId }` );\n\t\t};\n\t}, [\n\t\tisValidFilter,\n\t\tcolors,\n\t\tselector,\n\t\tfilterId,\n\t\tsetStyleOverride,\n\t\tdeleteStyleOverride,\n\t] );\n\n\treturn null;\n}\n\n/**\n * Override the default block element to include duotone styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst id = useInstanceId( BlockListBlock );\n\n\t\tconst selector = useMemo( () => {\n\t\t\tconst blockType = getBlockType( props.name );\n\n\t\t\tif ( blockType ) {\n\t\t\t\t// Backwards compatibility for `supports.color.__experimentalDuotone`\n\t\t\t\t// is provided via the `block_type_metadata_settings` filter. If\n\t\t\t\t// `supports.filter.duotone` has not been set and the\n\t\t\t\t// experimental property has been, the experimental property\n\t\t\t\t// value is copied into `supports.filter.duotone`.\n\t\t\t\tconst duotoneSupport = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'filter.duotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( ! duotoneSupport ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// If the experimental duotone support was set, that value is\n\t\t\t\t// to be treated as a selector and requires scoping.\n\t\t\t\tconst experimentalDuotone = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'color.__experimentalDuotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( experimentalDuotone ) {\n\t\t\t\t\tconst rootSelector = getBlockCSSSelector( blockType );\n\t\t\t\t\treturn typeof experimentalDuotone === 'string'\n\t\t\t\t\t\t? scopeSelector( rootSelector, experimentalDuotone )\n\t\t\t\t\t\t: rootSelector;\n\t\t\t\t}\n\n\t\t\t\t// Regular filter.duotone support uses filter.duotone selectors with fallbacks.\n\t\t\t\treturn getBlockCSSSelector( blockType, 'filter.duotone', {\n\t\t\t\t\tfallback: true,\n\t\t\t\t} );\n\t\t\t}\n\t\t}, [ props.name ] );\n\n\t\tconst attribute = props?.attributes?.style?.color?.duotone;\n\n\t\tconst filterClass = `wp-duotone-${ id }`;\n\n\t\tconst shouldRender = selector && attribute;\n\n\t\tconst className = shouldRender\n\t\t\t? classnames( props?.className, filterClass )\n\t\t\t: props?.className;\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRender && (\n\t\t\t\t\t<DuotoneStyles\n\t\t\t\t\t\tid={ filterClass }\n\t\t\t\t\t\tselector={ selector }\n\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/duotone/add-attributes',\n\taddDuotoneAttributes\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/duotone/with-editor-controls',\n\twithDuotoneControls\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/duotone/with-styles',\n\twithDuotoneStyles\n);\n"],"mappings":"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"}
@@ -88,9 +88,9 @@ var _layout = require("./layout");
88
88
  require("./content-lock-ui");
89
89
  require("./metadata");
90
90
  require("./metadata-name");
91
- require("./behaviors");
92
91
  require("./custom-fields");
93
- require("./auto-inserting-blocks");
92
+ require("./block-hooks");
93
+ require("./block-rename-ui");
94
94
  var _dimensions = require("./dimensions");
95
95
  var _useBorderProps = require("./use-border-props");
96
96
  var _useColorProps = require("./use-color-props");
@@ -1 +1 @@
1
- {"version":3,"names":["require","_layout","_dimensions","_useBorderProps","_useColorProps","_useSpacingProps","_useTypographyProps","_gap","_useCachedTruthy"],"sources":["@wordpress/block-editor/src/hooks/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './compat';\nimport './align';\nimport './lock';\nimport './anchor';\nimport './aria-label';\nimport './custom-class-name';\nimport './generated-class-name';\nimport './style';\nimport './settings';\nimport './color';\nimport './duotone';\nimport './font-family';\nimport './font-size';\nimport './border';\nimport './position';\nimport './layout';\nimport './content-lock-ui';\nimport './metadata';\nimport './metadata-name';\nimport './behaviors';\nimport './custom-fields';\nimport './auto-inserting-blocks';\n\nexport { useCustomSides } from './dimensions';\nexport { useLayoutClasses, useLayoutStyles } from './layout';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getTypographyClassesAndStyles } from './use-typography-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,mBAAA,GAAAN,OAAA;AACA,IAAAO,IAAA,GAAAP,OAAA;AACA,IAAAQ,gBAAA,GAAAR,OAAA"}
1
+ {"version":3,"names":["require","_layout","_dimensions","_useBorderProps","_useColorProps","_useSpacingProps","_useTypographyProps","_gap","_useCachedTruthy"],"sources":["@wordpress/block-editor/src/hooks/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './compat';\nimport './align';\nimport './lock';\nimport './anchor';\nimport './aria-label';\nimport './custom-class-name';\nimport './generated-class-name';\nimport './style';\nimport './settings';\nimport './color';\nimport './duotone';\nimport './font-family';\nimport './font-size';\nimport './border';\nimport './position';\nimport './layout';\nimport './content-lock-ui';\nimport './metadata';\nimport './metadata-name';\nimport './custom-fields';\nimport './block-hooks';\nimport './block-rename-ui';\n\nexport { useCustomSides } from './dimensions';\nexport { useLayoutClasses, useLayoutStyles } from './layout';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getTypographyClassesAndStyles } from './use-typography-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,mBAAA,GAAAN,OAAA;AACA,IAAAO,IAAA,GAAAP,OAAA;AACA,IAAAQ,gBAAA,GAAAR,OAAA"}
@@ -19,13 +19,12 @@ var _i18n = require("@wordpress/i18n");
19
19
  var _store = require("../store");
20
20
  var _components2 = require("../components");
21
21
  var _useSetting = _interopRequireDefault(require("../components/use-setting"));
22
- var _layout = require("../components/block-list/layout");
23
- var _blockList = _interopRequireDefault(require("../components/block-list"));
24
22
  var _layouts = require("../layouts");
25
23
  var _blockEditingMode = require("../components/block-editing-mode");
26
24
  var _definitions = require("../layouts/definitions");
27
25
  var _object = require("../utils/object");
28
26
  var _utils = require("./utils");
27
+ var _lockUnlock = require("../lock-unlock");
29
28
  /**
30
29
  * External dependencies
31
30
  */
@@ -302,7 +301,6 @@ const withLayoutStyles = (0, _compose.createHigherOrderComponent)(BlockListBlock
302
301
  });
303
302
  const shouldRenderLayoutStyles = blockSupportsLayout && !disableLayoutStyles;
304
303
  const id = (0, _compose.useInstanceId)(BlockListBlock);
305
- const element = (0, _element.useContext)(_blockList.default.__unstableElementContext);
306
304
  const {
307
305
  layout
308
306
  } = attributes;
@@ -337,16 +335,23 @@ const withLayoutStyles = (0, _compose.createHigherOrderComponent)(BlockListBlock
337
335
  const layoutClassNames = (0, _classnames.default)({
338
336
  [`wp-container-${id}`]: shouldRenderLayoutStyles && !!css // Only attach a container class if there is generated CSS to be attached.
339
337
  }, layoutClasses);
340
- return (0, _element.createElement)(_element.Fragment, null, shouldRenderLayoutStyles && element && !!css && (0, _element.createPortal)((0, _element.createElement)(_layout.LayoutStyle, {
341
- blockName: name,
342
- selector: selector,
343
- css: css,
344
- layout: usedLayout,
345
- style: attributes?.style
346
- }), element), (0, _element.createElement)(BlockListBlock, {
338
+ const {
339
+ setStyleOverride,
340
+ deleteStyleOverride
341
+ } = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
342
+ (0, _element.useEffect)(() => {
343
+ if (!css) return;
344
+ setStyleOverride(id, {
345
+ css
346
+ });
347
+ return () => {
348
+ deleteStyleOverride(id);
349
+ };
350
+ }, [id, css, setStyleOverride, deleteStyleOverride]);
351
+ return (0, _element.createElement)(BlockListBlock, {
347
352
  ...props,
348
353
  __unstableLayoutClassNames: layoutClassNames
349
- }));
354
+ });
350
355
  }, 'withLayoutStyles');
351
356
 
352
357
  /**
@@ -378,7 +383,6 @@ const withChildLayoutStyles = (0, _compose.createHigherOrderComponent)(BlockList
378
383
  return !!getSettings().disableLayoutStyles;
379
384
  });
380
385
  const shouldRenderChildLayoutStyles = hasChildLayout && !disableLayoutStyles;
381
- const element = (0, _element.useContext)(_blockList.default.__unstableElementContext);
382
386
  const id = (0, _compose.useInstanceId)(BlockListBlock);
383
387
  const selector = `.wp-container-content-${id}`;
384
388
  let css = '';
@@ -398,10 +402,23 @@ const withChildLayoutStyles = (0, _compose.createHigherOrderComponent)(BlockList
398
402
  [`wp-container-content-${id}`]: shouldRenderChildLayoutStyles && !!css // Only attach a container class if there is generated CSS to be attached.
399
403
  });
400
404
 
401
- return (0, _element.createElement)(_element.Fragment, null, shouldRenderChildLayoutStyles && element && !!css && (0, _element.createPortal)((0, _element.createElement)("style", null, css), element), (0, _element.createElement)(BlockListBlock, {
405
+ const {
406
+ setStyleOverride,
407
+ deleteStyleOverride
408
+ } = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
409
+ (0, _element.useEffect)(() => {
410
+ if (!css) return;
411
+ setStyleOverride(id, {
412
+ css
413
+ });
414
+ return () => {
415
+ deleteStyleOverride(id);
416
+ };
417
+ }, [id, css, setStyleOverride, deleteStyleOverride]);
418
+ return (0, _element.createElement)(BlockListBlock, {
402
419
  ...props,
403
420
  className: className
404
- }));
421
+ });
405
422
  }, 'withChildLayoutStyles');
406
423
  exports.withChildLayoutStyles = withChildLayoutStyles;
407
424
  (0, _hooks.addFilter)('blocks.registerBlockType', 'core/layout/addAttribute', addAttribute);
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_classnames","_interopRequireDefault","_compose","_hooks","_blocks","_data","_components","_i18n","_store","_components2","_useSetting","_layout","_blockList","_layouts","_blockEditingMode","_definitions","_object","_utils","layoutBlockSupportKey","hasLayoutBlockSupport","blockName","hasBlockSupport","useLayoutClasses","blockAttributes","rootPaddingAlignment","useSelect","select","getSettings","blockEditorStore","__experimentalFeatures","useRootPaddingAwareAlignments","layout","default","defaultBlockLayout","getBlockSupport","usedLayout","inherit","contentSize","wideSize","type","layoutClassnames","LAYOUT_DEFINITIONS","className","baseClassName","splitBlockName","split","fullBlockName","pop","join","compoundClassName","push","orientation","kebabCase","justifyContent","flexWrap","useLayoutStyles","selector","style","fullLayoutType","getLayoutType","blockGapSupport","useSetting","hasBlockGapSupport","css","getLayoutStyle","LayoutPanel","setAttributes","attributes","name","settings","useBlockSettings","allowEditing","allowEditingSetting","defaultThemeLayout","themeSupportsLayout","supportsLayout","blockEditingMode","useBlockEditingMode","layoutBlockSupport","allowSwitching","allowInheriting","showInheritToggle","layoutType","constrainedType","displayControlsForLegacyLayouts","hasContentSizeOrLegacySettings","onChangeType","newType","onChangeLayout","newLayout","createElement","Fragment","InspectorControls","PanelBody","title","__","ToggleControl","__nextHasNoMarginBottom","label","checked","onChange","help","LayoutTypeSwitcher","inspectorControls","toolBarControls","ButtonGroup","getLayoutTypes","map","Button","key","isPressed","onClick","addAttribute","_settings$attributes$","withInspectorControls","createHigherOrderComponent","BlockEdit","props","supportLayout","exports","withLayoutStyles","BlockListBlock","blockSupportsLayout","disableLayoutStyles","shouldRenderLayoutStyles","id","useInstanceId","element","useContext","BlockList","__unstableElementContext","layoutClasses","layoutClassNames","classnames","createPortal","LayoutStyle","__unstableLayoutClassNames","withChildLayoutStyles","selfStretch","flexSize","hasChildLayout","shouldRenderChildLayoutStyles","addFilter"],"sources":["@wordpress/block-editor/src/hooks/layout.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tButton,\n\tButtonGroup,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext, createPortal } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport useSetting from '../components/use-setting';\nimport { LayoutStyle } from '../components/block-list/layout';\nimport BlockList from '../components/block-list';\nimport { getLayoutType, getLayoutTypes } from '../layouts';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { LAYOUT_DEFINITIONS } from '../layouts/definitions';\nimport { kebabCase } from '../utils/object';\nimport { useBlockSettings } from './utils';\n\nconst layoutBlockSupportKey = 'layout';\n\nfunction hasLayoutBlockSupport( blockName ) {\n\treturn (\n\t\thasBlockSupport( blockName, 'layout' ) ||\n\t\thasBlockSupport( blockName, '__experimentalLayout' )\n\t);\n}\n\n/**\n * Generates the utility classnames for the given block's layout attributes.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n *\n * @return { Array } Array of CSS classname strings.\n */\nexport function useLayoutClasses( blockAttributes = {}, blockName = '' ) {\n\tconst rootPaddingAlignment = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().__experimentalFeatures\n\t\t\t?.useRootPaddingAwareAlignments;\n\t}, [] );\n\tconst { layout } = blockAttributes;\n\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( blockName, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst layoutClassnames = [];\n\n\tif ( LAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className ) {\n\t\tconst baseClassName =\n\t\t\tLAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className;\n\t\tconst splitBlockName = blockName.split( '/' );\n\t\tconst fullBlockName =\n\t\t\tsplitBlockName[ 0 ] === 'core'\n\t\t\t\t? splitBlockName.pop()\n\t\t\t\t: splitBlockName.join( '-' );\n\t\tconst compoundClassName = `wp-block-${ fullBlockName }-${ baseClassName }`;\n\t\tlayoutClassnames.push( baseClassName, compoundClassName );\n\t}\n\n\tif (\n\t\t( usedLayout?.inherit ||\n\t\t\tusedLayout?.contentSize ||\n\t\t\tusedLayout?.type === 'constrained' ) &&\n\t\trootPaddingAlignment\n\t) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( usedLayout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( usedLayout.orientation ) }` );\n\t}\n\n\tif ( usedLayout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase(\n\t\t\t\tusedLayout.justifyContent\n\t\t\t) }`\n\t\t);\n\t}\n\n\tif ( usedLayout?.flexWrap && usedLayout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\n}\n\n/**\n * Generates a CSS rule with the given block's layout styles.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n * @param { string } selector A selector to use in generating the CSS rule.\n *\n * @return { string } CSS rule.\n */\nexport function useLayoutStyles( blockAttributes = {}, blockName, selector ) {\n\tconst { layout = {}, style = {} } = blockAttributes;\n\t// Update type for blocks using legacy layouts.\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || {};\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\tconst css = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName,\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n\treturn css;\n}\n\nfunction LayoutPanel( { setAttributes, attributes, name: blockName } ) {\n\tconst settings = useBlockSettings( blockName );\n\tconst {\n\t\tlayout: { allowEditing: allowEditingSetting },\n\t} = settings;\n\n\tconst { layout } = attributes;\n\tconst defaultThemeLayout = useSetting( 'layout' );\n\tconst { themeSupportsLayout } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t};\n\t}, [] );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = allowEditingSetting ?? true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = layoutBlockSupport;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t// Only show the inherit toggle if it's supported,\n\t// a default theme layout is set (e.g. one that provides `contentSize` and/or `wideSize` values),\n\t// and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.\n\tconst showInheritToggle = !! (\n\t\tallowInheriting &&\n\t\t!! defaultThemeLayout &&\n\t\t( ! layout?.type ||\n\t\t\tlayout?.type === 'default' ||\n\t\t\tlayout?.type === 'constrained' ||\n\t\t\tlayout?.inherit )\n\t);\n\n\tconst usedLayout = layout || defaultBlockLayout || {};\n\tconst {\n\t\tinherit = false,\n\t\ttype = 'default',\n\t\tcontentSize = null,\n\t} = usedLayout;\n\t/**\n\t * `themeSupportsLayout` is only relevant to the `default/flow` or\n\t * `constrained` layouts and it should not be taken into account when other\n\t * `layout` types are used.\n\t */\n\tif (\n\t\t( type === 'default' || type === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( type );\n\tconst constrainedType = getLayoutType( 'constrained' );\n\tconst displayControlsForLegacyLayouts =\n\t\t! usedLayout.type && ( contentSize || inherit );\n\tconst hasContentSizeOrLegacySettings = !! inherit || !! contentSize;\n\n\tconst onChangeType = ( newType ) =>\n\t\tsetAttributes( { layout: { type: newType } } );\n\tconst onChangeLayout = ( newLayout ) =>\n\t\tsetAttributes( { layout: newLayout } );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Layout' ) }>\n\t\t\t\t\t{ showInheritToggle && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tclassName=\"block-editor-hooks__toggle-control\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Inner blocks use content width' ) }\n\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutType?.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t'constrained' ||\n\t\t\t\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'default'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'constrained',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use content width with options for full and wide widths.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks will fill the width of this container. Toggle to constrain.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! inherit && allowSwitching && (\n\t\t\t\t\t\t<LayoutTypeSwitcher\n\t\t\t\t\t\t\ttype={ type }\n\t\t\t\t\t\t\tonChange={ onChangeType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ layoutType && layoutType.name !== 'default' && (\n\t\t\t\t\t\t<layoutType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ constrainedType && displayControlsForLegacyLayouts && (\n\t\t\t\t\t\t<constrainedType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ ! inherit && blockEditingMode === 'default' && layoutType && (\n\t\t\t\t<layoutType.toolBarControls\n\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ButtonGroup>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tisPressed={ type === name }\n\t\t\t\t\t\tonClick={ () => onChange( name ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ButtonGroup>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include `layout`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( 'type' in ( settings.attributes?.layout ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasLayoutBlockSupport( settings ) ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tlayout: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include layout controls\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\tconst supportLayout = hasLayoutBlockSupport( blockName );\n\n\t\tconst blockEditingMode = useBlockEditingMode();\n\t\treturn [\n\t\t\tsupportLayout && blockEditingMode === 'default' && (\n\t\t\t\t<LayoutPanel key=\"layout\" { ...props } />\n\t\t\t),\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst blockSupportsLayout = hasLayoutBlockSupport( name );\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderLayoutStyles =\n\t\t\tblockSupportsLayout && ! disableLayoutStyles;\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\t\tconst { layout } = attributes;\n\t\tconst { default: defaultBlockLayout } =\n\t\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\t\tconst usedLayout =\n\t\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t\t: layout || defaultBlockLayout || {};\n\t\tconst layoutClasses = blockSupportsLayout\n\t\t\t? useLayoutClasses( attributes, name )\n\t\t\t: null;\n\t\t// Higher specificity to override defaults from theme.json.\n\t\tconst selector = `.wp-container-${ id }.wp-container-${ id }`;\n\t\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\t\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t\t// Get CSS string for the current layout type.\n\t\t// The CSS and `style` element is only output if it is not empty.\n\t\tlet css;\n\t\tif ( shouldRenderLayoutStyles ) {\n\t\t\tconst fullLayoutType = getLayoutType(\n\t\t\t\tusedLayout?.type || 'default'\n\t\t\t);\n\t\t\tcss = fullLayoutType?.getLayoutStyle?.( {\n\t\t\t\tblockName: name,\n\t\t\t\tselector,\n\t\t\t\tlayout: usedLayout,\n\t\t\t\tstyle: attributes?.style,\n\t\t\t\thasBlockGapSupport,\n\t\t\t} );\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\t\tconst layoutClassNames = classnames(\n\t\t\t{\n\t\t\t\t[ `wp-container-${ id }` ]: shouldRenderLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t},\n\t\t\tlayoutClasses\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRenderLayoutStyles &&\n\t\t\t\t\telement &&\n\t\t\t\t\t!! css &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\tblockName={ name }\n\t\t\t\t\t\t\tselector={ selector }\n\t\t\t\t\t\t\tcss={ css }\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tstyle={ attributes?.style }\n\t\t\t\t\t\t/>,\n\t\t\t\t\t\telement\n\t\t\t\t\t) }\n\t\t\t\t<BlockListBlock\n\t\t\t\t\t{ ...props }\n\t\t\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t},\n\t'withLayoutStyles'\n);\n\n/**\n * Override the default block element to add the child layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withChildLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { attributes } = props;\n\t\tconst { style: { layout = {} } = {} } = attributes;\n\t\tconst { selfStretch, flexSize } = layout;\n\t\tconst hasChildLayout = selfStretch || flexSize;\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderChildLayoutStyles =\n\t\t\thasChildLayout && ! disableLayoutStyles;\n\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst selector = `.wp-container-content-${ id }`;\n\n\t\tlet css = '';\n\n\t\tif ( selfStretch === 'fixed' && flexSize ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-basis: ${ flexSize };\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}`;\n\t\t} else if ( selfStretch === 'fill' ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-grow: 1;\n\t\t\t}`;\n\t\t}\n\n\t\t// Attach a `wp-container-content` id-based classname.\n\t\tconst className = classnames( props?.className, {\n\t\t\t[ `wp-container-content-${ id }` ]:\n\t\t\t\tshouldRenderChildLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t} );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRenderChildLayoutStyles &&\n\t\t\t\t\telement &&\n\t\t\t\t\t!! css &&\n\t\t\t\t\tcreatePortal( <style>{ css }</style>, element ) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withChildLayoutStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/layout/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-layout-styles',\n\twithLayoutStyles\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-child-layout-styles',\n\twithChildLayoutStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/layout/with-inspector-controls',\n\twithInspectorControls\n);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_classnames","_interopRequireDefault","_compose","_hooks","_blocks","_data","_components","_i18n","_store","_components2","_useSetting","_layouts","_blockEditingMode","_definitions","_object","_utils","_lockUnlock","layoutBlockSupportKey","hasLayoutBlockSupport","blockName","hasBlockSupport","useLayoutClasses","blockAttributes","rootPaddingAlignment","useSelect","select","getSettings","blockEditorStore","__experimentalFeatures","useRootPaddingAwareAlignments","layout","default","defaultBlockLayout","getBlockSupport","usedLayout","inherit","contentSize","wideSize","type","layoutClassnames","LAYOUT_DEFINITIONS","className","baseClassName","splitBlockName","split","fullBlockName","pop","join","compoundClassName","push","orientation","kebabCase","justifyContent","flexWrap","useLayoutStyles","selector","style","fullLayoutType","getLayoutType","blockGapSupport","useSetting","hasBlockGapSupport","css","getLayoutStyle","LayoutPanel","setAttributes","attributes","name","settings","useBlockSettings","allowEditing","allowEditingSetting","defaultThemeLayout","themeSupportsLayout","supportsLayout","blockEditingMode","useBlockEditingMode","layoutBlockSupport","allowSwitching","allowInheriting","showInheritToggle","layoutType","constrainedType","displayControlsForLegacyLayouts","hasContentSizeOrLegacySettings","onChangeType","newType","onChangeLayout","newLayout","createElement","Fragment","InspectorControls","PanelBody","title","__","ToggleControl","__nextHasNoMarginBottom","label","checked","onChange","help","LayoutTypeSwitcher","inspectorControls","toolBarControls","ButtonGroup","getLayoutTypes","map","Button","key","isPressed","onClick","addAttribute","_settings$attributes$","withInspectorControls","createHigherOrderComponent","BlockEdit","props","supportLayout","exports","withLayoutStyles","BlockListBlock","blockSupportsLayout","disableLayoutStyles","shouldRenderLayoutStyles","id","useInstanceId","layoutClasses","layoutClassNames","classnames","setStyleOverride","deleteStyleOverride","unlock","useDispatch","useEffect","__unstableLayoutClassNames","withChildLayoutStyles","selfStretch","flexSize","hasChildLayout","shouldRenderChildLayoutStyles","addFilter"],"sources":["@wordpress/block-editor/src/hooks/layout.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\tButtonGroup,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport useSetting from '../components/use-setting';\nimport { getLayoutType, getLayoutTypes } from '../layouts';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { LAYOUT_DEFINITIONS } from '../layouts/definitions';\nimport { kebabCase } from '../utils/object';\nimport { useBlockSettings } from './utils';\nimport { unlock } from '../lock-unlock';\n\nconst layoutBlockSupportKey = 'layout';\n\nfunction hasLayoutBlockSupport( blockName ) {\n\treturn (\n\t\thasBlockSupport( blockName, 'layout' ) ||\n\t\thasBlockSupport( blockName, '__experimentalLayout' )\n\t);\n}\n\n/**\n * Generates the utility classnames for the given block's layout attributes.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n *\n * @return { Array } Array of CSS classname strings.\n */\nexport function useLayoutClasses( blockAttributes = {}, blockName = '' ) {\n\tconst rootPaddingAlignment = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().__experimentalFeatures\n\t\t\t?.useRootPaddingAwareAlignments;\n\t}, [] );\n\tconst { layout } = blockAttributes;\n\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( blockName, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst layoutClassnames = [];\n\n\tif ( LAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className ) {\n\t\tconst baseClassName =\n\t\t\tLAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className;\n\t\tconst splitBlockName = blockName.split( '/' );\n\t\tconst fullBlockName =\n\t\t\tsplitBlockName[ 0 ] === 'core'\n\t\t\t\t? splitBlockName.pop()\n\t\t\t\t: splitBlockName.join( '-' );\n\t\tconst compoundClassName = `wp-block-${ fullBlockName }-${ baseClassName }`;\n\t\tlayoutClassnames.push( baseClassName, compoundClassName );\n\t}\n\n\tif (\n\t\t( usedLayout?.inherit ||\n\t\t\tusedLayout?.contentSize ||\n\t\t\tusedLayout?.type === 'constrained' ) &&\n\t\trootPaddingAlignment\n\t) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( usedLayout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( usedLayout.orientation ) }` );\n\t}\n\n\tif ( usedLayout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase(\n\t\t\t\tusedLayout.justifyContent\n\t\t\t) }`\n\t\t);\n\t}\n\n\tif ( usedLayout?.flexWrap && usedLayout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\n}\n\n/**\n * Generates a CSS rule with the given block's layout styles.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n * @param { string } selector A selector to use in generating the CSS rule.\n *\n * @return { string } CSS rule.\n */\nexport function useLayoutStyles( blockAttributes = {}, blockName, selector ) {\n\tconst { layout = {}, style = {} } = blockAttributes;\n\t// Update type for blocks using legacy layouts.\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || {};\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\tconst css = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName,\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n\treturn css;\n}\n\nfunction LayoutPanel( { setAttributes, attributes, name: blockName } ) {\n\tconst settings = useBlockSettings( blockName );\n\tconst {\n\t\tlayout: { allowEditing: allowEditingSetting },\n\t} = settings;\n\n\tconst { layout } = attributes;\n\tconst defaultThemeLayout = useSetting( 'layout' );\n\tconst { themeSupportsLayout } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t};\n\t}, [] );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = allowEditingSetting ?? true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = layoutBlockSupport;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t// Only show the inherit toggle if it's supported,\n\t// a default theme layout is set (e.g. one that provides `contentSize` and/or `wideSize` values),\n\t// and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.\n\tconst showInheritToggle = !! (\n\t\tallowInheriting &&\n\t\t!! defaultThemeLayout &&\n\t\t( ! layout?.type ||\n\t\t\tlayout?.type === 'default' ||\n\t\t\tlayout?.type === 'constrained' ||\n\t\t\tlayout?.inherit )\n\t);\n\n\tconst usedLayout = layout || defaultBlockLayout || {};\n\tconst {\n\t\tinherit = false,\n\t\ttype = 'default',\n\t\tcontentSize = null,\n\t} = usedLayout;\n\t/**\n\t * `themeSupportsLayout` is only relevant to the `default/flow` or\n\t * `constrained` layouts and it should not be taken into account when other\n\t * `layout` types are used.\n\t */\n\tif (\n\t\t( type === 'default' || type === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( type );\n\tconst constrainedType = getLayoutType( 'constrained' );\n\tconst displayControlsForLegacyLayouts =\n\t\t! usedLayout.type && ( contentSize || inherit );\n\tconst hasContentSizeOrLegacySettings = !! inherit || !! contentSize;\n\n\tconst onChangeType = ( newType ) =>\n\t\tsetAttributes( { layout: { type: newType } } );\n\tconst onChangeLayout = ( newLayout ) =>\n\t\tsetAttributes( { layout: newLayout } );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Layout' ) }>\n\t\t\t\t\t{ showInheritToggle && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tclassName=\"block-editor-hooks__toggle-control\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Inner blocks use content width' ) }\n\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutType?.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t'constrained' ||\n\t\t\t\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'default'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'constrained',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use content width with options for full and wide widths.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks will fill the width of this container. Toggle to constrain.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! inherit && allowSwitching && (\n\t\t\t\t\t\t<LayoutTypeSwitcher\n\t\t\t\t\t\t\ttype={ type }\n\t\t\t\t\t\t\tonChange={ onChangeType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ layoutType && layoutType.name !== 'default' && (\n\t\t\t\t\t\t<layoutType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ constrainedType && displayControlsForLegacyLayouts && (\n\t\t\t\t\t\t<constrainedType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ ! inherit && blockEditingMode === 'default' && layoutType && (\n\t\t\t\t<layoutType.toolBarControls\n\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ButtonGroup>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tisPressed={ type === name }\n\t\t\t\t\t\tonClick={ () => onChange( name ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ButtonGroup>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include `layout`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( 'type' in ( settings.attributes?.layout ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasLayoutBlockSupport( settings ) ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tlayout: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include layout controls\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\tconst supportLayout = hasLayoutBlockSupport( blockName );\n\n\t\tconst blockEditingMode = useBlockEditingMode();\n\t\treturn [\n\t\t\tsupportLayout && blockEditingMode === 'default' && (\n\t\t\t\t<LayoutPanel key=\"layout\" { ...props } />\n\t\t\t),\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst blockSupportsLayout = hasLayoutBlockSupport( name );\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderLayoutStyles =\n\t\t\tblockSupportsLayout && ! disableLayoutStyles;\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst { layout } = attributes;\n\t\tconst { default: defaultBlockLayout } =\n\t\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\t\tconst usedLayout =\n\t\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t\t: layout || defaultBlockLayout || {};\n\t\tconst layoutClasses = blockSupportsLayout\n\t\t\t? useLayoutClasses( attributes, name )\n\t\t\t: null;\n\t\t// Higher specificity to override defaults from theme.json.\n\t\tconst selector = `.wp-container-${ id }.wp-container-${ id }`;\n\t\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\t\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t\t// Get CSS string for the current layout type.\n\t\t// The CSS and `style` element is only output if it is not empty.\n\t\tlet css;\n\t\tif ( shouldRenderLayoutStyles ) {\n\t\t\tconst fullLayoutType = getLayoutType(\n\t\t\t\tusedLayout?.type || 'default'\n\t\t\t);\n\t\t\tcss = fullLayoutType?.getLayoutStyle?.( {\n\t\t\t\tblockName: name,\n\t\t\t\tselector,\n\t\t\t\tlayout: usedLayout,\n\t\t\t\tstyle: attributes?.style,\n\t\t\t\thasBlockGapSupport,\n\t\t\t} );\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\t\tconst layoutClassNames = classnames(\n\t\t\t{\n\t\t\t\t[ `wp-container-${ id }` ]: shouldRenderLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t},\n\t\t\tlayoutClasses\n\t\t);\n\n\t\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! css ) return;\n\t\t\tsetStyleOverride( id, { css } );\n\t\t\treturn () => {\n\t\t\t\tdeleteStyleOverride( id );\n\t\t\t};\n\t\t}, [ id, css, setStyleOverride, deleteStyleOverride ] );\n\n\t\treturn (\n\t\t\t<BlockListBlock\n\t\t\t\t{ ...props }\n\t\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t/>\n\t\t);\n\t},\n\t'withLayoutStyles'\n);\n\n/**\n * Override the default block element to add the child layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withChildLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { attributes } = props;\n\t\tconst { style: { layout = {} } = {} } = attributes;\n\t\tconst { selfStretch, flexSize } = layout;\n\t\tconst hasChildLayout = selfStretch || flexSize;\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderChildLayoutStyles =\n\t\t\thasChildLayout && ! disableLayoutStyles;\n\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst selector = `.wp-container-content-${ id }`;\n\n\t\tlet css = '';\n\n\t\tif ( selfStretch === 'fixed' && flexSize ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-basis: ${ flexSize };\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}`;\n\t\t} else if ( selfStretch === 'fill' ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-grow: 1;\n\t\t\t}`;\n\t\t}\n\n\t\t// Attach a `wp-container-content` id-based classname.\n\t\tconst className = classnames( props?.className, {\n\t\t\t[ `wp-container-content-${ id }` ]:\n\t\t\t\tshouldRenderChildLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t} );\n\n\t\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! css ) return;\n\t\t\tsetStyleOverride( id, { css } );\n\t\t\treturn () => {\n\t\t\t\tdeleteStyleOverride( id );\n\t\t\t};\n\t\t}, [ id, css, setStyleOverride, deleteStyleOverride ] );\n\n\t\treturn <BlockListBlock { ...props } className={ className } />;\n\t},\n\t'withChildLayoutStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/layout/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-layout-styles',\n\twithLayoutStyles\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-child-layout-styles',\n\twithChildLayoutStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/layout/with-inspector-controls',\n\twithInspectorControls\n);\n"],"mappings":"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"}
@@ -314,7 +314,8 @@ const withInspectorControls = (0, _compose.createHigherOrderComponent)(BlockEdit
314
314
  name: blockName
315
315
  } = props;
316
316
  const positionSupport = (0, _blocks.hasBlockSupport)(blockName, POSITION_SUPPORT_KEY);
317
- const showPositionControls = positionSupport && !useIsPositionDisabled(props);
317
+ const isPositionDisabled = useIsPositionDisabled(props);
318
+ const showPositionControls = positionSupport && !isPositionDisabled;
318
319
  return [showPositionControls && (0, _element.createElement)(PositionPanel, {
319
320
  key: "position",
320
321
  ...props
@@ -338,7 +339,8 @@ const withPositionStyles = (0, _compose.createHigherOrderComponent)(BlockListBlo
338
339
  attributes
339
340
  } = props;
340
341
  const hasPositionBlockSupport = (0, _blocks.hasBlockSupport)(name, POSITION_SUPPORT_KEY);
341
- const allowPositionStyles = hasPositionBlockSupport && !useIsPositionDisabled(props);
342
+ const isPositionDisabled = useIsPositionDisabled(props);
343
+ const allowPositionStyles = hasPositionBlockSupport && !isPositionDisabled;
342
344
  const id = (0, _compose.useInstanceId)(BlockListBlock);
343
345
  const element = (0, _element.useContext)(_blockList.default.__unstableElementContext);
344
346