@wordpress/block-editor 14.1.0 → 14.2.1-next.5368f64a9.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 (679) 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/iframe/get-compatibility-styles.js +1 -1
  110. package/build/components/iframe/get-compatibility-styles.js.map +1 -1
  111. package/build/components/iframe/index.js +5 -5
  112. package/build/components/iframe/index.js.map +1 -1
  113. package/build/components/inner-blocks/index.js +2 -4
  114. package/build/components/inner-blocks/index.js.map +1 -1
  115. package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  116. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  117. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  118. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  119. package/build/components/inserter/block-patterns-tab/index.js +4 -1
  120. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  121. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +23 -13
  122. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  123. package/build/components/inserter/index.js +4 -11
  124. package/build/components/inserter/index.js.map +1 -1
  125. package/build/components/inserter/library.js +2 -4
  126. package/build/components/inserter/library.js.map +1 -1
  127. package/build/components/inserter/media-tab/hooks.js +3 -3
  128. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  129. package/build/components/inserter/media-tab/media-list.js +1 -8
  130. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  131. package/build/components/inserter/media-tab/media-preview.js +9 -7
  132. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  133. package/build/components/inserter/media-tab/media-tab.js +4 -1
  134. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  135. package/build/components/inserter/menu.js +7 -24
  136. package/build/components/inserter/menu.js.map +1 -1
  137. package/build/components/inserter/quick-inserter.js +4 -5
  138. package/build/components/inserter/quick-inserter.js.map +1 -1
  139. package/build/components/inserter-list-item/index.js +4 -4
  140. package/build/components/inserter-list-item/index.js.map +1 -1
  141. package/build/components/inserter-listbox/index.js +3 -13
  142. package/build/components/inserter-listbox/index.js.map +1 -1
  143. package/build/components/inserter-listbox/item.js +6 -11
  144. package/build/components/inserter-listbox/item.js.map +1 -1
  145. package/build/components/inserter-listbox/row.js +1 -9
  146. package/build/components/inserter-listbox/row.js.map +1 -1
  147. package/build/components/inspector-controls/groups.js +2 -0
  148. package/build/components/inspector-controls/groups.js.map +1 -1
  149. package/build/components/inspector-controls-tabs/index.js +4 -1
  150. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  151. package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
  152. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  153. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  154. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  155. package/build/components/inspector-popover-header/index.js +8 -2
  156. package/build/components/inspector-popover-header/index.js.map +1 -1
  157. package/build/components/letter-spacing-control/index.js +7 -4
  158. package/build/components/letter-spacing-control/index.js.map +1 -1
  159. package/build/components/link-control/index.js +19 -10
  160. package/build/components/link-control/index.js.map +1 -1
  161. package/build/components/link-control/settings-drawer.js +4 -1
  162. package/build/components/link-control/settings-drawer.js.map +1 -1
  163. package/build/components/list-view/block-select-button.js +4 -1
  164. package/build/components/list-view/block-select-button.js.map +1 -1
  165. package/build/components/list-view/index.js +3 -7
  166. package/build/components/list-view/index.js.map +1 -1
  167. package/build/components/media-placeholder/index.js +32 -11
  168. package/build/components/media-placeholder/index.js.map +1 -1
  169. package/build/components/media-replace-flow/index.js +8 -1
  170. package/build/components/media-replace-flow/index.js.map +1 -1
  171. package/build/components/provider/use-block-sync.js +19 -19
  172. package/build/components/provider/use-block-sync.js.map +1 -1
  173. package/build/components/rich-text/event-listeners/paste-handler.js +12 -1
  174. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  175. package/build/components/rich-text/index.js +38 -30
  176. package/build/components/rich-text/index.js.map +1 -1
  177. package/build/components/rich-text/use-mark-persistent.js +5 -5
  178. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  179. package/build/components/skip-to-selected-block/index.js +4 -1
  180. package/build/components/skip-to-selected-block/index.js.map +1 -1
  181. package/build/components/tool-selector/index.js +4 -1
  182. package/build/components/tool-selector/index.js.map +1 -1
  183. package/build/components/url-input/button.js +12 -3
  184. package/build/components/url-input/button.js.map +1 -1
  185. package/build/components/url-input/index.js +4 -1
  186. package/build/components/url-input/index.js.map +1 -1
  187. package/build/components/use-block-drop-zone/index.js +31 -7
  188. package/build/components/use-block-drop-zone/index.js.map +1 -1
  189. package/build/components/writing-flow/index.js +2 -1
  190. package/build/components/writing-flow/index.js.map +1 -1
  191. package/build/components/writing-flow/use-arrow-nav.js +4 -1
  192. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  193. package/build/components/writing-flow/use-event-redirect.js +66 -0
  194. package/build/components/writing-flow/use-event-redirect.js.map +1 -0
  195. package/build/components/writing-flow/use-input.js +31 -1
  196. package/build/components/writing-flow/use-input.js.map +1 -1
  197. package/build/components/writing-flow/use-select-all.js +14 -1
  198. package/build/components/writing-flow/use-select-all.js.map +1 -1
  199. package/build/components/writing-flow/use-selection-observer.js +20 -6
  200. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  201. package/build/components/writing-flow/use-tab-nav.js +4 -4
  202. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  203. package/build/components/writing-flow/utils.js +27 -0
  204. package/build/components/writing-flow/utils.js.map +1 -1
  205. package/build/hooks/block-bindings.js +32 -29
  206. package/build/hooks/block-bindings.js.map +1 -1
  207. package/build/hooks/content-lock-ui.js +8 -26
  208. package/build/hooks/content-lock-ui.js.map +1 -1
  209. package/build/hooks/duotone.js +0 -4
  210. package/build/hooks/duotone.js.map +1 -1
  211. package/build/hooks/layout.js +4 -2
  212. package/build/hooks/layout.js.map +1 -1
  213. package/build/hooks/spacing-visualizer.js +3 -3
  214. package/build/hooks/spacing-visualizer.js.map +1 -1
  215. package/build/hooks/style.js +1 -5
  216. package/build/hooks/style.js.map +1 -1
  217. package/build/hooks/use-bindings-attributes.js +19 -20
  218. package/build/hooks/use-bindings-attributes.js.map +1 -1
  219. package/build/hooks/use-zoom-out.js +7 -7
  220. package/build/hooks/use-zoom-out.js.map +1 -1
  221. package/build/layouts/constrained.js +41 -42
  222. package/build/layouts/constrained.js.map +1 -1
  223. package/build/layouts/flex.js +4 -1
  224. package/build/layouts/flex.js.map +1 -1
  225. package/build/layouts/grid.js +19 -16
  226. package/build/layouts/grid.js.map +1 -1
  227. package/build/layouts/utils.js +1 -7
  228. package/build/layouts/utils.js.map +1 -1
  229. package/build/private-apis.js +2 -3
  230. package/build/private-apis.js.map +1 -1
  231. package/build/store/actions.js +2 -7
  232. package/build/store/actions.js.map +1 -1
  233. package/build/store/private-actions.js +1 -0
  234. package/build/store/private-actions.js.map +1 -1
  235. package/build/store/private-keys.js +2 -1
  236. package/build/store/private-keys.js.map +1 -1
  237. package/build/store/private-selectors.js +16 -18
  238. package/build/store/private-selectors.js.map +1 -1
  239. package/build/store/reducer.js +1 -10
  240. package/build/store/reducer.js.map +1 -1
  241. package/build/store/selectors.js +19 -43
  242. package/build/store/selectors.js.map +1 -1
  243. package/build/store/utils.js +48 -0
  244. package/build/store/utils.js.map +1 -1
  245. package/build/utils/block-bindings.js +16 -11
  246. package/build/utils/block-bindings.js.map +1 -1
  247. package/build/utils/dom.js +101 -0
  248. package/build/utils/dom.js.map +1 -1
  249. package/build/utils/get-font-styles-and-weights.js +4 -4
  250. package/build/utils/get-font-styles-and-weights.js.map +1 -1
  251. package/build/utils/transform-styles/index.js +120 -16
  252. package/build/utils/transform-styles/index.js.map +1 -1
  253. package/build-module/components/block-alignment-matrix-control/index.js +1 -1
  254. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  255. package/build-module/components/block-breadcrumb/index.js +2 -2
  256. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  257. package/build-module/components/block-canvas/index.js +9 -1
  258. package/build-module/components/block-canvas/index.js.map +1 -1
  259. package/build-module/components/block-compare/block-view.js +1 -0
  260. package/build-module/components/block-compare/block-view.js.map +1 -1
  261. package/build-module/components/block-draggable/index.js +4 -4
  262. package/build-module/components/block-draggable/index.js.map +1 -1
  263. package/build-module/components/block-draggable/use-scroll-when-dragging.js +25 -25
  264. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  265. package/build-module/components/block-edit/multiple-usage-warning.js +2 -0
  266. package/build-module/components/block-edit/multiple-usage-warning.js.map +1 -1
  267. package/build-module/components/block-inspector/index.js +27 -11
  268. package/build-module/components/block-inspector/index.js.map +1 -1
  269. package/build-module/components/block-list/block-invalid-warning.js +3 -2
  270. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  271. package/build-module/components/block-list/block.js +5 -1
  272. package/build-module/components/block-list/block.js.map +1 -1
  273. package/build-module/components/block-list/index.js +14 -3
  274. package/build-module/components/block-list/index.js.map +1 -1
  275. package/build-module/components/block-list/use-block-props/index.js +5 -1
  276. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  277. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  278. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  279. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +47 -0
  280. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
  281. package/build-module/components/block-list/zoom-out-separator.js +90 -0
  282. package/build-module/components/block-list/zoom-out-separator.js.map +1 -0
  283. package/build-module/components/block-lock/toolbar.js +3 -3
  284. package/build-module/components/block-lock/toolbar.js.map +1 -1
  285. package/build-module/components/block-mover/button.js +1 -0
  286. package/build-module/components/block-mover/button.js.map +1 -1
  287. package/build-module/components/block-mover/index.js +1 -0
  288. package/build-module/components/block-mover/index.js.map +1 -1
  289. package/build-module/components/block-navigation/dropdown.js +4 -1
  290. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  291. package/build-module/components/block-pattern-setup/index.js +2 -10
  292. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  293. package/build-module/components/block-pattern-setup/setup-toolbar.js +23 -8
  294. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  295. package/build-module/components/block-patterns-list/index.js +12 -20
  296. package/build-module/components/block-patterns-list/index.js.map +1 -1
  297. package/build-module/components/block-patterns-paging/index.js +12 -3
  298. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  299. package/build-module/components/block-popover/index.js +2 -15
  300. package/build-module/components/block-popover/index.js.map +1 -1
  301. package/build-module/components/block-quick-navigation/index.js +4 -1
  302. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  303. package/build-module/components/block-settings-menu-controls/index.js +4 -0
  304. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  305. package/build-module/components/block-switcher/index.js +30 -19
  306. package/build-module/components/block-switcher/index.js.map +1 -1
  307. package/build-module/components/block-switcher/pattern-transformations-menu.js +2 -10
  308. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  309. package/build-module/components/block-toolbar/index.js +19 -12
  310. package/build-module/components/block-toolbar/index.js.map +1 -1
  311. package/build-module/components/block-toolbar/shuffle.js +6 -2
  312. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  313. package/build-module/components/block-tools/block-selection-button.js +8 -2
  314. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  315. package/build-module/components/block-tools/block-toolbar-popover.js +10 -6
  316. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  317. package/build-module/components/block-tools/index.js +1 -1
  318. package/build-module/components/block-tools/index.js.map +1 -1
  319. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  320. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  321. package/build-module/components/block-tools/zoom-out-mode-inserters.js +7 -22
  322. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  323. package/build-module/components/block-tools/zoom-out-popover.js +3 -4
  324. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
  325. package/build-module/components/block-tools/zoom-out-toolbar.js +27 -8
  326. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  327. package/build-module/components/block-variation-picker/index.js +4 -1
  328. package/build-module/components/block-variation-picker/index.js.map +1 -1
  329. package/build-module/components/block-variation-transforms/index.js +4 -1
  330. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  331. package/build-module/components/button-block-appender/index.js +22 -26
  332. package/build-module/components/button-block-appender/index.js.map +1 -1
  333. package/build-module/components/colors-gradients/dropdown.js +4 -1
  334. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  335. package/build-module/components/content-lock/index.js +2 -0
  336. package/build-module/components/content-lock/index.js.map +1 -0
  337. package/build-module/components/content-lock/modify-content-lock-menu-item.js +57 -0
  338. package/build-module/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
  339. package/build-module/components/editor-styles/index.js +4 -3
  340. package/build-module/components/editor-styles/index.js.map +1 -1
  341. package/build-module/components/global-styles/background-panel.js +8 -12
  342. package/build-module/components/global-styles/background-panel.js.map +1 -1
  343. package/build-module/components/global-styles/color-panel.js +7 -4
  344. package/build-module/components/global-styles/color-panel.js.map +1 -1
  345. package/build-module/components/global-styles/color-panel.native.js +2 -2
  346. package/build-module/components/global-styles/color-panel.native.js.map +1 -1
  347. package/build-module/components/global-styles/dimensions-panel.js +36 -39
  348. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  349. package/build-module/components/global-styles/filters-panel.js +4 -1
  350. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  351. package/build-module/components/global-styles/shadow-panel-components.js +14 -17
  352. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  353. package/build-module/components/global-styles/typography-utils.js +17 -6
  354. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  355. package/build-module/components/global-styles/utils.js +4 -6
  356. package/build-module/components/global-styles/utils.js.map +1 -1
  357. package/build-module/components/grid/grid-item-movers.js +3 -3
  358. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  359. package/build-module/components/iframe/get-compatibility-styles.js +1 -1
  360. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -1
  361. package/build-module/components/iframe/index.js +5 -5
  362. package/build-module/components/iframe/index.js.map +1 -1
  363. package/build-module/components/inner-blocks/index.js +2 -4
  364. package/build-module/components/inner-blocks/index.js.map +1 -1
  365. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  366. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  367. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  368. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  369. package/build-module/components/inserter/block-patterns-tab/index.js +4 -1
  370. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  371. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +23 -13
  372. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  373. package/build-module/components/inserter/index.js +4 -11
  374. package/build-module/components/inserter/index.js.map +1 -1
  375. package/build-module/components/inserter/library.js +2 -4
  376. package/build-module/components/inserter/library.js.map +1 -1
  377. package/build-module/components/inserter/media-tab/hooks.js +3 -3
  378. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  379. package/build-module/components/inserter/media-tab/media-list.js +1 -8
  380. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  381. package/build-module/components/inserter/media-tab/media-preview.js +10 -8
  382. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  383. package/build-module/components/inserter/media-tab/media-tab.js +4 -1
  384. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  385. package/build-module/components/inserter/menu.js +7 -24
  386. package/build-module/components/inserter/menu.js.map +1 -1
  387. package/build-module/components/inserter/quick-inserter.js +5 -6
  388. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  389. package/build-module/components/inserter-list-item/index.js +4 -4
  390. package/build-module/components/inserter-list-item/index.js.map +1 -1
  391. package/build-module/components/inserter-listbox/index.js +3 -11
  392. package/build-module/components/inserter-listbox/index.js.map +1 -1
  393. package/build-module/components/inserter-listbox/item.js +7 -12
  394. package/build-module/components/inserter-listbox/item.js.map +1 -1
  395. package/build-module/components/inserter-listbox/row.js +2 -10
  396. package/build-module/components/inserter-listbox/row.js.map +1 -1
  397. package/build-module/components/inspector-controls/groups.js +2 -0
  398. package/build-module/components/inspector-controls/groups.js.map +1 -1
  399. package/build-module/components/inspector-controls-tabs/index.js +4 -1
  400. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  401. package/build-module/components/inspector-controls-tabs/settings-tab.js +3 -1
  402. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  403. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  404. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  405. package/build-module/components/inspector-popover-header/index.js +8 -2
  406. package/build-module/components/inspector-popover-header/index.js.map +1 -1
  407. package/build-module/components/letter-spacing-control/index.js +7 -4
  408. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  409. package/build-module/components/link-control/index.js +19 -10
  410. package/build-module/components/link-control/index.js.map +1 -1
  411. package/build-module/components/link-control/settings-drawer.js +4 -1
  412. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  413. package/build-module/components/list-view/block-select-button.js +4 -1
  414. package/build-module/components/list-view/block-select-button.js.map +1 -1
  415. package/build-module/components/list-view/index.js +3 -7
  416. package/build-module/components/list-view/index.js.map +1 -1
  417. package/build-module/components/media-placeholder/index.js +32 -11
  418. package/build-module/components/media-placeholder/index.js.map +1 -1
  419. package/build-module/components/media-replace-flow/index.js +8 -1
  420. package/build-module/components/media-replace-flow/index.js.map +1 -1
  421. package/build-module/components/provider/use-block-sync.js +19 -19
  422. package/build-module/components/provider/use-block-sync.js.map +1 -1
  423. package/build-module/components/rich-text/event-listeners/paste-handler.js +12 -1
  424. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  425. package/build-module/components/rich-text/index.js +39 -31
  426. package/build-module/components/rich-text/index.js.map +1 -1
  427. package/build-module/components/rich-text/use-mark-persistent.js +5 -5
  428. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  429. package/build-module/components/skip-to-selected-block/index.js +4 -1
  430. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  431. package/build-module/components/tool-selector/index.js +4 -1
  432. package/build-module/components/tool-selector/index.js.map +1 -1
  433. package/build-module/components/url-input/button.js +12 -3
  434. package/build-module/components/url-input/button.js.map +1 -1
  435. package/build-module/components/url-input/index.js +4 -1
  436. package/build-module/components/url-input/index.js.map +1 -1
  437. package/build-module/components/use-block-drop-zone/index.js +31 -7
  438. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  439. package/build-module/components/writing-flow/index.js +2 -1
  440. package/build-module/components/writing-flow/index.js.map +1 -1
  441. package/build-module/components/writing-flow/use-arrow-nav.js +4 -1
  442. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  443. package/build-module/components/writing-flow/use-event-redirect.js +60 -0
  444. package/build-module/components/writing-flow/use-event-redirect.js.map +1 -0
  445. package/build-module/components/writing-flow/use-input.js +31 -1
  446. package/build-module/components/writing-flow/use-input.js.map +1 -1
  447. package/build-module/components/writing-flow/use-select-all.js +14 -1
  448. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  449. package/build-module/components/writing-flow/use-selection-observer.js +16 -2
  450. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  451. package/build-module/components/writing-flow/use-tab-nav.js +4 -4
  452. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  453. package/build-module/components/writing-flow/utils.js +26 -0
  454. package/build-module/components/writing-flow/utils.js.map +1 -1
  455. package/build-module/hooks/block-bindings.js +34 -31
  456. package/build-module/hooks/block-bindings.js.map +1 -1
  457. package/build-module/hooks/content-lock-ui.js +10 -30
  458. package/build-module/hooks/content-lock-ui.js.map +1 -1
  459. package/build-module/hooks/duotone.js +0 -4
  460. package/build-module/hooks/duotone.js.map +1 -1
  461. package/build-module/hooks/layout.js +4 -2
  462. package/build-module/hooks/layout.js.map +1 -1
  463. package/build-module/hooks/spacing-visualizer.js +3 -3
  464. package/build-module/hooks/spacing-visualizer.js.map +1 -1
  465. package/build-module/hooks/style.js +1 -5
  466. package/build-module/hooks/style.js.map +1 -1
  467. package/build-module/hooks/use-bindings-attributes.js +19 -20
  468. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  469. package/build-module/hooks/use-zoom-out.js +7 -7
  470. package/build-module/hooks/use-zoom-out.js.map +1 -1
  471. package/build-module/layouts/constrained.js +44 -45
  472. package/build-module/layouts/constrained.js.map +1 -1
  473. package/build-module/layouts/flex.js +4 -1
  474. package/build-module/layouts/flex.js.map +1 -1
  475. package/build-module/layouts/grid.js +21 -18
  476. package/build-module/layouts/grid.js.map +1 -1
  477. package/build-module/layouts/utils.js +1 -7
  478. package/build-module/layouts/utils.js.map +1 -1
  479. package/build-module/private-apis.js +3 -4
  480. package/build-module/private-apis.js.map +1 -1
  481. package/build-module/store/actions.js +2 -7
  482. package/build-module/store/actions.js.map +1 -1
  483. package/build-module/store/private-actions.js +1 -0
  484. package/build-module/store/private-actions.js.map +1 -1
  485. package/build-module/store/private-keys.js +1 -0
  486. package/build-module/store/private-keys.js.map +1 -1
  487. package/build-module/store/private-selectors.js +15 -18
  488. package/build-module/store/private-selectors.js.map +1 -1
  489. package/build-module/store/reducer.js +1 -9
  490. package/build-module/store/reducer.js.map +1 -1
  491. package/build-module/store/selectors.js +22 -46
  492. package/build-module/store/selectors.js.map +1 -1
  493. package/build-module/store/utils.js +46 -0
  494. package/build-module/store/utils.js.map +1 -1
  495. package/build-module/utils/block-bindings.js +17 -12
  496. package/build-module/utils/block-bindings.js.map +1 -1
  497. package/build-module/utils/dom.js +99 -0
  498. package/build-module/utils/dom.js.map +1 -1
  499. package/build-module/utils/get-font-styles-and-weights.js +4 -4
  500. package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
  501. package/build-module/utils/transform-styles/index.js +120 -16
  502. package/build-module/utils/transform-styles/index.js.map +1 -1
  503. package/build-style/content-rtl.css +19 -11
  504. package/build-style/content.css +19 -11
  505. package/build-style/style-rtl.css +27 -108
  506. package/build-style/style.css +27 -108
  507. package/build-types/utils/dom.d.ts +25 -0
  508. package/build-types/utils/dom.d.ts.map +1 -1
  509. package/package.json +34 -32
  510. package/src/components/block-alignment-matrix-control/index.js +1 -1
  511. package/src/components/block-breadcrumb/index.js +2 -2
  512. package/src/components/block-breadcrumb/style.scss +1 -30
  513. package/src/components/block-canvas/index.js +9 -1
  514. package/src/components/block-compare/block-view.js +6 -1
  515. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +1 -1
  516. package/src/components/block-draggable/content.scss +1 -1
  517. package/src/components/block-draggable/index.js +4 -4
  518. package/src/components/block-draggable/style.scss +1 -1
  519. package/src/components/block-draggable/use-scroll-when-dragging.js +25 -25
  520. package/src/components/block-edit/multiple-usage-warning.js +2 -0
  521. package/src/components/block-inspector/index.js +22 -7
  522. package/src/components/block-inspector/style.scss +2 -4
  523. package/src/components/block-list/block-invalid-warning.js +3 -2
  524. package/src/components/block-list/block.js +6 -2
  525. package/src/components/block-list/content.scss +23 -3
  526. package/src/components/block-list/index.js +59 -38
  527. package/src/components/block-list/use-block-props/index.js +3 -0
  528. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  529. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +56 -0
  530. package/src/components/block-list/zoom-out-separator.js +110 -0
  531. package/src/components/block-lock/style.scss +1 -1
  532. package/src/components/block-lock/toolbar.js +3 -3
  533. package/src/components/block-mover/button.js +1 -0
  534. package/src/components/block-mover/index.js +1 -0
  535. package/src/components/block-mover/style.scss +1 -1
  536. package/src/components/block-navigation/dropdown.js +2 -0
  537. package/src/components/block-pattern-setup/index.js +3 -15
  538. package/src/components/block-pattern-setup/setup-toolbar.js +17 -4
  539. package/src/components/block-pattern-setup/style.scss +2 -2
  540. package/src/components/block-patterns-list/index.js +15 -18
  541. package/src/components/block-patterns-list/style.scss +2 -2
  542. package/src/components/block-patterns-paging/index.js +6 -0
  543. package/src/components/block-popover/index.js +7 -28
  544. package/src/components/block-popover/style.scss +1 -1
  545. package/src/components/block-quick-navigation/index.js +2 -0
  546. package/src/components/block-settings-menu-controls/index.js +7 -1
  547. package/src/components/block-switcher/index.js +45 -23
  548. package/src/components/block-switcher/pattern-transformations-menu.js +3 -12
  549. package/src/components/block-switcher/style.scss +5 -30
  550. package/src/components/block-toolbar/index.js +27 -11
  551. package/src/components/block-toolbar/shuffle.js +9 -7
  552. package/src/components/block-toolbar/style.scss +4 -1
  553. package/src/components/block-tools/block-selection-button.js +4 -0
  554. package/src/components/block-tools/block-toolbar-popover.js +10 -6
  555. package/src/components/block-tools/index.js +1 -1
  556. package/src/components/block-tools/style.scss +3 -4
  557. package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  558. package/src/components/block-tools/zoom-out-mode-inserters.js +2 -17
  559. package/src/components/block-tools/zoom-out-popover.js +3 -7
  560. package/src/components/block-tools/zoom-out-toolbar.js +31 -6
  561. package/src/components/block-variation-picker/README.md +2 -2
  562. package/src/components/block-variation-picker/index.js +6 -1
  563. package/src/components/block-variation-transforms/index.js +2 -0
  564. package/src/components/block-variation-transforms/style.scss +1 -1
  565. package/src/components/button-block-appender/content.scss +0 -1
  566. package/src/components/button-block-appender/index.js +30 -28
  567. package/src/components/color-palette/test/control.js +15 -2
  568. package/src/components/colors-gradients/dropdown.js +5 -1
  569. package/src/components/colors-gradients/style.scss +4 -4
  570. package/src/components/content-lock/index.js +1 -0
  571. package/src/components/content-lock/modify-content-lock-menu-item.js +58 -0
  572. package/src/components/default-block-appender/content.scss +0 -1
  573. package/src/components/editor-styles/index.js +4 -3
  574. package/src/components/global-styles/background-panel.js +6 -14
  575. package/src/components/global-styles/color-panel.js +8 -4
  576. package/src/components/global-styles/color-panel.native.js +2 -2
  577. package/src/components/global-styles/dimensions-panel.js +40 -40
  578. package/src/components/global-styles/filters-panel.js +5 -1
  579. package/src/components/global-styles/shadow-panel-components.js +11 -15
  580. package/src/components/global-styles/style.scss +3 -4
  581. package/src/components/global-styles/test/typography-utils.js +96 -5
  582. package/src/components/global-styles/test/utils.js +10 -0
  583. package/src/components/global-styles/typography-utils.js +22 -6
  584. package/src/components/global-styles/utils.js +4 -6
  585. package/src/components/grid/grid-item-movers.js +3 -3
  586. package/src/components/grid/style.scss +1 -1
  587. package/src/components/iframe/get-compatibility-styles.js +6 -1
  588. package/src/components/iframe/index.js +5 -5
  589. package/src/components/inner-blocks/index.js +2 -2
  590. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  591. package/src/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +2 -0
  592. package/src/components/inserter/block-patterns-tab/index.js +2 -0
  593. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +32 -15
  594. package/src/components/inserter/index.js +4 -10
  595. package/src/components/inserter/library.js +0 -2
  596. package/src/components/inserter/media-tab/hooks.js +3 -3
  597. package/src/components/inserter/media-tab/media-list.js +1 -7
  598. package/src/components/inserter/media-tab/media-preview.js +15 -8
  599. package/src/components/inserter/media-tab/media-tab.js +2 -0
  600. package/src/components/inserter/menu.js +15 -29
  601. package/src/components/inserter/quick-inserter.js +3 -4
  602. package/src/components/inserter/style.scss +10 -8
  603. package/src/components/inserter-list-item/index.js +4 -4
  604. package/src/components/inserter-list-item/style.scss +1 -3
  605. package/src/components/inserter-listbox/index.js +2 -11
  606. package/src/components/inserter-listbox/item.js +12 -14
  607. package/src/components/inserter-listbox/row.js +2 -9
  608. package/src/components/inspector-controls/groups.js +2 -0
  609. package/src/components/inspector-controls-tabs/index.js +2 -0
  610. package/src/components/inspector-controls-tabs/settings-tab.js +1 -0
  611. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +5 -2
  612. package/src/components/inspector-popover-header/index.js +4 -0
  613. package/src/components/letter-spacing-control/README.md +8 -1
  614. package/src/components/letter-spacing-control/index.js +7 -4
  615. package/src/components/link-control/index.js +17 -8
  616. package/src/components/link-control/settings-drawer.js +2 -0
  617. package/src/components/link-control/style.scss +1 -3
  618. package/src/components/list-view/block-select-button.js +2 -0
  619. package/src/components/list-view/index.js +3 -8
  620. package/src/components/list-view/style.scss +14 -16
  621. package/src/components/media-placeholder/README.md +2 -2
  622. package/src/components/media-placeholder/index.js +21 -4
  623. package/src/components/media-replace-flow/index.js +12 -1
  624. package/src/components/provider/use-block-sync.js +20 -20
  625. package/src/components/responsive-block-control/README.md +3 -27
  626. package/src/components/rich-text/content.scss +1 -1
  627. package/src/components/rich-text/event-listeners/paste-handler.js +6 -1
  628. package/src/components/rich-text/index.js +54 -41
  629. package/src/components/rich-text/style.scss +1 -1
  630. package/src/components/rich-text/use-mark-persistent.js +5 -5
  631. package/src/components/skip-to-selected-block/index.js +2 -0
  632. package/src/components/spacing-sizes-control/style.scss +1 -0
  633. package/src/components/tool-selector/index.js +2 -0
  634. package/src/components/url-input/button.js +6 -0
  635. package/src/components/url-input/index.js +2 -0
  636. package/src/components/url-popover/stories/index.story.js +7 -1
  637. package/src/components/use-block-drop-zone/index.js +37 -5
  638. package/src/components/warning/content.scss +3 -10
  639. package/src/components/writing-flow/index.js +2 -0
  640. package/src/components/writing-flow/use-arrow-nav.js +9 -2
  641. package/src/components/writing-flow/use-event-redirect.js +72 -0
  642. package/src/components/writing-flow/use-input.js +36 -1
  643. package/src/components/writing-flow/use-select-all.js +18 -1
  644. package/src/components/writing-flow/use-selection-observer.js +23 -3
  645. package/src/components/writing-flow/use-tab-nav.js +4 -4
  646. package/src/components/writing-flow/utils.js +30 -0
  647. package/src/hooks/block-bindings.js +42 -43
  648. package/src/hooks/block-bindings.scss +1 -9
  649. package/src/hooks/content-lock-ui.js +11 -36
  650. package/src/hooks/duotone.js +0 -4
  651. package/src/hooks/layout.js +2 -1
  652. package/src/hooks/layout.scss +5 -27
  653. package/src/hooks/spacing-visualizer.js +3 -3
  654. package/src/hooks/style.js +1 -4
  655. package/src/hooks/use-bindings-attributes.js +23 -24
  656. package/src/hooks/use-zoom-out.js +7 -7
  657. package/src/layouts/constrained.js +53 -48
  658. package/src/layouts/flex.js +2 -0
  659. package/src/layouts/grid.js +29 -22
  660. package/src/layouts/test/grid.js +2 -2
  661. package/src/layouts/test/utils.js +6 -8
  662. package/src/layouts/utils.js +1 -9
  663. package/src/private-apis.js +2 -2
  664. package/src/store/actions.js +4 -6
  665. package/src/store/private-actions.js +1 -0
  666. package/src/store/private-keys.js +1 -0
  667. package/src/store/private-selectors.js +18 -14
  668. package/src/store/reducer.js +0 -7
  669. package/src/store/selectors.js +32 -51
  670. package/src/store/utils.js +50 -0
  671. package/src/utils/block-bindings.js +15 -16
  672. package/src/utils/dom.js +117 -0
  673. package/src/utils/get-font-styles-and-weights.js +12 -4
  674. package/src/utils/test/get-font-styles-and-weights.js +148 -0
  675. package/src/utils/test/transform-styles.js +259 -50
  676. package/src/utils/transform-styles/index.js +132 -21
  677. package/tsconfig.json +1 -0
  678. package/tsconfig.tsbuildinfo +1 -1
  679. package/src/utils/test/__snapshots__/transform-styles.js.snap +0 -109
@@ -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
 
package/src/utils/dom.js CHANGED
@@ -57,3 +57,120 @@ export function getBlockClientId( node ) {
57
57
 
58
58
  return blockNode.id.slice( 'block-'.length );
59
59
  }
60
+
61
+ /**
62
+ * Calculates the union of two rectangles.
63
+ *
64
+ * @param {DOMRect} rect1 First rectangle.
65
+ * @param {DOMRect} rect2 Second rectangle.
66
+ * @return {DOMRect} Union of the two rectangles.
67
+ */
68
+ export function rectUnion( rect1, rect2 ) {
69
+ const left = Math.min( rect1.left, rect2.left );
70
+ const right = Math.max( rect1.right, rect2.right );
71
+ const bottom = Math.max( rect1.bottom, rect2.bottom );
72
+ const top = Math.min( rect1.top, rect2.top );
73
+
74
+ return new window.DOMRectReadOnly( left, top, right - left, bottom - top );
75
+ }
76
+
77
+ /**
78
+ * Returns whether an element is visible.
79
+ *
80
+ * @param {Element} element Element.
81
+ * @return {boolean} Whether the element is visible.
82
+ */
83
+ function isElementVisible( element ) {
84
+ const viewport = element.ownerDocument.defaultView;
85
+ if ( ! viewport ) {
86
+ return false;
87
+ }
88
+
89
+ // Check for <VisuallyHidden> component.
90
+ if ( element.classList.contains( 'components-visually-hidden' ) ) {
91
+ return false;
92
+ }
93
+
94
+ const bounds = element.getBoundingClientRect();
95
+ if ( bounds.width === 0 || bounds.height === 0 ) {
96
+ return false;
97
+ }
98
+
99
+ // Older browsers, e.g. Safari < 17.4 may not support the `checkVisibility` method.
100
+ if ( element.checkVisibility ) {
101
+ return element.checkVisibility?.( {
102
+ opacityProperty: true,
103
+ contentVisibilityAuto: true,
104
+ visibilityProperty: true,
105
+ } );
106
+ }
107
+
108
+ const style = viewport.getComputedStyle( element );
109
+
110
+ if (
111
+ style.display === 'none' ||
112
+ style.visibility === 'hidden' ||
113
+ style.opacity === '0'
114
+ ) {
115
+ return false;
116
+ }
117
+
118
+ return true;
119
+ }
120
+
121
+ /**
122
+ * Returns the rect of the element including all visible nested elements.
123
+ *
124
+ * Visible nested elements, including elements that overflow the parent, are
125
+ * taken into account.
126
+ *
127
+ * This function is useful for calculating the visible area of a block that
128
+ * contains nested elements that overflow the block, e.g. the Navigation block,
129
+ * which can contain overflowing Submenu blocks.
130
+ *
131
+ * The returned rect represents the full extent of the element and its visible
132
+ * children, which may extend beyond the viewport.
133
+ *
134
+ * @param {Element} element Element.
135
+ * @return {DOMRect} Bounding client rect of the element and its visible children.
136
+ */
137
+ export function getVisibleElementBounds( element ) {
138
+ const viewport = element.ownerDocument.defaultView;
139
+ if ( ! viewport ) {
140
+ return new window.DOMRectReadOnly();
141
+ }
142
+
143
+ let bounds = element.getBoundingClientRect();
144
+
145
+ const stack = [ element ];
146
+ let currentElement;
147
+
148
+ while ( ( currentElement = stack.pop() ) ) {
149
+ for ( const child of currentElement.children ) {
150
+ if ( isElementVisible( child ) ) {
151
+ const childBounds = child.getBoundingClientRect();
152
+ bounds = rectUnion( bounds, childBounds );
153
+ stack.push( child );
154
+ }
155
+ }
156
+ }
157
+
158
+ /*
159
+ * Take into account the outer horizontal limits of the container in which
160
+ * an element is supposed to be "visible". For example, if an element is
161
+ * positioned -10px to the left of the window x value (0), this function
162
+ * discounts the negative overhang because it's not visible and therefore
163
+ * not to be counted in the visibility calculations. Top and bottom values
164
+ * are not accounted for to accommodate vertical scroll.
165
+ */
166
+ const left = Math.max( bounds.left, 0 );
167
+ const right = Math.min( bounds.right, viewport.innerWidth );
168
+ bounds = new window.DOMRectReadOnly(
169
+ left,
170
+ bounds.top,
171
+ right - left,
172
+ bounds.height
173
+ );
174
+
175
+ return bounds;
176
+ }
@@ -79,7 +79,10 @@ export function getFontStylesAndWeights( fontFamilyFaces ) {
79
79
 
80
80
  fontFamilyFaces?.forEach( ( face ) => {
81
81
  // Check for variable font by looking for a space in the font weight value. e.g. "100 900"
82
- if ( /\s/.test( face.fontWeight.trim() ) ) {
82
+ if (
83
+ 'string' === typeof face.fontWeight &&
84
+ /\s/.test( face.fontWeight.trim() )
85
+ ) {
83
86
  isVariableFont = true;
84
87
 
85
88
  // Find font weight start and end values.
@@ -105,11 +108,15 @@ export function getFontStylesAndWeights( fontFamilyFaces ) {
105
108
  }
106
109
 
107
110
  // Format font style and weight values.
108
- const fontWeight = formatFontWeight( face.fontWeight );
111
+ const fontWeight = formatFontWeight(
112
+ 'number' === typeof face.fontWeight
113
+ ? face.fontWeight.toString()
114
+ : face.fontWeight
115
+ );
109
116
  const fontStyle = formatFontStyle( face.fontStyle );
110
117
 
111
118
  // Create font style and font weight lists without duplicates.
112
- if ( fontStyle ) {
119
+ if ( fontStyle && Object.keys( fontStyle ).length ) {
113
120
  if (
114
121
  ! fontStyles.some(
115
122
  ( style ) => style.value === fontStyle.value
@@ -118,7 +125,8 @@ export function getFontStylesAndWeights( fontFamilyFaces ) {
118
125
  fontStyles.push( fontStyle );
119
126
  }
120
127
  }
121
- if ( fontWeight ) {
128
+
129
+ if ( fontWeight && Object.keys( fontWeight ).length ) {
122
130
  if (
123
131
  ! fontWeights.some(
124
132
  ( weight ) => weight.value === fontWeight.value