@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
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { focus, isFormElement } from '@wordpress/dom';
5
- import { TAB, ESCAPE } from '@wordpress/keycodes';
5
+ import { TAB } from '@wordpress/keycodes';
6
6
  import { useSelect, useDispatch } from '@wordpress/data';
7
7
  import { useRefEffect, useMergeRefs } from '@wordpress/compose';
8
8
  import { useRef } from '@wordpress/element';
@@ -21,19 +21,9 @@ export default function useTabNav() {
21
21
 
22
22
  const { hasMultiSelection, getSelectedBlockClientId, getBlockCount } =
23
23
  useSelect( blockEditorStore );
24
- const { setNavigationMode, setLastFocus } = unlock(
25
- useDispatch( blockEditorStore )
26
- );
27
- const isNavigationMode = useSelect(
28
- ( select ) => select( blockEditorStore ).isNavigationMode(),
29
- []
30
- );
31
-
24
+ const { setLastFocus } = unlock( useDispatch( blockEditorStore ) );
32
25
  const { getLastFocus } = unlock( useSelect( blockEditorStore ) );
33
26
 
34
- // Don't allow tabbing to this element in Navigation mode.
35
- const focusCaptureTabIndex = ! isNavigationMode ? '0' : undefined;
36
-
37
27
  // Reference that holds the a flag for enabling or disabling
38
28
  // capturing on the focus capture elements.
39
29
  const noCaptureRef = useRef();
@@ -56,8 +46,6 @@ export default function useTabNav() {
56
46
  .focus();
57
47
  }
58
48
  } else {
59
- setNavigationMode( true );
60
-
61
49
  const canvasElement =
62
50
  container.current.ownerDocument === event.target.ownerDocument
63
51
  ? container.current
@@ -82,7 +70,7 @@ export default function useTabNav() {
82
70
  const before = (
83
71
  <div
84
72
  ref={ focusCaptureBeforeRef }
85
- tabIndex={ focusCaptureTabIndex }
73
+ tabIndex="0"
86
74
  onFocus={ onFocusCapture }
87
75
  />
88
76
  );
@@ -90,7 +78,7 @@ export default function useTabNav() {
90
78
  const after = (
91
79
  <div
92
80
  ref={ focusCaptureAfterRef }
93
- tabIndex={ focusCaptureTabIndex }
81
+ tabIndex="0"
94
82
  onFocus={ onFocusCapture }
95
83
  />
96
84
  );
@@ -101,12 +89,6 @@ export default function useTabNav() {
101
89
  return;
102
90
  }
103
91
 
104
- if ( event.keyCode === ESCAPE && ! hasMultiSelection() ) {
105
- event.preventDefault();
106
- setNavigationMode( true );
107
- return;
108
- }
109
-
110
92
  // In Edit mode, Tab should focus the first tabbable element after
111
93
  // the content, which is normally the sidebar (with block controls)
112
94
  // and Shift+Tab should focus the first tabbable element before the
@@ -119,20 +101,6 @@ export default function useTabNav() {
119
101
 
120
102
  const isShift = event.shiftKey;
121
103
  const direction = isShift ? 'findPrevious' : 'findNext';
122
-
123
- if ( ! hasMultiSelection() && ! getSelectedBlockClientId() ) {
124
- // Preserve the behaviour of entering navigation mode when
125
- // tabbing into the content without a block selection.
126
- // `onFocusCapture` already did this previously, but we need to
127
- // do it again here because after clearing block selection,
128
- // focus land on the writing flow container and pressing Tab
129
- // will no longer send focus through the focus capture element.
130
- if ( event.target === node ) {
131
- setNavigationMode( true );
132
- }
133
- return;
134
- }
135
-
136
104
  const nextTabbable = focus.tabbable[ direction ]( event.target );
137
105
 
138
106
  // We want to constrain the tabbing to the block and its child blocks.
package/src/content.scss CHANGED
@@ -8,7 +8,6 @@
8
8
  @import "./components/button-block-appender/content.scss";
9
9
  @import "./components/default-block-appender/content.scss";
10
10
  @import "./components/iframe/content.scss";
11
- @import "./components/inner-blocks/content.scss";
12
11
  @import "./components/media-placeholder/content.scss";
13
12
  @import "./components/plain-text/content.scss";
14
13
  @import "./components/rich-text/content.scss";
@@ -2,7 +2,10 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
- import { privateApis as blocksPrivateApis } from '@wordpress/blocks';
5
+ import {
6
+ getBlockBindingsSource,
7
+ getBlockBindingsSources,
8
+ } from '@wordpress/blocks';
6
9
  import {
7
10
  __experimentalItemGroup as ItemGroup,
8
11
  __experimentalItem as Item,
@@ -12,7 +15,7 @@ import {
12
15
  __experimentalVStack as VStack,
13
16
  privateApis as componentsPrivateApis,
14
17
  } from '@wordpress/components';
15
- import { useRegistry, useSelect } from '@wordpress/data';
18
+ import { useSelect } from '@wordpress/data';
16
19
  import { useContext, Fragment } from '@wordpress/element';
17
20
  import { useViewportMatch } from '@wordpress/compose';
18
21
 
@@ -47,7 +50,6 @@ const useToolsPanelDropdownMenuProps = () => {
47
50
  };
48
51
 
49
52
  function BlockBindingsPanelDropdown( { fieldsList, attribute, binding } ) {
50
- const { getBlockBindingsSources } = unlock( blocksPrivateApis );
51
53
  const registeredSources = getBlockBindingsSources();
52
54
  const { updateBlockBindings } = useBlockBindingsUtils();
53
55
  const currentKey = binding?.args?.key;
@@ -96,8 +98,7 @@ function BlockBindingsPanelDropdown( { fieldsList, attribute, binding } ) {
96
98
 
97
99
  function BlockBindingsAttribute( { attribute, binding, fieldsList } ) {
98
100
  const { source: sourceName, args } = binding || {};
99
- const sourceProps =
100
- unlock( blocksPrivateApis ).getBlockBindingsSource( sourceName );
101
+ const sourceProps = getBlockBindingsSource( sourceName );
101
102
  const isSourceInvalid = ! sourceProps;
102
103
  return (
103
104
  <VStack className="block-editor-bindings__item" spacing={ 0 }>
@@ -186,7 +187,6 @@ function EditableBlockBindingsPanelItems( {
186
187
  }
187
188
 
188
189
  export const BlockBindingsPanel = ( { name: blockName, metadata } ) => {
189
- const registry = useRegistry();
190
190
  const blockContext = useContext( BlockContext );
191
191
  const { removeAllBlockBindings } = useBlockBindingsUtils();
192
192
  const bindableAttributes = getBindableAttributes( blockName );
@@ -194,14 +194,13 @@ export const BlockBindingsPanel = ( { name: blockName, metadata } ) => {
194
194
 
195
195
  // `useSelect` is used purposely here to ensure `getFieldsList`
196
196
  // is updated whenever there are updates in block context.
197
- // `source.getFieldsList` may also call a selector via `registry.select`.
197
+ // `source.getFieldsList` may also call a selector via `select`.
198
198
  const _fieldsList = {};
199
199
  const { fieldsList, canUpdateBlockBindings } = useSelect(
200
200
  ( select ) => {
201
201
  if ( ! bindableAttributes || bindableAttributes.length === 0 ) {
202
202
  return EMPTY_OBJECT;
203
203
  }
204
- const { getBlockBindingsSources } = unlock( blocksPrivateApis );
205
204
  const registeredSources = getBlockBindingsSources();
206
205
  Object.entries( registeredSources ).forEach(
207
206
  ( [ sourceName, { getFieldsList, usesContext } ] ) => {
@@ -214,7 +213,7 @@ export const BlockBindingsPanel = ( { name: blockName, metadata } ) => {
214
213
  }
215
214
  }
216
215
  const sourceList = getFieldsList( {
217
- registry,
216
+ select,
218
217
  context,
219
218
  } );
220
219
  // Only add source if the list is not empty.
@@ -234,7 +233,7 @@ export const BlockBindingsPanel = ( { name: blockName, metadata } ) => {
234
233
  .canUpdateBlockBindings,
235
234
  };
236
235
  },
237
- [ blockContext, bindableAttributes, registry ]
236
+ [ blockContext, bindableAttributes ]
238
237
  );
239
238
  // Return early if there are no bindable attributes.
240
239
  if ( ! bindableAttributes || bindableAttributes.length === 0 ) {
@@ -314,8 +314,11 @@ function useDuotoneStyles( {
314
314
  }, [ isValidFilter, blockElement, colors ] );
315
315
  }
316
316
 
317
+ // Used for generating the instance ID
318
+ const DUOTONE_BLOCK_PROPS_REFERENCE = {};
319
+
317
320
  function useBlockProps( { clientId, name, style } ) {
318
- const id = useInstanceId( useBlockProps );
321
+ const id = useInstanceId( DUOTONE_BLOCK_PROPS_REFERENCE );
319
322
  const selector = useMemo( () => {
320
323
  const blockType = getBlockType( name );
321
324
 
@@ -17,6 +17,9 @@ import {
17
17
  GridItemMovers,
18
18
  } from '../components/grid';
19
19
 
20
+ // Used for generating the instance ID
21
+ const LAYOUT_CHILD_BLOCK_PROPS_REFERENCE = {};
22
+
20
23
  function useBlockPropsChildLayoutStyles( { style } ) {
21
24
  const shouldRenderChildLayoutStyles = useSelect( ( select ) => {
22
25
  return ! select( blockEditorStore ).getSettings().disableLayoutStyles;
@@ -32,7 +35,7 @@ function useBlockPropsChildLayoutStyles( { style } ) {
32
35
  } = layout;
33
36
  const parentLayout = useLayout() || {};
34
37
  const { columnCount, minimumColumnWidth } = parentLayout;
35
- const id = useInstanceId( useBlockPropsChildLayoutStyles );
38
+ const id = useInstanceId( LAYOUT_CHILD_BLOCK_PROPS_REFERENCE );
36
39
  const selector = `.wp-container-content-${ id }`;
37
40
 
38
41
  // Check that the grid layout attributes are of the correct type, so that we don't accidentally
@@ -310,6 +310,9 @@ export default {
310
310
  },
311
311
  };
312
312
 
313
+ // Used for generating the instance ID
314
+ const POSITION_BLOCK_PROPS_REFERENCE = {};
315
+
313
316
  function useBlockProps( { name, style } ) {
314
317
  const hasPositionBlockSupport = hasBlockSupport(
315
318
  name,
@@ -318,7 +321,7 @@ function useBlockProps( { name, style } ) {
318
321
  const isPositionDisabled = useIsPositionDisabled( { name } );
319
322
  const allowPositionStyles = hasPositionBlockSupport && ! isPositionDisabled;
320
323
 
321
- const id = useInstanceId( useBlockProps );
324
+ const id = useInstanceId( POSITION_BLOCK_PROPS_REFERENCE );
322
325
 
323
326
  // Higher specificity to override defaults in editor UI.
324
327
  const positionSelector = `.wp-container-${ id }.wp-container-${ id }`;
@@ -118,79 +118,81 @@ export const withBlockBindingSupport = createHigherOrderComponent(
118
118
  // there are attribute updates.
119
119
  // `source.getValues` may also call a selector via `registry.select`.
120
120
  const updatedContext = {};
121
- const boundAttributes = useSelect( () => {
122
- if ( ! blockBindings ) {
123
- return;
124
- }
121
+ const boundAttributes = useSelect(
122
+ ( select ) => {
123
+ if ( ! blockBindings ) {
124
+ return;
125
+ }
125
126
 
126
- const attributes = {};
127
+ const attributes = {};
127
128
 
128
- const blockBindingsBySource = new Map();
129
+ const blockBindingsBySource = new Map();
129
130
 
130
- for ( const [ attributeName, binding ] of Object.entries(
131
- blockBindings
132
- ) ) {
133
- const { source: sourceName, args: sourceArgs } = binding;
134
- const source = sources[ sourceName ];
135
- if ( ! source || ! canBindAttribute( name, attributeName ) ) {
136
- continue;
137
- }
131
+ for ( const [ attributeName, binding ] of Object.entries(
132
+ blockBindings
133
+ ) ) {
134
+ const { source: sourceName, args: sourceArgs } = binding;
135
+ const source = sources[ sourceName ];
136
+ if (
137
+ ! source ||
138
+ ! canBindAttribute( name, attributeName )
139
+ ) {
140
+ continue;
141
+ }
138
142
 
139
- // Populate context.
140
- for ( const key of source.usesContext || [] ) {
141
- updatedContext[ key ] = blockContext[ key ];
142
- }
143
+ // Populate context.
144
+ for ( const key of source.usesContext || [] ) {
145
+ updatedContext[ key ] = blockContext[ key ];
146
+ }
143
147
 
144
- blockBindingsBySource.set( source, {
145
- ...blockBindingsBySource.get( source ),
146
- [ attributeName ]: {
147
- args: sourceArgs,
148
- },
149
- } );
150
- }
148
+ blockBindingsBySource.set( source, {
149
+ ...blockBindingsBySource.get( source ),
150
+ [ attributeName ]: {
151
+ args: sourceArgs,
152
+ },
153
+ } );
154
+ }
151
155
 
152
- if ( blockBindingsBySource.size ) {
153
- for ( const [ source, bindings ] of blockBindingsBySource ) {
154
- // Get values in batch if the source supports it.
155
- let values = {};
156
- if ( ! source.getValues ) {
157
- Object.keys( bindings ).forEach( ( attr ) => {
158
- // Default to the the source label when `getValues` doesn't exist.
159
- values[ attr ] = source.label;
160
- } );
161
- } else {
162
- values = source.getValues( {
163
- registry,
164
- context: updatedContext,
165
- clientId,
166
- bindings,
167
- } );
168
- }
169
- for ( const [ attributeName, value ] of Object.entries(
170
- values
171
- ) ) {
172
- if (
173
- attributeName === 'url' &&
174
- ( ! value || ! isURLLike( value ) )
175
- ) {
176
- // Return null if value is not a valid URL.
177
- attributes[ attributeName ] = null;
156
+ if ( blockBindingsBySource.size ) {
157
+ for ( const [
158
+ source,
159
+ bindings,
160
+ ] of blockBindingsBySource ) {
161
+ // Get values in batch if the source supports it.
162
+ let values = {};
163
+ if ( ! source.getValues ) {
164
+ Object.keys( bindings ).forEach( ( attr ) => {
165
+ // Default to the the source label when `getValues` doesn't exist.
166
+ values[ attr ] = source.label;
167
+ } );
178
168
  } else {
179
- attributes[ attributeName ] = value;
169
+ values = source.getValues( {
170
+ select,
171
+ context: updatedContext,
172
+ clientId,
173
+ bindings,
174
+ } );
175
+ }
176
+ for ( const [ attributeName, value ] of Object.entries(
177
+ values
178
+ ) ) {
179
+ if (
180
+ attributeName === 'url' &&
181
+ ( ! value || ! isURLLike( value ) )
182
+ ) {
183
+ // Return null if value is not a valid URL.
184
+ attributes[ attributeName ] = null;
185
+ } else {
186
+ attributes[ attributeName ] = value;
187
+ }
180
188
  }
181
189
  }
182
190
  }
183
- }
184
191
 
185
- return attributes;
186
- }, [
187
- blockBindings,
188
- name,
189
- clientId,
190
- updatedContext,
191
- registry,
192
- sources,
193
- ] );
192
+ return attributes;
193
+ },
194
+ [ blockBindings, name, clientId, updatedContext, sources ]
195
+ );
194
196
 
195
197
  const hasParentPattern = !! updatedContext[ 'pattern/overrides' ];
196
198
  const hasPatternOverridesDefaultBinding =
@@ -240,7 +242,8 @@ export const withBlockBindingSupport = createHigherOrderComponent(
240
242
  bindings,
241
243
  ] of blockBindingsBySource ) {
242
244
  source.setValues( {
243
- registry,
245
+ select: registry.select,
246
+ dispatch: registry.dispatch,
244
247
  context: updatedContext,
245
248
  clientId,
246
249
  bindings,
@@ -12,7 +12,6 @@ import {
12
12
  arrowDown,
13
13
  } from '@wordpress/icons';
14
14
  import {
15
- Button,
16
15
  ToggleControl,
17
16
  Flex,
18
17
  FlexItem,
@@ -110,7 +109,6 @@ export default {
110
109
  <FlexLayoutVerticalAlignmentControl
111
110
  layout={ layout }
112
111
  onChange={ onChange }
113
- isToolbar
114
112
  />
115
113
  ) }
116
114
  </BlockControls>
@@ -190,11 +188,7 @@ export default {
190
188
  },
191
189
  };
192
190
 
193
- function FlexLayoutVerticalAlignmentControl( {
194
- layout,
195
- onChange,
196
- isToolbar = false,
197
- } ) {
191
+ function FlexLayoutVerticalAlignmentControl( { layout, onChange } ) {
198
192
  const { orientation = 'horizontal' } = layout;
199
193
 
200
194
  const defaultVerticalAlignment =
@@ -210,54 +204,17 @@ function FlexLayoutVerticalAlignmentControl( {
210
204
  verticalAlignment: value,
211
205
  } );
212
206
  };
213
- if ( isToolbar ) {
214
- return (
215
- <BlockVerticalAlignmentControl
216
- onChange={ onVerticalAlignmentChange }
217
- value={ verticalAlignment }
218
- controls={
219
- orientation === 'horizontal'
220
- ? [ 'top', 'center', 'bottom', 'stretch' ]
221
- : [ 'top', 'center', 'bottom', 'space-between' ]
222
- }
223
- />
224
- );
225
- }
226
-
227
- const verticalAlignmentOptions = [
228
- {
229
- value: 'flex-start',
230
- label: __( 'Align items top' ),
231
- },
232
- {
233
- value: 'center',
234
- label: __( 'Align items center' ),
235
- },
236
- {
237
- value: 'flex-end',
238
- label: __( 'Align items bottom' ),
239
- },
240
- ];
241
207
 
242
208
  return (
243
- <fieldset className="block-editor-hooks__flex-layout-vertical-alignment-control">
244
- <legend>{ __( 'Vertical alignment' ) }</legend>
245
- <div>
246
- { verticalAlignmentOptions.map( ( value, icon, label ) => {
247
- return (
248
- <Button
249
- // TODO: Switch to `true` (40px size) if possible
250
- __next40pxDefaultSize={ false }
251
- key={ value }
252
- label={ label }
253
- icon={ icon }
254
- isPressed={ verticalAlignment === value }
255
- onClick={ () => onVerticalAlignmentChange( value ) }
256
- />
257
- );
258
- } ) }
259
- </div>
260
- </fieldset>
209
+ <BlockVerticalAlignmentControl
210
+ onChange={ onVerticalAlignmentChange }
211
+ value={ verticalAlignment }
212
+ controls={
213
+ orientation === 'horizontal'
214
+ ? [ 'top', 'center', 'bottom', 'stretch' ]
215
+ : [ 'top', 'center', 'bottom', 'space-between' ]
216
+ }
217
+ />
261
218
  );
262
219
  }
263
220
 
@@ -47,7 +47,6 @@ import { PrivatePublishDateTimePicker } from './components/publish-date-time-pic
47
47
  import useSpacingSizes from './components/spacing-sizes-control/hooks/use-spacing-sizes';
48
48
  import useBlockDisplayTitle from './components/block-title/use-block-display-title';
49
49
  import TabbedSidebar from './components/tabbed-sidebar';
50
- import { useBlockBindingsUtils } from './utils/block-bindings';
51
50
 
52
51
  /**
53
52
  * Private @wordpress/block-editor APIs.
@@ -92,6 +91,5 @@ lock( privateApis, {
92
91
  useBlockDisplayTitle,
93
92
  __unstableBlockStyleVariationOverridesWithConfig,
94
93
  setBackgroundStyleDefaults,
95
- useBlockBindingsUtils,
96
94
  sectionRootClientIdKey,
97
95
  } );
@@ -1728,23 +1728,24 @@ export const __unstableSetEditorMode =
1728
1728
  };
1729
1729
 
1730
1730
  /**
1731
- * Action that enables or disables the block moving mode.
1731
+ * Set the block moving client ID.
1732
1732
  *
1733
- * @param {string|null} hasBlockMovingClientId Enable/Disable block moving mode.
1733
+ * @deprecated
1734
+ *
1735
+ * @return {Object} Action object.
1734
1736
  */
1735
- export const setBlockMovingClientId =
1736
- ( hasBlockMovingClientId = null ) =>
1737
- ( { dispatch } ) => {
1738
- dispatch( { type: 'SET_BLOCK_MOVING_MODE', hasBlockMovingClientId } );
1739
-
1740
- if ( hasBlockMovingClientId ) {
1741
- speak(
1742
- __(
1743
- 'Use the Tab key and Arrow keys to choose new block location. Use Left and Right Arrow keys to move between nesting levels. Once location is selected press Enter or Space to move the block.'
1744
- )
1745
- );
1737
+ export function setBlockMovingClientId() {
1738
+ deprecated(
1739
+ 'wp.data.dispatch( "core/block-editor" ).setBlockMovingClientId',
1740
+ {
1741
+ since: '6.7',
1742
+ hint: 'Block moving mode feature has been removed',
1746
1743
  }
1744
+ );
1745
+ return {
1746
+ type: 'DO_NOTHING',
1747
1747
  };
1748
+ }
1748
1749
 
1749
1750
  /**
1750
1751
  * Action that duplicates a list of blocks.
@@ -359,6 +359,20 @@ export function expandBlock( clientId ) {
359
359
  };
360
360
  }
361
361
 
362
+ /**
363
+ * @param {Object} value
364
+ * @param {string} value.rootClientId The root client ID to insert at.
365
+ * @param {number} value.index The index to insert at.
366
+ *
367
+ * @return {Object} Action object.
368
+ */
369
+ export function setInsertionPoint( value ) {
370
+ return {
371
+ type: 'SET_INSERTION_POINT',
372
+ value,
373
+ };
374
+ }
375
+
362
376
  /**
363
377
  * Temporarily modify/unlock the content-only block for editions.
364
378
  *