@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
@@ -12,11 +12,11 @@ import { createSelector, createRegistrySelector } from '@wordpress/data';
12
12
  /**
13
13
  * Internal dependencies
14
14
  */
15
- import { withRootClientIdOptionKey, checkAllowListRecursive, checkAllowList, getAllPatternsDependants, getInsertBlockTypeDependants, getParsedPattern, getGrammar } from './utils';
15
+ import { isFiltered, checkAllowListRecursive, checkAllowList, getAllPatternsDependants, getInsertBlockTypeDependants, getParsedPattern, getGrammar } from './utils';
16
16
  import { orderBy } from '../utils/sorting';
17
17
  import { STORE_NAME } from './constants';
18
18
  import { unlock } from '../lock-unlock';
19
- import { getContentLockingParent, getTemporarilyEditingAsBlocks, getTemporarilyEditingFocusModeToRevert, getSectionRootClientId } from './private-selectors';
19
+ import { getContentLockingParent, getTemporarilyEditingAsBlocks, getTemporarilyEditingFocusModeToRevert, getSectionRootClientId, isSectionBlock, getParentSectionBlock } from './private-selectors';
20
20
 
21
21
  /**
22
22
  * A block selection object.
@@ -55,7 +55,9 @@ const EMPTY_ARRAY = [];
55
55
  * @type {Set}
56
56
  */
57
57
  const EMPTY_SET = new Set();
58
- const EMPTY_OBJECT = {};
58
+ const DEFAULT_INSERTER_OPTIONS = {
59
+ [isFiltered]: true
60
+ };
59
61
 
60
62
  /**
61
63
  * Returns a block's name given its client ID, or null if no block exists with
@@ -1255,8 +1257,7 @@ export function isCaretWithinFormattedText() {
1255
1257
  }
1256
1258
 
1257
1259
  /**
1258
- * Returns the insertion point, the index at which the new inserted block would
1259
- * be placed. Defaults to the last index.
1260
+ * Returns the location of the insertion cue. Defaults to the last index.
1260
1261
  *
1261
1262
  * @param {Object} state Editor state.
1262
1263
  *
@@ -1265,13 +1266,13 @@ export function isCaretWithinFormattedText() {
1265
1266
  export const getBlockInsertionPoint = createSelector(state => {
1266
1267
  let rootClientId, index;
1267
1268
  const {
1268
- insertionPoint,
1269
+ insertionCue,
1269
1270
  selection: {
1270
1271
  selectionEnd
1271
1272
  }
1272
1273
  } = state;
1273
- if (insertionPoint !== null) {
1274
- return insertionPoint;
1274
+ if (insertionCue !== null) {
1275
+ return insertionCue;
1275
1276
  }
1276
1277
  const {
1277
1278
  clientId
@@ -1286,17 +1287,17 @@ export const getBlockInsertionPoint = createSelector(state => {
1286
1287
  rootClientId,
1287
1288
  index
1288
1289
  };
1289
- }, state => [state.insertionPoint, state.selection.selectionEnd.clientId, state.blocks.parents, state.blocks.order]);
1290
+ }, state => [state.insertionCue, state.selection.selectionEnd.clientId, state.blocks.parents, state.blocks.order]);
1290
1291
 
1291
1292
  /**
1292
- * Returns true if we should show the block insertion point.
1293
+ * Returns true if the block insertion point is visible.
1293
1294
  *
1294
1295
  * @param {Object} state Global application state.
1295
1296
  *
1296
1297
  * @return {?boolean} Whether the insertion point is visible or not.
1297
1298
  */
1298
1299
  export function isBlockInsertionPointVisible(state) {
1299
- return state.insertionPoint !== null;
1300
+ return state.insertionCue !== null;
1300
1301
  }
1301
1302
 
1302
1303
  /**
@@ -1338,6 +1339,52 @@ export function getTemplateLock(state, rootClientId) {
1338
1339
  return (_getBlockListSettings = getBlockListSettings(state, rootClientId)?.templateLock) !== null && _getBlockListSettings !== void 0 ? _getBlockListSettings : false;
1339
1340
  }
1340
1341
 
1342
+ /**
1343
+ * Determines if the given block type is visible in the inserter.
1344
+ * Note that this is different than whether a block is allowed to be inserted.
1345
+ * In some cases, the block is not allowed in a given position but
1346
+ * it should still be visible in the inserter to be able to add it
1347
+ * to a different position.
1348
+ *
1349
+ * @param {Object} state Editor state.
1350
+ * @param {string|Object} blockNameOrType The block type object, e.g., the response
1351
+ * from the block directory; or a string name of
1352
+ * an installed block type, e.g.' core/paragraph'.
1353
+ *
1354
+ * @return {boolean} Whether the given block type is allowed to be inserted.
1355
+ */
1356
+ const isBlockVisibleInTheInserter = (state, blockNameOrType) => {
1357
+ let blockType;
1358
+ let blockName;
1359
+ if (blockNameOrType && 'object' === typeof blockNameOrType) {
1360
+ blockType = blockNameOrType;
1361
+ blockName = blockNameOrType.name;
1362
+ } else {
1363
+ blockType = getBlockType(blockNameOrType);
1364
+ blockName = blockNameOrType;
1365
+ }
1366
+ if (!blockType) {
1367
+ return false;
1368
+ }
1369
+ const {
1370
+ allowedBlockTypes
1371
+ } = getSettings(state);
1372
+ const isBlockAllowedInEditor = checkAllowList(allowedBlockTypes, blockName, true);
1373
+ if (!isBlockAllowedInEditor) {
1374
+ return false;
1375
+ }
1376
+
1377
+ // If parent blocks are not visible, child blocks should be hidden too.
1378
+ if (!!blockType.parent?.length) {
1379
+ return blockType.parent.some(name => isBlockVisibleInTheInserter(state, name) ||
1380
+ // Exception for blocks with post-content parent,
1381
+ // the root level is often consider as "core/post-content".
1382
+ // This exception should only apply to the post editor ideally though.
1383
+ name === 'core/post-content');
1384
+ }
1385
+ return true;
1386
+ };
1387
+
1341
1388
  /**
1342
1389
  * Determines if the given block type is allowed to be inserted into the block list.
1343
1390
  * This function is not exported and not memoized because using a memoized selector
@@ -1352,6 +1399,9 @@ export function getTemplateLock(state, rootClientId) {
1352
1399
  * @return {boolean} Whether the given block type is allowed to be inserted.
1353
1400
  */
1354
1401
  const canInsertBlockTypeUnmemoized = (state, blockName, rootClientId = null) => {
1402
+ if (!isBlockVisibleInTheInserter(state, blockName)) {
1403
+ return false;
1404
+ }
1355
1405
  let blockType;
1356
1406
  if (blockName && 'object' === typeof blockName) {
1357
1407
  blockType = blockName;
@@ -1359,20 +1409,14 @@ const canInsertBlockTypeUnmemoized = (state, blockName, rootClientId = null) =>
1359
1409
  } else {
1360
1410
  blockType = getBlockType(blockName);
1361
1411
  }
1362
- if (!blockType) {
1363
- return false;
1364
- }
1365
- const {
1366
- allowedBlockTypes
1367
- } = getSettings(state);
1368
- const isBlockAllowedInEditor = checkAllowList(allowedBlockTypes, blockName, true);
1369
- if (!isBlockAllowedInEditor) {
1370
- return false;
1371
- }
1372
1412
  const isLocked = !!getTemplateLock(state, rootClientId);
1373
1413
  if (isLocked) {
1374
1414
  return false;
1375
1415
  }
1416
+ const _isSectionBlock = !!isSectionBlock(state, rootClientId);
1417
+ if (_isSectionBlock) {
1418
+ return false;
1419
+ }
1376
1420
  if (getBlockEditingMode(state, rootClientId !== null && rootClientId !== void 0 ? rootClientId : '') === 'disabled') {
1377
1421
  return false;
1378
1422
  }
@@ -1478,6 +1522,10 @@ export function canRemoveBlock(state, clientId) {
1478
1522
  if (getTemplateLock(state, rootClientId)) {
1479
1523
  return false;
1480
1524
  }
1525
+ const isBlockWithinSection = !!getParentSectionBlock(state, clientId);
1526
+ if (isBlockWithinSection) {
1527
+ return false;
1528
+ }
1481
1529
  return getBlockEditingMode(state, rootClientId) !== 'disabled';
1482
1530
  }
1483
1531
 
@@ -1701,6 +1749,7 @@ const buildBlockTypeItem = (state, {
1701
1749
  description: blockType.description,
1702
1750
  category: blockType.category,
1703
1751
  keywords: blockType.keywords,
1752
+ parent: blockType.parent,
1704
1753
  variations: inserterVariations,
1705
1754
  example: blockType.example,
1706
1755
  utility: 1 // Deprecated.
@@ -1736,7 +1785,7 @@ const buildBlockTypeItem = (state, {
1736
1785
  * this item.
1737
1786
  * @property {number} frecency Heuristic that combines frequency and recency.
1738
1787
  */
1739
- export const getInserterItems = createRegistrySelector(select => createSelector((state, rootClientId = null, options = EMPTY_OBJECT) => {
1788
+ export const getInserterItems = createRegistrySelector(select => createSelector((state, rootClientId = null, options = DEFAULT_INSERTER_OPTIONS) => {
1740
1789
  const buildReusableBlockInserterItem = reusableBlock => {
1741
1790
  const icon = !reusableBlock.wp_pattern_sync_status ? {
1742
1791
  src: symbol,
@@ -1771,35 +1820,13 @@ export const getInserterItems = createRegistrySelector(select => createSelector(
1771
1820
  buildScope: 'inserter'
1772
1821
  });
1773
1822
  let blockTypeInserterItems = getBlockTypes().filter(blockType => hasBlockSupport(blockType, 'inserter', true)).map(buildBlockTypeInserterItem);
1774
- if (options[withRootClientIdOptionKey]) {
1775
- blockTypeInserterItems = blockTypeInserterItems.reduce((accumulator, item) => {
1776
- item.rootClientId = rootClientId !== null && rootClientId !== void 0 ? rootClientId : '';
1777
- while (!canInsertBlockTypeUnmemoized(state, item.name, item.rootClientId)) {
1778
- if (!item.rootClientId) {
1779
- let sectionRootClientId;
1780
- try {
1781
- sectionRootClientId = getSectionRootClientId(state);
1782
- } catch (e) {}
1783
- if (sectionRootClientId && canInsertBlockTypeUnmemoized(state, item.name, sectionRootClientId)) {
1784
- item.rootClientId = sectionRootClientId;
1785
- } else {
1786
- delete item.rootClientId;
1787
- }
1788
- break;
1789
- } else {
1790
- const parentClientId = getBlockRootClientId(state, item.rootClientId);
1791
- item.rootClientId = parentClientId;
1792
- }
1793
- }
1794
-
1795
- // We could also add non insertable items and gray them out.
1796
- if (item.hasOwnProperty('rootClientId')) {
1797
- accumulator.push(item);
1798
- }
1799
- return accumulator;
1800
- }, []);
1801
- } else {
1823
+ if (options[isFiltered] !== false) {
1802
1824
  blockTypeInserterItems = blockTypeInserterItems.filter(blockType => canIncludeBlockTypeInInserter(state, blockType, rootClientId));
1825
+ } else {
1826
+ blockTypeInserterItems = blockTypeInserterItems.filter(blockType => isBlockVisibleInTheInserter(state, blockType)).map(blockType => ({
1827
+ ...blockType,
1828
+ isAllowedInCurrentRoot: canIncludeBlockTypeInInserter(state, blockType, rootClientId)
1829
+ }));
1803
1830
  }
1804
1831
  const items = blockTypeInserterItems.reduce((accumulator, item) => {
1805
1832
  const {
@@ -1980,7 +2007,7 @@ const getAllowedPatternsDependants = select => (state, rootClientId) => [...getA
1980
2007
  * @return {Array?} The list of allowed patterns.
1981
2008
  */
1982
2009
  export const __experimentalGetAllowedPatterns = createRegistrySelector(select => {
1983
- return createSelector((state, rootClientId = null) => {
2010
+ return createSelector((state, rootClientId = null, options = DEFAULT_INSERTER_OPTIONS) => {
1984
2011
  const {
1985
2012
  getAllPatterns
1986
2013
  } = unlock(select(STORE_NAME));
@@ -2001,7 +2028,7 @@ export const __experimentalGetAllowedPatterns = createRegistrySelector(select =>
2001
2028
  const availableParsedPatterns = parsedPatterns.filter(pattern => checkAllowListRecursive(getGrammar(pattern), allowedBlockTypes));
2002
2029
  const patternsAllowed = availableParsedPatterns.filter(pattern => getGrammar(pattern).every(({
2003
2030
  blockName: name
2004
- }) => canInsertBlockType(state, name, rootClientId)));
2031
+ }) => options[isFiltered] !== false ? canInsertBlockType(state, name, rootClientId) : isBlockVisibleInTheInserter(state, name)));
2005
2032
  return patternsAllowed;
2006
2033
  }, getAllowedPatternsDependants(select));
2007
2034
  });
@@ -2221,12 +2248,14 @@ export function __unstableGetEditorMode(state) {
2221
2248
  /**
2222
2249
  * Returns whether block moving mode is enabled.
2223
2250
  *
2224
- * @param {Object} state Editor state.
2225
- *
2226
- * @return {string} Client Id of moving block.
2251
+ * @deprecated
2227
2252
  */
2228
- export function hasBlockMovingClientId(state) {
2229
- return state.hasBlockMovingClientId;
2253
+ export function hasBlockMovingClientId() {
2254
+ deprecated('wp.data.select( "core/block-editor" ).hasBlockMovingClientId', {
2255
+ since: '6.7',
2256
+ hint: 'Block moving mode feature has been removed'
2257
+ });
2258
+ return false;
2230
2259
  }
2231
2260
 
2232
2261
  /**
@@ -2377,7 +2406,7 @@ export function __unstableHasActiveBlockOverlayActive(state, clientId) {
2377
2406
  // (reusable block, template part, navigation), unless explicitly disabled
2378
2407
  // with `supports.__experimentalDisableBlockOverlay`.
2379
2408
  const blockSupportDisable = hasBlockSupport(getBlockName(state, clientId), '__experimentalDisableBlockOverlay', false);
2380
- const shouldEnableIfUnselected = editorMode === 'navigation' || (blockSupportDisable ? false : areInnerBlocksControlled(state, clientId));
2409
+ const shouldEnableIfUnselected = blockSupportDisable ? false : areInnerBlocksControlled(state, clientId);
2381
2410
  return shouldEnableIfUnselected && !isBlockSelected(state, clientId) && !hasSelectedInnerBlock(state, clientId, true);
2382
2411
  }
2383
2412
  export function __unstableIsWithinBlockOverlay(state, clientId) {
@@ -2390,6 +2419,13 @@ export function __unstableIsWithinBlockOverlay(state, clientId) {
2390
2419
  }
2391
2420
  return false;
2392
2421
  }
2422
+ function isWithinBlock(state, clientId, parentClientId) {
2423
+ let parent = state.blocks.parents.get(clientId);
2424
+ while (!!parent && parent !== parentClientId) {
2425
+ parent = state.blocks.parents.get(parent);
2426
+ }
2427
+ return parent === parentClientId;
2428
+ }
2393
2429
 
2394
2430
  /**
2395
2431
  * @typedef {import('../components/block-editing-mode').BlockEditingMode} BlockEditingMode
@@ -2450,15 +2486,49 @@ export const getBlockEditingMode = createRegistrySelector(select => (state, clie
2450
2486
  }
2451
2487
  return 'disabled';
2452
2488
  }
2489
+ if (editorMode === 'navigation') {
2490
+ const sectionRootClientId = getSectionRootClientId(state);
2491
+
2492
+ // The root section is "default mode"
2493
+ if (clientId === sectionRootClientId) {
2494
+ return 'default';
2495
+ }
2496
+
2497
+ // Sections should always be contentOnly in navigation mode.
2498
+ const sectionsClientIds = getBlockOrder(state, sectionRootClientId);
2499
+ if (sectionsClientIds.includes(clientId)) {
2500
+ return 'contentOnly';
2501
+ }
2502
+
2503
+ // Blocks outside sections should be disabled.
2504
+ const isWithinSectionRoot = isWithinBlock(state, clientId, sectionRootClientId);
2505
+ if (!isWithinSectionRoot) {
2506
+ return 'disabled';
2507
+ }
2508
+
2509
+ // The rest of the blocks depend on whether they are content blocks or not.
2510
+ // This "flattens" the sections tree.
2511
+ const name = getBlockName(state, clientId);
2512
+ const {
2513
+ hasContentRoleAttribute
2514
+ } = unlock(select(blocksStore));
2515
+ const isContent = hasContentRoleAttribute(name);
2516
+ return isContent ? 'contentOnly' : 'disabled';
2517
+ }
2518
+
2519
+ // In normal mode, consider that an explicitely set editing mode takes over.
2453
2520
  const blockEditingMode = state.blockEditingModes.get(clientId);
2454
2521
  if (blockEditingMode) {
2455
2522
  return blockEditingMode;
2456
2523
  }
2524
+
2525
+ // In normal mode, top level is default mode.
2457
2526
  if (!clientId) {
2458
2527
  return 'default';
2459
2528
  }
2460
2529
  const rootClientId = getBlockRootClientId(state, clientId);
2461
2530
  const templateLock = getTemplateLock(state, rootClientId);
2531
+ // If the parent of the block is contentOnly locked, check whether it's a content block.
2462
2532
  if (templateLock === 'contentOnly') {
2463
2533
  const name = getBlockName(state, clientId);
2464
2534
  const {
@@ -2467,6 +2537,7 @@ export const getBlockEditingMode = createRegistrySelector(select => (state, clie
2467
2537
  const isContent = hasContentRoleAttribute(name);
2468
2538
  return isContent ? 'contentOnly' : 'disabled';
2469
2539
  }
2540
+ // Otherwise, check if there's an ancestor that is contentOnly
2470
2541
  const parentMode = getBlockEditingMode(state, rootClientId);
2471
2542
  return parentMode === 'contentOnly' ? 'default' : parentMode;
2472
2543
  });