@wordpress/block-editor 14.3.3 → 14.4.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 (418) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +46 -0
  3. package/build/autocompleters/link.js +2 -1
  4. package/build/autocompleters/link.js.map +1 -1
  5. package/build/components/block-actions/index.js +1 -13
  6. package/build/components/block-actions/index.js.map +1 -1
  7. package/build/components/block-inspector/index.js +56 -75
  8. package/build/components/block-inspector/index.js.map +1 -1
  9. package/build/components/block-list/block.js +5 -19
  10. package/build/components/block-list/block.js.map +1 -1
  11. package/build/components/block-list/index.js +5 -8
  12. package/build/components/block-list/index.js.map +1 -1
  13. package/build/components/block-list/use-block-props/index.js +3 -11
  14. package/build/components/block-list/use-block-props/index.js.map +1 -1
  15. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +9 -12
  16. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
  17. package/build/components/block-list/use-in-between-inserter.js +5 -3
  18. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  19. package/build/components/block-list/zoom-out-separator.js +14 -6
  20. package/build/components/block-list/zoom-out-separator.js.map +1 -1
  21. package/build/components/block-navigation/dropdown.js +2 -4
  22. package/build/components/block-navigation/dropdown.js.map +1 -1
  23. package/build/components/block-parent-selector/index.js +13 -10
  24. package/build/components/block-parent-selector/index.js.map +1 -1
  25. package/build/components/block-pattern-setup/setup-toolbar.js +10 -20
  26. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  27. package/build/components/block-patterns-paging/index.js +11 -13
  28. package/build/components/block-patterns-paging/index.js.map +1 -1
  29. package/build/components/block-quick-navigation/index.js +2 -4
  30. package/build/components/block-quick-navigation/index.js.map +1 -1
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +79 -76
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/block-settings-menu-controls/index.js +1 -6
  34. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  35. package/build/components/block-switcher/index.js +17 -14
  36. package/build/components/block-switcher/index.js.map +1 -1
  37. package/build/components/block-toolbar/index.js +16 -19
  38. package/build/components/block-toolbar/index.js.map +1 -1
  39. package/build/components/block-toolbar/use-has-block-toolbar.js +3 -5
  40. package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  41. package/build/components/block-tools/index.js +8 -11
  42. package/build/components/block-tools/index.js.map +1 -1
  43. package/build/components/block-tools/insertion-point.js +1 -4
  44. package/build/components/block-tools/insertion-point.js.map +1 -1
  45. package/build/components/block-tools/use-show-block-tools.js +2 -5
  46. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  47. package/build/components/block-tools/zoom-out-mode-inserter-button.js +1 -12
  48. package/build/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -1
  49. package/build/components/block-tools/zoom-out-mode-inserters.js +14 -17
  50. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  51. package/build/components/block-tools/zoom-out-toolbar.js +2 -12
  52. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  53. package/build/components/block-variation-picker/index.js +2 -4
  54. package/build/components/block-variation-picker/index.js.map +1 -1
  55. package/build/components/block-variation-transforms/index.js +3 -4
  56. package/build/components/block-variation-transforms/index.js.map +1 -1
  57. package/build/components/button-block-appender/index.js +2 -4
  58. package/build/components/button-block-appender/index.js.map +1 -1
  59. package/build/components/colors-gradients/dropdown.js +2 -4
  60. package/build/components/colors-gradients/dropdown.js.map +1 -1
  61. package/build/components/global-styles/border-panel.js +1 -1
  62. package/build/components/global-styles/border-panel.js.map +1 -1
  63. package/build/components/global-styles/color-panel.js +2 -4
  64. package/build/components/global-styles/color-panel.js.map +1 -1
  65. package/build/components/global-styles/dimensions-panel.js +3 -3
  66. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  67. package/build/components/global-styles/filters-panel.js +2 -4
  68. package/build/components/global-styles/filters-panel.js.map +1 -1
  69. package/build/components/global-styles/shadow-panel-components.js +24 -29
  70. package/build/components/global-styles/shadow-panel-components.js.map +1 -1
  71. package/build/components/inner-blocks/index.js +1 -9
  72. package/build/components/inner-blocks/index.js.map +1 -1
  73. package/build/components/inserter/block-types-tab.js +1 -1
  74. package/build/components/inserter/block-types-tab.js.map +1 -1
  75. package/build/components/inserter/hooks/use-block-types-state.js +24 -5
  76. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  77. package/build/components/inserter/hooks/use-insertion-point.js +22 -12
  78. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  79. package/build/components/inserter/hooks/use-patterns-state.js +23 -10
  80. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  81. package/build/components/inserter/media-tab/media-preview.js +35 -13
  82. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  83. package/build/components/inserter/menu.js +2 -2
  84. package/build/components/inserter/menu.js.map +1 -1
  85. package/build/components/inserter/mobile-tab-navigation.js +5 -5
  86. package/build/components/inserter/mobile-tab-navigation.js.map +1 -1
  87. package/build/components/inserter/quick-inserter.js +4 -4
  88. package/build/components/inserter/quick-inserter.js.map +1 -1
  89. package/build/components/inspector-controls-tabs/index.js +11 -8
  90. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  91. package/build/components/inspector-popover-header/index.js +4 -8
  92. package/build/components/inspector-popover-header/index.js.map +1 -1
  93. package/build/components/link-control/index.js +5 -10
  94. package/build/components/link-control/index.js.map +1 -1
  95. package/build/components/link-control/settings-drawer.js +2 -4
  96. package/build/components/link-control/settings-drawer.js.map +1 -1
  97. package/build/components/list-view/block-contents.js +1 -25
  98. package/build/components/list-view/block-contents.js.map +1 -1
  99. package/build/components/list-view/block-select-button.js +1 -4
  100. package/build/components/list-view/block-select-button.js.map +1 -1
  101. package/build/components/media-placeholder/index.js +29 -43
  102. package/build/components/media-placeholder/index.js.map +1 -1
  103. package/build/components/rich-text/index.js +4 -8
  104. package/build/components/rich-text/index.js.map +1 -1
  105. package/build/components/skip-to-selected-block/index.js +2 -4
  106. package/build/components/skip-to-selected-block/index.js.map +1 -1
  107. package/build/components/tool-selector/index.js +13 -12
  108. package/build/components/tool-selector/index.js.map +1 -1
  109. package/build/components/url-input/button.js +14 -16
  110. package/build/components/url-input/button.js.map +1 -1
  111. package/build/components/url-input/index.js +2 -4
  112. package/build/components/url-input/index.js.map +1 -1
  113. package/build/components/use-block-commands/index.js +0 -61
  114. package/build/components/use-block-commands/index.js.map +1 -1
  115. package/build/components/writing-flow/use-tab-nav.js +2 -25
  116. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  117. package/build/hooks/block-bindings.js +6 -13
  118. package/build/hooks/block-bindings.js.map +1 -1
  119. package/build/hooks/duotone.js +4 -1
  120. package/build/hooks/duotone.js.map +1 -1
  121. package/build/hooks/layout-child.js +3 -1
  122. package/build/hooks/layout-child.js.map +1 -1
  123. package/build/hooks/position.js +3 -2
  124. package/build/hooks/position.js.map +1 -1
  125. package/build/hooks/use-bindings-attributes.js +5 -4
  126. package/build/hooks/use-bindings-attributes.js.map +1 -1
  127. package/build/layouts/flex.js +6 -38
  128. package/build/layouts/flex.js.map +1 -1
  129. package/build/private-apis.js +0 -2
  130. package/build/private-apis.js.map +1 -1
  131. package/build/store/actions.js +13 -14
  132. package/build/store/actions.js.map +1 -1
  133. package/build/store/private-actions.js +15 -0
  134. package/build/store/private-actions.js.map +1 -1
  135. package/build/store/private-selectors.js +104 -7
  136. package/build/store/private-selectors.js.map +1 -1
  137. package/build/store/reducer.js +22 -26
  138. package/build/store/reducer.js.map +1 -1
  139. package/build/store/selectors.js +127 -56
  140. package/build/store/selectors.js.map +1 -1
  141. package/build/store/utils.js +4 -3
  142. package/build/store/utils.js.map +1 -1
  143. package/build/utils/block-bindings.js +50 -0
  144. package/build/utils/block-bindings.js.map +1 -1
  145. package/build/utils/index.js +7 -0
  146. package/build/utils/index.js.map +1 -1
  147. package/build-module/autocompleters/link.js +2 -1
  148. package/build-module/autocompleters/link.js.map +1 -1
  149. package/build-module/components/block-actions/index.js +1 -13
  150. package/build-module/components/block-actions/index.js.map +1 -1
  151. package/build-module/components/block-inspector/index.js +57 -76
  152. package/build-module/components/block-inspector/index.js.map +1 -1
  153. package/build-module/components/block-list/block.js +5 -19
  154. package/build-module/components/block-list/block.js.map +1 -1
  155. package/build-module/components/block-list/index.js +5 -8
  156. package/build-module/components/block-list/index.js.map +1 -1
  157. package/build-module/components/block-list/use-block-props/index.js +3 -11
  158. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  159. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +9 -12
  160. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
  161. package/build-module/components/block-list/use-in-between-inserter.js +5 -3
  162. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  163. package/build-module/components/block-list/zoom-out-separator.js +14 -6
  164. package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
  165. package/build-module/components/block-navigation/dropdown.js +2 -4
  166. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  167. package/build-module/components/block-parent-selector/index.js +13 -10
  168. package/build-module/components/block-parent-selector/index.js.map +1 -1
  169. package/build-module/components/block-pattern-setup/setup-toolbar.js +10 -20
  170. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  171. package/build-module/components/block-patterns-paging/index.js +11 -13
  172. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  173. package/build-module/components/block-quick-navigation/index.js +2 -4
  174. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  175. package/build-module/components/block-settings-menu/block-settings-dropdown.js +79 -76
  176. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  177. package/build-module/components/block-settings-menu-controls/index.js +2 -7
  178. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  179. package/build-module/components/block-switcher/index.js +17 -14
  180. package/build-module/components/block-switcher/index.js.map +1 -1
  181. package/build-module/components/block-toolbar/index.js +17 -20
  182. package/build-module/components/block-toolbar/index.js.map +1 -1
  183. package/build-module/components/block-toolbar/use-has-block-toolbar.js +3 -5
  184. package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  185. package/build-module/components/block-tools/index.js +8 -11
  186. package/build-module/components/block-tools/index.js.map +1 -1
  187. package/build-module/components/block-tools/insertion-point.js +1 -4
  188. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  189. package/build-module/components/block-tools/use-show-block-tools.js +2 -5
  190. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  191. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js +1 -12
  192. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -1
  193. package/build-module/components/block-tools/zoom-out-mode-inserters.js +14 -17
  194. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  195. package/build-module/components/block-tools/zoom-out-toolbar.js +2 -12
  196. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  197. package/build-module/components/block-variation-picker/index.js +2 -4
  198. package/build-module/components/block-variation-picker/index.js.map +1 -1
  199. package/build-module/components/block-variation-transforms/index.js +3 -4
  200. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  201. package/build-module/components/button-block-appender/index.js +2 -4
  202. package/build-module/components/button-block-appender/index.js.map +1 -1
  203. package/build-module/components/colors-gradients/dropdown.js +2 -4
  204. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  205. package/build-module/components/global-styles/border-panel.js +1 -1
  206. package/build-module/components/global-styles/border-panel.js.map +1 -1
  207. package/build-module/components/global-styles/color-panel.js +2 -4
  208. package/build-module/components/global-styles/color-panel.js.map +1 -1
  209. package/build-module/components/global-styles/dimensions-panel.js +1 -1
  210. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  211. package/build-module/components/global-styles/filters-panel.js +2 -4
  212. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  213. package/build-module/components/global-styles/shadow-panel-components.js +25 -30
  214. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  215. package/build-module/components/inner-blocks/index.js +1 -9
  216. package/build-module/components/inner-blocks/index.js.map +1 -1
  217. package/build-module/components/inserter/block-types-tab.js +1 -1
  218. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  219. package/build-module/components/inserter/hooks/use-block-types-state.js +27 -8
  220. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  221. package/build-module/components/inserter/hooks/use-insertion-point.js +22 -12
  222. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  223. package/build-module/components/inserter/hooks/use-patterns-state.js +23 -10
  224. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  225. package/build-module/components/inserter/media-tab/media-preview.js +35 -13
  226. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  227. package/build-module/components/inserter/menu.js +2 -2
  228. package/build-module/components/inserter/menu.js.map +1 -1
  229. package/build-module/components/inserter/mobile-tab-navigation.js +6 -6
  230. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -1
  231. package/build-module/components/inserter/quick-inserter.js +4 -4
  232. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  233. package/build-module/components/inspector-controls-tabs/index.js +12 -9
  234. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  235. package/build-module/components/inspector-popover-header/index.js +4 -8
  236. package/build-module/components/inspector-popover-header/index.js.map +1 -1
  237. package/build-module/components/link-control/index.js +5 -10
  238. package/build-module/components/link-control/index.js.map +1 -1
  239. package/build-module/components/link-control/settings-drawer.js +2 -4
  240. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  241. package/build-module/components/list-view/block-contents.js +1 -25
  242. package/build-module/components/list-view/block-contents.js.map +1 -1
  243. package/build-module/components/list-view/block-select-button.js +2 -5
  244. package/build-module/components/list-view/block-select-button.js.map +1 -1
  245. package/build-module/components/media-placeholder/index.js +30 -44
  246. package/build-module/components/media-placeholder/index.js.map +1 -1
  247. package/build-module/components/rich-text/index.js +4 -8
  248. package/build-module/components/rich-text/index.js.map +1 -1
  249. package/build-module/components/skip-to-selected-block/index.js +2 -4
  250. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  251. package/build-module/components/tool-selector/index.js +13 -12
  252. package/build-module/components/tool-selector/index.js.map +1 -1
  253. package/build-module/components/url-input/button.js +15 -17
  254. package/build-module/components/url-input/button.js.map +1 -1
  255. package/build-module/components/url-input/index.js +2 -4
  256. package/build-module/components/url-input/index.js.map +1 -1
  257. package/build-module/components/use-block-commands/index.js +1 -62
  258. package/build-module/components/use-block-commands/index.js.map +1 -1
  259. package/build-module/components/writing-flow/use-tab-nav.js +3 -26
  260. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  261. package/build-module/hooks/block-bindings.js +6 -13
  262. package/build-module/hooks/block-bindings.js.map +1 -1
  263. package/build-module/hooks/duotone.js +4 -1
  264. package/build-module/hooks/duotone.js.map +1 -1
  265. package/build-module/hooks/layout-child.js +4 -1
  266. package/build-module/hooks/layout-child.js.map +1 -1
  267. package/build-module/hooks/position.js +4 -1
  268. package/build-module/hooks/position.js.map +1 -1
  269. package/build-module/hooks/use-bindings-attributes.js +5 -4
  270. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  271. package/build-module/layouts/flex.js +7 -39
  272. package/build-module/layouts/flex.js.map +1 -1
  273. package/build-module/private-apis.js +0 -2
  274. package/build-module/private-apis.js.map +1 -1
  275. package/build-module/store/actions.js +12 -12
  276. package/build-module/store/actions.js.map +1 -1
  277. package/build-module/store/private-actions.js +14 -0
  278. package/build-module/store/private-actions.js.map +1 -1
  279. package/build-module/store/private-selectors.js +98 -7
  280. package/build-module/store/private-selectors.js.map +1 -1
  281. package/build-module/store/reducer.js +21 -25
  282. package/build-module/store/reducer.js.map +1 -1
  283. package/build-module/store/selectors.js +129 -58
  284. package/build-module/store/selectors.js.map +1 -1
  285. package/build-module/store/utils.js +3 -2
  286. package/build-module/store/utils.js.map +1 -1
  287. package/build-module/utils/block-bindings.js +50 -0
  288. package/build-module/utils/block-bindings.js.map +1 -1
  289. package/build-module/utils/index.js +1 -0
  290. package/build-module/utils/index.js.map +1 -1
  291. package/build-style/content-rtl.css +16 -70
  292. package/build-style/content.css +16 -70
  293. package/build-style/default-editor-styles-rtl.css +10 -1
  294. package/build-style/default-editor-styles.css +10 -1
  295. package/build-style/style-rtl.css +51 -149
  296. package/build-style/style.css +51 -149
  297. package/package.json +32 -32
  298. package/src/autocompleters/link.js +2 -1
  299. package/src/components/block-actions/index.js +1 -13
  300. package/src/components/block-draggable/style.scss +2 -2
  301. package/src/components/block-inspector/index.js +79 -95
  302. package/src/components/block-inspector/style.scss +2 -0
  303. package/src/components/block-list/block.js +7 -28
  304. package/src/components/block-list/content.scss +1 -61
  305. package/src/components/block-list/index.js +21 -29
  306. package/src/components/block-list/use-block-props/index.js +3 -10
  307. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +19 -11
  308. package/src/components/block-list/use-in-between-inserter.js +5 -2
  309. package/src/components/block-list/zoom-out-separator.js +24 -8
  310. package/src/components/block-navigation/dropdown.js +1 -2
  311. package/src/components/block-parent-selector/index.js +13 -10
  312. package/src/components/block-pattern-setup/setup-toolbar.js +5 -10
  313. package/src/components/block-patterns-paging/index.js +8 -7
  314. package/src/components/block-patterns-paging/style.scss +10 -27
  315. package/src/components/block-quick-navigation/index.js +1 -2
  316. package/src/components/block-settings-menu/block-settings-dropdown.js +120 -106
  317. package/src/components/block-settings-menu-controls/index.js +0 -15
  318. package/src/components/block-switcher/index.js +37 -30
  319. package/src/components/block-toolbar/index.js +22 -34
  320. package/src/components/block-toolbar/style.scss +10 -1
  321. package/src/components/block-toolbar/use-has-block-toolbar.js +19 -31
  322. package/src/components/block-tools/index.js +7 -16
  323. package/src/components/block-tools/insertion-point.js +1 -4
  324. package/src/components/block-tools/style.scss +3 -88
  325. package/src/components/block-tools/use-show-block-tools.js +2 -12
  326. package/src/components/block-tools/zoom-out-mode-inserter-button.js +2 -17
  327. package/src/components/block-tools/zoom-out-mode-inserters.js +11 -19
  328. package/src/components/block-tools/zoom-out-toolbar.js +2 -13
  329. package/src/components/block-variation-picker/index.js +1 -2
  330. package/src/components/block-variation-transforms/index.js +2 -2
  331. package/src/components/button-block-appender/content.scss +0 -5
  332. package/src/components/button-block-appender/index.js +1 -2
  333. package/src/components/colors-gradients/dropdown.js +1 -5
  334. package/src/components/font-family/README.md +5 -1
  335. package/src/components/global-styles/border-panel.js +1 -1
  336. package/src/components/global-styles/color-panel.js +1 -5
  337. package/src/components/global-styles/dimensions-panel.js +1 -1
  338. package/src/components/global-styles/filters-panel.js +1 -2
  339. package/src/components/global-styles/shadow-panel-components.js +28 -33
  340. package/src/components/global-styles/style.scss +5 -0
  341. package/src/components/inner-blocks/index.js +1 -16
  342. package/src/components/inserter/block-types-tab.js +1 -1
  343. package/src/components/inserter/hooks/use-block-types-state.js +34 -14
  344. package/src/components/inserter/hooks/use-insertion-point.js +35 -13
  345. package/src/components/inserter/hooks/use-patterns-state.js +46 -9
  346. package/src/components/inserter/media-tab/media-preview.js +38 -12
  347. package/src/components/inserter/menu.js +2 -2
  348. package/src/components/inserter/mobile-tab-navigation.js +10 -13
  349. package/src/components/inserter/quick-inserter.js +5 -4
  350. package/src/components/inserter/style.scss +0 -28
  351. package/src/components/inspector-controls-tabs/index.js +21 -20
  352. package/src/components/inspector-controls-tabs/style.scss +2 -6
  353. package/src/components/inspector-popover-header/index.js +2 -4
  354. package/src/components/inspector-popover-header/style.scss +0 -13
  355. package/src/components/link-control/index.js +2 -5
  356. package/src/components/link-control/settings-drawer.js +1 -2
  357. package/src/components/list-view/block-contents.js +1 -28
  358. package/src/components/list-view/block-select-button.js +2 -5
  359. package/src/components/list-view/style.scss +18 -14
  360. package/src/components/media-placeholder/content.scss +3 -19
  361. package/src/components/media-placeholder/index.js +23 -29
  362. package/src/components/rich-text/index.js +4 -13
  363. package/src/components/skip-to-selected-block/index.js +1 -2
  364. package/src/components/skip-to-selected-block/style.scss +0 -9
  365. package/src/components/tool-selector/index.js +14 -9
  366. package/src/components/tool-selector/style.scss +5 -0
  367. package/src/components/url-input/button.js +16 -12
  368. package/src/components/url-input/index.js +1 -2
  369. package/src/components/url-input/style.scss +0 -6
  370. package/src/components/use-block-commands/index.js +0 -58
  371. package/src/components/writing-flow/use-tab-nav.js +4 -36
  372. package/src/content.scss +0 -1
  373. package/src/hooks/block-bindings.js +9 -10
  374. package/src/hooks/duotone.js +4 -1
  375. package/src/hooks/layout-child.js +4 -1
  376. package/src/hooks/position.js +4 -1
  377. package/src/hooks/use-bindings-attributes.js +66 -63
  378. package/src/layouts/flex.js +10 -53
  379. package/src/private-apis.js +0 -2
  380. package/src/store/actions.js +14 -13
  381. package/src/store/private-actions.js +14 -0
  382. package/src/store/private-selectors.js +120 -16
  383. package/src/store/reducer.js +22 -28
  384. package/src/store/selectors.js +203 -114
  385. package/src/store/test/private-actions.js +15 -0
  386. package/src/store/test/private-selectors.js +34 -0
  387. package/src/store/test/reducer.js +40 -4
  388. package/src/store/test/selectors.js +183 -20
  389. package/src/store/utils.js +4 -2
  390. package/src/utils/block-bindings.js +49 -0
  391. package/src/utils/index.js +1 -0
  392. package/build/components/block-controls/use-has-block-controls.js +0 -43
  393. package/build/components/block-controls/use-has-block-controls.js.map +0 -1
  394. package/build/components/block-list/use-block-props/use-nav-mode-exit.js +0 -54
  395. package/build/components/block-list/use-block-props/use-nav-mode-exit.js.map +0 -1
  396. package/build/components/block-tools/block-selection-button.js +0 -259
  397. package/build/components/block-tools/block-selection-button.js.map +0 -1
  398. package/build/components/block-tools/block-toolbar-breadcrumb.js +0 -57
  399. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +0 -1
  400. package/build/components/inserter/tabs.js +0 -78
  401. package/build/components/inserter/tabs.js.map +0 -1
  402. package/build-module/components/block-controls/use-has-block-controls.js +0 -34
  403. package/build-module/components/block-controls/use-has-block-controls.js.map +0 -1
  404. package/build-module/components/block-list/use-block-props/use-nav-mode-exit.js +0 -48
  405. package/build-module/components/block-list/use-block-props/use-nav-mode-exit.js.map +0 -1
  406. package/build-module/components/block-tools/block-selection-button.js +0 -254
  407. package/build-module/components/block-tools/block-selection-button.js.map +0 -1
  408. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +0 -49
  409. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +0 -1
  410. package/build-module/components/inserter/tabs.js +0 -72
  411. package/build-module/components/inserter/tabs.js.map +0 -1
  412. package/src/components/block-controls/use-has-block-controls.js +0 -35
  413. package/src/components/block-list/use-block-props/use-nav-mode-exit.js +0 -46
  414. package/src/components/block-tools/block-selection-button.js +0 -302
  415. package/src/components/block-tools/block-toolbar-breadcrumb.js +0 -51
  416. package/src/components/inner-blocks/content.scss +0 -13
  417. package/src/components/inserter/tabs.js +0 -78
  418. package/src/components/inserter/test/block-types-tab.native.js +0 -67
@@ -162,7 +162,9 @@ const EMPTY_ARRAY = [];
162
162
  * @type {Set}
163
163
  */
164
164
  const EMPTY_SET = new Set();
165
- const EMPTY_OBJECT = {};
165
+ const DEFAULT_INSERTER_OPTIONS = {
166
+ [_utils.isFiltered]: true
167
+ };
166
168
 
167
169
  /**
168
170
  * Returns a block's name given its client ID, or null if no block exists with
@@ -1364,8 +1366,7 @@ function isCaretWithinFormattedText() {
1364
1366
  }
1365
1367
 
1366
1368
  /**
1367
- * Returns the insertion point, the index at which the new inserted block would
1368
- * be placed. Defaults to the last index.
1369
+ * Returns the location of the insertion cue. Defaults to the last index.
1369
1370
  *
1370
1371
  * @param {Object} state Editor state.
1371
1372
  *
@@ -1374,13 +1375,13 @@ function isCaretWithinFormattedText() {
1374
1375
  const getBlockInsertionPoint = exports.getBlockInsertionPoint = (0, _data.createSelector)(state => {
1375
1376
  let rootClientId, index;
1376
1377
  const {
1377
- insertionPoint,
1378
+ insertionCue,
1378
1379
  selection: {
1379
1380
  selectionEnd
1380
1381
  }
1381
1382
  } = state;
1382
- if (insertionPoint !== null) {
1383
- return insertionPoint;
1383
+ if (insertionCue !== null) {
1384
+ return insertionCue;
1384
1385
  }
1385
1386
  const {
1386
1387
  clientId
@@ -1395,17 +1396,17 @@ const getBlockInsertionPoint = exports.getBlockInsertionPoint = (0, _data.create
1395
1396
  rootClientId,
1396
1397
  index
1397
1398
  };
1398
- }, state => [state.insertionPoint, state.selection.selectionEnd.clientId, state.blocks.parents, state.blocks.order]);
1399
+ }, state => [state.insertionCue, state.selection.selectionEnd.clientId, state.blocks.parents, state.blocks.order]);
1399
1400
 
1400
1401
  /**
1401
- * Returns true if we should show the block insertion point.
1402
+ * Returns true if the block insertion point is visible.
1402
1403
  *
1403
1404
  * @param {Object} state Global application state.
1404
1405
  *
1405
1406
  * @return {?boolean} Whether the insertion point is visible or not.
1406
1407
  */
1407
1408
  function isBlockInsertionPointVisible(state) {
1408
- return state.insertionPoint !== null;
1409
+ return state.insertionCue !== null;
1409
1410
  }
1410
1411
 
1411
1412
  /**
@@ -1447,6 +1448,52 @@ function getTemplateLock(state, rootClientId) {
1447
1448
  return (_getBlockListSettings = getBlockListSettings(state, rootClientId)?.templateLock) !== null && _getBlockListSettings !== void 0 ? _getBlockListSettings : false;
1448
1449
  }
1449
1450
 
1451
+ /**
1452
+ * Determines if the given block type is visible in the inserter.
1453
+ * Note that this is different than whether a block is allowed to be inserted.
1454
+ * In some cases, the block is not allowed in a given position but
1455
+ * it should still be visible in the inserter to be able to add it
1456
+ * to a different position.
1457
+ *
1458
+ * @param {Object} state Editor state.
1459
+ * @param {string|Object} blockNameOrType The block type object, e.g., the response
1460
+ * from the block directory; or a string name of
1461
+ * an installed block type, e.g.' core/paragraph'.
1462
+ *
1463
+ * @return {boolean} Whether the given block type is allowed to be inserted.
1464
+ */
1465
+ const isBlockVisibleInTheInserter = (state, blockNameOrType) => {
1466
+ let blockType;
1467
+ let blockName;
1468
+ if (blockNameOrType && 'object' === typeof blockNameOrType) {
1469
+ blockType = blockNameOrType;
1470
+ blockName = blockNameOrType.name;
1471
+ } else {
1472
+ blockType = (0, _blocks.getBlockType)(blockNameOrType);
1473
+ blockName = blockNameOrType;
1474
+ }
1475
+ if (!blockType) {
1476
+ return false;
1477
+ }
1478
+ const {
1479
+ allowedBlockTypes
1480
+ } = getSettings(state);
1481
+ const isBlockAllowedInEditor = (0, _utils.checkAllowList)(allowedBlockTypes, blockName, true);
1482
+ if (!isBlockAllowedInEditor) {
1483
+ return false;
1484
+ }
1485
+
1486
+ // If parent blocks are not visible, child blocks should be hidden too.
1487
+ if (!!blockType.parent?.length) {
1488
+ return blockType.parent.some(name => isBlockVisibleInTheInserter(state, name) ||
1489
+ // Exception for blocks with post-content parent,
1490
+ // the root level is often consider as "core/post-content".
1491
+ // This exception should only apply to the post editor ideally though.
1492
+ name === 'core/post-content');
1493
+ }
1494
+ return true;
1495
+ };
1496
+
1450
1497
  /**
1451
1498
  * Determines if the given block type is allowed to be inserted into the block list.
1452
1499
  * This function is not exported and not memoized because using a memoized selector
@@ -1461,6 +1508,9 @@ function getTemplateLock(state, rootClientId) {
1461
1508
  * @return {boolean} Whether the given block type is allowed to be inserted.
1462
1509
  */
1463
1510
  const canInsertBlockTypeUnmemoized = (state, blockName, rootClientId = null) => {
1511
+ if (!isBlockVisibleInTheInserter(state, blockName)) {
1512
+ return false;
1513
+ }
1464
1514
  let blockType;
1465
1515
  if (blockName && 'object' === typeof blockName) {
1466
1516
  blockType = blockName;
@@ -1468,20 +1518,14 @@ const canInsertBlockTypeUnmemoized = (state, blockName, rootClientId = null) =>
1468
1518
  } else {
1469
1519
  blockType = (0, _blocks.getBlockType)(blockName);
1470
1520
  }
1471
- if (!blockType) {
1472
- return false;
1473
- }
1474
- const {
1475
- allowedBlockTypes
1476
- } = getSettings(state);
1477
- const isBlockAllowedInEditor = (0, _utils.checkAllowList)(allowedBlockTypes, blockName, true);
1478
- if (!isBlockAllowedInEditor) {
1479
- return false;
1480
- }
1481
1521
  const isLocked = !!getTemplateLock(state, rootClientId);
1482
1522
  if (isLocked) {
1483
1523
  return false;
1484
1524
  }
1525
+ const _isSectionBlock = !!(0, _privateSelectors.isSectionBlock)(state, rootClientId);
1526
+ if (_isSectionBlock) {
1527
+ return false;
1528
+ }
1485
1529
  if (getBlockEditingMode(state, rootClientId !== null && rootClientId !== void 0 ? rootClientId : '') === 'disabled') {
1486
1530
  return false;
1487
1531
  }
@@ -1587,6 +1631,10 @@ function canRemoveBlock(state, clientId) {
1587
1631
  if (getTemplateLock(state, rootClientId)) {
1588
1632
  return false;
1589
1633
  }
1634
+ const isBlockWithinSection = !!(0, _privateSelectors.getParentSectionBlock)(state, clientId);
1635
+ if (isBlockWithinSection) {
1636
+ return false;
1637
+ }
1590
1638
  return getBlockEditingMode(state, rootClientId) !== 'disabled';
1591
1639
  }
1592
1640
 
@@ -1810,6 +1858,7 @@ const buildBlockTypeItem = (state, {
1810
1858
  description: blockType.description,
1811
1859
  category: blockType.category,
1812
1860
  keywords: blockType.keywords,
1861
+ parent: blockType.parent,
1813
1862
  variations: inserterVariations,
1814
1863
  example: blockType.example,
1815
1864
  utility: 1 // Deprecated.
@@ -1845,7 +1894,7 @@ const buildBlockTypeItem = (state, {
1845
1894
  * this item.
1846
1895
  * @property {number} frecency Heuristic that combines frequency and recency.
1847
1896
  */
1848
- const getInserterItems = exports.getInserterItems = (0, _data.createRegistrySelector)(select => (0, _data.createSelector)((state, rootClientId = null, options = EMPTY_OBJECT) => {
1897
+ const getInserterItems = exports.getInserterItems = (0, _data.createRegistrySelector)(select => (0, _data.createSelector)((state, rootClientId = null, options = DEFAULT_INSERTER_OPTIONS) => {
1849
1898
  const buildReusableBlockInserterItem = reusableBlock => {
1850
1899
  const icon = !reusableBlock.wp_pattern_sync_status ? {
1851
1900
  src: _icons.symbol,
@@ -1880,35 +1929,13 @@ const getInserterItems = exports.getInserterItems = (0, _data.createRegistrySele
1880
1929
  buildScope: 'inserter'
1881
1930
  });
1882
1931
  let blockTypeInserterItems = (0, _blocks.getBlockTypes)().filter(blockType => (0, _blocks.hasBlockSupport)(blockType, 'inserter', true)).map(buildBlockTypeInserterItem);
1883
- if (options[_utils.withRootClientIdOptionKey]) {
1884
- blockTypeInserterItems = blockTypeInserterItems.reduce((accumulator, item) => {
1885
- item.rootClientId = rootClientId !== null && rootClientId !== void 0 ? rootClientId : '';
1886
- while (!canInsertBlockTypeUnmemoized(state, item.name, item.rootClientId)) {
1887
- if (!item.rootClientId) {
1888
- let sectionRootClientId;
1889
- try {
1890
- sectionRootClientId = (0, _privateSelectors.getSectionRootClientId)(state);
1891
- } catch (e) {}
1892
- if (sectionRootClientId && canInsertBlockTypeUnmemoized(state, item.name, sectionRootClientId)) {
1893
- item.rootClientId = sectionRootClientId;
1894
- } else {
1895
- delete item.rootClientId;
1896
- }
1897
- break;
1898
- } else {
1899
- const parentClientId = getBlockRootClientId(state, item.rootClientId);
1900
- item.rootClientId = parentClientId;
1901
- }
1902
- }
1903
-
1904
- // We could also add non insertable items and gray them out.
1905
- if (item.hasOwnProperty('rootClientId')) {
1906
- accumulator.push(item);
1907
- }
1908
- return accumulator;
1909
- }, []);
1910
- } else {
1932
+ if (options[_utils.isFiltered] !== false) {
1911
1933
  blockTypeInserterItems = blockTypeInserterItems.filter(blockType => canIncludeBlockTypeInInserter(state, blockType, rootClientId));
1934
+ } else {
1935
+ blockTypeInserterItems = blockTypeInserterItems.filter(blockType => isBlockVisibleInTheInserter(state, blockType)).map(blockType => ({
1936
+ ...blockType,
1937
+ isAllowedInCurrentRoot: canIncludeBlockTypeInInserter(state, blockType, rootClientId)
1938
+ }));
1912
1939
  }
1913
1940
  const items = blockTypeInserterItems.reduce((accumulator, item) => {
1914
1941
  const {
@@ -2089,7 +2116,7 @@ const getAllowedPatternsDependants = select => (state, rootClientId) => [...(0,
2089
2116
  * @return {Array?} The list of allowed patterns.
2090
2117
  */
2091
2118
  const __experimentalGetAllowedPatterns = exports.__experimentalGetAllowedPatterns = (0, _data.createRegistrySelector)(select => {
2092
- return (0, _data.createSelector)((state, rootClientId = null) => {
2119
+ return (0, _data.createSelector)((state, rootClientId = null, options = DEFAULT_INSERTER_OPTIONS) => {
2093
2120
  const {
2094
2121
  getAllPatterns
2095
2122
  } = (0, _lockUnlock.unlock)(select(_constants.STORE_NAME));
@@ -2110,7 +2137,7 @@ const __experimentalGetAllowedPatterns = exports.__experimentalGetAllowedPattern
2110
2137
  const availableParsedPatterns = parsedPatterns.filter(pattern => (0, _utils.checkAllowListRecursive)((0, _utils.getGrammar)(pattern), allowedBlockTypes));
2111
2138
  const patternsAllowed = availableParsedPatterns.filter(pattern => (0, _utils.getGrammar)(pattern).every(({
2112
2139
  blockName: name
2113
- }) => canInsertBlockType(state, name, rootClientId)));
2140
+ }) => options[_utils.isFiltered] !== false ? canInsertBlockType(state, name, rootClientId) : isBlockVisibleInTheInserter(state, name)));
2114
2141
  return patternsAllowed;
2115
2142
  }, getAllowedPatternsDependants(select));
2116
2143
  });
@@ -2330,12 +2357,14 @@ function __unstableGetEditorMode(state) {
2330
2357
  /**
2331
2358
  * Returns whether block moving mode is enabled.
2332
2359
  *
2333
- * @param {Object} state Editor state.
2334
- *
2335
- * @return {string} Client Id of moving block.
2360
+ * @deprecated
2336
2361
  */
2337
- function hasBlockMovingClientId(state) {
2338
- return state.hasBlockMovingClientId;
2362
+ function hasBlockMovingClientId() {
2363
+ (0, _deprecated.default)('wp.data.select( "core/block-editor" ).hasBlockMovingClientId', {
2364
+ since: '6.7',
2365
+ hint: 'Block moving mode feature has been removed'
2366
+ });
2367
+ return false;
2339
2368
  }
2340
2369
 
2341
2370
  /**
@@ -2486,7 +2515,7 @@ function __unstableHasActiveBlockOverlayActive(state, clientId) {
2486
2515
  // (reusable block, template part, navigation), unless explicitly disabled
2487
2516
  // with `supports.__experimentalDisableBlockOverlay`.
2488
2517
  const blockSupportDisable = (0, _blocks.hasBlockSupport)(getBlockName(state, clientId), '__experimentalDisableBlockOverlay', false);
2489
- const shouldEnableIfUnselected = editorMode === 'navigation' || (blockSupportDisable ? false : areInnerBlocksControlled(state, clientId));
2518
+ const shouldEnableIfUnselected = blockSupportDisable ? false : areInnerBlocksControlled(state, clientId);
2490
2519
  return shouldEnableIfUnselected && !isBlockSelected(state, clientId) && !hasSelectedInnerBlock(state, clientId, true);
2491
2520
  }
2492
2521
  function __unstableIsWithinBlockOverlay(state, clientId) {
@@ -2499,6 +2528,13 @@ function __unstableIsWithinBlockOverlay(state, clientId) {
2499
2528
  }
2500
2529
  return false;
2501
2530
  }
2531
+ function isWithinBlock(state, clientId, parentClientId) {
2532
+ let parent = state.blocks.parents.get(clientId);
2533
+ while (!!parent && parent !== parentClientId) {
2534
+ parent = state.blocks.parents.get(parent);
2535
+ }
2536
+ return parent === parentClientId;
2537
+ }
2502
2538
 
2503
2539
  /**
2504
2540
  * @typedef {import('../components/block-editing-mode').BlockEditingMode} BlockEditingMode
@@ -2559,15 +2595,49 @@ const getBlockEditingMode = exports.getBlockEditingMode = (0, _data.createRegist
2559
2595
  }
2560
2596
  return 'disabled';
2561
2597
  }
2598
+ if (editorMode === 'navigation') {
2599
+ const sectionRootClientId = (0, _privateSelectors.getSectionRootClientId)(state);
2600
+
2601
+ // The root section is "default mode"
2602
+ if (clientId === sectionRootClientId) {
2603
+ return 'default';
2604
+ }
2605
+
2606
+ // Sections should always be contentOnly in navigation mode.
2607
+ const sectionsClientIds = getBlockOrder(state, sectionRootClientId);
2608
+ if (sectionsClientIds.includes(clientId)) {
2609
+ return 'contentOnly';
2610
+ }
2611
+
2612
+ // Blocks outside sections should be disabled.
2613
+ const isWithinSectionRoot = isWithinBlock(state, clientId, sectionRootClientId);
2614
+ if (!isWithinSectionRoot) {
2615
+ return 'disabled';
2616
+ }
2617
+
2618
+ // The rest of the blocks depend on whether they are content blocks or not.
2619
+ // This "flattens" the sections tree.
2620
+ const name = getBlockName(state, clientId);
2621
+ const {
2622
+ hasContentRoleAttribute
2623
+ } = (0, _lockUnlock.unlock)(select(_blocks.store));
2624
+ const isContent = hasContentRoleAttribute(name);
2625
+ return isContent ? 'contentOnly' : 'disabled';
2626
+ }
2627
+
2628
+ // In normal mode, consider that an explicitely set editing mode takes over.
2562
2629
  const blockEditingMode = state.blockEditingModes.get(clientId);
2563
2630
  if (blockEditingMode) {
2564
2631
  return blockEditingMode;
2565
2632
  }
2633
+
2634
+ // In normal mode, top level is default mode.
2566
2635
  if (!clientId) {
2567
2636
  return 'default';
2568
2637
  }
2569
2638
  const rootClientId = getBlockRootClientId(state, clientId);
2570
2639
  const templateLock = getTemplateLock(state, rootClientId);
2640
+ // If the parent of the block is contentOnly locked, check whether it's a content block.
2571
2641
  if (templateLock === 'contentOnly') {
2572
2642
  const name = getBlockName(state, clientId);
2573
2643
  const {
@@ -2576,6 +2646,7 @@ const getBlockEditingMode = exports.getBlockEditingMode = (0, _data.createRegist
2576
2646
  const isContent = hasContentRoleAttribute(name);
2577
2647
  return isContent ? 'contentOnly' : 'disabled';
2578
2648
  }
2649
+ // Otherwise, check if there's an ancestor that is contentOnly
2579
2650
  const parentMode = getBlockEditingMode(state, rootClientId);
2580
2651
  return parentMode === 'contentOnly' ? 'default' : parentMode;
2581
2652
  });