@wordpress/block-editor 14.5.0 → 14.7.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 (541) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +0 -8
  3. package/build/autocompleters/block.js +13 -5
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-canvas/index.js +10 -0
  6. package/build/components/block-canvas/index.js.map +1 -1
  7. package/build/components/block-card/index.js +2 -2
  8. package/build/components/block-card/index.js.map +1 -1
  9. package/build/components/block-full-height-alignment-control/index.js +1 -1
  10. package/build/components/block-full-height-alignment-control/index.js.map +1 -1
  11. package/build/components/block-list/block.js +15 -29
  12. package/build/components/block-list/block.js.map +1 -1
  13. package/build/components/block-list/block.native.js +1 -7
  14. package/build/components/block-list/block.native.js.map +1 -1
  15. package/build/components/block-list/index.js +5 -5
  16. package/build/components/block-list/index.js.map +1 -1
  17. package/build/components/block-list/use-block-props/index.js +1 -2
  18. package/build/components/block-list/use-block-props/index.js.map +1 -1
  19. package/build/components/block-list/use-block-props/use-focus-first-element.js +4 -3
  20. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  21. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -6
  22. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  23. package/build/components/block-list/use-in-between-inserter.js +1 -1
  24. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  25. package/build/components/block-patterns-list/index.js +23 -26
  26. package/build/components/block-patterns-list/index.js.map +1 -1
  27. package/build/components/block-patterns-paging/index.js +1 -1
  28. package/build/components/block-patterns-paging/index.js.map +1 -1
  29. package/build/components/block-popover/index.js +3 -46
  30. package/build/components/block-popover/index.js.map +1 -1
  31. package/build/components/block-preview/async.js +51 -0
  32. package/build/components/block-preview/async.js.map +1 -0
  33. package/build/components/block-preview/index.js +6 -3
  34. package/build/components/block-preview/index.js.map +1 -1
  35. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -0
  36. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  37. package/build/components/block-settings-menu/index.js +4 -3
  38. package/build/components/block-settings-menu/index.js.map +1 -1
  39. package/build/components/block-toolbar/change-design.js +119 -0
  40. package/build/components/block-toolbar/change-design.js.map +1 -0
  41. package/build/components/block-toolbar/index.js +19 -7
  42. package/build/components/block-toolbar/index.js.map +1 -1
  43. package/build/components/block-tools/index.js +16 -19
  44. package/build/components/block-tools/index.js.map +1 -1
  45. package/build/components/block-tools/insertion-point.js +4 -3
  46. package/build/components/block-tools/insertion-point.js.map +1 -1
  47. package/build/components/block-tools/use-block-toolbar-popover-props.js +1 -1
  48. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  49. package/build/components/block-tools/use-show-block-tools.js +7 -10
  50. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  51. package/build/components/block-tools/zoom-out-mode-inserters.js +20 -29
  52. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  53. package/build/components/block-variation-transforms/index.js +2 -2
  54. package/build/components/block-variation-transforms/index.js.map +1 -1
  55. package/build/components/block-vertical-alignment-control/ui.js +6 -10
  56. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  57. package/build/components/border-radius-control/linked-button.js +7 -10
  58. package/build/components/border-radius-control/linked-button.js.map +1 -1
  59. package/build/components/collab/block-comment-icon-slot.js +18 -0
  60. package/build/components/collab/block-comment-icon-slot.js.map +1 -0
  61. package/build/components/collab/block-comment-icon-toolbar-slot.js +18 -0
  62. package/build/components/collab/block-comment-icon-toolbar-slot.js.map +1 -0
  63. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
  64. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  65. package/build/components/convert-to-group-buttons/toolbar.js +4 -4
  66. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  67. package/build/components/global-styles/color-panel.js +1 -4
  68. package/build/components/global-styles/color-panel.js.map +1 -1
  69. package/build/components/global-styles/dimensions-panel.js +26 -14
  70. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  71. package/build/components/global-styles/use-global-styles-context.native.js +6 -0
  72. package/build/components/global-styles/use-global-styles-context.native.js.map +1 -1
  73. package/build/components/iframe/get-compatibility-styles.js +4 -4
  74. package/build/components/iframe/get-compatibility-styles.js.map +1 -1
  75. package/build/components/iframe/index.js +33 -22
  76. package/build/components/iframe/index.js.map +1 -1
  77. package/build/components/image-size-control/index.js +61 -20
  78. package/build/components/image-size-control/index.js.map +1 -1
  79. package/build/components/inner-blocks/index.js +9 -5
  80. package/build/components/inner-blocks/index.js.map +1 -1
  81. package/build/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  82. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  83. package/build/components/inserter/block-patterns-tab/index.js +1 -2
  84. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  85. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +5 -3
  86. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  87. package/build/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  88. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  89. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +3 -0
  90. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  91. package/build/components/inserter/block-patterns-tab/utils.js +5 -1
  92. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -1
  93. package/build/components/inserter/category-tabs/index.js +15 -2
  94. package/build/components/inserter/category-tabs/index.js.map +1 -1
  95. package/build/components/inserter/hooks/use-block-types-state.js +1 -1
  96. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  97. package/build/components/inserter/hooks/use-patterns-paging.js +0 -5
  98. package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -1
  99. package/build/components/inserter/menu.js +4 -2
  100. package/build/components/inserter/menu.js.map +1 -1
  101. package/build/components/inserter/search-results.js +0 -2
  102. package/build/components/inserter/search-results.js.map +1 -1
  103. package/build/components/inserter-button/index.native.js +1 -1
  104. package/build/components/inserter-button/index.native.js.map +1 -1
  105. package/build/components/inspector-controls-tabs/index.js +0 -2
  106. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  107. package/build/components/inspector-controls-tabs/utils.js +3 -6
  108. package/build/components/inspector-controls-tabs/utils.js.map +1 -1
  109. package/build/components/link-control/link-preview.js +12 -9
  110. package/build/components/link-control/link-preview.js.map +1 -1
  111. package/build/components/list-view/appender.js +4 -3
  112. package/build/components/list-view/appender.js.map +1 -1
  113. package/build/components/list-view/branch.js +6 -5
  114. package/build/components/list-view/branch.js.map +1 -1
  115. package/build/components/list-view/index.js +1 -2
  116. package/build/components/list-view/index.js.map +1 -1
  117. package/build/components/media-placeholder/index.js +4 -4
  118. package/build/components/media-placeholder/index.js.map +1 -1
  119. package/build/components/provider/index.js +1 -1
  120. package/build/components/provider/index.js.map +1 -1
  121. package/build/components/rich-text/event-listeners/index.js +3 -1
  122. package/build/components/rich-text/event-listeners/index.js.map +1 -1
  123. package/build/components/rich-text/index.js +1 -1
  124. package/build/components/rich-text/index.js.map +1 -1
  125. package/build/components/rich-text/index.native.js +2 -6
  126. package/build/components/rich-text/index.native.js.map +1 -1
  127. package/build/components/spacing-sizes-control/index.js +2 -2
  128. package/build/components/spacing-sizes-control/index.js.map +1 -1
  129. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -3
  130. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  131. package/build/components/spacing-sizes-control/linked-button.js +1 -5
  132. package/build/components/spacing-sizes-control/linked-button.js.map +1 -1
  133. package/build/components/tabbed-sidebar/index.js +1 -1
  134. package/build/components/tabbed-sidebar/index.js.map +1 -1
  135. package/build/components/tool-selector/index.js +1 -4
  136. package/build/components/tool-selector/index.js.map +1 -1
  137. package/build/components/url-input/index.js +4 -2
  138. package/build/components/url-input/index.js.map +1 -1
  139. package/build/components/use-block-commands/index.js +6 -7
  140. package/build/components/use-block-commands/index.js.map +1 -1
  141. package/build/components/use-block-drop-zone/index.js +5 -5
  142. package/build/components/use-block-drop-zone/index.js.map +1 -1
  143. package/build/components/use-block-drop-zone/index.native.js +0 -1
  144. package/build/components/use-block-drop-zone/index.native.js.map +1 -1
  145. package/build/components/use-moving-animation/index.js +1 -3
  146. package/build/components/use-moving-animation/index.js.map +1 -1
  147. package/build/components/use-settings/index.js +1 -3
  148. package/build/components/use-settings/index.js.map +1 -1
  149. package/build/components/writing-flow/index.js +5 -3
  150. package/build/components/writing-flow/index.js.map +1 -1
  151. package/build/components/writing-flow/use-tab-nav.js +2 -3
  152. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  153. package/build/hooks/block-bindings.js +19 -8
  154. package/build/hooks/block-bindings.js.map +1 -1
  155. package/build/hooks/contrast-checker.js +0 -1
  156. package/build/hooks/contrast-checker.js.map +1 -1
  157. package/build/hooks/duotone.js +2 -2
  158. package/build/hooks/duotone.js.map +1 -1
  159. package/build/hooks/font-family.js +1 -1
  160. package/build/hooks/font-family.js.map +1 -1
  161. package/build/hooks/style.js +4 -1
  162. package/build/hooks/style.js.map +1 -1
  163. package/build/hooks/supports.js +6 -6
  164. package/build/hooks/supports.js.map +1 -1
  165. package/build/hooks/typography.js +5 -5
  166. package/build/hooks/typography.js.map +1 -1
  167. package/build/hooks/use-zoom-out.js +13 -22
  168. package/build/hooks/use-zoom-out.js.map +1 -1
  169. package/build/hooks/utils.js +2 -2
  170. package/build/hooks/utils.js.map +1 -1
  171. package/build/index.js +0 -7
  172. package/build/index.js.map +1 -1
  173. package/build/lock-unlock.js.map +1 -1
  174. package/build/private-apis.js +6 -3
  175. package/build/private-apis.js.map +1 -1
  176. package/build/store/actions.js +2 -33
  177. package/build/store/actions.js.map +1 -1
  178. package/build/store/defaults.js +1 -1
  179. package/build/store/defaults.js.map +1 -1
  180. package/build/store/private-actions.js +57 -8
  181. package/build/store/private-actions.js.map +1 -1
  182. package/build/store/private-selectors.js +10 -22
  183. package/build/store/private-selectors.js.map +1 -1
  184. package/build/store/reducer.js +16 -6
  185. package/build/store/reducer.js.map +1 -1
  186. package/build/store/selectors.js +53 -15
  187. package/build/store/selectors.js.map +1 -1
  188. package/build/store/utils.js +5 -4
  189. package/build/store/utils.js.map +1 -1
  190. package/build/utils/dom.js +37 -17
  191. package/build/utils/dom.js.map +1 -1
  192. package/build/utils/get-font-styles-and-weights.js +1 -1
  193. package/build/utils/get-font-styles-and-weights.js.map +1 -1
  194. package/build/utils/transform-styles/index.js +4 -3
  195. package/build/utils/transform-styles/index.js.map +1 -1
  196. package/build-module/autocompleters/block.js +14 -6
  197. package/build-module/autocompleters/block.js.map +1 -1
  198. package/build-module/components/block-canvas/index.js +11 -1
  199. package/build-module/components/block-canvas/index.js.map +1 -1
  200. package/build-module/components/block-card/index.js +3 -3
  201. package/build-module/components/block-card/index.js.map +1 -1
  202. package/build-module/components/block-full-height-alignment-control/index.js +1 -1
  203. package/build-module/components/block-full-height-alignment-control/index.js.map +1 -1
  204. package/build-module/components/block-list/block.js +16 -28
  205. package/build-module/components/block-list/block.js.map +1 -1
  206. package/build-module/components/block-list/block.native.js +1 -7
  207. package/build-module/components/block-list/block.native.js.map +1 -1
  208. package/build-module/components/block-list/index.js +5 -5
  209. package/build-module/components/block-list/index.js.map +1 -1
  210. package/build-module/components/block-list/use-block-props/index.js +1 -2
  211. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  212. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +4 -3
  213. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  214. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -6
  215. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  216. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  217. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  218. package/build-module/components/block-patterns-list/index.js +23 -26
  219. package/build-module/components/block-patterns-list/index.js.map +1 -1
  220. package/build-module/components/block-patterns-paging/index.js +1 -1
  221. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  222. package/build-module/components/block-popover/index.js +4 -47
  223. package/build-module/components/block-popover/index.js.map +1 -1
  224. package/build-module/components/block-preview/async.js +44 -0
  225. package/build-module/components/block-preview/async.js.map +1 -0
  226. package/build-module/components/block-preview/index.js +6 -3
  227. package/build-module/components/block-preview/index.js.map +1 -1
  228. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -0
  229. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  230. package/build-module/components/block-settings-menu/index.js +5 -4
  231. package/build-module/components/block-settings-menu/index.js.map +1 -1
  232. package/build-module/components/block-toolbar/change-design.js +111 -0
  233. package/build-module/components/block-toolbar/change-design.js.map +1 -0
  234. package/build-module/components/block-toolbar/index.js +19 -7
  235. package/build-module/components/block-toolbar/index.js.map +1 -1
  236. package/build-module/components/block-tools/index.js +17 -20
  237. package/build-module/components/block-tools/index.js.map +1 -1
  238. package/build-module/components/block-tools/insertion-point.js +4 -3
  239. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  240. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -2
  241. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  242. package/build-module/components/block-tools/use-show-block-tools.js +7 -10
  243. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  244. package/build-module/components/block-tools/zoom-out-mode-inserters.js +20 -29
  245. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  246. package/build-module/components/block-variation-transforms/index.js +2 -2
  247. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  248. package/build-module/components/block-vertical-alignment-control/ui.js +6 -10
  249. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  250. package/build-module/components/border-radius-control/linked-button.js +8 -11
  251. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  252. package/build-module/components/collab/block-comment-icon-slot.js +11 -0
  253. package/build-module/components/collab/block-comment-icon-slot.js.map +1 -0
  254. package/build-module/components/collab/block-comment-icon-toolbar-slot.js +11 -0
  255. package/build-module/components/collab/block-comment-icon-toolbar-slot.js.map +1 -0
  256. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
  257. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  258. package/build-module/components/convert-to-group-buttons/toolbar.js +4 -4
  259. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  260. package/build-module/components/global-styles/color-panel.js +2 -5
  261. package/build-module/components/global-styles/color-panel.js.map +1 -1
  262. package/build-module/components/global-styles/dimensions-panel.js +26 -14
  263. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  264. package/build-module/components/global-styles/use-global-styles-context.native.js +6 -0
  265. package/build-module/components/global-styles/use-global-styles-context.native.js.map +1 -1
  266. package/build-module/components/iframe/get-compatibility-styles.js +4 -4
  267. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -1
  268. package/build-module/components/iframe/index.js +33 -22
  269. package/build-module/components/iframe/index.js.map +1 -1
  270. package/build-module/components/image-size-control/index.js +62 -21
  271. package/build-module/components/image-size-control/index.js.map +1 -1
  272. package/build-module/components/inner-blocks/index.js +9 -5
  273. package/build-module/components/inner-blocks/index.js.map +1 -1
  274. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  275. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  276. package/build-module/components/inserter/block-patterns-tab/index.js +1 -2
  277. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  278. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +6 -4
  279. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  280. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  281. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  282. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +4 -1
  283. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  284. package/build-module/components/inserter/block-patterns-tab/utils.js +4 -0
  285. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -1
  286. package/build-module/components/inserter/category-tabs/index.js +15 -2
  287. package/build-module/components/inserter/category-tabs/index.js.map +1 -1
  288. package/build-module/components/inserter/hooks/use-block-types-state.js +1 -1
  289. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  290. package/build-module/components/inserter/hooks/use-patterns-paging.js +1 -6
  291. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -1
  292. package/build-module/components/inserter/menu.js +5 -3
  293. package/build-module/components/inserter/menu.js.map +1 -1
  294. package/build-module/components/inserter/search-results.js +0 -2
  295. package/build-module/components/inserter/search-results.js.map +1 -1
  296. package/build-module/components/inserter-button/index.native.js +1 -1
  297. package/build-module/components/inserter-button/index.native.js.map +1 -1
  298. package/build-module/components/inspector-controls-tabs/index.js +0 -2
  299. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  300. package/build-module/components/inspector-controls-tabs/utils.js +3 -6
  301. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -1
  302. package/build-module/components/link-control/link-preview.js +13 -10
  303. package/build-module/components/link-control/link-preview.js.map +1 -1
  304. package/build-module/components/list-view/appender.js +4 -3
  305. package/build-module/components/list-view/appender.js.map +1 -1
  306. package/build-module/components/list-view/branch.js +7 -6
  307. package/build-module/components/list-view/branch.js.map +1 -1
  308. package/build-module/components/list-view/index.js +1 -2
  309. package/build-module/components/list-view/index.js.map +1 -1
  310. package/build-module/components/media-placeholder/index.js +4 -4
  311. package/build-module/components/media-placeholder/index.js.map +1 -1
  312. package/build-module/components/provider/index.js +1 -1
  313. package/build-module/components/provider/index.js.map +1 -1
  314. package/build-module/components/rich-text/event-listeners/index.js +4 -2
  315. package/build-module/components/rich-text/event-listeners/index.js.map +1 -1
  316. package/build-module/components/rich-text/index.js +1 -1
  317. package/build-module/components/rich-text/index.js.map +1 -1
  318. package/build-module/components/rich-text/index.native.js +2 -6
  319. package/build-module/components/rich-text/index.native.js.map +1 -1
  320. package/build-module/components/spacing-sizes-control/index.js +3 -3
  321. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  322. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -4
  323. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  324. package/build-module/components/spacing-sizes-control/linked-button.js +2 -6
  325. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -1
  326. package/build-module/components/tabbed-sidebar/index.js +1 -1
  327. package/build-module/components/tabbed-sidebar/index.js.map +1 -1
  328. package/build-module/components/tool-selector/index.js +1 -4
  329. package/build-module/components/tool-selector/index.js.map +1 -1
  330. package/build-module/components/url-input/index.js +4 -2
  331. package/build-module/components/url-input/index.js.map +1 -1
  332. package/build-module/components/use-block-commands/index.js +5 -5
  333. package/build-module/components/use-block-commands/index.js.map +1 -1
  334. package/build-module/components/use-block-drop-zone/index.js +5 -5
  335. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  336. package/build-module/components/use-block-drop-zone/index.native.js +0 -1
  337. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
  338. package/build-module/components/use-moving-animation/index.js +1 -3
  339. package/build-module/components/use-moving-animation/index.js.map +1 -1
  340. package/build-module/components/use-settings/index.js +1 -3
  341. package/build-module/components/use-settings/index.js.map +1 -1
  342. package/build-module/components/writing-flow/index.js +5 -3
  343. package/build-module/components/writing-flow/index.js.map +1 -1
  344. package/build-module/components/writing-flow/use-tab-nav.js +2 -3
  345. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  346. package/build-module/hooks/block-bindings.js +20 -9
  347. package/build-module/hooks/block-bindings.js.map +1 -1
  348. package/build-module/hooks/contrast-checker.js +0 -1
  349. package/build-module/hooks/contrast-checker.js.map +1 -1
  350. package/build-module/hooks/duotone.js +2 -2
  351. package/build-module/hooks/duotone.js.map +1 -1
  352. package/build-module/hooks/font-family.js +1 -1
  353. package/build-module/hooks/font-family.js.map +1 -1
  354. package/build-module/hooks/style.js +4 -1
  355. package/build-module/hooks/style.js.map +1 -1
  356. package/build-module/hooks/supports.js +6 -6
  357. package/build-module/hooks/supports.js.map +1 -1
  358. package/build-module/hooks/typography.js +5 -5
  359. package/build-module/hooks/typography.js.map +1 -1
  360. package/build-module/hooks/use-zoom-out.js +15 -23
  361. package/build-module/hooks/use-zoom-out.js.map +1 -1
  362. package/build-module/hooks/utils.js +2 -2
  363. package/build-module/hooks/utils.js.map +1 -1
  364. package/build-module/index.js +1 -1
  365. package/build-module/index.js.map +1 -1
  366. package/build-module/lock-unlock.js.map +1 -1
  367. package/build-module/private-apis.js +7 -5
  368. package/build-module/private-apis.js.map +1 -1
  369. package/build-module/store/actions.js +2 -33
  370. package/build-module/store/actions.js.map +1 -1
  371. package/build-module/store/defaults.js +1 -1
  372. package/build-module/store/defaults.js.map +1 -1
  373. package/build-module/store/private-actions.js +54 -7
  374. package/build-module/store/private-actions.js.map +1 -1
  375. package/build-module/store/private-selectors.js +10 -21
  376. package/build-module/store/private-selectors.js.map +1 -1
  377. package/build-module/store/reducer.js +16 -6
  378. package/build-module/store/reducer.js.map +1 -1
  379. package/build-module/store/selectors.js +54 -16
  380. package/build-module/store/selectors.js.map +1 -1
  381. package/build-module/store/utils.js +3 -3
  382. package/build-module/store/utils.js.map +1 -1
  383. package/build-module/utils/dom.js +35 -16
  384. package/build-module/utils/dom.js.map +1 -1
  385. package/build-module/utils/get-font-styles-and-weights.js +2 -2
  386. package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
  387. package/build-module/utils/transform-styles/index.js +3 -2
  388. package/build-module/utils/transform-styles/index.js.map +1 -1
  389. package/build-style/content-rtl.css +16 -10
  390. package/build-style/content.css +16 -10
  391. package/build-style/style-rtl.css +47 -25
  392. package/build-style/style.css +47 -25
  393. package/build-types/utils/dom.d.ts +7 -9
  394. package/build-types/utils/dom.d.ts.map +1 -1
  395. package/package.json +34 -32
  396. package/src/autocompleters/block.js +16 -7
  397. package/src/components/block-canvas/index.js +17 -1
  398. package/src/components/block-canvas/style.scss +3 -1
  399. package/src/components/block-card/index.js +3 -3
  400. package/src/components/block-full-height-alignment-control/index.js +1 -1
  401. package/src/components/block-inspector/style.scss +2 -7
  402. package/src/components/block-list/block.js +29 -50
  403. package/src/components/block-list/block.native.js +0 -4
  404. package/src/components/block-list/content.scss +1 -1
  405. package/src/components/block-list/index.js +4 -4
  406. package/src/components/block-list/use-block-props/index.js +0 -2
  407. package/src/components/block-list/use-block-props/use-focus-first-element.js +5 -3
  408. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +7 -20
  409. package/src/components/block-list/use-in-between-inserter.js +1 -1
  410. package/src/components/block-patterns-list/README.md +8 -8
  411. package/src/components/block-patterns-list/index.js +35 -51
  412. package/src/components/block-patterns-list/stories/fixtures.js +834 -0
  413. package/src/components/block-patterns-list/stories/index.story.js +64 -0
  414. package/src/components/block-patterns-list/style.scss +2 -0
  415. package/src/components/block-patterns-paging/index.js +1 -1
  416. package/src/components/block-popover/index.js +4 -66
  417. package/src/components/block-preview/async.js +43 -0
  418. package/src/components/block-preview/index.js +8 -3
  419. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
  420. package/src/components/block-settings-menu/index.js +3 -0
  421. package/src/components/block-toolbar/change-design.js +127 -0
  422. package/src/components/block-toolbar/index.js +25 -8
  423. package/src/components/block-toolbar/style.scss +16 -0
  424. package/src/components/block-tools/index.js +30 -27
  425. package/src/components/block-tools/insertion-point.js +4 -3
  426. package/src/components/block-tools/style.scss +12 -20
  427. package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -2
  428. package/src/components/block-tools/use-show-block-tools.js +3 -14
  429. package/src/components/block-tools/zoom-out-mode-inserters.js +25 -40
  430. package/src/components/block-variation-transforms/index.js +2 -2
  431. package/src/components/block-vertical-alignment-control/ui.js +11 -15
  432. package/src/components/border-radius-control/linked-button.js +9 -11
  433. package/src/components/collab/block-comment-icon-slot.js +12 -0
  434. package/src/components/collab/block-comment-icon-toolbar-slot.js +12 -0
  435. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
  436. package/src/components/convert-to-group-buttons/toolbar.js +4 -4
  437. package/src/components/default-block-appender/content.scss +13 -19
  438. package/src/components/global-styles/color-panel.js +2 -10
  439. package/src/components/global-styles/dimensions-panel.js +22 -16
  440. package/src/components/global-styles/test/use-global-styles-context.native.js +1 -0
  441. package/src/components/global-styles/use-global-styles-context.native.js +6 -0
  442. package/src/components/iframe/content.scss +4 -9
  443. package/src/components/iframe/get-compatibility-styles.js +4 -9
  444. package/src/components/iframe/index.js +48 -34
  445. package/src/components/iframe/style.scss +2 -3
  446. package/src/components/image-size-control/index.js +74 -43
  447. package/src/components/image-size-control/test/index.js +5 -63
  448. package/src/components/inner-blocks/index.js +12 -6
  449. package/src/components/inserter/block-patterns-explorer/pattern-list.js +3 -6
  450. package/src/components/inserter/block-patterns-tab/index.js +0 -1
  451. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +10 -4
  452. package/src/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  453. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +8 -0
  454. package/src/components/inserter/block-patterns-tab/utils.js +5 -0
  455. package/src/components/inserter/category-tabs/index.js +16 -2
  456. package/src/components/inserter/hooks/use-block-types-state.js +6 -1
  457. package/src/components/inserter/hooks/use-patterns-paging.js +1 -6
  458. package/src/components/inserter/menu.js +6 -4
  459. package/src/components/inserter/search-results.js +0 -6
  460. package/src/components/inserter/style.scss +13 -0
  461. package/src/components/inserter-button/index.native.js +1 -1
  462. package/src/components/inspector-controls-tabs/index.js +1 -6
  463. package/src/components/inspector-controls-tabs/utils.js +0 -3
  464. package/src/components/link-control/link-preview.js +15 -8
  465. package/src/components/link-control/test/index.js +63 -24
  466. package/src/components/list-view/appender.js +5 -6
  467. package/src/components/list-view/branch.js +8 -6
  468. package/src/components/list-view/index.js +1 -2
  469. package/src/components/media-placeholder/index.js +4 -4
  470. package/src/components/provider/index.js +1 -3
  471. package/src/components/provider/test/experimental-provider.js +43 -1
  472. package/src/components/rich-text/event-listeners/index.js +4 -2
  473. package/src/components/rich-text/index.js +8 -1
  474. package/src/components/rich-text/index.native.js +0 -2
  475. package/src/components/spacing-sizes-control/index.js +3 -3
  476. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -4
  477. package/src/components/spacing-sizes-control/linked-button.js +2 -12
  478. package/src/components/tabbed-sidebar/index.js +1 -1
  479. package/src/components/tabbed-sidebar/style.scss +1 -1
  480. package/src/components/tool-selector/index.js +1 -5
  481. package/src/components/url-input/index.js +4 -5
  482. package/src/components/use-block-commands/index.js +245 -234
  483. package/src/components/use-block-drop-zone/index.js +5 -5
  484. package/src/components/use-block-drop-zone/index.native.js +0 -1
  485. package/src/components/use-moving-animation/index.js +0 -1
  486. package/src/components/use-settings/index.js +0 -1
  487. package/src/components/writing-flow/index.js +5 -3
  488. package/src/components/writing-flow/use-tab-nav.js +1 -2
  489. package/src/hooks/block-bindings.js +48 -31
  490. package/src/hooks/contrast-checker.js +0 -1
  491. package/src/hooks/duotone.js +2 -2
  492. package/src/hooks/font-family.js +1 -1
  493. package/src/hooks/style.js +7 -3
  494. package/src/hooks/supports.js +6 -6
  495. package/src/hooks/typography.js +5 -5
  496. package/src/hooks/use-zoom-out.js +14 -34
  497. package/src/hooks/utils.js +7 -2
  498. package/src/index.js +0 -1
  499. package/src/private-apis.js +6 -3
  500. package/src/store/actions.js +3 -52
  501. package/src/store/defaults.js +2 -1
  502. package/src/store/private-actions.js +71 -8
  503. package/src/store/private-selectors.js +14 -25
  504. package/src/store/reducer.js +25 -11
  505. package/src/store/selectors.js +116 -53
  506. package/src/store/test/actions.js +41 -0
  507. package/src/store/test/private-selectors.js +5 -0
  508. package/src/store/test/reducer.js +23 -0
  509. package/src/store/utils.js +12 -11
  510. package/src/utils/dom.js +42 -17
  511. package/src/utils/get-font-styles-and-weights.js +2 -2
  512. package/src/utils/test/dom.js +224 -0
  513. package/src/utils/transform-styles/index.js +3 -2
  514. package/tsconfig.json +1 -0
  515. package/tsconfig.tsbuildinfo +1 -1
  516. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -57
  517. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +0 -1
  518. package/build/components/block-toolbar/shuffle.js +0 -110
  519. package/build/components/block-toolbar/shuffle.js.map +0 -1
  520. package/build/components/block-tools/zoom-out-popover.js +0 -58
  521. package/build/components/block-tools/zoom-out-popover.js.map +0 -1
  522. package/build/components/block-tools/zoom-out-toolbar.js +0 -132
  523. package/build/components/block-tools/zoom-out-toolbar.js.map +0 -1
  524. package/build/components/block-vertical-alignment-control/icons.js +0 -48
  525. package/build/components/block-vertical-alignment-control/icons.js.map +0 -1
  526. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -51
  527. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +0 -1
  528. package/build-module/components/block-toolbar/shuffle.js +0 -103
  529. package/build-module/components/block-toolbar/shuffle.js.map +0 -1
  530. package/build-module/components/block-tools/zoom-out-popover.js +0 -49
  531. package/build-module/components/block-tools/zoom-out-popover.js.map +0 -1
  532. package/build-module/components/block-tools/zoom-out-toolbar.js +0 -124
  533. package/build-module/components/block-tools/zoom-out-toolbar.js.map +0 -1
  534. package/build-module/components/block-vertical-alignment-control/icons.js +0 -41
  535. package/build-module/components/block-vertical-alignment-control/icons.js.map +0 -1
  536. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -65
  537. package/src/components/block-toolbar/shuffle.js +0 -111
  538. package/src/components/block-tools/zoom-out-popover.js +0 -47
  539. package/src/components/block-tools/zoom-out-toolbar.js +0 -135
  540. package/src/components/block-vertical-alignment-control/icons.js +0 -34
  541. /package/src/{lock-unlock.js → lock-unlock.ts} +0 -0
@@ -8,6 +8,7 @@ import fastDeepEqual from 'fast-deep-equal/es6';
8
8
  */
9
9
  import { pipe } from '@wordpress/compose';
10
10
  import { combineReducers, select } from '@wordpress/data';
11
+ import deprecated from '@wordpress/deprecated';
11
12
  import { store as blocksStore } from '@wordpress/blocks';
12
13
  /**
13
14
  * Internal dependencies
@@ -1660,17 +1661,30 @@ export function template( state = { isValid: true }, action ) {
1660
1661
  */
1661
1662
  export function settings( state = SETTINGS_DEFAULTS, action ) {
1662
1663
  switch ( action.type ) {
1663
- case 'UPDATE_SETTINGS':
1664
- if ( action.reset ) {
1665
- return {
1666
- ...SETTINGS_DEFAULTS,
1667
- ...action.settings,
1668
- };
1669
- }
1670
- return {
1671
- ...state,
1672
- ...action.settings,
1673
- };
1664
+ case 'UPDATE_SETTINGS': {
1665
+ const updatedSettings = action.reset
1666
+ ? {
1667
+ ...SETTINGS_DEFAULTS,
1668
+ ...action.settings,
1669
+ }
1670
+ : {
1671
+ ...state,
1672
+ ...action.settings,
1673
+ };
1674
+
1675
+ Object.defineProperty( updatedSettings, '__unstableIsPreviewMode', {
1676
+ get() {
1677
+ deprecated( '__unstableIsPreviewMode', {
1678
+ since: '6.8',
1679
+ alternative: 'isPreviewMode',
1680
+ } );
1681
+
1682
+ return this.isPreviewMode;
1683
+ },
1684
+ } );
1685
+
1686
+ return updatedSettings;
1687
+ }
1674
1688
  }
1675
1689
 
1676
1690
  return state;
@@ -41,6 +41,7 @@ import {
41
41
  getSectionRootClientId,
42
42
  isSectionBlock,
43
43
  getParentSectionBlock,
44
+ isZoomOut,
44
45
  } from './private-selectors';
45
46
 
46
47
  /**
@@ -541,6 +542,39 @@ export function getSelectedBlockClientId( state ) {
541
542
  *
542
543
  * @param {Object} state Global application state.
543
544
  *
545
+ * @example
546
+ *
547
+ *```js
548
+ * import { select } from '@wordpress/data'
549
+ * import { store as blockEditorStore } from '@wordpress/block-editor'
550
+ *
551
+ * // Set initial active block client ID
552
+ * let activeBlockClientId = null
553
+ *
554
+ * const getActiveBlockData = () => {
555
+ * const activeBlock = select(blockEditorStore).getSelectedBlock()
556
+ *
557
+ * if (activeBlock && activeBlock.clientId !== activeBlockClientId) {
558
+ * activeBlockClientId = activeBlock.clientId
559
+ *
560
+ * // Get active block name and attributes
561
+ * const activeBlockName = activeBlock.name
562
+ * const activeBlockAttributes = activeBlock.attributes
563
+ *
564
+ * // Log active block name and attributes
565
+ * console.log(activeBlockName, activeBlockAttributes)
566
+ * }
567
+ * }
568
+ *
569
+ * // Subscribe to changes in the editor
570
+ * // wp.data.subscribe(() => {
571
+ * // getActiveBlockData()
572
+ * // })
573
+ *
574
+ * // Update active block data on click
575
+ * // onclick="getActiveBlockData()"
576
+ *```
577
+ *
544
578
  * @return {?Object} Selected block.
545
579
  */
546
580
  export function getSelectedBlock( state ) {
@@ -1552,12 +1586,18 @@ export function getTemplateLock( state, rootClientId ) {
1552
1586
  * @param {string|Object} blockNameOrType The block type object, e.g., the response
1553
1587
  * from the block directory; or a string name of
1554
1588
  * an installed block type, e.g.' core/paragraph'.
1589
+ * @param {Set} checkedBlocks Set of block names that have already been checked.
1555
1590
  *
1556
1591
  * @return {boolean} Whether the given block type is allowed to be inserted.
1557
1592
  */
1558
- const isBlockVisibleInTheInserter = ( state, blockNameOrType ) => {
1593
+ const isBlockVisibleInTheInserter = (
1594
+ state,
1595
+ blockNameOrType,
1596
+ checkedBlocks = new Set()
1597
+ ) => {
1559
1598
  let blockType;
1560
1599
  let blockName;
1600
+
1561
1601
  if ( blockNameOrType && 'object' === typeof blockNameOrType ) {
1562
1602
  blockType = blockNameOrType;
1563
1603
  blockName = blockNameOrType.name;
@@ -1565,6 +1605,7 @@ const isBlockVisibleInTheInserter = ( state, blockNameOrType ) => {
1565
1605
  blockType = getBlockType( blockNameOrType );
1566
1606
  blockName = blockNameOrType;
1567
1607
  }
1608
+
1568
1609
  if ( ! blockType ) {
1569
1610
  return false;
1570
1611
  }
@@ -1580,17 +1621,29 @@ const isBlockVisibleInTheInserter = ( state, blockNameOrType ) => {
1580
1621
  return false;
1581
1622
  }
1582
1623
 
1624
+ if ( checkedBlocks.has( blockName ) ) {
1625
+ return false;
1626
+ }
1627
+
1628
+ checkedBlocks.add( blockName );
1629
+
1583
1630
  // If parent blocks are not visible, child blocks should be hidden too.
1584
- if ( !! blockType.parent?.length ) {
1631
+ if ( Array.isArray( blockType.parent ) ) {
1585
1632
  return blockType.parent.some(
1586
1633
  ( name ) =>
1587
- isBlockVisibleInTheInserter( state, name ) ||
1634
+ ( blockName !== name &&
1635
+ isBlockVisibleInTheInserter(
1636
+ state,
1637
+ name,
1638
+ checkedBlocks
1639
+ ) ) ||
1588
1640
  // Exception for blocks with post-content parent,
1589
1641
  // the root level is often consider as "core/post-content".
1590
1642
  // This exception should only apply to the post editor ideally though.
1591
1643
  name === 'core/post-content'
1592
1644
  );
1593
1645
  }
1646
+
1594
1647
  return true;
1595
1648
  };
1596
1649
 
@@ -1741,10 +1794,12 @@ const canInsertBlockTypeUnmemoized = (
1741
1794
  *
1742
1795
  * @return {boolean} Whether the given block type is allowed to be inserted.
1743
1796
  */
1744
- export const canInsertBlockType = createSelector(
1745
- canInsertBlockTypeUnmemoized,
1746
- ( state, blockName, rootClientId ) =>
1747
- getInsertBlockTypeDependants( state, rootClientId )
1797
+ export const canInsertBlockType = createRegistrySelector( ( select ) =>
1798
+ createSelector(
1799
+ canInsertBlockTypeUnmemoized,
1800
+ ( state, blockName, rootClientId ) =>
1801
+ getInsertBlockTypeDependants( select )( state, rootClientId )
1802
+ )
1748
1803
  );
1749
1804
 
1750
1805
  /**
@@ -2171,7 +2226,7 @@ export const getInserterItems = createRegistrySelector( ( select ) =>
2171
2226
  unlock( select( STORE_NAME ) ).getReusableBlocks(),
2172
2227
  state.blocks.order,
2173
2228
  state.preferences.insertUsage,
2174
- ...getInsertBlockTypeDependants( state, rootClientId ),
2229
+ ...getInsertBlockTypeDependants( select )( state, rootClientId ),
2175
2230
  ]
2176
2231
  )
2177
2232
  );
@@ -2202,44 +2257,51 @@ export const getInserterItems = createRegistrySelector( ( select ) =>
2202
2257
  * this item.
2203
2258
  * @property {number} frecency Heuristic that combines frequency and recency.
2204
2259
  */
2205
- export const getBlockTransformItems = createSelector(
2206
- ( state, blocks, rootClientId = null ) => {
2207
- const normalizedBlocks = Array.isArray( blocks ) ? blocks : [ blocks ];
2208
- const buildBlockTypeTransformItem = buildBlockTypeItem( state, {
2209
- buildScope: 'transform',
2210
- } );
2211
- const blockTypeTransformItems = getBlockTypes()
2212
- .filter( ( blockType ) =>
2213
- canIncludeBlockTypeInInserter( state, blockType, rootClientId )
2214
- )
2215
- .map( buildBlockTypeTransformItem );
2260
+ export const getBlockTransformItems = createRegistrySelector( ( select ) =>
2261
+ createSelector(
2262
+ ( state, blocks, rootClientId = null ) => {
2263
+ const normalizedBlocks = Array.isArray( blocks )
2264
+ ? blocks
2265
+ : [ blocks ];
2266
+ const buildBlockTypeTransformItem = buildBlockTypeItem( state, {
2267
+ buildScope: 'transform',
2268
+ } );
2269
+ const blockTypeTransformItems = getBlockTypes()
2270
+ .filter( ( blockType ) =>
2271
+ canIncludeBlockTypeInInserter(
2272
+ state,
2273
+ blockType,
2274
+ rootClientId
2275
+ )
2276
+ )
2277
+ .map( buildBlockTypeTransformItem );
2216
2278
 
2217
- const itemsByName = Object.fromEntries(
2218
- Object.entries( blockTypeTransformItems ).map( ( [ , value ] ) => [
2219
- value.name,
2220
- value,
2221
- ] )
2222
- );
2279
+ const itemsByName = Object.fromEntries(
2280
+ Object.entries( blockTypeTransformItems ).map(
2281
+ ( [ , value ] ) => [ value.name, value ]
2282
+ )
2283
+ );
2223
2284
 
2224
- const possibleTransforms = getPossibleBlockTransformations(
2225
- normalizedBlocks
2226
- ).reduce( ( accumulator, block ) => {
2227
- if ( itemsByName[ block?.name ] ) {
2228
- accumulator.push( itemsByName[ block.name ] );
2229
- }
2230
- return accumulator;
2231
- }, [] );
2232
- return orderBy(
2233
- possibleTransforms,
2234
- ( block ) => itemsByName[ block.name ].frecency,
2235
- 'desc'
2236
- );
2237
- },
2238
- ( state, blocks, rootClientId ) => [
2239
- getBlockTypes(),
2240
- state.preferences.insertUsage,
2241
- ...getInsertBlockTypeDependants( state, rootClientId ),
2242
- ]
2285
+ const possibleTransforms = getPossibleBlockTransformations(
2286
+ normalizedBlocks
2287
+ ).reduce( ( accumulator, block ) => {
2288
+ if ( itemsByName[ block?.name ] ) {
2289
+ accumulator.push( itemsByName[ block.name ] );
2290
+ }
2291
+ return accumulator;
2292
+ }, [] );
2293
+ return orderBy(
2294
+ possibleTransforms,
2295
+ ( block ) => itemsByName[ block.name ].frecency,
2296
+ 'desc'
2297
+ );
2298
+ },
2299
+ ( state, blocks, rootClientId ) => [
2300
+ getBlockTypes(),
2301
+ state.preferences.insertUsage,
2302
+ ...getInsertBlockTypeDependants( select )( state, rootClientId ),
2303
+ ]
2304
+ )
2243
2305
  );
2244
2306
 
2245
2307
  /**
@@ -2307,7 +2369,7 @@ export const getAllowedBlocks = createRegistrySelector( ( select ) =>
2307
2369
  ( state, rootClientId ) => [
2308
2370
  getBlockTypes(),
2309
2371
  unlock( select( STORE_NAME ) ).getReusableBlocks(),
2310
- ...getInsertBlockTypeDependants( state, rootClientId ),
2372
+ ...getInsertBlockTypeDependants( select )( state, rootClientId ),
2311
2373
  ]
2312
2374
  )
2313
2375
  );
@@ -2382,7 +2444,7 @@ export const __experimentalGetParsedPattern = createRegistrySelector(
2382
2444
 
2383
2445
  const getAllowedPatternsDependants = ( select ) => ( state, rootClientId ) => [
2384
2446
  ...getAllPatternsDependants( select )( state ),
2385
- ...getInsertBlockTypeDependants( state, rootClientId ),
2447
+ ...getInsertBlockTypeDependants( select )( state, rootClientId ),
2386
2448
  ];
2387
2449
 
2388
2450
  const patternsWithParsedBlocks = new WeakMap();
@@ -2711,8 +2773,11 @@ export function isNavigationMode( state ) {
2711
2773
  * @return {string} the editor mode.
2712
2774
  */
2713
2775
  export const __unstableGetEditorMode = createRegistrySelector(
2714
- ( select ) => () => {
2715
- return select( preferencesStore ).get( 'core', 'editorTool' );
2776
+ ( select ) => ( state ) => {
2777
+ return (
2778
+ state.settings.editorTool ??
2779
+ select( preferencesStore ).get( 'core', 'editorTool' )
2780
+ );
2716
2781
  }
2717
2782
  );
2718
2783
 
@@ -2884,10 +2949,8 @@ export function __unstableHasActiveBlockOverlayActive( state, clientId ) {
2884
2949
  return true;
2885
2950
  }
2886
2951
 
2887
- const editorMode = __unstableGetEditorMode( state );
2888
-
2889
2952
  // In zoom-out mode, the block overlay is always active for section level blocks.
2890
- if ( editorMode === 'zoom-out' ) {
2953
+ if ( isZoomOut( state ) ) {
2891
2954
  const sectionRootClientId = getSectionRootClientId( state );
2892
2955
  if ( sectionRootClientId ) {
2893
2956
  const sectionClientIds = getBlockOrder(
@@ -2986,8 +3049,7 @@ export const getBlockEditingMode = createRegistrySelector(
2986
3049
  // In zoom-out mode, override the behavior set by
2987
3050
  // __unstableSetBlockEditingMode to only allow editing the top-level
2988
3051
  // sections.
2989
- const editorMode = __unstableGetEditorMode( state );
2990
- if ( editorMode === 'zoom-out' ) {
3052
+ if ( isZoomOut( state ) ) {
2991
3053
  const sectionRootClientId = getSectionRootClientId( state );
2992
3054
 
2993
3055
  if ( clientId === '' /* ROOT_CONTAINER_CLIENT_ID */ ) {
@@ -3009,6 +3071,7 @@ export const getBlockEditingMode = createRegistrySelector(
3009
3071
  return 'disabled';
3010
3072
  }
3011
3073
 
3074
+ const editorMode = __unstableGetEditorMode( state );
3012
3075
  if ( editorMode === 'navigation' ) {
3013
3076
  const sectionRootClientId = getSectionRootClientId( state );
3014
3077
 
@@ -1125,6 +1125,47 @@ describe( 'actions', () => {
1125
1125
  } );
1126
1126
  } );
1127
1127
 
1128
+ describe( 'updateSettings', () => {
1129
+ it( 'warns when setting the deprecated __unstableIsPreviewMode property and sets the stable property instead', () => {
1130
+ const consoleWarn = jest
1131
+ .spyOn( global.console, 'warn' )
1132
+ .mockImplementation();
1133
+
1134
+ const store = createRegistry().registerStore(
1135
+ blockEditorStoreName,
1136
+ {
1137
+ actions,
1138
+ selectors,
1139
+ reducer,
1140
+ }
1141
+ );
1142
+
1143
+ store.dispatch(
1144
+ updateSettings( {
1145
+ __unstableIsPreviewMode: true,
1146
+ } )
1147
+ );
1148
+
1149
+ expect( consoleWarn ).toHaveBeenCalledWith(
1150
+ "__unstableIsPreviewMode argument in wp.data.dispatch('core/block-editor').updateSettings is deprecated since version 6.8. Please use isPreviewMode instead."
1151
+ );
1152
+
1153
+ consoleWarn.mockClear();
1154
+
1155
+ expect( store.getState().settings.__unstableIsPreviewMode ).toBe(
1156
+ true
1157
+ );
1158
+
1159
+ expect( store.getState().settings.isPreviewMode ).toBe( true );
1160
+
1161
+ expect( consoleWarn ).toHaveBeenCalledWith(
1162
+ '__unstableIsPreviewMode is deprecated since version 6.8. Please use isPreviewMode instead.'
1163
+ );
1164
+
1165
+ consoleWarn.mockRestore();
1166
+ } );
1167
+ } );
1168
+
1128
1169
  describe( 'registerInserterMediaCategory', () => {
1129
1170
  describe( 'should log errors when invalid', () => {
1130
1171
  it( 'valid object', () => {
@@ -292,6 +292,11 @@ describe( 'private selectors', () => {
292
292
  '9b9c5c3f-2e46-4f02-9e14-9fe9515b958f': {},
293
293
  },
294
294
  };
295
+ getEnabledClientIdsTree.registry = {
296
+ select: jest.fn( () => ( {
297
+ __unstableGetEditorMode: () => 'edit',
298
+ } ) ),
299
+ };
295
300
 
296
301
  it( 'should return tree containing only clientId and innerBlocks', () => {
297
302
  const state = {
@@ -32,6 +32,7 @@ import {
32
32
  insertionPoint,
33
33
  template,
34
34
  blockListSettings,
35
+ settings,
35
36
  lastBlockAttributesChange,
36
37
  lastBlockInserted,
37
38
  blockEditingModes,
@@ -3070,6 +3071,28 @@ describe( 'state', () => {
3070
3071
  } );
3071
3072
  } );
3072
3073
 
3074
+ describe( 'settings', () => {
3075
+ it( 'should warn about __unstableIsPreviewMode deprecation', () => {
3076
+ const consoleWarn = jest
3077
+ .spyOn( global.console, 'warn' )
3078
+ .mockImplementation();
3079
+
3080
+ const settingsObject = settings( undefined, {
3081
+ type: 'UPDATE_SETTINGS',
3082
+ reset: true,
3083
+ } );
3084
+
3085
+ expect( settingsObject.__unstableIsPreviewMode ).toBeDefined();
3086
+ expect( settingsObject.isPreviewMode ).toBeDefined();
3087
+
3088
+ expect( consoleWarn ).toHaveBeenCalledWith(
3089
+ '__unstableIsPreviewMode is deprecated since version 6.8. Please use isPreviewMode instead.'
3090
+ );
3091
+
3092
+ consoleWarn.mockRestore();
3093
+ } );
3094
+ } );
3095
+
3073
3096
  describe( 'blockListSettings', () => {
3074
3097
  it( 'should add new settings', () => {
3075
3098
  const original = deepFreeze( {} );
@@ -110,14 +110,15 @@ export const getAllPatternsDependants = ( select ) => ( state ) => {
110
110
  ];
111
111
  };
112
112
 
113
- export function getInsertBlockTypeDependants( state, rootClientId ) {
114
- return [
115
- state.blockListSettings[ rootClientId ],
116
- state.blocks.byClientId.get( rootClientId ),
117
- state.settings.allowedBlockTypes,
118
- state.settings.templateLock,
119
- state.blockEditingModes,
120
- state.editorMode,
121
- getSectionRootClientId( state ),
122
- ];
123
- }
113
+ export const getInsertBlockTypeDependants =
114
+ ( select ) => ( state, rootClientId ) => {
115
+ return [
116
+ state.blockListSettings[ rootClientId ],
117
+ state.blocks.byClientId.get( rootClientId ),
118
+ state.settings.allowedBlockTypes,
119
+ state.settings.templateLock,
120
+ state.blockEditingModes,
121
+ select( STORE_NAME ).__unstableGetEditorMode( state ),
122
+ getSectionRootClientId( state ),
123
+ ];
124
+ };
package/src/utils/dom.js CHANGED
@@ -119,38 +119,63 @@ function isElementVisible( element ) {
119
119
  }
120
120
 
121
121
  /**
122
- * Returns the rect of the element including all visible nested elements.
122
+ * Checks if the element is scrollable.
123
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.
124
+ * @param {Element} element Element.
125
+ * @return {boolean} True if the element is scrollable.
126
+ */
127
+ function isScrollable( element ) {
128
+ const style = window.getComputedStyle( element );
129
+ return (
130
+ style.overflowX === 'auto' ||
131
+ style.overflowX === 'scroll' ||
132
+ style.overflowY === 'auto' ||
133
+ style.overflowY === 'scroll'
134
+ );
135
+ }
136
+
137
+ export const WITH_OVERFLOW_ELEMENT_BLOCKS = [ 'core/navigation' ];
138
+ /**
139
+ * Returns the bounding rectangle of an element, with special handling for blocks
140
+ * that have visible overflowing children (defined in WITH_OVERFLOW_ELEMENT_BLOCKS).
130
141
  *
142
+ * For blocks like Navigation that can have overflowing elements (e.g. submenus),
143
+ * this function calculates the combined bounds of both the parent and its visible
144
+ * children. The returned rect may extend beyond the viewport.
131
145
  * The returned rect represents the full extent of the element and its visible
132
146
  * children, which may extend beyond the viewport.
133
147
  *
134
148
  * @param {Element} element Element.
135
149
  * @return {DOMRect} Bounding client rect of the element and its visible children.
136
150
  */
137
- export function getVisibleElementBounds( element ) {
151
+ export function getElementBounds( element ) {
138
152
  const viewport = element.ownerDocument.defaultView;
153
+
139
154
  if ( ! viewport ) {
140
155
  return new window.DOMRectReadOnly();
141
156
  }
142
157
 
143
158
  let bounds = element.getBoundingClientRect();
159
+ const dataType = element.getAttribute( 'data-type' );
144
160
 
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 );
161
+ /*
162
+ * For blocks with overflowing elements (like Navigation), include the bounds
163
+ * of visible children that extend beyond the parent container.
164
+ */
165
+ if ( dataType && WITH_OVERFLOW_ELEMENT_BLOCKS.includes( dataType ) ) {
166
+ const stack = [ element ];
167
+ let currentElement;
168
+
169
+ while ( ( currentElement = stack.pop() ) ) {
170
+ // Children won’t affect bounds unless the element is not scrollable.
171
+ if ( ! isScrollable( currentElement ) ) {
172
+ for ( const child of currentElement.children ) {
173
+ if ( isElementVisible( child ) ) {
174
+ const childBounds = child.getBoundingClientRect();
175
+ bounds = rectUnion( bounds, childBounds );
176
+ stack.push( child );
177
+ }
178
+ }
154
179
  }
155
180
  }
156
181
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { _x, __, sprintf } from '@wordpress/i18n';
4
+ import { _x, sprintf } from '@wordpress/i18n';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -173,7 +173,7 @@ export function getFontStylesAndWeights( fontFamilyFaces ) {
173
173
  ? weightName
174
174
  : sprintf(
175
175
  /* translators: 1: Font weight name. 2: Font style name. */
176
- __( '%1$s %2$s' ),
176
+ _x( '%1$s %2$s', 'font' ),
177
177
  weightName,
178
178
  styleName
179
179
  );