@wordpress/block-editor 14.0.0 → 14.2.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 (807) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +10 -24
  3. package/build/autocompleters/block.js +1 -1
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-alignment-matrix-control/index.js +2 -2
  6. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  7. package/build/components/block-breadcrumb/index.js +8 -2
  8. package/build/components/block-breadcrumb/index.js.map +1 -1
  9. package/build/components/block-canvas/index.js +8 -1
  10. package/build/components/block-canvas/index.js.map +1 -1
  11. package/build/components/block-compare/block-view.js +4 -1
  12. package/build/components/block-compare/block-view.js.map +1 -1
  13. package/build/components/block-draggable/index.js +4 -4
  14. package/build/components/block-draggable/index.js.map +1 -1
  15. package/build/components/block-draggable/use-scroll-when-dragging.js +25 -25
  16. package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  17. package/build/components/block-edit/multiple-usage-warning.js +8 -2
  18. package/build/components/block-edit/multiple-usage-warning.js.map +1 -1
  19. package/build/components/block-inspector/index.js +27 -9
  20. package/build/components/block-inspector/index.js.map +1 -1
  21. package/build/components/block-list/block-invalid-warning.js +6 -3
  22. package/build/components/block-list/block-invalid-warning.js.map +1 -1
  23. package/build/components/block-list/block.js +5 -1
  24. package/build/components/block-list/block.js.map +1 -1
  25. package/build/components/block-list/use-block-props/index.js +7 -3
  26. package/build/components/block-list/use-block-props/index.js.map +1 -1
  27. package/build/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  28. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  29. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +46 -0
  30. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
  31. package/build/components/block-list/use-in-between-inserter.js +11 -4
  32. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  33. package/build/components/block-lock/toolbar.js +3 -3
  34. package/build/components/block-lock/toolbar.js.map +1 -1
  35. package/build/components/block-mover/button.js +4 -1
  36. package/build/components/block-mover/button.js.map +1 -1
  37. package/build/components/block-mover/index.js +4 -1
  38. package/build/components/block-mover/index.js.map +1 -1
  39. package/build/components/block-navigation/dropdown.js +4 -1
  40. package/build/components/block-navigation/dropdown.js.map +1 -1
  41. package/build/components/block-pattern-setup/index.js +1 -4
  42. package/build/components/block-pattern-setup/index.js.map +1 -1
  43. package/build/components/block-pattern-setup/setup-toolbar.js +22 -7
  44. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  45. package/build/components/block-patterns-list/index.js +11 -14
  46. package/build/components/block-patterns-list/index.js.map +1 -1
  47. package/build/components/block-patterns-paging/index.js +12 -3
  48. package/build/components/block-patterns-paging/index.js.map +1 -1
  49. package/build/components/block-popover/index.js +2 -15
  50. package/build/components/block-popover/index.js.map +1 -1
  51. package/build/components/block-quick-navigation/index.js +4 -1
  52. package/build/components/block-quick-navigation/index.js.map +1 -1
  53. package/build/components/block-settings-menu/block-mode-toggle.js +28 -34
  54. package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  55. package/build/components/block-settings-menu-controls/index.js +4 -0
  56. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  57. package/build/components/block-switcher/index.js +22 -17
  58. package/build/components/block-switcher/index.js.map +1 -1
  59. package/build/components/block-switcher/pattern-transformations-menu.js +1 -4
  60. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  61. package/build/components/block-toolbar/index.js +12 -11
  62. package/build/components/block-toolbar/index.js.map +1 -1
  63. package/build/components/block-toolbar/shuffle.js +6 -2
  64. package/build/components/block-toolbar/shuffle.js.map +1 -1
  65. package/build/components/block-tools/block-selection-button.js +8 -2
  66. package/build/components/block-tools/block-selection-button.js.map +1 -1
  67. package/build/components/block-tools/block-toolbar-popover.js +10 -6
  68. package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
  69. package/build/components/block-tools/insertion-point.js +14 -3
  70. package/build/components/block-tools/insertion-point.js.map +1 -1
  71. package/build/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  72. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  73. package/build/components/block-tools/use-show-block-tools.js +2 -1
  74. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  75. package/build/components/block-tools/zoom-out-mode-inserters.js +4 -5
  76. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  77. package/build/components/block-tools/zoom-out-popover.js +3 -4
  78. package/build/components/block-tools/zoom-out-popover.js.map +1 -1
  79. package/build/components/block-tools/zoom-out-toolbar.js +14 -5
  80. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  81. package/build/components/block-variation-picker/index.js +4 -1
  82. package/build/components/block-variation-picker/index.js.map +1 -1
  83. package/build/components/block-variation-transforms/index.js +4 -1
  84. package/build/components/block-variation-transforms/index.js.map +1 -1
  85. package/build/components/border-radius-control/index.js +1 -0
  86. package/build/components/border-radius-control/index.js.map +1 -1
  87. package/build/components/button-block-appender/index.js +14 -3
  88. package/build/components/button-block-appender/index.js.map +1 -1
  89. package/build/components/colors-gradients/dropdown.js +4 -1
  90. package/build/components/colors-gradients/dropdown.js.map +1 -1
  91. package/build/components/content-lock/index.js +13 -0
  92. package/build/components/content-lock/index.js.map +1 -0
  93. package/build/components/content-lock/modify-content-lock-menu-item.js +64 -0
  94. package/build/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
  95. package/build/components/convert-to-group-buttons/index.js +1 -1
  96. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  97. package/build/components/date-format-picker/index.js +2 -0
  98. package/build/components/date-format-picker/index.js.map +1 -1
  99. package/build/components/editor-styles/index.js +4 -3
  100. package/build/components/editor-styles/index.js.map +1 -1
  101. package/build/components/font-appearance-control/index.js +3 -0
  102. package/build/components/font-appearance-control/index.js.map +1 -1
  103. package/build/components/font-family/index.js +3 -0
  104. package/build/components/font-family/index.js.map +1 -1
  105. package/build/components/global-styles/background-panel.js +118 -50
  106. package/build/components/global-styles/background-panel.js.map +1 -1
  107. package/build/components/global-styles/color-panel.js +8 -5
  108. package/build/components/global-styles/color-panel.js.map +1 -1
  109. package/build/components/global-styles/color-panel.native.js +1 -1
  110. package/build/components/global-styles/color-panel.native.js.map +1 -1
  111. package/build/components/global-styles/dimensions-panel.js +34 -37
  112. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  113. package/build/components/global-styles/filters-panel.js +4 -1
  114. package/build/components/global-styles/filters-panel.js.map +1 -1
  115. package/build/components/global-styles/get-global-styles-changes.js +3 -1
  116. package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
  117. package/build/components/global-styles/hooks.js +0 -7
  118. package/build/components/global-styles/hooks.js.map +1 -1
  119. package/build/components/global-styles/index.js +0 -6
  120. package/build/components/global-styles/index.js.map +1 -1
  121. package/build/components/global-styles/shadow-panel-components.js +13 -7
  122. package/build/components/global-styles/shadow-panel-components.js.map +1 -1
  123. package/build/components/global-styles/typography-utils.js +17 -6
  124. package/build/components/global-styles/typography-utils.js.map +1 -1
  125. package/build/components/global-styles/use-global-styles-output.js +3 -3
  126. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  127. package/build/components/global-styles/utils.js +11 -29
  128. package/build/components/global-styles/utils.js.map +1 -1
  129. package/build/components/grid/grid-item-movers.js +2 -2
  130. package/build/components/grid/grid-item-movers.js.map +1 -1
  131. package/build/components/grid/grid-visualizer.js +20 -5
  132. package/build/components/grid/grid-visualizer.js.map +1 -1
  133. package/build/components/height-control/index.js +1 -0
  134. package/build/components/height-control/index.js.map +1 -1
  135. package/build/components/iframe/index.js +8 -6
  136. package/build/components/iframe/index.js.map +1 -1
  137. package/build/components/image-editor/zoom-dropdown.js +11 -7
  138. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  139. package/build/components/inner-blocks/button-block-appender.js +8 -8
  140. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  141. package/build/components/inner-blocks/default-block-appender.js +7 -25
  142. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  143. package/build/components/inner-blocks/index.js +8 -12
  144. package/build/components/inner-blocks/index.js.map +1 -1
  145. package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  146. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  147. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  148. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  149. package/build/components/inserter/block-patterns-tab/index.js +4 -1
  150. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  151. package/build/components/inserter/media-tab/hooks.js +3 -3
  152. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  153. package/build/components/inserter/media-tab/media-list.js +1 -4
  154. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  155. package/build/components/inserter/media-tab/media-preview.js +8 -2
  156. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  157. package/build/components/inserter/media-tab/media-tab.js +4 -1
  158. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  159. package/build/components/inserter/menu.js +14 -13
  160. package/build/components/inserter/menu.js.map +1 -1
  161. package/build/components/inserter/quick-inserter.js +8 -1
  162. package/build/components/inserter/quick-inserter.js.map +1 -1
  163. package/build/components/inserter-list-item/index.js +4 -4
  164. package/build/components/inserter-list-item/index.js.map +1 -1
  165. package/build/components/inserter-listbox/index.js +3 -7
  166. package/build/components/inserter-listbox/index.js.map +1 -1
  167. package/build/components/inserter-listbox/item.js +4 -1
  168. package/build/components/inserter-listbox/item.js.map +1 -1
  169. package/build/components/inspector-controls/groups.js +2 -0
  170. package/build/components/inspector-controls/groups.js.map +1 -1
  171. package/build/components/inspector-controls-tabs/index.js +4 -1
  172. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  173. package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
  174. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  175. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  176. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  177. package/build/components/inspector-popover-header/index.js +8 -2
  178. package/build/components/inspector-popover-header/index.js.map +1 -1
  179. package/build/components/letter-spacing-control/index.js +7 -4
  180. package/build/components/letter-spacing-control/index.js.map +1 -1
  181. package/build/components/line-height-control/index.js +3 -0
  182. package/build/components/line-height-control/index.js.map +1 -1
  183. package/build/components/link-control/index.js +19 -10
  184. package/build/components/link-control/index.js.map +1 -1
  185. package/build/components/link-control/settings-drawer.js +4 -1
  186. package/build/components/link-control/settings-drawer.js.map +1 -1
  187. package/build/components/list-view/block-select-button.js +4 -1
  188. package/build/components/list-view/block-select-button.js.map +1 -1
  189. package/build/components/media-placeholder/index.js +36 -10
  190. package/build/components/media-placeholder/index.js.map +1 -1
  191. package/build/components/media-replace-flow/index.js +8 -1
  192. package/build/components/media-replace-flow/index.js.map +1 -1
  193. package/build/components/media-upload/index.native.js +4 -1
  194. package/build/components/media-upload/index.native.js.map +1 -1
  195. package/build/components/multi-selection-inspector/index.js +12 -12
  196. package/build/components/multi-selection-inspector/index.js.map +1 -1
  197. package/build/components/provider/use-block-sync.js +19 -19
  198. package/build/components/provider/use-block-sync.js.map +1 -1
  199. package/build/components/rich-text/event-listeners/paste-handler.js +12 -1
  200. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  201. package/build/components/rich-text/index.js +38 -30
  202. package/build/components/rich-text/index.js.map +1 -1
  203. package/build/components/rich-text/use-mark-persistent.js +5 -5
  204. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  205. package/build/components/skip-to-selected-block/index.js +4 -1
  206. package/build/components/skip-to-selected-block/index.js.map +1 -1
  207. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
  208. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  209. package/build/components/text-alignment-control/index.js +13 -8
  210. package/build/components/text-alignment-control/index.js.map +1 -1
  211. package/build/components/text-decoration-control/index.js +13 -8
  212. package/build/components/text-decoration-control/index.js.map +1 -1
  213. package/build/components/text-transform-control/index.js +13 -8
  214. package/build/components/text-transform-control/index.js.map +1 -1
  215. package/build/components/tool-selector/index.js +4 -1
  216. package/build/components/tool-selector/index.js.map +1 -1
  217. package/build/components/url-input/button.js +12 -3
  218. package/build/components/url-input/button.js.map +1 -1
  219. package/build/components/url-input/index.js +4 -1
  220. package/build/components/url-input/index.js.map +1 -1
  221. package/build/components/url-popover/image-url-input-ui.js +2 -0
  222. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  223. package/build/components/use-block-drop-zone/index.js +12 -2
  224. package/build/components/use-block-drop-zone/index.js.map +1 -1
  225. package/build/components/writing-flow/index.js +2 -1
  226. package/build/components/writing-flow/index.js.map +1 -1
  227. package/build/components/writing-flow/use-arrow-nav.js +4 -1
  228. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  229. package/build/components/writing-flow/use-event-redirect.js +66 -0
  230. package/build/components/writing-flow/use-event-redirect.js.map +1 -0
  231. package/build/components/writing-flow/use-input.js +31 -1
  232. package/build/components/writing-flow/use-input.js.map +1 -1
  233. package/build/components/writing-flow/use-select-all.js +14 -1
  234. package/build/components/writing-flow/use-select-all.js.map +1 -1
  235. package/build/components/writing-flow/use-selection-observer.js +20 -6
  236. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  237. package/build/components/writing-flow/use-tab-nav.js +4 -4
  238. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  239. package/build/components/writing-flow/utils.js +27 -0
  240. package/build/components/writing-flow/utils.js.map +1 -1
  241. package/build/components/writing-mode-control/index.js +13 -8
  242. package/build/components/writing-mode-control/index.js.map +1 -1
  243. package/build/hooks/background.js +19 -23
  244. package/build/hooks/background.js.map +1 -1
  245. package/build/hooks/block-bindings.js +64 -103
  246. package/build/hooks/block-bindings.js.map +1 -1
  247. package/build/hooks/content-lock-ui.js +8 -26
  248. package/build/hooks/content-lock-ui.js.map +1 -1
  249. package/build/hooks/duotone.js +0 -4
  250. package/build/hooks/duotone.js.map +1 -1
  251. package/build/hooks/layout.js +4 -1
  252. package/build/hooks/layout.js.map +1 -1
  253. package/build/hooks/spacing-visualizer.js +3 -3
  254. package/build/hooks/spacing-visualizer.js.map +1 -1
  255. package/build/hooks/style.js +1 -5
  256. package/build/hooks/style.js.map +1 -1
  257. package/build/hooks/use-bindings-attributes.js +19 -20
  258. package/build/hooks/use-bindings-attributes.js.map +1 -1
  259. package/build/hooks/use-zoom-out.js +7 -7
  260. package/build/hooks/use-zoom-out.js.map +1 -1
  261. package/build/layouts/constrained.js +42 -41
  262. package/build/layouts/constrained.js.map +1 -1
  263. package/build/layouts/flex.js +6 -1
  264. package/build/layouts/flex.js.map +1 -1
  265. package/build/layouts/grid.js +3 -0
  266. package/build/layouts/grid.js.map +1 -1
  267. package/build/layouts/utils.js +1 -7
  268. package/build/layouts/utils.js.map +1 -1
  269. package/build/private-apis.js +4 -1
  270. package/build/private-apis.js.map +1 -1
  271. package/build/store/actions.js +2 -7
  272. package/build/store/actions.js.map +1 -1
  273. package/build/store/private-actions.js +1 -0
  274. package/build/store/private-actions.js.map +1 -1
  275. package/build/store/private-keys.js +2 -1
  276. package/build/store/private-keys.js.map +1 -1
  277. package/build/store/private-selectors.js +39 -11
  278. package/build/store/private-selectors.js.map +1 -1
  279. package/build/store/reducer.js +2 -0
  280. package/build/store/reducer.js.map +1 -1
  281. package/build/store/selectors.js +19 -43
  282. package/build/store/selectors.js.map +1 -1
  283. package/build/store/utils.js +48 -0
  284. package/build/store/utils.js.map +1 -1
  285. package/build/utils/block-bindings.js +117 -0
  286. package/build/utils/block-bindings.js.map +1 -0
  287. package/build/utils/dom.js +101 -0
  288. package/build/utils/dom.js.map +1 -1
  289. package/build/utils/get-font-styles-and-weights.js +4 -4
  290. package/build/utils/get-font-styles-and-weights.js.map +1 -1
  291. package/build/utils/transform-styles/index.js +120 -16
  292. package/build/utils/transform-styles/index.js.map +1 -1
  293. package/build-module/autocompleters/block.js +1 -1
  294. package/build-module/autocompleters/block.js.map +1 -1
  295. package/build-module/components/block-alignment-matrix-control/index.js +1 -1
  296. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  297. package/build-module/components/block-breadcrumb/index.js +8 -2
  298. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  299. package/build-module/components/block-canvas/index.js +9 -1
  300. package/build-module/components/block-canvas/index.js.map +1 -1
  301. package/build-module/components/block-compare/block-view.js +4 -1
  302. package/build-module/components/block-compare/block-view.js.map +1 -1
  303. package/build-module/components/block-draggable/index.js +4 -4
  304. package/build-module/components/block-draggable/index.js.map +1 -1
  305. package/build-module/components/block-draggable/use-scroll-when-dragging.js +25 -25
  306. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  307. package/build-module/components/block-edit/multiple-usage-warning.js +8 -2
  308. package/build-module/components/block-edit/multiple-usage-warning.js.map +1 -1
  309. package/build-module/components/block-inspector/index.js +27 -9
  310. package/build-module/components/block-inspector/index.js.map +1 -1
  311. package/build-module/components/block-list/block-invalid-warning.js +6 -3
  312. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  313. package/build-module/components/block-list/block.js +5 -1
  314. package/build-module/components/block-list/block.js.map +1 -1
  315. package/build-module/components/block-list/use-block-props/index.js +7 -3
  316. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  317. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  318. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  319. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +40 -0
  320. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
  321. package/build-module/components/block-list/use-in-between-inserter.js +11 -4
  322. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  323. package/build-module/components/block-lock/toolbar.js +3 -3
  324. package/build-module/components/block-lock/toolbar.js.map +1 -1
  325. package/build-module/components/block-mover/button.js +4 -1
  326. package/build-module/components/block-mover/button.js.map +1 -1
  327. package/build-module/components/block-mover/index.js +4 -1
  328. package/build-module/components/block-mover/index.js.map +1 -1
  329. package/build-module/components/block-navigation/dropdown.js +4 -1
  330. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  331. package/build-module/components/block-pattern-setup/index.js +1 -4
  332. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  333. package/build-module/components/block-pattern-setup/setup-toolbar.js +23 -8
  334. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  335. package/build-module/components/block-patterns-list/index.js +11 -14
  336. package/build-module/components/block-patterns-list/index.js.map +1 -1
  337. package/build-module/components/block-patterns-paging/index.js +12 -3
  338. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  339. package/build-module/components/block-popover/index.js +2 -15
  340. package/build-module/components/block-popover/index.js.map +1 -1
  341. package/build-module/components/block-quick-navigation/index.js +4 -1
  342. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  343. package/build-module/components/block-settings-menu/block-mode-toggle.js +29 -34
  344. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  345. package/build-module/components/block-settings-menu-controls/index.js +4 -0
  346. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  347. package/build-module/components/block-switcher/index.js +22 -17
  348. package/build-module/components/block-switcher/index.js.map +1 -1
  349. package/build-module/components/block-switcher/pattern-transformations-menu.js +1 -4
  350. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  351. package/build-module/components/block-toolbar/index.js +12 -11
  352. package/build-module/components/block-toolbar/index.js.map +1 -1
  353. package/build-module/components/block-toolbar/shuffle.js +6 -2
  354. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  355. package/build-module/components/block-tools/block-selection-button.js +8 -2
  356. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  357. package/build-module/components/block-tools/block-toolbar-popover.js +10 -6
  358. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  359. package/build-module/components/block-tools/insertion-point.js +14 -3
  360. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  361. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  362. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  363. package/build-module/components/block-tools/use-show-block-tools.js +2 -1
  364. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  365. package/build-module/components/block-tools/zoom-out-mode-inserters.js +4 -5
  366. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  367. package/build-module/components/block-tools/zoom-out-popover.js +3 -4
  368. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
  369. package/build-module/components/block-tools/zoom-out-toolbar.js +15 -6
  370. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  371. package/build-module/components/block-variation-picker/index.js +4 -1
  372. package/build-module/components/block-variation-picker/index.js.map +1 -1
  373. package/build-module/components/block-variation-transforms/index.js +4 -1
  374. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  375. package/build-module/components/border-radius-control/index.js +1 -0
  376. package/build-module/components/border-radius-control/index.js.map +1 -1
  377. package/build-module/components/button-block-appender/index.js +15 -4
  378. package/build-module/components/button-block-appender/index.js.map +1 -1
  379. package/build-module/components/colors-gradients/dropdown.js +4 -1
  380. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  381. package/build-module/components/content-lock/index.js +2 -0
  382. package/build-module/components/content-lock/index.js.map +1 -0
  383. package/build-module/components/content-lock/modify-content-lock-menu-item.js +57 -0
  384. package/build-module/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
  385. package/build-module/components/convert-to-group-buttons/index.js +1 -1
  386. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  387. package/build-module/components/date-format-picker/index.js +2 -0
  388. package/build-module/components/date-format-picker/index.js.map +1 -1
  389. package/build-module/components/editor-styles/index.js +4 -3
  390. package/build-module/components/editor-styles/index.js.map +1 -1
  391. package/build-module/components/font-appearance-control/index.js +3 -0
  392. package/build-module/components/font-appearance-control/index.js.map +1 -1
  393. package/build-module/components/font-family/index.js +3 -0
  394. package/build-module/components/font-family/index.js.map +1 -1
  395. package/build-module/components/global-styles/background-panel.js +121 -53
  396. package/build-module/components/global-styles/background-panel.js.map +1 -1
  397. package/build-module/components/global-styles/color-panel.js +7 -4
  398. package/build-module/components/global-styles/color-panel.js.map +1 -1
  399. package/build-module/components/global-styles/color-panel.native.js +2 -2
  400. package/build-module/components/global-styles/color-panel.native.js.map +1 -1
  401. package/build-module/components/global-styles/dimensions-panel.js +36 -39
  402. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  403. package/build-module/components/global-styles/filters-panel.js +4 -1
  404. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  405. package/build-module/components/global-styles/get-global-styles-changes.js +3 -1
  406. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
  407. package/build-module/components/global-styles/hooks.js +0 -6
  408. package/build-module/components/global-styles/hooks.js.map +1 -1
  409. package/build-module/components/global-styles/index.js +1 -1
  410. package/build-module/components/global-styles/index.js.map +1 -1
  411. package/build-module/components/global-styles/shadow-panel-components.js +13 -7
  412. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  413. package/build-module/components/global-styles/typography-utils.js +17 -6
  414. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  415. package/build-module/components/global-styles/use-global-styles-output.js +5 -5
  416. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  417. package/build-module/components/global-styles/utils.js +11 -28
  418. package/build-module/components/global-styles/utils.js.map +1 -1
  419. package/build-module/components/grid/grid-item-movers.js +3 -3
  420. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  421. package/build-module/components/grid/grid-visualizer.js +20 -5
  422. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  423. package/build-module/components/height-control/index.js +1 -0
  424. package/build-module/components/height-control/index.js.map +1 -1
  425. package/build-module/components/iframe/index.js +8 -6
  426. package/build-module/components/iframe/index.js.map +1 -1
  427. package/build-module/components/image-editor/zoom-dropdown.js +12 -8
  428. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  429. package/build-module/components/inner-blocks/button-block-appender.js +7 -6
  430. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  431. package/build-module/components/inner-blocks/default-block-appender.js +6 -23
  432. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  433. package/build-module/components/inner-blocks/index.js +8 -12
  434. package/build-module/components/inner-blocks/index.js.map +1 -1
  435. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  436. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  437. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  438. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  439. package/build-module/components/inserter/block-patterns-tab/index.js +4 -1
  440. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  441. package/build-module/components/inserter/media-tab/hooks.js +3 -3
  442. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  443. package/build-module/components/inserter/media-tab/media-list.js +1 -4
  444. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  445. package/build-module/components/inserter/media-tab/media-preview.js +8 -2
  446. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  447. package/build-module/components/inserter/media-tab/media-tab.js +4 -1
  448. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  449. package/build-module/components/inserter/menu.js +14 -13
  450. package/build-module/components/inserter/menu.js.map +1 -1
  451. package/build-module/components/inserter/quick-inserter.js +9 -2
  452. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  453. package/build-module/components/inserter-list-item/index.js +4 -4
  454. package/build-module/components/inserter-list-item/index.js.map +1 -1
  455. package/build-module/components/inserter-listbox/index.js +3 -7
  456. package/build-module/components/inserter-listbox/index.js.map +1 -1
  457. package/build-module/components/inserter-listbox/item.js +4 -1
  458. package/build-module/components/inserter-listbox/item.js.map +1 -1
  459. package/build-module/components/inspector-controls/groups.js +2 -0
  460. package/build-module/components/inspector-controls/groups.js.map +1 -1
  461. package/build-module/components/inspector-controls-tabs/index.js +4 -1
  462. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  463. package/build-module/components/inspector-controls-tabs/settings-tab.js +3 -1
  464. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  465. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  466. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  467. package/build-module/components/inspector-popover-header/index.js +8 -2
  468. package/build-module/components/inspector-popover-header/index.js.map +1 -1
  469. package/build-module/components/letter-spacing-control/index.js +7 -4
  470. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  471. package/build-module/components/line-height-control/index.js +3 -0
  472. package/build-module/components/line-height-control/index.js.map +1 -1
  473. package/build-module/components/link-control/index.js +19 -10
  474. package/build-module/components/link-control/index.js.map +1 -1
  475. package/build-module/components/link-control/settings-drawer.js +4 -1
  476. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  477. package/build-module/components/list-view/block-select-button.js +4 -1
  478. package/build-module/components/list-view/block-select-button.js.map +1 -1
  479. package/build-module/components/media-placeholder/index.js +36 -10
  480. package/build-module/components/media-placeholder/index.js.map +1 -1
  481. package/build-module/components/media-replace-flow/index.js +8 -1
  482. package/build-module/components/media-replace-flow/index.js.map +1 -1
  483. package/build-module/components/media-upload/index.native.js +4 -1
  484. package/build-module/components/media-upload/index.native.js.map +1 -1
  485. package/build-module/components/multi-selection-inspector/index.js +12 -12
  486. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  487. package/build-module/components/provider/use-block-sync.js +19 -19
  488. package/build-module/components/provider/use-block-sync.js.map +1 -1
  489. package/build-module/components/rich-text/event-listeners/paste-handler.js +12 -1
  490. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  491. package/build-module/components/rich-text/index.js +39 -31
  492. package/build-module/components/rich-text/index.js.map +1 -1
  493. package/build-module/components/rich-text/use-mark-persistent.js +5 -5
  494. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  495. package/build-module/components/skip-to-selected-block/index.js +4 -1
  496. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  497. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
  498. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  499. package/build-module/components/text-alignment-control/index.js +13 -8
  500. package/build-module/components/text-alignment-control/index.js.map +1 -1
  501. package/build-module/components/text-decoration-control/index.js +13 -8
  502. package/build-module/components/text-decoration-control/index.js.map +1 -1
  503. package/build-module/components/text-transform-control/index.js +13 -8
  504. package/build-module/components/text-transform-control/index.js.map +1 -1
  505. package/build-module/components/tool-selector/index.js +4 -1
  506. package/build-module/components/tool-selector/index.js.map +1 -1
  507. package/build-module/components/url-input/button.js +12 -3
  508. package/build-module/components/url-input/button.js.map +1 -1
  509. package/build-module/components/url-input/index.js +4 -1
  510. package/build-module/components/url-input/index.js.map +1 -1
  511. package/build-module/components/url-popover/image-url-input-ui.js +2 -0
  512. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  513. package/build-module/components/use-block-drop-zone/index.js +12 -2
  514. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  515. package/build-module/components/writing-flow/index.js +2 -1
  516. package/build-module/components/writing-flow/index.js.map +1 -1
  517. package/build-module/components/writing-flow/use-arrow-nav.js +4 -1
  518. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  519. package/build-module/components/writing-flow/use-event-redirect.js +60 -0
  520. package/build-module/components/writing-flow/use-event-redirect.js.map +1 -0
  521. package/build-module/components/writing-flow/use-input.js +31 -1
  522. package/build-module/components/writing-flow/use-input.js.map +1 -1
  523. package/build-module/components/writing-flow/use-select-all.js +14 -1
  524. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  525. package/build-module/components/writing-flow/use-selection-observer.js +16 -2
  526. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  527. package/build-module/components/writing-flow/use-tab-nav.js +4 -4
  528. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  529. package/build-module/components/writing-flow/utils.js +26 -0
  530. package/build-module/components/writing-flow/utils.js.map +1 -1
  531. package/build-module/components/writing-mode-control/index.js +13 -8
  532. package/build-module/components/writing-mode-control/index.js.map +1 -1
  533. package/build-module/hooks/background.js +19 -23
  534. package/build-module/hooks/background.js.map +1 -1
  535. package/build-module/hooks/block-bindings.js +66 -105
  536. package/build-module/hooks/block-bindings.js.map +1 -1
  537. package/build-module/hooks/content-lock-ui.js +10 -30
  538. package/build-module/hooks/content-lock-ui.js.map +1 -1
  539. package/build-module/hooks/duotone.js +0 -4
  540. package/build-module/hooks/duotone.js.map +1 -1
  541. package/build-module/hooks/layout.js +4 -1
  542. package/build-module/hooks/layout.js.map +1 -1
  543. package/build-module/hooks/spacing-visualizer.js +3 -3
  544. package/build-module/hooks/spacing-visualizer.js.map +1 -1
  545. package/build-module/hooks/style.js +1 -5
  546. package/build-module/hooks/style.js.map +1 -1
  547. package/build-module/hooks/use-bindings-attributes.js +19 -20
  548. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  549. package/build-module/hooks/use-zoom-out.js +7 -7
  550. package/build-module/hooks/use-zoom-out.js.map +1 -1
  551. package/build-module/layouts/constrained.js +44 -43
  552. package/build-module/layouts/constrained.js.map +1 -1
  553. package/build-module/layouts/flex.js +6 -1
  554. package/build-module/layouts/flex.js.map +1 -1
  555. package/build-module/layouts/grid.js +3 -0
  556. package/build-module/layouts/grid.js.map +1 -1
  557. package/build-module/layouts/utils.js +1 -7
  558. package/build-module/layouts/utils.js.map +1 -1
  559. package/build-module/private-apis.js +5 -2
  560. package/build-module/private-apis.js.map +1 -1
  561. package/build-module/store/actions.js +2 -7
  562. package/build-module/store/actions.js.map +1 -1
  563. package/build-module/store/private-actions.js +1 -0
  564. package/build-module/store/private-actions.js.map +1 -1
  565. package/build-module/store/private-keys.js +1 -0
  566. package/build-module/store/private-keys.js.map +1 -1
  567. package/build-module/store/private-selectors.js +36 -12
  568. package/build-module/store/private-selectors.js.map +1 -1
  569. package/build-module/store/reducer.js +2 -0
  570. package/build-module/store/reducer.js.map +1 -1
  571. package/build-module/store/selectors.js +22 -46
  572. package/build-module/store/selectors.js.map +1 -1
  573. package/build-module/store/utils.js +46 -0
  574. package/build-module/store/utils.js.map +1 -1
  575. package/build-module/utils/block-bindings.js +110 -0
  576. package/build-module/utils/block-bindings.js.map +1 -0
  577. package/build-module/utils/dom.js +99 -0
  578. package/build-module/utils/dom.js.map +1 -1
  579. package/build-module/utils/get-font-styles-and-weights.js +4 -4
  580. package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
  581. package/build-module/utils/transform-styles/index.js +120 -16
  582. package/build-module/utils/transform-styles/index.js.map +1 -1
  583. package/build-style/content-rtl.css +9 -25
  584. package/build-style/content.css +9 -25
  585. package/build-style/default-editor-styles-rtl.css +2 -2
  586. package/build-style/default-editor-styles.css +2 -2
  587. package/build-style/style-rtl.css +53 -76
  588. package/build-style/style.css +53 -76
  589. package/build-types/utils/dom.d.ts +25 -0
  590. package/build-types/utils/dom.d.ts.map +1 -1
  591. package/package.json +34 -32
  592. package/src/autocompleters/block.js +2 -1
  593. package/src/components/block-alignment-matrix-control/index.js +1 -1
  594. package/src/components/block-breadcrumb/index.js +4 -0
  595. package/src/components/block-breadcrumb/style.scss +1 -1
  596. package/src/components/block-canvas/index.js +9 -1
  597. package/src/components/block-compare/block-view.js +7 -1
  598. package/src/components/block-draggable/content.scss +1 -1
  599. package/src/components/block-draggable/index.js +4 -4
  600. package/src/components/block-draggable/style.scss +1 -1
  601. package/src/components/block-draggable/use-scroll-when-dragging.js +25 -25
  602. package/src/components/block-edit/multiple-usage-warning.js +4 -0
  603. package/src/components/block-inspector/index.js +22 -6
  604. package/src/components/block-list/block-invalid-warning.js +4 -2
  605. package/src/components/block-list/block.js +6 -2
  606. package/src/components/block-list/content.scss +7 -16
  607. package/src/components/block-list/use-block-props/index.js +5 -2
  608. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  609. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +44 -0
  610. package/src/components/block-list/use-in-between-inserter.js +17 -5
  611. package/src/components/block-lock/style.scss +1 -1
  612. package/src/components/block-lock/toolbar.js +3 -3
  613. package/src/components/block-mover/button.js +2 -0
  614. package/src/components/block-mover/index.js +2 -0
  615. package/src/components/block-mover/style.scss +1 -1
  616. package/src/components/block-navigation/dropdown.js +2 -0
  617. package/src/components/block-pattern-setup/index.js +3 -7
  618. package/src/components/block-pattern-setup/setup-toolbar.js +17 -4
  619. package/src/components/block-pattern-setup/style.scss +2 -2
  620. package/src/components/block-patterns-list/index.js +15 -13
  621. package/src/components/block-patterns-list/style.scss +2 -2
  622. package/src/components/block-patterns-paging/index.js +6 -0
  623. package/src/components/block-popover/index.js +7 -28
  624. package/src/components/block-popover/style.scss +1 -1
  625. package/src/components/block-quick-navigation/index.js +2 -0
  626. package/src/components/block-settings-menu/block-mode-toggle.js +28 -31
  627. package/src/components/block-settings-menu/test/block-mode-toggle.js +26 -23
  628. package/src/components/block-settings-menu-controls/index.js +7 -1
  629. package/src/components/block-switcher/index.js +26 -20
  630. package/src/components/block-switcher/pattern-transformations-menu.js +3 -7
  631. package/src/components/block-switcher/style.scss +5 -6
  632. package/src/components/block-toolbar/index.js +17 -8
  633. package/src/components/block-toolbar/shuffle.js +9 -7
  634. package/src/components/block-tools/block-selection-button.js +4 -0
  635. package/src/components/block-tools/block-toolbar-popover.js +10 -6
  636. package/src/components/block-tools/insertion-point.js +11 -0
  637. package/src/components/block-tools/style.scss +4 -5
  638. package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  639. package/src/components/block-tools/use-show-block-tools.js +4 -1
  640. package/src/components/block-tools/zoom-out-mode-inserters.js +5 -2
  641. package/src/components/block-tools/zoom-out-popover.js +3 -7
  642. package/src/components/block-tools/zoom-out-toolbar.js +20 -6
  643. package/src/components/block-variation-picker/README.md +2 -2
  644. package/src/components/block-variation-picker/index.js +6 -1
  645. package/src/components/block-variation-transforms/index.js +2 -0
  646. package/src/components/block-variation-transforms/style.scss +2 -2
  647. package/src/components/border-radius-control/index.js +1 -0
  648. package/src/components/border-radius-control/style.scss +0 -10
  649. package/src/components/button-block-appender/content.scss +0 -1
  650. package/src/components/button-block-appender/index.js +14 -3
  651. package/src/components/color-palette/test/control.js +15 -2
  652. package/src/components/colors-gradients/dropdown.js +5 -1
  653. package/src/components/colors-gradients/style.scss +4 -4
  654. package/src/components/content-lock/index.js +1 -0
  655. package/src/components/content-lock/modify-content-lock-menu-item.js +58 -0
  656. package/src/components/convert-to-group-buttons/index.js +1 -1
  657. package/src/components/date-format-picker/index.js +2 -0
  658. package/src/components/default-block-appender/content.scss +0 -1
  659. package/src/components/editor-styles/index.js +4 -3
  660. package/src/components/font-appearance-control/index.js +3 -0
  661. package/src/components/font-family/README.md +11 -2
  662. package/src/components/font-family/index.js +3 -0
  663. package/src/components/global-styles/background-panel.js +135 -64
  664. package/src/components/global-styles/color-panel.js +8 -4
  665. package/src/components/global-styles/color-panel.native.js +2 -2
  666. package/src/components/global-styles/dimensions-panel.js +40 -40
  667. package/src/components/global-styles/filters-panel.js +5 -1
  668. package/src/components/global-styles/get-global-styles-changes.js +4 -1
  669. package/src/components/global-styles/hooks.js +0 -5
  670. package/src/components/global-styles/index.js +0 -1
  671. package/src/components/global-styles/shadow-panel-components.js +12 -8
  672. package/src/components/global-styles/style.scss +16 -6
  673. package/src/components/global-styles/test/typography-utils.js +96 -5
  674. package/src/components/global-styles/test/use-global-styles-output.js +20 -4
  675. package/src/components/global-styles/test/utils.js +10 -0
  676. package/src/components/global-styles/typography-utils.js +22 -6
  677. package/src/components/global-styles/use-global-styles-output.js +5 -6
  678. package/src/components/global-styles/utils.js +11 -35
  679. package/src/components/grid/grid-item-movers.js +3 -3
  680. package/src/components/grid/grid-visualizer.js +22 -7
  681. package/src/components/grid/style.scss +1 -1
  682. package/src/components/height-control/index.js +1 -0
  683. package/src/components/iframe/index.js +8 -6
  684. package/src/components/image-editor/zoom-dropdown.js +17 -9
  685. package/src/components/inner-blocks/button-block-appender.js +5 -7
  686. package/src/components/inner-blocks/default-block-appender.js +4 -23
  687. package/src/components/inner-blocks/index.js +11 -10
  688. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  689. package/src/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +2 -0
  690. package/src/components/inserter/block-patterns-tab/index.js +2 -0
  691. package/src/components/inserter/media-tab/hooks.js +3 -3
  692. package/src/components/inserter/media-tab/media-list.js +1 -4
  693. package/src/components/inserter/media-tab/media-preview.js +12 -2
  694. package/src/components/inserter/media-tab/media-tab.js +2 -0
  695. package/src/components/inserter/menu.js +13 -22
  696. package/src/components/inserter/quick-inserter.js +6 -1
  697. package/src/components/inserter/style.scss +7 -9
  698. package/src/components/inserter-list-item/index.js +4 -4
  699. package/src/components/inserter-list-item/style.scss +2 -3
  700. package/src/components/inserter-listbox/index.js +2 -8
  701. package/src/components/inserter-listbox/item.js +9 -1
  702. package/src/components/inspector-controls/groups.js +2 -0
  703. package/src/components/inspector-controls-tabs/index.js +2 -0
  704. package/src/components/inspector-controls-tabs/settings-tab.js +1 -0
  705. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +5 -2
  706. package/src/components/inspector-popover-header/index.js +4 -0
  707. package/src/components/letter-spacing-control/README.md +8 -1
  708. package/src/components/letter-spacing-control/index.js +7 -4
  709. package/src/components/line-height-control/README.md +7 -0
  710. package/src/components/line-height-control/index.js +3 -0
  711. package/src/components/link-control/index.js +17 -8
  712. package/src/components/link-control/settings-drawer.js +2 -0
  713. package/src/components/link-control/style.scss +2 -4
  714. package/src/components/list-view/block-select-button.js +2 -0
  715. package/src/components/list-view/style.scss +14 -16
  716. package/src/components/media-placeholder/index.js +26 -7
  717. package/src/components/media-replace-flow/index.js +12 -1
  718. package/src/components/media-upload/README.md +2 -0
  719. package/src/components/media-upload/index.native.js +2 -0
  720. package/src/components/multi-selection-inspector/index.js +8 -9
  721. package/src/components/provider/use-block-sync.js +20 -20
  722. package/src/components/responsive-block-control/README.md +3 -26
  723. package/src/components/responsive-block-control/test/index.js +1 -0
  724. package/src/components/rich-text/content.scss +1 -1
  725. package/src/components/rich-text/event-listeners/paste-handler.js +6 -1
  726. package/src/components/rich-text/index.js +54 -41
  727. package/src/components/rich-text/style.scss +1 -1
  728. package/src/components/rich-text/use-mark-persistent.js +5 -5
  729. package/src/components/skip-to-selected-block/index.js +2 -0
  730. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -4
  731. package/src/components/spacing-sizes-control/style.scss +17 -16
  732. package/src/components/text-alignment-control/index.js +20 -8
  733. package/src/components/text-decoration-control/index.js +20 -8
  734. package/src/components/text-decoration-control/stories/index.story.js +0 -4
  735. package/src/components/text-transform-control/index.js +20 -8
  736. package/src/components/text-transform-control/stories/index.story.js +0 -4
  737. package/src/components/tool-selector/index.js +2 -0
  738. package/src/components/url-input/button.js +6 -0
  739. package/src/components/url-input/index.js +2 -0
  740. package/src/components/url-input/style.scss +2 -2
  741. package/src/components/url-popover/image-url-input-ui.js +2 -0
  742. package/src/components/url-popover/stories/index.story.js +7 -1
  743. package/src/components/use-block-drop-zone/index.js +21 -3
  744. package/src/components/warning/content.scss +3 -10
  745. package/src/components/writing-flow/index.js +2 -0
  746. package/src/components/writing-flow/use-arrow-nav.js +9 -2
  747. package/src/components/writing-flow/use-event-redirect.js +72 -0
  748. package/src/components/writing-flow/use-input.js +36 -1
  749. package/src/components/writing-flow/use-select-all.js +18 -1
  750. package/src/components/writing-flow/use-selection-observer.js +23 -3
  751. package/src/components/writing-flow/use-tab-nav.js +4 -4
  752. package/src/components/writing-flow/utils.js +30 -0
  753. package/src/components/writing-mode-control/index.js +20 -8
  754. package/src/hooks/background.js +21 -27
  755. package/src/hooks/block-bindings.js +64 -122
  756. package/src/hooks/block-bindings.scss +2 -10
  757. package/src/hooks/content-lock-ui.js +11 -36
  758. package/src/hooks/duotone.js +0 -4
  759. package/src/hooks/layout.js +2 -0
  760. package/src/hooks/layout.scss +3 -11
  761. package/src/hooks/spacing-visualizer.js +3 -3
  762. package/src/hooks/style.js +1 -4
  763. package/src/hooks/test/background.js +60 -0
  764. package/src/hooks/use-bindings-attributes.js +23 -24
  765. package/src/hooks/use-zoom-out.js +7 -7
  766. package/src/layouts/constrained.js +51 -47
  767. package/src/layouts/flex.js +4 -0
  768. package/src/layouts/grid.js +3 -0
  769. package/src/layouts/test/grid.js +2 -2
  770. package/src/layouts/test/utils.js +6 -8
  771. package/src/layouts/utils.js +1 -9
  772. package/src/private-apis.js +4 -0
  773. package/src/store/actions.js +4 -6
  774. package/src/store/private-actions.js +1 -0
  775. package/src/store/private-keys.js +1 -0
  776. package/src/store/private-selectors.js +44 -7
  777. package/src/store/reducer.js +2 -0
  778. package/src/store/selectors.js +32 -51
  779. package/src/store/test/private-selectors.js +89 -0
  780. package/src/store/utils.js +50 -0
  781. package/src/style.scss +0 -1
  782. package/src/utils/block-bindings.js +97 -0
  783. package/src/utils/dom.js +117 -0
  784. package/src/utils/get-font-styles-and-weights.js +12 -4
  785. package/src/utils/test/get-font-styles-and-weights.js +148 -0
  786. package/src/utils/test/transform-styles.js +284 -26
  787. package/src/utils/transform-styles/index.js +132 -21
  788. package/tsconfig.json +1 -0
  789. package/tsconfig.tsbuildinfo +1 -1
  790. package/build/components/global-styles/theme-file-uri-utils.js +0 -21
  791. package/build/components/global-styles/theme-file-uri-utils.js.map +0 -1
  792. package/build/components/inner-blocks/with-client-id.js +0 -28
  793. package/build/components/inner-blocks/with-client-id.js.map +0 -1
  794. package/build/components/segmented-text-control/index.js +0 -63
  795. package/build/components/segmented-text-control/index.js.map +0 -1
  796. package/build-module/components/global-styles/theme-file-uri-utils.js +0 -15
  797. package/build-module/components/global-styles/theme-file-uri-utils.js.map +0 -1
  798. package/build-module/components/inner-blocks/with-client-id.js +0 -21
  799. package/build-module/components/inner-blocks/with-client-id.js.map +0 -1
  800. package/build-module/components/segmented-text-control/index.js +0 -58
  801. package/build-module/components/segmented-text-control/index.js.map +0 -1
  802. package/src/components/global-styles/test/theme-file-uri-utils.js +0 -41
  803. package/src/components/global-styles/theme-file-uri-utils.js +0 -18
  804. package/src/components/inner-blocks/with-client-id.js +0 -19
  805. package/src/components/segmented-text-control/index.js +0 -63
  806. package/src/components/segmented-text-control/style.scss +0 -15
  807. package/src/utils/test/__snapshots__/transform-styles.js.snap +0 -109
@@ -6,11 +6,12 @@ import {
6
6
  __experimentalUnitControl as UnitControl,
7
7
  __experimentalToggleGroupControl as ToggleGroupControl,
8
8
  __experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,
9
+ __experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,
9
10
  } from '@wordpress/components';
10
11
  import { __ } from '@wordpress/i18n';
11
12
  import {
12
13
  Icon,
13
- positionCenter,
14
+ alignNone,
14
15
  stretchWide,
15
16
  justifyLeft,
16
17
  justifyCenter,
@@ -71,60 +72,63 @@ export default {
71
72
  return (
72
73
  <>
73
74
  { allowCustomContentAndWideSize && (
74
- <>
75
- <div className="block-editor-hooks__layout-controls">
76
- <div className="block-editor-hooks__layout-controls-unit">
77
- <UnitControl
78
- className="block-editor-hooks__layout-controls-unit-input"
79
- label={ __( 'Content' ) }
80
- labelPosition="top"
81
- __unstableInputWidth="80px"
82
- value={ contentSize || wideSize || '' }
83
- onChange={ ( nextWidth ) => {
84
- nextWidth =
85
- 0 > parseFloat( nextWidth )
86
- ? '0'
87
- : nextWidth;
88
- onChange( {
89
- ...layout,
90
- contentSize: nextWidth,
91
- } );
92
- } }
93
- units={ units }
94
- />
95
- <Icon icon={ positionCenter } />
96
- </div>
97
- <div className="block-editor-hooks__layout-controls-unit">
98
- <UnitControl
99
- className="block-editor-hooks__layout-controls-unit-input"
100
- label={ __( 'Wide' ) }
101
- labelPosition="top"
102
- __unstableInputWidth="80px"
103
- value={ wideSize || contentSize || '' }
104
- onChange={ ( nextWidth ) => {
105
- nextWidth =
106
- 0 > parseFloat( nextWidth )
107
- ? '0'
108
- : nextWidth;
109
- onChange( {
110
- ...layout,
111
- wideSize: nextWidth,
112
- } );
113
- } }
114
- units={ units }
115
- />
116
- <Icon icon={ stretchWide } />
117
- </div>
118
- </div>
75
+ <div className="block-editor-hooks__layout-controls-units">
76
+ <UnitControl
77
+ __next40pxDefaultSize
78
+ className="block-editor-hooks__layout-controls-unit-input"
79
+ label={ __( 'Content width' ) }
80
+ labelPosition="top"
81
+ value={ contentSize || wideSize || '' }
82
+ onChange={ ( nextWidth ) => {
83
+ nextWidth =
84
+ 0 > parseFloat( nextWidth )
85
+ ? '0'
86
+ : nextWidth;
87
+ onChange( {
88
+ ...layout,
89
+ contentSize: nextWidth,
90
+ } );
91
+ } }
92
+ units={ units }
93
+ prefix={
94
+ <InputControlPrefixWrapper variant="icon">
95
+ <Icon icon={ alignNone } />
96
+ </InputControlPrefixWrapper>
97
+ }
98
+ />
99
+ <UnitControl
100
+ __next40pxDefaultSize
101
+ className="block-editor-hooks__layout-controls-unit-input"
102
+ label={ __( 'Wide width' ) }
103
+ labelPosition="top"
104
+ value={ wideSize || contentSize || '' }
105
+ onChange={ ( nextWidth ) => {
106
+ nextWidth =
107
+ 0 > parseFloat( nextWidth )
108
+ ? '0'
109
+ : nextWidth;
110
+ onChange( {
111
+ ...layout,
112
+ wideSize: nextWidth,
113
+ } );
114
+ } }
115
+ units={ units }
116
+ prefix={
117
+ <InputControlPrefixWrapper variant="icon">
118
+ <Icon icon={ stretchWide } />
119
+ </InputControlPrefixWrapper>
120
+ }
121
+ />
119
122
  <p className="block-editor-hooks__layout-controls-helptext">
120
123
  { __(
121
124
  'Customize the width for all elements that are assigned to the center or wide columns.'
122
125
  ) }
123
126
  </p>
124
- </>
127
+ </div>
125
128
  ) }
126
129
  { allowJustification && (
127
130
  <ToggleGroupControl
131
+ __next40pxDefaultSize
128
132
  __nextHasNoMarginBottom
129
133
  label={ __( 'Justification' ) }
130
134
  value={ justifyContent }
@@ -246,6 +246,8 @@ function FlexLayoutVerticalAlignmentControl( {
246
246
  { verticalAlignmentOptions.map( ( value, icon, label ) => {
247
247
  return (
248
248
  <Button
249
+ // TODO: Switch to `true` (40px size) if possible
250
+ __next40pxDefaultSize={ false }
249
251
  key={ value }
250
252
  label={ label }
251
253
  icon={ icon }
@@ -325,6 +327,7 @@ function FlexLayoutJustifyContentControl( {
325
327
 
326
328
  return (
327
329
  <ToggleGroupControl
330
+ __next40pxDefaultSize
328
331
  __nextHasNoMarginBottom
329
332
  label={ __( 'Justification' ) }
330
333
  value={ justifyContent }
@@ -370,6 +373,7 @@ function OrientationControl( { layout, onChange } ) {
370
373
  } = layout;
371
374
  return (
372
375
  <ToggleGroupControl
376
+ __next40pxDefaultSize
373
377
  __nextHasNoMarginBottom
374
378
  className="block-editor-hooks__flex-layout-orientation-controls"
375
379
  label={ __( 'Orientation' ) }
@@ -264,6 +264,7 @@ function GridLayoutMinimumWidthControl( { layout, onChange } ) {
264
264
  </FlexItem>
265
265
  <FlexItem isBlock>
266
266
  <RangeControl
267
+ __next40pxDefaultSize
267
268
  __nextHasNoMarginBottom
268
269
  onChange={ handleSliderChange }
269
270
  value={ quantity || 0 }
@@ -368,6 +369,7 @@ function GridLayoutColumnsAndRowsControl( {
368
369
  />
369
370
  ) : (
370
371
  <RangeControl
372
+ __next40pxDefaultSize
371
373
  __nextHasNoMarginBottom
372
374
  value={ columnCount ?? 0 }
373
375
  onChange={ ( value ) =>
@@ -449,6 +451,7 @@ function GridLayoutTypeControl( { layout, onChange } ) {
449
451
 
450
452
  return (
451
453
  <ToggleGroupControl
454
+ __next40pxDefaultSize
452
455
  __nextHasNoMarginBottom
453
456
  label={ __( 'Grid item position' ) }
454
457
  value={ gridPlacement }
@@ -5,7 +5,7 @@ import grid from '../grid';
5
5
 
6
6
  describe( 'getLayoutStyle', () => {
7
7
  it( 'should return only `grid-template-columns` and `container-type` properties if no non-default params are provided', () => {
8
- const expected = `.editor-styles-wrapper .my-container { grid-template-columns: repeat(auto-fill, minmax(min(12rem, 100%), 1fr)); container-type: inline-size; }`;
8
+ const expected = `.my-container { grid-template-columns: repeat(auto-fill, minmax(min(12rem, 100%), 1fr)); container-type: inline-size; }`;
9
9
 
10
10
  const result = grid.getLayoutStyle( {
11
11
  selector: '.my-container',
@@ -19,7 +19,7 @@ describe( 'getLayoutStyle', () => {
19
19
  expect( result ).toBe( expected );
20
20
  } );
21
21
  it( 'should return only `grid-template-columns` if columnCount property is provided', () => {
22
- const expected = `.editor-styles-wrapper .my-container { grid-template-columns: repeat(3, minmax(0, 1fr)); }`;
22
+ const expected = `.my-container { grid-template-columns: repeat(3, minmax(0, 1fr)); }`;
23
23
 
24
24
  const result = grid.getLayoutStyle( {
25
25
  selector: '.my-container',
@@ -37,7 +37,7 @@ const layoutDefinitions = {
37
37
  describe( 'getBlockGapCSS', () => {
38
38
  it( 'should output default blockGap rules', () => {
39
39
  const expected =
40
- '.editor-styles-wrapper .my-container > * { margin-block-start: 0; margin-block-end: 0; }.editor-styles-wrapper .my-container > * + * { margin-block-start: 3em; margin-block-end: 0; }';
40
+ '.my-container > * { margin-block-start: 0; margin-block-end: 0; }.my-container > * + * { margin-block-start: 3em; margin-block-end: 0; }';
41
41
 
42
42
  const result = getBlockGapCSS(
43
43
  '.my-container',
@@ -50,7 +50,7 @@ describe( 'getBlockGapCSS', () => {
50
50
  } );
51
51
 
52
52
  it( 'should output flex blockGap rules', () => {
53
- const expected = '.editor-styles-wrapper .my-container { gap: 3em; }';
53
+ const expected = '.my-container { gap: 3em; }';
54
54
 
55
55
  const result = getBlockGapCSS(
56
56
  '.my-container',
@@ -97,7 +97,7 @@ describe( 'getBlockGapCSS', () => {
97
97
  } );
98
98
 
99
99
  it( 'should treat a blockGap string containing 0 as a valid value', () => {
100
- const expected = '.editor-styles-wrapper .my-container { gap: 0; }';
100
+ const expected = '.my-container { gap: 0; }';
101
101
 
102
102
  const result = getBlockGapCSS(
103
103
  '.my-container',
@@ -113,21 +113,19 @@ describe( 'getBlockGapCSS', () => {
113
113
  describe( 'appendSelectors', () => {
114
114
  it( 'should append a subselector without an appended selector', () => {
115
115
  expect( appendSelectors( '.original-selector' ) ).toBe(
116
- '.editor-styles-wrapper .original-selector'
116
+ '.original-selector'
117
117
  );
118
118
  } );
119
119
 
120
120
  it( 'should append a subselector to a single selector', () => {
121
121
  expect( appendSelectors( '.original-selector', '.appended' ) ).toBe(
122
- '.editor-styles-wrapper .original-selector .appended'
122
+ '.original-selector .appended'
123
123
  );
124
124
  } );
125
125
 
126
126
  it( 'should append a subselector to multiple selectors', () => {
127
127
  expect(
128
128
  appendSelectors( '.first-selector,.second-selector', '.appended' )
129
- ).toBe(
130
- '.editor-styles-wrapper .first-selector .appended,.editor-styles-wrapper .second-selector .appended'
131
- );
129
+ ).toBe( '.first-selector .appended,.second-selector .appended' );
132
130
  } );
133
131
  } );
@@ -17,19 +17,11 @@ import { LAYOUT_DEFINITIONS } from './definitions';
17
17
  * @return {string} - CSS selector.
18
18
  */
19
19
  export function appendSelectors( selectors, append = '' ) {
20
- // Ideally we shouldn't need the `.editor-styles-wrapper` increased specificity here
21
- // The problem though is that we have a `.editor-styles-wrapper p { margin: reset; }` style
22
- // it's used to reset the default margin added by wp-admin to paragraphs
23
- // so we need this to be higher speficity otherwise, it won't be applied to paragraphs inside containers
24
- // When the post editor is fully iframed, this extra classname could be removed.
25
-
26
20
  return selectors
27
21
  .split( ',' )
28
22
  .map(
29
23
  ( subselector ) =>
30
- `.editor-styles-wrapper ${ subselector }${
31
- append ? ` ${ append }` : ''
32
- }`
24
+ `${ subselector }${ append ? ` ${ append }` : '' }`
33
25
  )
34
26
  .join( ',' );
35
27
  }
@@ -38,6 +38,7 @@ import {
38
38
  reusableBlocksSelectKey,
39
39
  globalStylesDataKey,
40
40
  globalStylesLinksDataKey,
41
+ sectionRootClientIdKey,
41
42
  } from './store/private-keys';
42
43
  import { requiresWrapperOnCopy } from './components/writing-flow/utils';
43
44
  import { PrivateRichText } from './components/rich-text/';
@@ -47,6 +48,7 @@ import { PrivatePublishDateTimePicker } from './components/publish-date-time-pic
47
48
  import useSpacingSizes from './components/spacing-sizes-control/hooks/use-spacing-sizes';
48
49
  import useBlockDisplayTitle from './components/block-title/use-block-display-title';
49
50
  import TabbedSidebar from './components/tabbed-sidebar';
51
+ import { useBlockBindingsUtils } from './utils/block-bindings';
50
52
 
51
53
  /**
52
54
  * Private @wordpress/block-editor APIs.
@@ -92,4 +94,6 @@ lock( privateApis, {
92
94
  useBlockDisplayTitle,
93
95
  __unstableBlockStyleVariationOverridesWithConfig,
94
96
  setBackgroundStyleDefaults,
97
+ useBlockBindingsUtils,
98
+ sectionRootClientIdKey,
95
99
  } );
@@ -34,8 +34,6 @@ import {
34
34
  __experimentalUpdateSettings,
35
35
  privateRemoveBlocks,
36
36
  } from './private-actions';
37
- import { STORE_NAME } from './constants';
38
- import { unlock } from '../lock-unlock';
39
37
 
40
38
  /** @typedef {import('../components/use-on-block-drop/types').WPDropOperation} WPDropOperation */
41
39
 
@@ -1670,13 +1668,13 @@ export const setNavigationMode =
1670
1668
  */
1671
1669
  export const __unstableSetEditorMode =
1672
1670
  ( mode ) =>
1673
- ( { dispatch, select, registry } ) => {
1671
+ ( { dispatch, select } ) => {
1674
1672
  // When switching to zoom-out mode, we need to select the parent section
1675
1673
  if ( mode === 'zoom-out' ) {
1676
1674
  const firstSelectedClientId = select.getBlockSelectionStart();
1677
- const { sectionRootClientId } = unlock(
1678
- registry.select( STORE_NAME ).getSettings()
1679
- );
1675
+
1676
+ const sectionRootClientId = select.getSectionRootClientId();
1677
+
1680
1678
  if ( firstSelectedClientId ) {
1681
1679
  let sectionClientId;
1682
1680
 
@@ -367,6 +367,7 @@ export function expandBlock( clientId ) {
367
367
  export const modifyContentLockBlock =
368
368
  ( clientId ) =>
369
369
  ( { select, dispatch } ) => {
370
+ dispatch.selectBlock( clientId );
370
371
  dispatch.__unstableMarkNextChangeAsNotPersistent();
371
372
  dispatch.updateBlockAttributes( clientId, {
372
373
  templateLock: undefined,
@@ -2,3 +2,4 @@ export const globalStylesDataKey = Symbol( 'globalStylesDataKey' );
2
2
  export const globalStylesLinksDataKey = Symbol( 'globalStylesLinks' );
3
3
  export const selectBlockPatternsKey = Symbol( 'selectBlockPatternsKey' );
4
4
  export const reusableBlocksSelectKey = Symbol( 'reusableBlocksSelect' );
5
+ export const sectionRootClientIdKey = Symbol( 'sectionRootClientIdKey' );
@@ -20,6 +20,7 @@ import {
20
20
  checkAllowListRecursive,
21
21
  getAllPatternsDependants,
22
22
  getInsertBlockTypeDependants,
23
+ getGrammar,
23
24
  } from './utils';
24
25
  import { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';
25
26
  import { STORE_NAME } from './constants';
@@ -27,6 +28,7 @@ import { unlock } from '../lock-unlock';
27
28
  import {
28
29
  selectBlockPatternsKey,
29
30
  reusableBlocksSelectKey,
31
+ sectionRootClientIdKey,
30
32
  } from './private-keys';
31
33
 
32
34
  export { getBlockSettings } from './get-block-settings';
@@ -291,19 +293,18 @@ export const getInserterMediaCategories = createSelector(
291
293
  export const hasAllowedPatterns = createRegistrySelector( ( select ) =>
292
294
  createSelector(
293
295
  ( state, rootClientId = null ) => {
294
- const { getAllPatterns, __experimentalGetParsedPattern } = unlock(
295
- select( STORE_NAME )
296
- );
296
+ const { getAllPatterns } = unlock( select( STORE_NAME ) );
297
297
  const patterns = getAllPatterns();
298
298
  const { allowedBlockTypes } = getSettings( state );
299
- return patterns.some( ( { name, inserter = true } ) => {
299
+ return patterns.some( ( pattern ) => {
300
+ const { inserter = true } = pattern;
300
301
  if ( ! inserter ) {
301
302
  return false;
302
303
  }
303
- const { blocks } = __experimentalGetParsedPattern( name );
304
+ const grammar = getGrammar( pattern );
304
305
  return (
305
- checkAllowListRecursive( blocks, allowedBlockTypes ) &&
306
- blocks.every( ( { name: blockName } ) =>
306
+ checkAllowListRecursive( grammar, allowedBlockTypes ) &&
307
+ grammar.every( ( { name: blockName } ) =>
307
308
  canInsertBlockType( state, blockName, rootClientId )
308
309
  )
309
310
  );
@@ -511,3 +512,39 @@ export function getTemporarilyEditingAsBlocks( state ) {
511
512
  export function getTemporarilyEditingFocusModeToRevert( state ) {
512
513
  return state.temporarilyEditingFocusModeRevert;
513
514
  }
515
+
516
+ /**
517
+ * Returns the style attributes of multiple blocks.
518
+ *
519
+ * @param {Object} state Global application state.
520
+ * @param {string[]} clientIds An array of block client IDs.
521
+ *
522
+ * @return {Object} An object where keys are client IDs and values are the corresponding block styles or undefined.
523
+ */
524
+ export const getBlockStyles = createSelector(
525
+ ( state, clientIds ) =>
526
+ clientIds.reduce( ( styles, clientId ) => {
527
+ styles[ clientId ] = state.blocks.attributes.get( clientId )?.style;
528
+ return styles;
529
+ }, {} ),
530
+ ( state, clientIds ) => [
531
+ ...clientIds.map(
532
+ ( clientId ) => state.blocks.attributes.get( clientId )?.style
533
+ ),
534
+ ]
535
+ );
536
+
537
+ /**
538
+ * Returns whether zoom out mode is enabled.
539
+ *
540
+ * @param {Object} state Editor state.
541
+ *
542
+ * @return {boolean} Is zoom out mode enabled.
543
+ */
544
+ export function isZoomOutMode( state ) {
545
+ return state.editorMode === 'zoom-out';
546
+ }
547
+
548
+ export function getSectionRootClientId( state ) {
549
+ return state.settings?.[ sectionRootClientIdKey ];
550
+ }
@@ -1624,6 +1624,8 @@ export function insertionPoint( state = null, action ) {
1624
1624
  }
1625
1625
 
1626
1626
  case 'HIDE_INSERTION_POINT':
1627
+ case 'CLEAR_SELECTED_BLOCK':
1628
+ case 'SELECT_BLOCK':
1627
1629
  return null;
1628
1630
  }
1629
1631
 
@@ -7,7 +7,6 @@ import {
7
7
  getBlockVariations,
8
8
  hasBlockSupport,
9
9
  getPossibleBlockTransformations,
10
- parse,
11
10
  switchToBlockType,
12
11
  store as blocksStore,
13
12
  } from '@wordpress/blocks';
@@ -27,6 +26,8 @@ import {
27
26
  checkAllowList,
28
27
  getAllPatternsDependants,
29
28
  getInsertBlockTypeDependants,
29
+ getParsedPattern,
30
+ getGrammar,
30
31
  } from './utils';
31
32
  import { orderBy } from '../utils/sorting';
32
33
  import { STORE_NAME } from './constants';
@@ -36,6 +37,7 @@ import {
36
37
  getContentLockingParent,
37
38
  getTemporarilyEditingAsBlocks,
38
39
  getTemporarilyEditingFocusModeToRevert,
40
+ getSectionRootClientId,
39
41
  } from './private-selectors';
40
42
 
41
43
  /**
@@ -1752,7 +1754,7 @@ export function canRemoveBlocks( state, clientIds ) {
1752
1754
  * @param {Object} state Editor state.
1753
1755
  * @param {string} clientId The block client Id.
1754
1756
  *
1755
- * @return {boolean | undefined} Whether the given block is allowed to be moved.
1757
+ * @return {boolean} Whether the given block is allowed to be moved.
1756
1758
  */
1757
1759
  export function canMoveBlock( state, clientId ) {
1758
1760
  const attributes = getBlockAttributes( state, clientId );
@@ -2057,9 +2059,8 @@ export const getInserterItems = createRegistrySelector( ( select ) =>
2057
2059
  if ( ! item.rootClientId ) {
2058
2060
  let sectionRootClientId;
2059
2061
  try {
2060
- sectionRootClientId = unlock(
2061
- getSettings( state )
2062
- ).sectionRootClientId;
2062
+ sectionRootClientId =
2063
+ getSectionRootClientId( state );
2063
2064
  } catch ( e ) {}
2064
2065
  if (
2065
2066
  sectionRootClientId &&
@@ -2349,40 +2350,12 @@ export function __experimentalGetDirectInsertBlock(
2349
2350
  }
2350
2351
 
2351
2352
  export const __experimentalGetParsedPattern = createRegistrySelector(
2352
- ( select ) =>
2353
- createSelector(
2354
- ( state, patternName ) => {
2355
- const pattern = unlock( select( STORE_NAME ) ).getPatternBySlug(
2356
- patternName
2357
- );
2358
- if ( ! pattern ) {
2359
- return null;
2360
- }
2361
- const blocks = parse( pattern.content, {
2362
- __unstableSkipMigrationLogs: true,
2363
- } );
2364
- if ( blocks.length === 1 ) {
2365
- blocks[ 0 ].attributes = {
2366
- ...blocks[ 0 ].attributes,
2367
- metadata: {
2368
- ...( blocks[ 0 ].attributes.metadata || {} ),
2369
- categories: pattern.categories,
2370
- patternName: pattern.name,
2371
- name:
2372
- blocks[ 0 ].attributes.metadata?.name ||
2373
- pattern.title,
2374
- },
2375
- };
2376
- }
2377
- return {
2378
- ...pattern,
2379
- blocks,
2380
- };
2381
- },
2382
- ( state, patternName ) => [
2383
- unlock( select( STORE_NAME ) ).getPatternBySlug( patternName ),
2384
- ]
2385
- )
2353
+ ( select ) => ( state, patternName ) => {
2354
+ const pattern = unlock( select( STORE_NAME ) ).getPatternBySlug(
2355
+ patternName
2356
+ );
2357
+ return pattern ? getParsedPattern( pattern ) : null;
2358
+ }
2386
2359
  );
2387
2360
 
2388
2361
  const getAllowedPatternsDependants = ( select ) => ( state, rootClientId ) => [
@@ -2401,23 +2374,30 @@ const getAllowedPatternsDependants = ( select ) => ( state, rootClientId ) => [
2401
2374
  export const __experimentalGetAllowedPatterns = createRegistrySelector(
2402
2375
  ( select ) => {
2403
2376
  return createSelector( ( state, rootClientId = null ) => {
2404
- const {
2405
- getAllPatterns,
2406
- __experimentalGetParsedPattern: getParsedPattern,
2407
- } = unlock( select( STORE_NAME ) );
2377
+ const { getAllPatterns } = unlock( select( STORE_NAME ) );
2408
2378
  const patterns = getAllPatterns();
2409
2379
  const { allowedBlockTypes } = getSettings( state );
2410
-
2411
2380
  const parsedPatterns = patterns
2412
2381
  .filter( ( { inserter = true } ) => !! inserter )
2413
- .map( ( { name } ) => getParsedPattern( name ) );
2382
+ .map( ( pattern ) => {
2383
+ return {
2384
+ ...pattern,
2385
+ get blocks() {
2386
+ return getParsedPattern( pattern ).blocks;
2387
+ },
2388
+ };
2389
+ } );
2390
+
2414
2391
  const availableParsedPatterns = parsedPatterns.filter(
2415
- ( { blocks } ) =>
2416
- checkAllowListRecursive( blocks, allowedBlockTypes )
2392
+ ( pattern ) =>
2393
+ checkAllowListRecursive(
2394
+ getGrammar( pattern ),
2395
+ allowedBlockTypes
2396
+ )
2417
2397
  );
2418
2398
  const patternsAllowed = availableParsedPatterns.filter(
2419
- ( { blocks } ) =>
2420
- blocks.every( ( { name } ) =>
2399
+ ( pattern ) =>
2400
+ getGrammar( pattern ).every( ( { blockName: name } ) =>
2421
2401
  canInsertBlockType( state, name, rootClientId )
2422
2402
  )
2423
2403
  );
@@ -2858,7 +2838,7 @@ export function __unstableHasActiveBlockOverlayActive( state, clientId ) {
2858
2838
 
2859
2839
  // In zoom-out mode, the block overlay is always active for section level blocks.
2860
2840
  if ( editorMode === 'zoom-out' ) {
2861
- const { sectionRootClientId } = unlock( getSettings( state ) );
2841
+ const sectionRootClientId = getSectionRootClientId( state );
2862
2842
  if ( sectionRootClientId ) {
2863
2843
  const sectionClientIds = getBlockOrder(
2864
2844
  state,
@@ -2951,7 +2931,8 @@ export const getBlockEditingMode = createRegistrySelector(
2951
2931
  // sections.
2952
2932
  const editorMode = __unstableGetEditorMode( state );
2953
2933
  if ( editorMode === 'zoom-out' ) {
2954
- const { sectionRootClientId } = unlock( getSettings( state ) );
2934
+ const sectionRootClientId = getSectionRootClientId( state );
2935
+
2955
2936
  if ( clientId === '' /* ROOT_CONTAINER_CLIENT_ID */ ) {
2956
2937
  return sectionRootClientId ? 'disabled' : 'contentOnly';
2957
2938
  }
@@ -9,6 +9,7 @@ import {
9
9
  getEnabledBlockParents,
10
10
  getExpandedBlock,
11
11
  isDragging,
12
+ getBlockStyles,
12
13
  } from '../private-selectors';
13
14
  import { getBlockEditingMode } from '../selectors';
14
15
 
@@ -509,4 +510,92 @@ describe( 'private selectors', () => {
509
510
  );
510
511
  } );
511
512
  } );
513
+
514
+ describe( 'getBlockStyles', () => {
515
+ it( 'should return an empty object when no client IDs are provided', () => {
516
+ const state = {
517
+ blocks: {
518
+ attributes: new Map(),
519
+ },
520
+ };
521
+ const result = getBlockStyles( state, [] );
522
+ expect( result ).toEqual( {} );
523
+ } );
524
+
525
+ it( 'should return styles for a single block', () => {
526
+ const state = {
527
+ blocks: {
528
+ attributes: new Map( [
529
+ [ 'block-1', { style: { color: 'red' } } ],
530
+ ] ),
531
+ },
532
+ };
533
+ const result = getBlockStyles( state, [ 'block-1' ] );
534
+ expect( result ).toEqual( {
535
+ 'block-1': { color: 'red' },
536
+ } );
537
+ } );
538
+
539
+ it( 'should return styles for multiple blocks', () => {
540
+ const state = {
541
+ blocks: {
542
+ attributes: new Map( [
543
+ [ 'block-1', { style: { color: 'red' } } ],
544
+ [ 'block-2', { style: { fontSize: '16px' } } ],
545
+ [ 'block-3', { style: { margin: '10px' } } ],
546
+ ] ),
547
+ },
548
+ };
549
+ const result = getBlockStyles( state, [
550
+ 'block-1',
551
+ 'block-2',
552
+ 'block-3',
553
+ ] );
554
+ expect( result ).toEqual( {
555
+ 'block-1': { color: 'red' },
556
+ 'block-2': { fontSize: '16px' },
557
+ 'block-3': { margin: '10px' },
558
+ } );
559
+ } );
560
+
561
+ it( 'should return undefined for blocks without styles', () => {
562
+ const state = {
563
+ blocks: {
564
+ attributes: new Map( [
565
+ [ 'block-1', { style: { color: 'red' } } ],
566
+ [ 'block-2', {} ],
567
+ [ 'block-3', { style: { margin: '10px' } } ],
568
+ ] ),
569
+ },
570
+ };
571
+ const result = getBlockStyles( state, [
572
+ 'block-1',
573
+ 'block-2',
574
+ 'block-3',
575
+ ] );
576
+ expect( result ).toEqual( {
577
+ 'block-1': { color: 'red' },
578
+ 'block-2': undefined,
579
+ 'block-3': { margin: '10px' },
580
+ } );
581
+ } );
582
+
583
+ it( 'should return undefined for non-existent blocks', () => {
584
+ const state = {
585
+ blocks: {
586
+ attributes: new Map( [
587
+ [ 'block-1', { style: { color: 'red' } } ],
588
+ ] ),
589
+ },
590
+ };
591
+ const result = getBlockStyles( state, [
592
+ 'block-1',
593
+ 'non-existent-block',
594
+ ] );
595
+ expect( result ).toEqual( {
596
+ 'block-1': { color: 'red' },
597
+ 'non-existent-block': undefined,
598
+ } );
599
+ } );
600
+ } );
512
601
  } );