@wordpress/block-editor 14.1.0 → 14.2.1-next.1f6eadc42.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 (705) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -10
  3. package/build/components/block-alignment-matrix-control/index.js +2 -2
  4. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  5. package/build/components/block-breadcrumb/index.js +2 -2
  6. package/build/components/block-breadcrumb/index.js.map +1 -1
  7. package/build/components/block-canvas/index.js +8 -1
  8. package/build/components/block-canvas/index.js.map +1 -1
  9. package/build/components/block-compare/block-view.js +1 -0
  10. package/build/components/block-compare/block-view.js.map +1 -1
  11. package/build/components/block-draggable/index.js +4 -4
  12. package/build/components/block-draggable/index.js.map +1 -1
  13. package/build/components/block-draggable/use-scroll-when-dragging.js +25 -25
  14. package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  15. package/build/components/block-edit/multiple-usage-warning.js +2 -0
  16. package/build/components/block-edit/multiple-usage-warning.js.map +1 -1
  17. package/build/components/block-inspector/index.js +27 -11
  18. package/build/components/block-inspector/index.js.map +1 -1
  19. package/build/components/block-list/block-invalid-warning.js +3 -2
  20. package/build/components/block-list/block-invalid-warning.js.map +1 -1
  21. package/build/components/block-list/block.js +5 -1
  22. package/build/components/block-list/block.js.map +1 -1
  23. package/build/components/block-list/index.js +14 -3
  24. package/build/components/block-list/index.js.map +1 -1
  25. package/build/components/block-list/use-block-props/index.js +5 -1
  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 +53 -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/zoom-out-separator.js +98 -0
  32. package/build/components/block-list/zoom-out-separator.js.map +1 -0
  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 +1 -0
  36. package/build/components/block-mover/button.js.map +1 -1
  37. package/build/components/block-mover/index.js +1 -0
  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 +2 -10
  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 +12 -20
  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-controls/index.js +4 -0
  54. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  55. package/build/components/block-switcher/index.js +30 -19
  56. package/build/components/block-switcher/index.js.map +1 -1
  57. package/build/components/block-switcher/pattern-transformations-menu.js +2 -10
  58. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  59. package/build/components/block-toolbar/index.js +19 -12
  60. package/build/components/block-toolbar/index.js.map +1 -1
  61. package/build/components/block-toolbar/shuffle.js +6 -2
  62. package/build/components/block-toolbar/shuffle.js.map +1 -1
  63. package/build/components/block-tools/block-selection-button.js +8 -2
  64. package/build/components/block-tools/block-selection-button.js.map +1 -1
  65. package/build/components/block-tools/block-toolbar-popover.js +10 -6
  66. package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
  67. package/build/components/block-tools/index.js +1 -1
  68. package/build/components/block-tools/index.js.map +1 -1
  69. package/build/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  70. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  71. package/build/components/block-tools/zoom-out-mode-inserters.js +7 -21
  72. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  73. package/build/components/block-tools/zoom-out-popover.js +3 -4
  74. package/build/components/block-tools/zoom-out-popover.js.map +1 -1
  75. package/build/components/block-tools/zoom-out-toolbar.js +26 -7
  76. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  77. package/build/components/block-variation-picker/index.js +4 -1
  78. package/build/components/block-variation-picker/index.js.map +1 -1
  79. package/build/components/block-variation-transforms/index.js +4 -1
  80. package/build/components/block-variation-transforms/index.js.map +1 -1
  81. package/build/components/button-block-appender/index.js +20 -23
  82. package/build/components/button-block-appender/index.js.map +1 -1
  83. package/build/components/colors-gradients/dropdown.js +4 -1
  84. package/build/components/colors-gradients/dropdown.js.map +1 -1
  85. package/build/components/content-lock/index.js +13 -0
  86. package/build/components/content-lock/index.js.map +1 -0
  87. package/build/components/content-lock/modify-content-lock-menu-item.js +64 -0
  88. package/build/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
  89. package/build/components/editor-styles/index.js +4 -3
  90. package/build/components/editor-styles/index.js.map +1 -1
  91. package/build/components/global-styles/background-panel.js +8 -12
  92. package/build/components/global-styles/background-panel.js.map +1 -1
  93. package/build/components/global-styles/color-panel.js +8 -5
  94. package/build/components/global-styles/color-panel.js.map +1 -1
  95. package/build/components/global-styles/color-panel.native.js +1 -1
  96. package/build/components/global-styles/color-panel.native.js.map +1 -1
  97. package/build/components/global-styles/dimensions-panel.js +34 -37
  98. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  99. package/build/components/global-styles/filters-panel.js +4 -1
  100. package/build/components/global-styles/filters-panel.js.map +1 -1
  101. package/build/components/global-styles/shadow-panel-components.js +14 -17
  102. package/build/components/global-styles/shadow-panel-components.js.map +1 -1
  103. package/build/components/global-styles/typography-utils.js +17 -6
  104. package/build/components/global-styles/typography-utils.js.map +1 -1
  105. package/build/components/global-styles/utils.js +4 -6
  106. package/build/components/global-styles/utils.js.map +1 -1
  107. package/build/components/grid/grid-item-movers.js +2 -2
  108. package/build/components/grid/grid-item-movers.js.map +1 -1
  109. package/build/components/grid/grid-item-resizer.js +2 -2
  110. package/build/components/grid/grid-item-resizer.js.map +1 -1
  111. package/build/components/iframe/get-compatibility-styles.js +1 -1
  112. package/build/components/iframe/get-compatibility-styles.js.map +1 -1
  113. package/build/components/iframe/index.js +5 -5
  114. package/build/components/iframe/index.js.map +1 -1
  115. package/build/components/inner-blocks/index.js +2 -4
  116. package/build/components/inner-blocks/index.js.map +1 -1
  117. package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  118. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  119. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  120. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  121. package/build/components/inserter/block-patterns-tab/index.js +4 -1
  122. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  123. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +23 -13
  124. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  125. package/build/components/inserter/index.js +4 -11
  126. package/build/components/inserter/index.js.map +1 -1
  127. package/build/components/inserter/library.js +2 -4
  128. package/build/components/inserter/library.js.map +1 -1
  129. package/build/components/inserter/media-tab/hooks.js +3 -3
  130. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  131. package/build/components/inserter/media-tab/media-list.js +1 -8
  132. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  133. package/build/components/inserter/media-tab/media-preview.js +9 -7
  134. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  135. package/build/components/inserter/media-tab/media-tab.js +4 -1
  136. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  137. package/build/components/inserter/menu.js +7 -24
  138. package/build/components/inserter/menu.js.map +1 -1
  139. package/build/components/inserter/quick-inserter.js +4 -5
  140. package/build/components/inserter/quick-inserter.js.map +1 -1
  141. package/build/components/inserter-list-item/index.js +4 -4
  142. package/build/components/inserter-list-item/index.js.map +1 -1
  143. package/build/components/inserter-listbox/index.js +3 -13
  144. package/build/components/inserter-listbox/index.js.map +1 -1
  145. package/build/components/inserter-listbox/item.js +6 -11
  146. package/build/components/inserter-listbox/item.js.map +1 -1
  147. package/build/components/inserter-listbox/row.js +1 -9
  148. package/build/components/inserter-listbox/row.js.map +1 -1
  149. package/build/components/inspector-controls/groups.js +2 -0
  150. package/build/components/inspector-controls/groups.js.map +1 -1
  151. package/build/components/inspector-controls-tabs/index.js +4 -1
  152. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  153. package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
  154. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  155. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  156. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  157. package/build/components/inspector-popover-header/index.js +8 -2
  158. package/build/components/inspector-popover-header/index.js.map +1 -1
  159. package/build/components/letter-spacing-control/index.js +7 -4
  160. package/build/components/letter-spacing-control/index.js.map +1 -1
  161. package/build/components/link-control/index.js +19 -10
  162. package/build/components/link-control/index.js.map +1 -1
  163. package/build/components/link-control/settings-drawer.js +4 -1
  164. package/build/components/link-control/settings-drawer.js.map +1 -1
  165. package/build/components/list-view/block-select-button.js +4 -1
  166. package/build/components/list-view/block-select-button.js.map +1 -1
  167. package/build/components/list-view/index.js +3 -7
  168. package/build/components/list-view/index.js.map +1 -1
  169. package/build/components/media-placeholder/index.js +32 -11
  170. package/build/components/media-placeholder/index.js.map +1 -1
  171. package/build/components/media-replace-flow/index.js +8 -1
  172. package/build/components/media-replace-flow/index.js.map +1 -1
  173. package/build/components/provider/use-block-sync.js +19 -19
  174. package/build/components/provider/use-block-sync.js.map +1 -1
  175. package/build/components/rich-text/event-listeners/paste-handler.js +12 -1
  176. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  177. package/build/components/rich-text/index.js +38 -30
  178. package/build/components/rich-text/index.js.map +1 -1
  179. package/build/components/rich-text/use-mark-persistent.js +5 -5
  180. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  181. package/build/components/skip-to-selected-block/index.js +4 -1
  182. package/build/components/skip-to-selected-block/index.js.map +1 -1
  183. package/build/components/spacing-sizes-control/index.js +8 -9
  184. package/build/components/spacing-sizes-control/index.js.map +1 -1
  185. package/build/components/spacing-sizes-control/linked-button.js +35 -0
  186. package/build/components/spacing-sizes-control/linked-button.js.map +1 -0
  187. package/build/components/spacing-sizes-control/utils.js +4 -15
  188. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  189. package/build/components/tool-selector/index.js +4 -1
  190. package/build/components/tool-selector/index.js.map +1 -1
  191. package/build/components/url-input/button.js +12 -3
  192. package/build/components/url-input/button.js.map +1 -1
  193. package/build/components/url-input/index.js +4 -1
  194. package/build/components/url-input/index.js.map +1 -1
  195. package/build/components/use-block-drop-zone/index.js +31 -7
  196. package/build/components/use-block-drop-zone/index.js.map +1 -1
  197. package/build/components/writing-flow/index.js +2 -1
  198. package/build/components/writing-flow/index.js.map +1 -1
  199. package/build/components/writing-flow/use-arrow-nav.js +4 -1
  200. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  201. package/build/components/writing-flow/use-event-redirect.js +66 -0
  202. package/build/components/writing-flow/use-event-redirect.js.map +1 -0
  203. package/build/components/writing-flow/use-input.js +31 -1
  204. package/build/components/writing-flow/use-input.js.map +1 -1
  205. package/build/components/writing-flow/use-select-all.js +14 -1
  206. package/build/components/writing-flow/use-select-all.js.map +1 -1
  207. package/build/components/writing-flow/use-selection-observer.js +20 -6
  208. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  209. package/build/components/writing-flow/use-tab-nav.js +4 -4
  210. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  211. package/build/components/writing-flow/utils.js +27 -0
  212. package/build/components/writing-flow/utils.js.map +1 -1
  213. package/build/hooks/block-bindings.js +33 -29
  214. package/build/hooks/block-bindings.js.map +1 -1
  215. package/build/hooks/content-lock-ui.js +8 -26
  216. package/build/hooks/content-lock-ui.js.map +1 -1
  217. package/build/hooks/duotone.js +0 -4
  218. package/build/hooks/duotone.js.map +1 -1
  219. package/build/hooks/layout.js +4 -2
  220. package/build/hooks/layout.js.map +1 -1
  221. package/build/hooks/spacing-visualizer.js +3 -3
  222. package/build/hooks/spacing-visualizer.js.map +1 -1
  223. package/build/hooks/style.js +1 -5
  224. package/build/hooks/style.js.map +1 -1
  225. package/build/hooks/use-bindings-attributes.js +19 -20
  226. package/build/hooks/use-bindings-attributes.js.map +1 -1
  227. package/build/hooks/use-zoom-out.js +7 -7
  228. package/build/hooks/use-zoom-out.js.map +1 -1
  229. package/build/layouts/constrained.js +41 -42
  230. package/build/layouts/constrained.js.map +1 -1
  231. package/build/layouts/flex.js +4 -1
  232. package/build/layouts/flex.js.map +1 -1
  233. package/build/layouts/grid.js +19 -16
  234. package/build/layouts/grid.js.map +1 -1
  235. package/build/layouts/utils.js +1 -7
  236. package/build/layouts/utils.js.map +1 -1
  237. package/build/private-apis.js +2 -3
  238. package/build/private-apis.js.map +1 -1
  239. package/build/store/actions.js +2 -7
  240. package/build/store/actions.js.map +1 -1
  241. package/build/store/private-actions.js +1 -0
  242. package/build/store/private-actions.js.map +1 -1
  243. package/build/store/private-keys.js +2 -1
  244. package/build/store/private-keys.js.map +1 -1
  245. package/build/store/private-selectors.js +16 -18
  246. package/build/store/private-selectors.js.map +1 -1
  247. package/build/store/reducer.js +1 -10
  248. package/build/store/reducer.js.map +1 -1
  249. package/build/store/selectors.js +19 -43
  250. package/build/store/selectors.js.map +1 -1
  251. package/build/store/utils.js +48 -0
  252. package/build/store/utils.js.map +1 -1
  253. package/build/utils/block-bindings.js +16 -11
  254. package/build/utils/block-bindings.js.map +1 -1
  255. package/build/utils/dom.js +101 -0
  256. package/build/utils/dom.js.map +1 -1
  257. package/build/utils/get-font-styles-and-weights.js +4 -4
  258. package/build/utils/get-font-styles-and-weights.js.map +1 -1
  259. package/build/utils/transform-styles/index.js +120 -16
  260. package/build/utils/transform-styles/index.js.map +1 -1
  261. package/build-module/components/block-alignment-matrix-control/index.js +1 -1
  262. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  263. package/build-module/components/block-breadcrumb/index.js +2 -2
  264. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  265. package/build-module/components/block-canvas/index.js +9 -1
  266. package/build-module/components/block-canvas/index.js.map +1 -1
  267. package/build-module/components/block-compare/block-view.js +1 -0
  268. package/build-module/components/block-compare/block-view.js.map +1 -1
  269. package/build-module/components/block-draggable/index.js +4 -4
  270. package/build-module/components/block-draggable/index.js.map +1 -1
  271. package/build-module/components/block-draggable/use-scroll-when-dragging.js +25 -25
  272. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  273. package/build-module/components/block-edit/multiple-usage-warning.js +2 -0
  274. package/build-module/components/block-edit/multiple-usage-warning.js.map +1 -1
  275. package/build-module/components/block-inspector/index.js +27 -11
  276. package/build-module/components/block-inspector/index.js.map +1 -1
  277. package/build-module/components/block-list/block-invalid-warning.js +3 -2
  278. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  279. package/build-module/components/block-list/block.js +5 -1
  280. package/build-module/components/block-list/block.js.map +1 -1
  281. package/build-module/components/block-list/index.js +14 -3
  282. package/build-module/components/block-list/index.js.map +1 -1
  283. package/build-module/components/block-list/use-block-props/index.js +5 -1
  284. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  285. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  286. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  287. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +47 -0
  288. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
  289. package/build-module/components/block-list/zoom-out-separator.js +90 -0
  290. package/build-module/components/block-list/zoom-out-separator.js.map +1 -0
  291. package/build-module/components/block-lock/toolbar.js +3 -3
  292. package/build-module/components/block-lock/toolbar.js.map +1 -1
  293. package/build-module/components/block-mover/button.js +1 -0
  294. package/build-module/components/block-mover/button.js.map +1 -1
  295. package/build-module/components/block-mover/index.js +1 -0
  296. package/build-module/components/block-mover/index.js.map +1 -1
  297. package/build-module/components/block-navigation/dropdown.js +4 -1
  298. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  299. package/build-module/components/block-pattern-setup/index.js +2 -10
  300. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  301. package/build-module/components/block-pattern-setup/setup-toolbar.js +23 -8
  302. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  303. package/build-module/components/block-patterns-list/index.js +12 -20
  304. package/build-module/components/block-patterns-list/index.js.map +1 -1
  305. package/build-module/components/block-patterns-paging/index.js +12 -3
  306. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  307. package/build-module/components/block-popover/index.js +2 -15
  308. package/build-module/components/block-popover/index.js.map +1 -1
  309. package/build-module/components/block-quick-navigation/index.js +4 -1
  310. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  311. package/build-module/components/block-settings-menu-controls/index.js +4 -0
  312. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  313. package/build-module/components/block-switcher/index.js +30 -19
  314. package/build-module/components/block-switcher/index.js.map +1 -1
  315. package/build-module/components/block-switcher/pattern-transformations-menu.js +2 -10
  316. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  317. package/build-module/components/block-toolbar/index.js +19 -12
  318. package/build-module/components/block-toolbar/index.js.map +1 -1
  319. package/build-module/components/block-toolbar/shuffle.js +6 -2
  320. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  321. package/build-module/components/block-tools/block-selection-button.js +8 -2
  322. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  323. package/build-module/components/block-tools/block-toolbar-popover.js +10 -6
  324. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  325. package/build-module/components/block-tools/index.js +1 -1
  326. package/build-module/components/block-tools/index.js.map +1 -1
  327. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  328. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  329. package/build-module/components/block-tools/zoom-out-mode-inserters.js +7 -22
  330. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  331. package/build-module/components/block-tools/zoom-out-popover.js +3 -4
  332. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
  333. package/build-module/components/block-tools/zoom-out-toolbar.js +27 -8
  334. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  335. package/build-module/components/block-variation-picker/index.js +4 -1
  336. package/build-module/components/block-variation-picker/index.js.map +1 -1
  337. package/build-module/components/block-variation-transforms/index.js +4 -1
  338. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  339. package/build-module/components/button-block-appender/index.js +22 -26
  340. package/build-module/components/button-block-appender/index.js.map +1 -1
  341. package/build-module/components/colors-gradients/dropdown.js +4 -1
  342. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  343. package/build-module/components/content-lock/index.js +2 -0
  344. package/build-module/components/content-lock/index.js.map +1 -0
  345. package/build-module/components/content-lock/modify-content-lock-menu-item.js +57 -0
  346. package/build-module/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
  347. package/build-module/components/editor-styles/index.js +4 -3
  348. package/build-module/components/editor-styles/index.js.map +1 -1
  349. package/build-module/components/global-styles/background-panel.js +8 -12
  350. package/build-module/components/global-styles/background-panel.js.map +1 -1
  351. package/build-module/components/global-styles/color-panel.js +7 -4
  352. package/build-module/components/global-styles/color-panel.js.map +1 -1
  353. package/build-module/components/global-styles/color-panel.native.js +2 -2
  354. package/build-module/components/global-styles/color-panel.native.js.map +1 -1
  355. package/build-module/components/global-styles/dimensions-panel.js +36 -39
  356. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  357. package/build-module/components/global-styles/filters-panel.js +4 -1
  358. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  359. package/build-module/components/global-styles/shadow-panel-components.js +14 -17
  360. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  361. package/build-module/components/global-styles/typography-utils.js +17 -6
  362. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  363. package/build-module/components/global-styles/utils.js +4 -6
  364. package/build-module/components/global-styles/utils.js.map +1 -1
  365. package/build-module/components/grid/grid-item-movers.js +3 -3
  366. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  367. package/build-module/components/grid/grid-item-resizer.js +2 -2
  368. package/build-module/components/grid/grid-item-resizer.js.map +1 -1
  369. package/build-module/components/iframe/get-compatibility-styles.js +1 -1
  370. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -1
  371. package/build-module/components/iframe/index.js +5 -5
  372. package/build-module/components/iframe/index.js.map +1 -1
  373. package/build-module/components/inner-blocks/index.js +2 -4
  374. package/build-module/components/inner-blocks/index.js.map +1 -1
  375. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  376. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  377. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  378. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  379. package/build-module/components/inserter/block-patterns-tab/index.js +4 -1
  380. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  381. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +23 -13
  382. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  383. package/build-module/components/inserter/index.js +4 -11
  384. package/build-module/components/inserter/index.js.map +1 -1
  385. package/build-module/components/inserter/library.js +2 -4
  386. package/build-module/components/inserter/library.js.map +1 -1
  387. package/build-module/components/inserter/media-tab/hooks.js +3 -3
  388. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  389. package/build-module/components/inserter/media-tab/media-list.js +1 -8
  390. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  391. package/build-module/components/inserter/media-tab/media-preview.js +10 -8
  392. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  393. package/build-module/components/inserter/media-tab/media-tab.js +4 -1
  394. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  395. package/build-module/components/inserter/menu.js +7 -24
  396. package/build-module/components/inserter/menu.js.map +1 -1
  397. package/build-module/components/inserter/quick-inserter.js +5 -6
  398. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  399. package/build-module/components/inserter-list-item/index.js +4 -4
  400. package/build-module/components/inserter-list-item/index.js.map +1 -1
  401. package/build-module/components/inserter-listbox/index.js +3 -11
  402. package/build-module/components/inserter-listbox/index.js.map +1 -1
  403. package/build-module/components/inserter-listbox/item.js +7 -12
  404. package/build-module/components/inserter-listbox/item.js.map +1 -1
  405. package/build-module/components/inserter-listbox/row.js +2 -10
  406. package/build-module/components/inserter-listbox/row.js.map +1 -1
  407. package/build-module/components/inspector-controls/groups.js +2 -0
  408. package/build-module/components/inspector-controls/groups.js.map +1 -1
  409. package/build-module/components/inspector-controls-tabs/index.js +4 -1
  410. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  411. package/build-module/components/inspector-controls-tabs/settings-tab.js +3 -1
  412. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  413. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  414. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  415. package/build-module/components/inspector-popover-header/index.js +8 -2
  416. package/build-module/components/inspector-popover-header/index.js.map +1 -1
  417. package/build-module/components/letter-spacing-control/index.js +7 -4
  418. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  419. package/build-module/components/link-control/index.js +19 -10
  420. package/build-module/components/link-control/index.js.map +1 -1
  421. package/build-module/components/link-control/settings-drawer.js +4 -1
  422. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  423. package/build-module/components/list-view/block-select-button.js +4 -1
  424. package/build-module/components/list-view/block-select-button.js.map +1 -1
  425. package/build-module/components/list-view/index.js +3 -7
  426. package/build-module/components/list-view/index.js.map +1 -1
  427. package/build-module/components/media-placeholder/index.js +32 -11
  428. package/build-module/components/media-placeholder/index.js.map +1 -1
  429. package/build-module/components/media-replace-flow/index.js +8 -1
  430. package/build-module/components/media-replace-flow/index.js.map +1 -1
  431. package/build-module/components/provider/use-block-sync.js +19 -19
  432. package/build-module/components/provider/use-block-sync.js.map +1 -1
  433. package/build-module/components/rich-text/event-listeners/paste-handler.js +12 -1
  434. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  435. package/build-module/components/rich-text/index.js +39 -31
  436. package/build-module/components/rich-text/index.js.map +1 -1
  437. package/build-module/components/rich-text/use-mark-persistent.js +5 -5
  438. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  439. package/build-module/components/skip-to-selected-block/index.js +4 -1
  440. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  441. package/build-module/components/spacing-sizes-control/index.js +9 -10
  442. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  443. package/build-module/components/spacing-sizes-control/linked-button.js +28 -0
  444. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -0
  445. package/build-module/components/spacing-sizes-control/utils.js +4 -15
  446. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  447. package/build-module/components/tool-selector/index.js +4 -1
  448. package/build-module/components/tool-selector/index.js.map +1 -1
  449. package/build-module/components/url-input/button.js +12 -3
  450. package/build-module/components/url-input/button.js.map +1 -1
  451. package/build-module/components/url-input/index.js +4 -1
  452. package/build-module/components/url-input/index.js.map +1 -1
  453. package/build-module/components/use-block-drop-zone/index.js +31 -7
  454. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  455. package/build-module/components/writing-flow/index.js +2 -1
  456. package/build-module/components/writing-flow/index.js.map +1 -1
  457. package/build-module/components/writing-flow/use-arrow-nav.js +4 -1
  458. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  459. package/build-module/components/writing-flow/use-event-redirect.js +60 -0
  460. package/build-module/components/writing-flow/use-event-redirect.js.map +1 -0
  461. package/build-module/components/writing-flow/use-input.js +31 -1
  462. package/build-module/components/writing-flow/use-input.js.map +1 -1
  463. package/build-module/components/writing-flow/use-select-all.js +14 -1
  464. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  465. package/build-module/components/writing-flow/use-selection-observer.js +16 -2
  466. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  467. package/build-module/components/writing-flow/use-tab-nav.js +4 -4
  468. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  469. package/build-module/components/writing-flow/utils.js +26 -0
  470. package/build-module/components/writing-flow/utils.js.map +1 -1
  471. package/build-module/hooks/block-bindings.js +35 -31
  472. package/build-module/hooks/block-bindings.js.map +1 -1
  473. package/build-module/hooks/content-lock-ui.js +10 -30
  474. package/build-module/hooks/content-lock-ui.js.map +1 -1
  475. package/build-module/hooks/duotone.js +0 -4
  476. package/build-module/hooks/duotone.js.map +1 -1
  477. package/build-module/hooks/layout.js +4 -2
  478. package/build-module/hooks/layout.js.map +1 -1
  479. package/build-module/hooks/spacing-visualizer.js +3 -3
  480. package/build-module/hooks/spacing-visualizer.js.map +1 -1
  481. package/build-module/hooks/style.js +1 -5
  482. package/build-module/hooks/style.js.map +1 -1
  483. package/build-module/hooks/use-bindings-attributes.js +19 -20
  484. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  485. package/build-module/hooks/use-zoom-out.js +7 -7
  486. package/build-module/hooks/use-zoom-out.js.map +1 -1
  487. package/build-module/layouts/constrained.js +44 -45
  488. package/build-module/layouts/constrained.js.map +1 -1
  489. package/build-module/layouts/flex.js +4 -1
  490. package/build-module/layouts/flex.js.map +1 -1
  491. package/build-module/layouts/grid.js +21 -18
  492. package/build-module/layouts/grid.js.map +1 -1
  493. package/build-module/layouts/utils.js +1 -7
  494. package/build-module/layouts/utils.js.map +1 -1
  495. package/build-module/private-apis.js +3 -4
  496. package/build-module/private-apis.js.map +1 -1
  497. package/build-module/store/actions.js +2 -7
  498. package/build-module/store/actions.js.map +1 -1
  499. package/build-module/store/private-actions.js +1 -0
  500. package/build-module/store/private-actions.js.map +1 -1
  501. package/build-module/store/private-keys.js +1 -0
  502. package/build-module/store/private-keys.js.map +1 -1
  503. package/build-module/store/private-selectors.js +15 -18
  504. package/build-module/store/private-selectors.js.map +1 -1
  505. package/build-module/store/reducer.js +1 -9
  506. package/build-module/store/reducer.js.map +1 -1
  507. package/build-module/store/selectors.js +22 -46
  508. package/build-module/store/selectors.js.map +1 -1
  509. package/build-module/store/utils.js +46 -0
  510. package/build-module/store/utils.js.map +1 -1
  511. package/build-module/utils/block-bindings.js +17 -12
  512. package/build-module/utils/block-bindings.js.map +1 -1
  513. package/build-module/utils/dom.js +99 -0
  514. package/build-module/utils/dom.js.map +1 -1
  515. package/build-module/utils/get-font-styles-and-weights.js +4 -4
  516. package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
  517. package/build-module/utils/transform-styles/index.js +120 -16
  518. package/build-module/utils/transform-styles/index.js.map +1 -1
  519. package/build-style/content-rtl.css +19 -11
  520. package/build-style/content.css +19 -11
  521. package/build-style/style-rtl.css +27 -117
  522. package/build-style/style.css +27 -117
  523. package/build-types/utils/dom.d.ts +25 -0
  524. package/build-types/utils/dom.d.ts.map +1 -1
  525. package/package.json +34 -32
  526. package/src/components/block-alignment-matrix-control/index.js +1 -1
  527. package/src/components/block-breadcrumb/index.js +2 -2
  528. package/src/components/block-breadcrumb/style.scss +1 -30
  529. package/src/components/block-canvas/index.js +9 -1
  530. package/src/components/block-compare/block-view.js +6 -1
  531. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +1 -1
  532. package/src/components/block-draggable/content.scss +1 -1
  533. package/src/components/block-draggable/index.js +4 -4
  534. package/src/components/block-draggable/style.scss +1 -1
  535. package/src/components/block-draggable/use-scroll-when-dragging.js +25 -25
  536. package/src/components/block-edit/multiple-usage-warning.js +2 -0
  537. package/src/components/block-inspector/index.js +22 -7
  538. package/src/components/block-inspector/style.scss +2 -4
  539. package/src/components/block-list/block-invalid-warning.js +3 -2
  540. package/src/components/block-list/block.js +6 -2
  541. package/src/components/block-list/content.scss +23 -3
  542. package/src/components/block-list/index.js +59 -38
  543. package/src/components/block-list/use-block-props/index.js +3 -0
  544. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  545. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +56 -0
  546. package/src/components/block-list/zoom-out-separator.js +110 -0
  547. package/src/components/block-lock/style.scss +1 -1
  548. package/src/components/block-lock/toolbar.js +3 -3
  549. package/src/components/block-mover/button.js +1 -0
  550. package/src/components/block-mover/index.js +1 -0
  551. package/src/components/block-mover/style.scss +1 -1
  552. package/src/components/block-navigation/dropdown.js +2 -0
  553. package/src/components/block-pattern-setup/index.js +3 -15
  554. package/src/components/block-pattern-setup/setup-toolbar.js +17 -4
  555. package/src/components/block-pattern-setup/style.scss +2 -2
  556. package/src/components/block-patterns-list/index.js +15 -18
  557. package/src/components/block-patterns-list/style.scss +2 -2
  558. package/src/components/block-patterns-paging/index.js +6 -0
  559. package/src/components/block-popover/index.js +7 -28
  560. package/src/components/block-popover/style.scss +1 -1
  561. package/src/components/block-quick-navigation/index.js +2 -0
  562. package/src/components/block-settings-menu-controls/index.js +7 -1
  563. package/src/components/block-switcher/index.js +45 -23
  564. package/src/components/block-switcher/pattern-transformations-menu.js +3 -12
  565. package/src/components/block-switcher/style.scss +5 -30
  566. package/src/components/block-toolbar/index.js +27 -11
  567. package/src/components/block-toolbar/shuffle.js +9 -7
  568. package/src/components/block-toolbar/style.scss +4 -1
  569. package/src/components/block-tools/block-selection-button.js +4 -0
  570. package/src/components/block-tools/block-toolbar-popover.js +10 -6
  571. package/src/components/block-tools/index.js +1 -1
  572. package/src/components/block-tools/style.scss +3 -4
  573. package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  574. package/src/components/block-tools/zoom-out-mode-inserters.js +2 -17
  575. package/src/components/block-tools/zoom-out-popover.js +3 -7
  576. package/src/components/block-tools/zoom-out-toolbar.js +31 -6
  577. package/src/components/block-variation-picker/README.md +2 -2
  578. package/src/components/block-variation-picker/index.js +6 -1
  579. package/src/components/block-variation-transforms/index.js +2 -0
  580. package/src/components/block-variation-transforms/style.scss +1 -1
  581. package/src/components/button-block-appender/content.scss +0 -1
  582. package/src/components/button-block-appender/index.js +30 -28
  583. package/src/components/color-palette/test/control.js +15 -2
  584. package/src/components/colors-gradients/dropdown.js +5 -1
  585. package/src/components/colors-gradients/style.scss +4 -4
  586. package/src/components/content-lock/index.js +1 -0
  587. package/src/components/content-lock/modify-content-lock-menu-item.js +58 -0
  588. package/src/components/default-block-appender/content.scss +0 -1
  589. package/src/components/editor-styles/index.js +4 -3
  590. package/src/components/global-styles/background-panel.js +6 -14
  591. package/src/components/global-styles/color-panel.js +8 -4
  592. package/src/components/global-styles/color-panel.native.js +2 -2
  593. package/src/components/global-styles/dimensions-panel.js +40 -40
  594. package/src/components/global-styles/filters-panel.js +5 -1
  595. package/src/components/global-styles/shadow-panel-components.js +11 -15
  596. package/src/components/global-styles/style.scss +3 -4
  597. package/src/components/global-styles/test/typography-utils.js +96 -5
  598. package/src/components/global-styles/test/utils.js +10 -0
  599. package/src/components/global-styles/typography-utils.js +22 -6
  600. package/src/components/global-styles/utils.js +4 -6
  601. package/src/components/grid/grid-item-movers.js +3 -3
  602. package/src/components/grid/grid-item-resizer.js +2 -2
  603. package/src/components/grid/style.scss +1 -1
  604. package/src/components/iframe/get-compatibility-styles.js +6 -1
  605. package/src/components/iframe/index.js +5 -5
  606. package/src/components/inner-blocks/index.js +2 -2
  607. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  608. package/src/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +2 -0
  609. package/src/components/inserter/block-patterns-tab/index.js +2 -0
  610. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +32 -15
  611. package/src/components/inserter/index.js +4 -10
  612. package/src/components/inserter/library.js +0 -2
  613. package/src/components/inserter/media-tab/hooks.js +3 -3
  614. package/src/components/inserter/media-tab/media-list.js +1 -7
  615. package/src/components/inserter/media-tab/media-preview.js +15 -8
  616. package/src/components/inserter/media-tab/media-tab.js +2 -0
  617. package/src/components/inserter/menu.js +15 -29
  618. package/src/components/inserter/quick-inserter.js +3 -4
  619. package/src/components/inserter/style.scss +10 -17
  620. package/src/components/inserter-list-item/index.js +4 -4
  621. package/src/components/inserter-list-item/style.scss +1 -3
  622. package/src/components/inserter-listbox/index.js +2 -11
  623. package/src/components/inserter-listbox/item.js +12 -14
  624. package/src/components/inserter-listbox/row.js +2 -9
  625. package/src/components/inspector-controls/groups.js +2 -0
  626. package/src/components/inspector-controls-tabs/index.js +2 -0
  627. package/src/components/inspector-controls-tabs/settings-tab.js +1 -0
  628. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +5 -2
  629. package/src/components/inspector-popover-header/index.js +4 -0
  630. package/src/components/letter-spacing-control/README.md +8 -1
  631. package/src/components/letter-spacing-control/index.js +7 -4
  632. package/src/components/link-control/index.js +17 -8
  633. package/src/components/link-control/settings-drawer.js +2 -0
  634. package/src/components/link-control/style.scss +1 -3
  635. package/src/components/list-view/block-select-button.js +2 -0
  636. package/src/components/list-view/index.js +3 -8
  637. package/src/components/list-view/style.scss +14 -16
  638. package/src/components/media-placeholder/README.md +2 -2
  639. package/src/components/media-placeholder/index.js +21 -4
  640. package/src/components/media-replace-flow/index.js +12 -1
  641. package/src/components/provider/use-block-sync.js +20 -20
  642. package/src/components/responsive-block-control/README.md +3 -27
  643. package/src/components/rich-text/content.scss +1 -1
  644. package/src/components/rich-text/event-listeners/paste-handler.js +6 -1
  645. package/src/components/rich-text/index.js +54 -41
  646. package/src/components/rich-text/style.scss +1 -1
  647. package/src/components/rich-text/use-mark-persistent.js +5 -5
  648. package/src/components/skip-to-selected-block/index.js +2 -0
  649. package/src/components/spacing-sizes-control/index.js +10 -13
  650. package/src/components/spacing-sizes-control/linked-button.js +32 -0
  651. package/src/components/spacing-sizes-control/style.scss +1 -0
  652. package/src/components/spacing-sizes-control/test/utils.js +14 -15
  653. package/src/components/spacing-sizes-control/utils.js +5 -18
  654. package/src/components/tool-selector/index.js +2 -0
  655. package/src/components/url-input/button.js +6 -0
  656. package/src/components/url-input/index.js +2 -0
  657. package/src/components/url-popover/stories/index.story.js +7 -1
  658. package/src/components/use-block-drop-zone/index.js +37 -5
  659. package/src/components/warning/content.scss +3 -10
  660. package/src/components/writing-flow/index.js +2 -0
  661. package/src/components/writing-flow/use-arrow-nav.js +9 -2
  662. package/src/components/writing-flow/use-event-redirect.js +72 -0
  663. package/src/components/writing-flow/use-input.js +36 -1
  664. package/src/components/writing-flow/use-select-all.js +18 -1
  665. package/src/components/writing-flow/use-selection-observer.js +23 -3
  666. package/src/components/writing-flow/use-tab-nav.js +4 -4
  667. package/src/components/writing-flow/utils.js +30 -0
  668. package/src/hooks/block-bindings.js +42 -43
  669. package/src/hooks/block-bindings.scss +1 -9
  670. package/src/hooks/content-lock-ui.js +11 -36
  671. package/src/hooks/duotone.js +0 -4
  672. package/src/hooks/layout.js +2 -1
  673. package/src/hooks/layout.scss +5 -27
  674. package/src/hooks/spacing-visualizer.js +3 -3
  675. package/src/hooks/style.js +1 -4
  676. package/src/hooks/use-bindings-attributes.js +23 -24
  677. package/src/hooks/use-zoom-out.js +7 -7
  678. package/src/layouts/constrained.js +53 -48
  679. package/src/layouts/flex.js +2 -0
  680. package/src/layouts/grid.js +29 -22
  681. package/src/layouts/test/grid.js +2 -2
  682. package/src/layouts/test/utils.js +6 -8
  683. package/src/layouts/utils.js +1 -9
  684. package/src/private-apis.js +2 -2
  685. package/src/store/actions.js +4 -6
  686. package/src/store/private-actions.js +1 -0
  687. package/src/store/private-keys.js +1 -0
  688. package/src/store/private-selectors.js +18 -14
  689. package/src/store/reducer.js +0 -7
  690. package/src/store/selectors.js +32 -51
  691. package/src/store/utils.js +50 -0
  692. package/src/utils/block-bindings.js +15 -16
  693. package/src/utils/dom.js +117 -0
  694. package/src/utils/get-font-styles-and-weights.js +12 -4
  695. package/src/utils/test/get-font-styles-and-weights.js +148 -0
  696. package/src/utils/test/transform-styles.js +259 -50
  697. package/src/utils/transform-styles/index.js +132 -21
  698. package/tsconfig.json +1 -0
  699. package/tsconfig.tsbuildinfo +1 -1
  700. package/build/components/spacing-sizes-control/sides-dropdown/index.js +0 -86
  701. package/build/components/spacing-sizes-control/sides-dropdown/index.js.map +0 -1
  702. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js +0 -81
  703. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js.map +0 -1
  704. package/src/components/spacing-sizes-control/sides-dropdown/index.js +0 -91
  705. package/src/utils/test/__snapshots__/transform-styles.js.snap +0 -109
@@ -13,6 +13,7 @@ import {
13
13
  __experimentalToggleGroupControlOption as ToggleGroupControlOption,
14
14
  __experimentalUnitControl as UnitControl,
15
15
  __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,
16
+ __experimentalVStack as VStack,
16
17
  } from '@wordpress/components';
17
18
  import { useState } from '@wordpress/element';
18
19
 
@@ -74,7 +75,8 @@ export default {
74
75
  // In the experiment we want to also show column control in Auto mode, and
75
76
  // the minimum width control in Manual mode.
76
77
  const showColumnsControl =
77
- window.__experimentalEnableGridInteractivity || layout?.columnCount;
78
+ window.__experimentalEnableGridInteractivity ||
79
+ !! layout?.columnCount;
78
80
  const showMinWidthControl =
79
81
  window.__experimentalEnableGridInteractivity ||
80
82
  ! layout?.columnCount;
@@ -84,19 +86,21 @@ export default {
84
86
  layout={ layout }
85
87
  onChange={ onChange }
86
88
  />
87
- { showColumnsControl && (
88
- <GridLayoutColumnsAndRowsControl
89
- layout={ layout }
90
- onChange={ onChange }
91
- allowSizingOnChildren={ allowSizingOnChildren }
92
- />
93
- ) }
94
- { showMinWidthControl && (
95
- <GridLayoutMinimumWidthControl
96
- layout={ layout }
97
- onChange={ onChange }
98
- />
99
- ) }
89
+ <VStack spacing={ 4 }>
90
+ { showColumnsControl && (
91
+ <GridLayoutColumnsAndRowsControl
92
+ layout={ layout }
93
+ onChange={ onChange }
94
+ allowSizingOnChildren={ allowSizingOnChildren }
95
+ />
96
+ ) }
97
+ { showMinWidthControl && (
98
+ <GridLayoutMinimumWidthControl
99
+ layout={ layout }
100
+ onChange={ onChange }
101
+ />
102
+ ) }
103
+ </VStack>
100
104
  </>
101
105
  );
102
106
  },
@@ -317,7 +321,7 @@ function GridLayoutColumnsAndRowsControl( {
317
321
  const defaultNewColumnCount =
318
322
  isManualPlacement ? 1 : undefined;
319
323
  const newColumnCount =
320
- value === ''
324
+ value === '' || value === '0'
321
325
  ? defaultNewColumnCount
322
326
  : parseInt( value, 10 );
323
327
  onChange( {
@@ -327,7 +331,7 @@ function GridLayoutColumnsAndRowsControl( {
327
331
  } else {
328
332
  // Don't allow unsetting the column count.
329
333
  const newColumnCount =
330
- value === ''
334
+ value === '' || value === '0'
331
335
  ? 1
332
336
  : parseInt( value, 10 );
333
337
  onChange( {
@@ -337,7 +341,7 @@ function GridLayoutColumnsAndRowsControl( {
337
341
  }
338
342
  } }
339
343
  value={ columnCount }
340
- min={ 0 }
344
+ min={ 1 }
341
345
  label={ __( 'Columns' ) }
342
346
  hideLabelFromVision={
343
347
  ! window.__experimentalEnableGridInteractivity ||
@@ -355,7 +359,7 @@ function GridLayoutColumnsAndRowsControl( {
355
359
  onChange={ ( value ) => {
356
360
  // Don't allow unsetting the row count.
357
361
  const newRowCount =
358
- value === ''
362
+ value === '' || value === '0'
359
363
  ? 1
360
364
  : parseInt( value, 10 );
361
365
  onChange( {
@@ -364,21 +368,24 @@ function GridLayoutColumnsAndRowsControl( {
364
368
  } );
365
369
  } }
366
370
  value={ rowCount }
367
- min={ 0 }
371
+ min={ 1 }
368
372
  label={ __( 'Rows' ) }
369
373
  />
370
374
  ) : (
371
375
  <RangeControl
372
376
  __next40pxDefaultSize
373
377
  __nextHasNoMarginBottom
374
- value={ columnCount ?? 0 }
378
+ value={ columnCount ?? 1 }
375
379
  onChange={ ( value ) =>
376
380
  onChange( {
377
381
  ...layout,
378
- columnCount: value,
382
+ columnCount:
383
+ value === '' || value === '0'
384
+ ? 1
385
+ : value,
379
386
  } )
380
387
  }
381
- min={ 0 }
388
+ min={ 1 }
382
389
  max={ 16 }
383
390
  withInputField={ false }
384
391
  label={ __( 'Columns' ) }
@@ -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
  }
@@ -6,7 +6,6 @@ import { ExperimentalBlockEditorProvider } from './components/provider';
6
6
  import { lock } from './lock-unlock';
7
7
  import { getRichTextValues } from './components/rich-text/get-rich-text-values';
8
8
  import ResizableBoxPopover from './components/resizable-box-popover';
9
- import { ComposedPrivateInserter as PrivateInserter } from './components/inserter';
10
9
  import { default as PrivateQuickInserter } from './components/inserter/quick-inserter';
11
10
  import {
12
11
  extractWords,
@@ -38,6 +37,7 @@ import {
38
37
  reusableBlocksSelectKey,
39
38
  globalStylesDataKey,
40
39
  globalStylesLinksDataKey,
40
+ sectionRootClientIdKey,
41
41
  } from './store/private-keys';
42
42
  import { requiresWrapperOnCopy } from './components/writing-flow/utils';
43
43
  import { PrivateRichText } from './components/rich-text/';
@@ -59,7 +59,6 @@ lock( privateApis, {
59
59
  ExperimentalBlockEditorProvider,
60
60
  getDuotoneFilter,
61
61
  getRichTextValues,
62
- PrivateInserter,
63
62
  PrivateQuickInserter,
64
63
  extractWords,
65
64
  getNormalizedSearchTerms,
@@ -94,4 +93,5 @@ lock( privateApis, {
94
93
  __unstableBlockStyleVariationOverridesWithConfig,
95
94
  setBackgroundStyleDefaults,
96
95
  useBlockBindingsUtils,
96
+ sectionRootClientIdKey,
97
97
  } );
@@ -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';
@@ -112,6 +114,7 @@ export const getEnabledClientIdsTree = createSelector(
112
114
  state.blockEditingModes,
113
115
  state.settings.templateLock,
114
116
  state.blockListSettings,
117
+ state.editorMode,
115
118
  ]
116
119
  );
117
120
 
@@ -291,19 +294,18 @@ export const getInserterMediaCategories = createSelector(
291
294
  export const hasAllowedPatterns = createRegistrySelector( ( select ) =>
292
295
  createSelector(
293
296
  ( state, rootClientId = null ) => {
294
- const { getAllPatterns, __experimentalGetParsedPattern } = unlock(
295
- select( STORE_NAME )
296
- );
297
+ const { getAllPatterns } = unlock( select( STORE_NAME ) );
297
298
  const patterns = getAllPatterns();
298
299
  const { allowedBlockTypes } = getSettings( state );
299
- return patterns.some( ( { name, inserter = true } ) => {
300
+ return patterns.some( ( pattern ) => {
301
+ const { inserter = true } = pattern;
300
302
  if ( ! inserter ) {
301
303
  return false;
302
304
  }
303
- const { blocks } = __experimentalGetParsedPattern( name );
305
+ const grammar = getGrammar( pattern );
304
306
  return (
305
- checkAllowListRecursive( blocks, allowedBlockTypes ) &&
306
- blocks.every( ( { name: blockName } ) =>
307
+ checkAllowListRecursive( grammar, allowedBlockTypes ) &&
308
+ grammar.every( ( { name: blockName } ) =>
307
309
  canInsertBlockType( state, blockName, rootClientId )
308
310
  )
309
311
  );
@@ -421,9 +423,11 @@ const EMPTY_ARRAY = [];
421
423
  export const getReusableBlocks = createRegistrySelector(
422
424
  ( select ) => ( state ) => {
423
425
  const reusableBlocksSelect = state.settings[ reusableBlocksSelectKey ];
424
- return reusableBlocksSelect
425
- ? reusableBlocksSelect( select )
426
- : state.settings.__experimentalReusableBlocks ?? EMPTY_ARRAY;
426
+ return (
427
+ ( reusableBlocksSelect
428
+ ? reusableBlocksSelect( select )
429
+ : state.settings.__experimentalReusableBlocks ) ?? EMPTY_ARRAY
430
+ );
427
431
  }
428
432
  );
429
433
 
@@ -512,10 +516,6 @@ export function getTemporarilyEditingFocusModeToRevert( state ) {
512
516
  return state.temporarilyEditingFocusModeRevert;
513
517
  }
514
518
 
515
- export function getInserterSearchInputRef( state ) {
516
- return state.inserterSearchInputRef;
517
- }
518
-
519
519
  /**
520
520
  * Returns the style attributes of multiple blocks.
521
521
  *
@@ -547,3 +547,7 @@ export const getBlockStyles = createSelector(
547
547
  export function isZoomOutMode( state ) {
548
548
  return state.editorMode === 'zoom-out';
549
549
  }
550
+
551
+ export function getSectionRootClientId( state ) {
552
+ return state.settings?.[ sectionRootClientIdKey ];
553
+ }
@@ -1624,8 +1624,6 @@ 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':
1629
1627
  return null;
1630
1628
  }
1631
1629
 
@@ -2087,10 +2085,6 @@ export function hoveredBlockClientId( state = false, action ) {
2087
2085
  return state;
2088
2086
  }
2089
2087
 
2090
- export function inserterSearchInputRef( state = { current: null } ) {
2091
- return state;
2092
- }
2093
-
2094
2088
  const combinedReducers = combineReducers( {
2095
2089
  blocks,
2096
2090
  isDragging,
@@ -2124,7 +2118,6 @@ const combinedReducers = combineReducers( {
2124
2118
  openedBlockSettingsMenu,
2125
2119
  registeredInserterMediaCategories,
2126
2120
  hoveredBlockClientId,
2127
- inserterSearchInputRef,
2128
2121
  } );
2129
2122
 
2130
2123
  function withAutomaticChangeReset( reducer ) {
@@ -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
  }
@@ -1,3 +1,9 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { parse } from '@wordpress/blocks';
5
+ import { parse as grammarParse } from '@wordpress/block-serialization-default-parser';
6
+
1
7
  /**
2
8
  * Internal dependencies
3
9
  */
@@ -7,6 +13,50 @@ import { STORE_NAME } from './constants';
7
13
 
8
14
  export const withRootClientIdOptionKey = Symbol( 'withRootClientId' );
9
15
 
16
+ const parsedPatternCache = new WeakMap();
17
+ const grammarMapCache = new WeakMap();
18
+
19
+ function parsePattern( pattern ) {
20
+ const blocks = parse( pattern.content, {
21
+ __unstableSkipMigrationLogs: true,
22
+ } );
23
+ if ( blocks.length === 1 ) {
24
+ blocks[ 0 ].attributes = {
25
+ ...blocks[ 0 ].attributes,
26
+ metadata: {
27
+ ...( blocks[ 0 ].attributes.metadata || {} ),
28
+ categories: pattern.categories,
29
+ patternName: pattern.name,
30
+ name: blocks[ 0 ].attributes.metadata?.name || pattern.title,
31
+ },
32
+ };
33
+ }
34
+ return {
35
+ ...pattern,
36
+ blocks,
37
+ };
38
+ }
39
+
40
+ export function getParsedPattern( pattern ) {
41
+ let parsedPattern = parsedPatternCache.get( pattern );
42
+ if ( ! parsedPattern ) {
43
+ parsedPattern = parsePattern( pattern );
44
+ parsedPatternCache.set( pattern, parsedPattern );
45
+ }
46
+ return parsedPattern;
47
+ }
48
+
49
+ export function getGrammar( pattern ) {
50
+ let grammarMap = grammarMapCache.get( pattern );
51
+ if ( ! grammarMap ) {
52
+ grammarMap = grammarParse( pattern.content );
53
+ // Block names are null only at the top level for whitespace.
54
+ grammarMap = grammarMap.filter( ( block ) => block.blockName !== null );
55
+ grammarMapCache.set( pattern, grammarMap );
56
+ }
57
+ return grammarMap;
58
+ }
59
+
10
60
  export const checkAllowList = ( list, item, defaultResult = null ) => {
11
61
  if ( typeof list === 'boolean' ) {
12
62
  return list;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useDispatch, useSelect } from '@wordpress/data';
4
+ import { useDispatch, useRegistry } from '@wordpress/data';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -9,10 +9,14 @@ import { useDispatch, useSelect } from '@wordpress/data';
9
9
  import { store as blockEditorStore } from '../store';
10
10
  import { useBlockEditContext } from '../components/block-edit';
11
11
 
12
+ function isObjectEmpty( object ) {
13
+ return ! object || Object.keys( object ).length === 0;
14
+ }
15
+
12
16
  export function useBlockBindingsUtils() {
13
17
  const { clientId } = useBlockEditContext();
14
18
  const { updateBlockAttributes } = useDispatch( blockEditorStore );
15
- const { getBlockAttributes } = useSelect( blockEditorStore );
19
+ const { getBlockAttributes } = useRegistry().select( blockEditorStore );
16
20
 
17
21
  /**
18
22
  * Updates the value of the bindings connected to block attributes.
@@ -44,8 +48,10 @@ export function useBlockBindingsUtils() {
44
48
  * ```
45
49
  */
46
50
  const updateBlockBindings = ( bindings ) => {
47
- const { metadata } = getBlockAttributes( clientId );
48
- const newBindings = { ...metadata?.bindings };
51
+ const { metadata: { bindings: currentBindings, ...metadata } = {} } =
52
+ getBlockAttributes( clientId );
53
+ const newBindings = { ...currentBindings };
54
+
49
55
  Object.entries( bindings ).forEach( ( [ attribute, binding ] ) => {
50
56
  if ( ! binding && newBindings[ attribute ] ) {
51
57
  delete newBindings[ attribute ];
@@ -59,15 +65,12 @@ export function useBlockBindingsUtils() {
59
65
  bindings: newBindings,
60
66
  };
61
67
 
62
- if ( Object.keys( newMetadata.bindings ).length === 0 ) {
68
+ if ( isObjectEmpty( newMetadata.bindings ) ) {
63
69
  delete newMetadata.bindings;
64
70
  }
65
71
 
66
72
  updateBlockAttributes( clientId, {
67
- metadata:
68
- Object.keys( newMetadata ).length === 0
69
- ? undefined
70
- : newMetadata,
73
+ metadata: isObjectEmpty( newMetadata ) ? undefined : newMetadata,
71
74
  } );
72
75
  };
73
76
 
@@ -83,14 +86,10 @@ export function useBlockBindingsUtils() {
83
86
  * ```
84
87
  */
85
88
  const removeAllBlockBindings = () => {
86
- const { metadata } = getBlockAttributes( clientId );
87
- const newMetadata = { ...metadata };
88
- delete newMetadata.bindings;
89
+ const { metadata: { bindings, ...metadata } = {} } =
90
+ getBlockAttributes( clientId );
89
91
  updateBlockAttributes( clientId, {
90
- metadata:
91
- Object.keys( newMetadata ).length === 0
92
- ? undefined
93
- : newMetadata,
92
+ metadata: isObjectEmpty( metadata ) ? undefined : metadata,
94
93
  } );
95
94
  };
96
95