@wordpress/block-editor 14.3.4 → 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 (392) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +4 -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 +12 -24
  102. package/build/components/media-placeholder/index.js.map +1 -1
  103. package/build/components/skip-to-selected-block/index.js +2 -4
  104. package/build/components/skip-to-selected-block/index.js.map +1 -1
  105. package/build/components/tool-selector/index.js +13 -12
  106. package/build/components/tool-selector/index.js.map +1 -1
  107. package/build/components/url-input/button.js +14 -16
  108. package/build/components/url-input/button.js.map +1 -1
  109. package/build/components/url-input/index.js +2 -4
  110. package/build/components/url-input/index.js.map +1 -1
  111. package/build/components/use-block-commands/index.js +0 -61
  112. package/build/components/use-block-commands/index.js.map +1 -1
  113. package/build/components/writing-flow/use-tab-nav.js +2 -25
  114. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  115. package/build/hooks/duotone.js +4 -1
  116. package/build/hooks/duotone.js.map +1 -1
  117. package/build/hooks/layout-child.js +3 -1
  118. package/build/hooks/layout-child.js.map +1 -1
  119. package/build/hooks/position.js +3 -2
  120. package/build/hooks/position.js.map +1 -1
  121. package/build/layouts/flex.js +6 -38
  122. package/build/layouts/flex.js.map +1 -1
  123. package/build/store/actions.js +13 -14
  124. package/build/store/actions.js.map +1 -1
  125. package/build/store/private-actions.js +15 -0
  126. package/build/store/private-actions.js.map +1 -1
  127. package/build/store/private-selectors.js +104 -7
  128. package/build/store/private-selectors.js.map +1 -1
  129. package/build/store/reducer.js +22 -26
  130. package/build/store/reducer.js.map +1 -1
  131. package/build/store/selectors.js +127 -56
  132. package/build/store/selectors.js.map +1 -1
  133. package/build/store/utils.js +4 -3
  134. package/build/store/utils.js.map +1 -1
  135. package/build/utils/block-bindings.js +2 -0
  136. package/build/utils/block-bindings.js.map +1 -1
  137. package/build-module/autocompleters/link.js +2 -1
  138. package/build-module/autocompleters/link.js.map +1 -1
  139. package/build-module/components/block-actions/index.js +1 -13
  140. package/build-module/components/block-actions/index.js.map +1 -1
  141. package/build-module/components/block-inspector/index.js +57 -76
  142. package/build-module/components/block-inspector/index.js.map +1 -1
  143. package/build-module/components/block-list/block.js +5 -19
  144. package/build-module/components/block-list/block.js.map +1 -1
  145. package/build-module/components/block-list/index.js +5 -8
  146. package/build-module/components/block-list/index.js.map +1 -1
  147. package/build-module/components/block-list/use-block-props/index.js +3 -11
  148. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  149. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +9 -12
  150. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
  151. package/build-module/components/block-list/use-in-between-inserter.js +5 -3
  152. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  153. package/build-module/components/block-list/zoom-out-separator.js +14 -6
  154. package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
  155. package/build-module/components/block-navigation/dropdown.js +2 -4
  156. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  157. package/build-module/components/block-parent-selector/index.js +13 -10
  158. package/build-module/components/block-parent-selector/index.js.map +1 -1
  159. package/build-module/components/block-pattern-setup/setup-toolbar.js +10 -20
  160. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  161. package/build-module/components/block-patterns-paging/index.js +11 -13
  162. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  163. package/build-module/components/block-quick-navigation/index.js +2 -4
  164. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  165. package/build-module/components/block-settings-menu/block-settings-dropdown.js +79 -76
  166. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  167. package/build-module/components/block-settings-menu-controls/index.js +2 -7
  168. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  169. package/build-module/components/block-switcher/index.js +17 -14
  170. package/build-module/components/block-switcher/index.js.map +1 -1
  171. package/build-module/components/block-toolbar/index.js +17 -20
  172. package/build-module/components/block-toolbar/index.js.map +1 -1
  173. package/build-module/components/block-toolbar/use-has-block-toolbar.js +3 -5
  174. package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  175. package/build-module/components/block-tools/index.js +8 -11
  176. package/build-module/components/block-tools/index.js.map +1 -1
  177. package/build-module/components/block-tools/insertion-point.js +1 -4
  178. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  179. package/build-module/components/block-tools/use-show-block-tools.js +2 -5
  180. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  181. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js +1 -12
  182. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -1
  183. package/build-module/components/block-tools/zoom-out-mode-inserters.js +14 -17
  184. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  185. package/build-module/components/block-tools/zoom-out-toolbar.js +2 -12
  186. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  187. package/build-module/components/block-variation-picker/index.js +2 -4
  188. package/build-module/components/block-variation-picker/index.js.map +1 -1
  189. package/build-module/components/block-variation-transforms/index.js +3 -4
  190. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  191. package/build-module/components/button-block-appender/index.js +2 -4
  192. package/build-module/components/button-block-appender/index.js.map +1 -1
  193. package/build-module/components/colors-gradients/dropdown.js +2 -4
  194. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  195. package/build-module/components/global-styles/border-panel.js +1 -1
  196. package/build-module/components/global-styles/border-panel.js.map +1 -1
  197. package/build-module/components/global-styles/color-panel.js +2 -4
  198. package/build-module/components/global-styles/color-panel.js.map +1 -1
  199. package/build-module/components/global-styles/dimensions-panel.js +1 -1
  200. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  201. package/build-module/components/global-styles/filters-panel.js +2 -4
  202. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  203. package/build-module/components/global-styles/shadow-panel-components.js +25 -30
  204. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  205. package/build-module/components/inner-blocks/index.js +1 -9
  206. package/build-module/components/inner-blocks/index.js.map +1 -1
  207. package/build-module/components/inserter/block-types-tab.js +1 -1
  208. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  209. package/build-module/components/inserter/hooks/use-block-types-state.js +27 -8
  210. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  211. package/build-module/components/inserter/hooks/use-insertion-point.js +22 -12
  212. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  213. package/build-module/components/inserter/hooks/use-patterns-state.js +23 -10
  214. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  215. package/build-module/components/inserter/media-tab/media-preview.js +35 -13
  216. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  217. package/build-module/components/inserter/menu.js +2 -2
  218. package/build-module/components/inserter/menu.js.map +1 -1
  219. package/build-module/components/inserter/mobile-tab-navigation.js +6 -6
  220. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -1
  221. package/build-module/components/inserter/quick-inserter.js +4 -4
  222. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  223. package/build-module/components/inspector-controls-tabs/index.js +12 -9
  224. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  225. package/build-module/components/inspector-popover-header/index.js +4 -8
  226. package/build-module/components/inspector-popover-header/index.js.map +1 -1
  227. package/build-module/components/link-control/index.js +5 -10
  228. package/build-module/components/link-control/index.js.map +1 -1
  229. package/build-module/components/link-control/settings-drawer.js +2 -4
  230. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  231. package/build-module/components/list-view/block-contents.js +1 -25
  232. package/build-module/components/list-view/block-contents.js.map +1 -1
  233. package/build-module/components/list-view/block-select-button.js +2 -5
  234. package/build-module/components/list-view/block-select-button.js.map +1 -1
  235. package/build-module/components/media-placeholder/index.js +12 -24
  236. package/build-module/components/media-placeholder/index.js.map +1 -1
  237. package/build-module/components/skip-to-selected-block/index.js +2 -4
  238. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  239. package/build-module/components/tool-selector/index.js +13 -12
  240. package/build-module/components/tool-selector/index.js.map +1 -1
  241. package/build-module/components/url-input/button.js +15 -17
  242. package/build-module/components/url-input/button.js.map +1 -1
  243. package/build-module/components/url-input/index.js +2 -4
  244. package/build-module/components/url-input/index.js.map +1 -1
  245. package/build-module/components/use-block-commands/index.js +1 -62
  246. package/build-module/components/use-block-commands/index.js.map +1 -1
  247. package/build-module/components/writing-flow/use-tab-nav.js +3 -26
  248. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  249. package/build-module/hooks/duotone.js +4 -1
  250. package/build-module/hooks/duotone.js.map +1 -1
  251. package/build-module/hooks/layout-child.js +4 -1
  252. package/build-module/hooks/layout-child.js.map +1 -1
  253. package/build-module/hooks/position.js +4 -1
  254. package/build-module/hooks/position.js.map +1 -1
  255. package/build-module/layouts/flex.js +7 -39
  256. package/build-module/layouts/flex.js.map +1 -1
  257. package/build-module/store/actions.js +12 -12
  258. package/build-module/store/actions.js.map +1 -1
  259. package/build-module/store/private-actions.js +14 -0
  260. package/build-module/store/private-actions.js.map +1 -1
  261. package/build-module/store/private-selectors.js +98 -7
  262. package/build-module/store/private-selectors.js.map +1 -1
  263. package/build-module/store/reducer.js +21 -25
  264. package/build-module/store/reducer.js.map +1 -1
  265. package/build-module/store/selectors.js +129 -58
  266. package/build-module/store/selectors.js.map +1 -1
  267. package/build-module/store/utils.js +3 -2
  268. package/build-module/store/utils.js.map +1 -1
  269. package/build-module/utils/block-bindings.js +2 -0
  270. package/build-module/utils/block-bindings.js.map +1 -1
  271. package/build-style/content-rtl.css +14 -56
  272. package/build-style/content.css +14 -56
  273. package/build-style/default-editor-styles-rtl.css +10 -1
  274. package/build-style/default-editor-styles.css +10 -1
  275. package/build-style/style-rtl.css +51 -149
  276. package/build-style/style.css +51 -149
  277. package/package.json +32 -32
  278. package/src/autocompleters/link.js +2 -1
  279. package/src/components/block-actions/index.js +1 -13
  280. package/src/components/block-draggable/style.scss +2 -2
  281. package/src/components/block-inspector/index.js +79 -95
  282. package/src/components/block-inspector/style.scss +2 -0
  283. package/src/components/block-list/block.js +7 -28
  284. package/src/components/block-list/content.scss +1 -61
  285. package/src/components/block-list/index.js +21 -29
  286. package/src/components/block-list/use-block-props/index.js +3 -10
  287. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +19 -11
  288. package/src/components/block-list/use-in-between-inserter.js +5 -2
  289. package/src/components/block-list/zoom-out-separator.js +24 -8
  290. package/src/components/block-navigation/dropdown.js +1 -2
  291. package/src/components/block-parent-selector/index.js +13 -10
  292. package/src/components/block-pattern-setup/setup-toolbar.js +5 -10
  293. package/src/components/block-patterns-paging/index.js +8 -7
  294. package/src/components/block-patterns-paging/style.scss +10 -27
  295. package/src/components/block-quick-navigation/index.js +1 -2
  296. package/src/components/block-settings-menu/block-settings-dropdown.js +120 -106
  297. package/src/components/block-settings-menu-controls/index.js +0 -15
  298. package/src/components/block-switcher/index.js +37 -30
  299. package/src/components/block-toolbar/index.js +22 -34
  300. package/src/components/block-toolbar/style.scss +10 -1
  301. package/src/components/block-toolbar/use-has-block-toolbar.js +19 -31
  302. package/src/components/block-tools/index.js +7 -16
  303. package/src/components/block-tools/insertion-point.js +1 -4
  304. package/src/components/block-tools/style.scss +3 -88
  305. package/src/components/block-tools/use-show-block-tools.js +2 -12
  306. package/src/components/block-tools/zoom-out-mode-inserter-button.js +2 -17
  307. package/src/components/block-tools/zoom-out-mode-inserters.js +11 -19
  308. package/src/components/block-tools/zoom-out-toolbar.js +2 -13
  309. package/src/components/block-variation-picker/index.js +1 -2
  310. package/src/components/block-variation-transforms/index.js +2 -2
  311. package/src/components/button-block-appender/content.scss +0 -5
  312. package/src/components/button-block-appender/index.js +1 -2
  313. package/src/components/colors-gradients/dropdown.js +1 -5
  314. package/src/components/font-family/README.md +5 -1
  315. package/src/components/global-styles/border-panel.js +1 -1
  316. package/src/components/global-styles/color-panel.js +1 -5
  317. package/src/components/global-styles/dimensions-panel.js +1 -1
  318. package/src/components/global-styles/filters-panel.js +1 -2
  319. package/src/components/global-styles/shadow-panel-components.js +28 -33
  320. package/src/components/global-styles/style.scss +5 -0
  321. package/src/components/inner-blocks/index.js +1 -16
  322. package/src/components/inserter/block-types-tab.js +1 -1
  323. package/src/components/inserter/hooks/use-block-types-state.js +34 -14
  324. package/src/components/inserter/hooks/use-insertion-point.js +35 -13
  325. package/src/components/inserter/hooks/use-patterns-state.js +46 -9
  326. package/src/components/inserter/media-tab/media-preview.js +38 -12
  327. package/src/components/inserter/menu.js +2 -2
  328. package/src/components/inserter/mobile-tab-navigation.js +10 -13
  329. package/src/components/inserter/quick-inserter.js +5 -4
  330. package/src/components/inserter/style.scss +0 -28
  331. package/src/components/inspector-controls-tabs/index.js +21 -20
  332. package/src/components/inspector-controls-tabs/style.scss +2 -6
  333. package/src/components/inspector-popover-header/index.js +2 -4
  334. package/src/components/inspector-popover-header/style.scss +0 -13
  335. package/src/components/link-control/index.js +2 -5
  336. package/src/components/link-control/settings-drawer.js +1 -2
  337. package/src/components/list-view/block-contents.js +1 -28
  338. package/src/components/list-view/block-select-button.js +2 -5
  339. package/src/components/list-view/style.scss +18 -14
  340. package/src/components/media-placeholder/index.js +6 -12
  341. package/src/components/skip-to-selected-block/index.js +1 -2
  342. package/src/components/skip-to-selected-block/style.scss +0 -9
  343. package/src/components/tool-selector/index.js +14 -9
  344. package/src/components/tool-selector/style.scss +5 -0
  345. package/src/components/url-input/button.js +16 -12
  346. package/src/components/url-input/index.js +1 -2
  347. package/src/components/url-input/style.scss +0 -6
  348. package/src/components/use-block-commands/index.js +0 -58
  349. package/src/components/writing-flow/use-tab-nav.js +4 -36
  350. package/src/content.scss +0 -1
  351. package/src/hooks/duotone.js +4 -1
  352. package/src/hooks/layout-child.js +4 -1
  353. package/src/hooks/position.js +4 -1
  354. package/src/layouts/flex.js +10 -53
  355. package/src/store/actions.js +14 -13
  356. package/src/store/private-actions.js +14 -0
  357. package/src/store/private-selectors.js +120 -16
  358. package/src/store/reducer.js +22 -28
  359. package/src/store/selectors.js +203 -114
  360. package/src/store/test/private-actions.js +15 -0
  361. package/src/store/test/private-selectors.js +34 -0
  362. package/src/store/test/reducer.js +40 -4
  363. package/src/store/test/selectors.js +183 -20
  364. package/src/store/utils.js +4 -2
  365. package/src/utils/block-bindings.js +2 -0
  366. package/build/components/block-controls/use-has-block-controls.js +0 -43
  367. package/build/components/block-controls/use-has-block-controls.js.map +0 -1
  368. package/build/components/block-list/use-block-props/use-nav-mode-exit.js +0 -54
  369. package/build/components/block-list/use-block-props/use-nav-mode-exit.js.map +0 -1
  370. package/build/components/block-tools/block-selection-button.js +0 -259
  371. package/build/components/block-tools/block-selection-button.js.map +0 -1
  372. package/build/components/block-tools/block-toolbar-breadcrumb.js +0 -57
  373. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +0 -1
  374. package/build/components/inserter/tabs.js +0 -78
  375. package/build/components/inserter/tabs.js.map +0 -1
  376. package/build-module/components/block-controls/use-has-block-controls.js +0 -34
  377. package/build-module/components/block-controls/use-has-block-controls.js.map +0 -1
  378. package/build-module/components/block-list/use-block-props/use-nav-mode-exit.js +0 -48
  379. package/build-module/components/block-list/use-block-props/use-nav-mode-exit.js.map +0 -1
  380. package/build-module/components/block-tools/block-selection-button.js +0 -254
  381. package/build-module/components/block-tools/block-selection-button.js.map +0 -1
  382. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +0 -49
  383. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +0 -1
  384. package/build-module/components/inserter/tabs.js +0 -72
  385. package/build-module/components/inserter/tabs.js.map +0 -1
  386. package/src/components/block-controls/use-has-block-controls.js +0 -35
  387. package/src/components/block-list/use-block-props/use-nav-mode-exit.js +0 -46
  388. package/src/components/block-tools/block-selection-button.js +0 -302
  389. package/src/components/block-tools/block-toolbar-breadcrumb.js +0 -51
  390. package/src/components/inner-blocks/content.scss +0 -13
  391. package/src/components/inserter/tabs.js +0 -78
  392. 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 { __ } from '@wordpress/i18n';
5
- import { __experimentalVStack as VStack, __experimentalHeading as Heading, __experimentalHStack as HStack, __experimentalDropdownContentWrapper as DropdownContentWrapper, Button, FlexItem, Dropdown, Composite } from '@wordpress/components';
5
+ import { __experimentalVStack as VStack, __experimentalHeading as Heading, __experimentalHStack as HStack, __experimentalDropdownContentWrapper as DropdownContentWrapper, Button, FlexItem, Dropdown, Composite, Tooltip } from '@wordpress/components';
6
6
  import { useMemo } from '@wordpress/element';
7
7
  import { shadow as shadowIcon, Icon, check } from '@wordpress/icons';
8
8
 
@@ -39,10 +39,8 @@ export function ShadowPopoverContainer({
39
39
  onSelect: onShadowChange
40
40
  }), /*#__PURE__*/_jsx("div", {
41
41
  className: "block-editor-global-styles__clear-shadow",
42
- children: /*#__PURE__*/_jsx(Button
43
- // TODO: Switch to `true` (40px size) if possible
44
- , {
45
- __next40pxDefaultSize: false,
42
+ children: /*#__PURE__*/_jsx(Button, {
43
+ __next40pxDefaultSize: true,
46
44
  variant: "tertiary",
47
45
  onClick: () => onShadowChange(undefined),
48
46
  children: __('Clear')
@@ -80,28 +78,27 @@ export function ShadowIndicator({
80
78
  onSelect,
81
79
  shadow
82
80
  }) {
83
- return /*#__PURE__*/_jsx(Composite.Item, {
84
- role: "option",
85
- "aria-label": label,
86
- "aria-selected": isActive,
87
- className: clsx('block-editor-global-styles__shadow__item', {
88
- 'is-active': isActive
89
- }),
90
- render: /*#__PURE__*/_jsx(Button
91
- // TODO: Switch to `true` (40px size) if possible
92
- , {
93
- __next40pxDefaultSize: false,
94
- className: clsx('block-editor-global-styles__shadow-indicator', {
95
- unset: type === 'unset'
81
+ return /*#__PURE__*/_jsx(Tooltip, {
82
+ text: label,
83
+ children: /*#__PURE__*/_jsx(Composite.Item, {
84
+ role: "option",
85
+ "aria-label": label,
86
+ "aria-selected": isActive,
87
+ className: clsx('block-editor-global-styles__shadow__item', {
88
+ 'is-active': isActive
96
89
  }),
97
- onClick: onSelect,
98
- label: label,
99
- style: {
100
- boxShadow: shadow
101
- },
102
- showTooltip: true,
103
- children: isActive && /*#__PURE__*/_jsx(Icon, {
104
- icon: check
90
+ render: /*#__PURE__*/_jsx("button", {
91
+ className: clsx('block-editor-global-styles__shadow-indicator', {
92
+ unset: type === 'unset'
93
+ }),
94
+ onClick: onSelect,
95
+ style: {
96
+ boxShadow: shadow
97
+ },
98
+ "aria-label": label,
99
+ children: isActive && /*#__PURE__*/_jsx(Icon, {
100
+ icon: check
101
+ })
105
102
  })
106
103
  })
107
104
  });
@@ -142,10 +139,8 @@ function renderShadowToggle() {
142
139
  }),
143
140
  'aria-expanded': isOpen
144
141
  };
145
- return /*#__PURE__*/_jsx(Button
146
- // TODO: Switch to `true` (40px size) if possible
147
- , {
148
- __next40pxDefaultSize: false,
142
+ return /*#__PURE__*/_jsx(Button, {
143
+ __next40pxDefaultSize: true,
149
144
  ...toggleProps,
150
145
  children: /*#__PURE__*/_jsxs(HStack, {
151
146
  justify: "flex-start",
@@ -1 +1 @@
1
- {"version":3,"names":["__","__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalHStack","HStack","__experimentalDropdownContentWrapper","DropdownContentWrapper","Button","FlexItem","Dropdown","Composite","useMemo","shadow","shadowIcon","Icon","check","clsx","jsx","_jsx","jsxs","_jsxs","EMPTY_ARRAY","ShadowPopoverContainer","onShadowChange","settings","shadows","useShadowPresets","className","children","spacing","level","ShadowPresets","presets","activeShadow","onSelect","__next40pxDefaultSize","variant","onClick","undefined","role","map","name","slug","ShadowIndicator","label","isActive","type","Item","render","unset","style","boxShadow","showTooltip","icon","ShadowPopover","popoverProps","placement","offset","shift","renderToggle","renderShadowToggle","renderContent","paddingSize","onToggle","isOpen","toggleProps","justify","size","_settings$shadow$pres","defaultPresetsEnabled","defaultPresets","default","defaultShadows","theme","themeShadows","custom","customShadows","unsetShadow","shadowPresets","length","unshift"],"sources":["@wordpress/block-editor/src/components/global-styles/shadow-panel-components.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalHStack as HStack,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tButton,\n\tFlexItem,\n\tDropdown,\n\tComposite,\n} from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\nimport { shadow as shadowIcon, Icon, check } from '@wordpress/icons';\n\n/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nexport function ShadowPopoverContainer( { shadow, onShadowChange, settings } ) {\n\tconst shadows = useShadowPresets( settings );\n\n\treturn (\n\t\t<div className=\"block-editor-global-styles__shadow-popover-container\">\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<Heading level={ 5 }>{ __( 'Drop shadow' ) }</Heading>\n\t\t\t\t<ShadowPresets\n\t\t\t\t\tpresets={ shadows }\n\t\t\t\t\tactiveShadow={ shadow }\n\t\t\t\t\tonSelect={ onShadowChange }\n\t\t\t\t/>\n\t\t\t\t<div className=\"block-editor-global-styles__clear-shadow\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => onShadowChange( undefined ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Clear' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nexport function ShadowPresets( { presets, activeShadow, onSelect } ) {\n\treturn ! presets ? null : (\n\t\t<Composite\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"block-editor-global-styles__shadow__list\"\n\t\t\taria-label={ __( 'Drop shadows' ) }\n\t\t>\n\t\t\t{ presets.map( ( { name, slug, shadow } ) => (\n\t\t\t\t<ShadowIndicator\n\t\t\t\t\tkey={ slug }\n\t\t\t\t\tlabel={ name }\n\t\t\t\t\tisActive={ shadow === activeShadow }\n\t\t\t\t\ttype={ slug === 'unset' ? 'unset' : 'preset' }\n\t\t\t\t\tonSelect={ () =>\n\t\t\t\t\t\tonSelect( shadow === activeShadow ? undefined : shadow )\n\t\t\t\t\t}\n\t\t\t\t\tshadow={ shadow }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nexport function ShadowIndicator( { type, label, isActive, onSelect, shadow } ) {\n\treturn (\n\t\t<Composite.Item\n\t\t\trole=\"option\"\n\t\t\taria-label={ label }\n\t\t\taria-selected={ isActive }\n\t\t\tclassName={ clsx( 'block-editor-global-styles__shadow__item', {\n\t\t\t\t'is-active': isActive,\n\t\t\t} ) }\n\t\t\trender={\n\t\t\t\t<Button\n\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'block-editor-global-styles__shadow-indicator',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tunset: type === 'unset',\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tonClick={ onSelect }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tstyle={ { boxShadow: shadow } }\n\t\t\t\t\tshowTooltip\n\t\t\t\t>\n\t\t\t\t\t{ isActive && <Icon icon={ check } /> }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t/>\n\t);\n}\n\nexport function ShadowPopover( { shadow, onShadowChange, settings } ) {\n\tconst popoverProps = {\n\t\tplacement: 'left-start',\n\t\toffset: 36,\n\t\tshift: true,\n\t};\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tclassName=\"block-editor-global-styles__shadow-dropdown\"\n\t\t\trenderToggle={ renderShadowToggle() }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper paddingSize=\"medium\">\n\t\t\t\t\t<ShadowPopoverContainer\n\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\tonShadowChange={ onShadowChange }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t/>\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction renderShadowToggle() {\n\treturn ( { onToggle, isOpen } ) => {\n\t\tconst toggleProps = {\n\t\t\tonClick: onToggle,\n\t\t\tclassName: clsx( { 'is-open': isOpen } ),\n\t\t\t'aria-expanded': isOpen,\n\t\t};\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t{ ...toggleProps }\n\t\t\t>\n\t\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName=\"block-editor-global-styles__toggle-icon\"\n\t\t\t\t\t\ticon={ shadowIcon }\n\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t/>\n\t\t\t\t\t<FlexItem>{ __( 'Drop shadow' ) }</FlexItem>\n\t\t\t\t</HStack>\n\t\t\t</Button>\n\t\t);\n\t};\n}\n\nexport function useShadowPresets( settings ) {\n\treturn useMemo( () => {\n\t\tif ( ! settings?.shadow ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\tconst defaultPresetsEnabled = settings?.shadow?.defaultPresets;\n\t\tconst {\n\t\t\tdefault: defaultShadows,\n\t\t\ttheme: themeShadows,\n\t\t\tcustom: customShadows,\n\t\t} = settings?.shadow?.presets ?? {};\n\t\tconst unsetShadow = {\n\t\t\tname: __( 'Unset' ),\n\t\t\tslug: 'unset',\n\t\t\tshadow: 'none',\n\t\t};\n\n\t\tconst shadowPresets = [\n\t\t\t...( ( defaultPresetsEnabled && defaultShadows ) || EMPTY_ARRAY ),\n\t\t\t...( themeShadows || EMPTY_ARRAY ),\n\t\t\t...( customShadows || EMPTY_ARRAY ),\n\t\t];\n\t\tif ( shadowPresets.length ) {\n\t\t\tshadowPresets.unshift( unsetShadow );\n\t\t}\n\n\t\treturn shadowPresets;\n\t}, [ settings ] );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__","__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalHStack","HStack","__experimentalDropdownContentWrapper","DropdownContentWrapper","Button","FlexItem","Dropdown","Composite","Tooltip","useMemo","shadow","shadowIcon","Icon","check","clsx","jsx","_jsx","jsxs","_jsxs","EMPTY_ARRAY","ShadowPopoverContainer","onShadowChange","settings","shadows","useShadowPresets","className","children","spacing","level","ShadowPresets","presets","activeShadow","onSelect","__next40pxDefaultSize","variant","onClick","undefined","role","map","name","slug","ShadowIndicator","label","isActive","type","text","Item","render","unset","style","boxShadow","icon","ShadowPopover","popoverProps","placement","offset","shift","renderToggle","renderShadowToggle","renderContent","paddingSize","onToggle","isOpen","toggleProps","justify","size","_settings$shadow$pres","defaultPresetsEnabled","defaultPresets","default","defaultShadows","theme","themeShadows","custom","customShadows","unsetShadow","shadowPresets","length","unshift"],"sources":["@wordpress/block-editor/src/components/global-styles/shadow-panel-components.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalHStack as HStack,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tButton,\n\tFlexItem,\n\tDropdown,\n\tComposite,\n\tTooltip,\n} from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\nimport { shadow as shadowIcon, Icon, check } from '@wordpress/icons';\n\n/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nexport function ShadowPopoverContainer( { shadow, onShadowChange, settings } ) {\n\tconst shadows = useShadowPresets( settings );\n\n\treturn (\n\t\t<div className=\"block-editor-global-styles__shadow-popover-container\">\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<Heading level={ 5 }>{ __( 'Drop shadow' ) }</Heading>\n\t\t\t\t<ShadowPresets\n\t\t\t\t\tpresets={ shadows }\n\t\t\t\t\tactiveShadow={ shadow }\n\t\t\t\t\tonSelect={ onShadowChange }\n\t\t\t\t/>\n\t\t\t\t<div className=\"block-editor-global-styles__clear-shadow\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => onShadowChange( undefined ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Clear' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nexport function ShadowPresets( { presets, activeShadow, onSelect } ) {\n\treturn ! presets ? null : (\n\t\t<Composite\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"block-editor-global-styles__shadow__list\"\n\t\t\taria-label={ __( 'Drop shadows' ) }\n\t\t>\n\t\t\t{ presets.map( ( { name, slug, shadow } ) => (\n\t\t\t\t<ShadowIndicator\n\t\t\t\t\tkey={ slug }\n\t\t\t\t\tlabel={ name }\n\t\t\t\t\tisActive={ shadow === activeShadow }\n\t\t\t\t\ttype={ slug === 'unset' ? 'unset' : 'preset' }\n\t\t\t\t\tonSelect={ () =>\n\t\t\t\t\t\tonSelect( shadow === activeShadow ? undefined : shadow )\n\t\t\t\t\t}\n\t\t\t\t\tshadow={ shadow }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nexport function ShadowIndicator( { type, label, isActive, onSelect, shadow } ) {\n\treturn (\n\t\t<Tooltip text={ label }>\n\t\t\t<Composite.Item\n\t\t\t\trole=\"option\"\n\t\t\t\taria-label={ label }\n\t\t\t\taria-selected={ isActive }\n\t\t\t\tclassName={ clsx( 'block-editor-global-styles__shadow__item', {\n\t\t\t\t\t'is-active': isActive,\n\t\t\t\t} ) }\n\t\t\t\trender={\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'block-editor-global-styles__shadow-indicator',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tunset: type === 'unset',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonClick={ onSelect }\n\t\t\t\t\t\tstyle={ { boxShadow: shadow } }\n\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isActive && <Icon icon={ check } /> }\n\t\t\t\t\t</button>\n\t\t\t\t}\n\t\t\t/>\n\t\t</Tooltip>\n\t);\n}\n\nexport function ShadowPopover( { shadow, onShadowChange, settings } ) {\n\tconst popoverProps = {\n\t\tplacement: 'left-start',\n\t\toffset: 36,\n\t\tshift: true,\n\t};\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tclassName=\"block-editor-global-styles__shadow-dropdown\"\n\t\t\trenderToggle={ renderShadowToggle() }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper paddingSize=\"medium\">\n\t\t\t\t\t<ShadowPopoverContainer\n\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\tonShadowChange={ onShadowChange }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t/>\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction renderShadowToggle() {\n\treturn ( { onToggle, isOpen } ) => {\n\t\tconst toggleProps = {\n\t\t\tonClick: onToggle,\n\t\t\tclassName: clsx( { 'is-open': isOpen } ),\n\t\t\t'aria-expanded': isOpen,\n\t\t};\n\n\t\treturn (\n\t\t\t<Button __next40pxDefaultSize { ...toggleProps }>\n\t\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName=\"block-editor-global-styles__toggle-icon\"\n\t\t\t\t\t\ticon={ shadowIcon }\n\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t/>\n\t\t\t\t\t<FlexItem>{ __( 'Drop shadow' ) }</FlexItem>\n\t\t\t\t</HStack>\n\t\t\t</Button>\n\t\t);\n\t};\n}\n\nexport function useShadowPresets( settings ) {\n\treturn useMemo( () => {\n\t\tif ( ! settings?.shadow ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\tconst defaultPresetsEnabled = settings?.shadow?.defaultPresets;\n\t\tconst {\n\t\t\tdefault: defaultShadows,\n\t\t\ttheme: themeShadows,\n\t\t\tcustom: customShadows,\n\t\t} = settings?.shadow?.presets ?? {};\n\t\tconst unsetShadow = {\n\t\t\tname: __( 'Unset' ),\n\t\t\tslug: 'unset',\n\t\t\tshadow: 'none',\n\t\t};\n\n\t\tconst shadowPresets = [\n\t\t\t...( ( defaultPresetsEnabled && defaultShadows ) || EMPTY_ARRAY ),\n\t\t\t...( themeShadows || EMPTY_ARRAY ),\n\t\t\t...( customShadows || EMPTY_ARRAY ),\n\t\t];\n\t\tif ( shadowPresets.length ) {\n\t\t\tshadowPresets.unshift( unsetShadow );\n\t\t}\n\n\t\treturn shadowPresets;\n\t}, [ settings ] );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -163,14 +163,11 @@ export function useInnerBlocksProps(props = {}, options = {}) {
163
163
  const selected = useSelect(select => {
164
164
  const {
165
165
  getBlockName,
166
- isBlockSelected,
167
- hasSelectedInnerBlock,
168
166
  __unstableGetEditorMode,
169
167
  getTemplateLock,
170
168
  getBlockRootClientId,
171
169
  getBlockEditingMode,
172
170
  getBlockSettings,
173
- isDragging,
174
171
  getSectionRootClientId
175
172
  } = unlock(select(blockEditorStore));
176
173
  let _isDropZoneDisabled;
@@ -184,7 +181,6 @@ export function useInnerBlocksProps(props = {}, options = {}) {
184
181
  getBlockType
185
182
  } = select(blocksStore);
186
183
  const blockName = getBlockName(clientId);
187
- const enableClickThrough = __unstableGetEditorMode() === 'navigation';
188
184
  const blockEditingMode = getBlockEditingMode(clientId);
189
185
  const parentClientId = getBlockRootClientId(clientId);
190
186
  const [defaultLayout] = getBlockSettings(clientId, 'layout');
@@ -198,7 +194,6 @@ export function useInnerBlocksProps(props = {}, options = {}) {
198
194
  }
199
195
  return {
200
196
  __experimentalCaptureToolbars: hasBlockSupport(blockName, '__experimentalExposeControlsToChildren', false),
201
- hasOverlay: blockName !== 'core/template' && !isBlockSelected(clientId) && !hasSelectedInnerBlock(clientId, true) && enableClickThrough && !isDragging(),
202
197
  name: blockName,
203
198
  blockType: getBlockType(blockName),
204
199
  parentLock: getTemplateLock(parentClientId),
@@ -209,7 +204,6 @@ export function useInnerBlocksProps(props = {}, options = {}) {
209
204
  }, [clientId]);
210
205
  const {
211
206
  __experimentalCaptureToolbars,
212
- hasOverlay,
213
207
  name,
214
208
  blockType,
215
209
  parentLock,
@@ -236,9 +230,7 @@ export function useInnerBlocksProps(props = {}, options = {}) {
236
230
  return {
237
231
  ...props,
238
232
  ref,
239
- className: clsx(props.className, 'block-editor-block-list__layout', __unstableDisableLayoutClassNames ? '' : layoutClassNames, {
240
- 'has-overlay': hasOverlay
241
- }),
233
+ className: clsx(props.className, 'block-editor-block-list__layout', __unstableDisableLayoutClassNames ? '' : layoutClassNames),
242
234
  children: clientId ? /*#__PURE__*/_jsx(InnerBlocks, {
243
235
  ...innerBlocksProps,
244
236
  clientId: clientId
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useMergeRefs","forwardRef","useMemo","memo","useSelect","getBlockSupport","store","blocksStore","__unstableGetInnerBlocksProps","getInnerBlocksProps","ButtonBlockAppender","DefaultBlockAppender","useNestedSettingsUpdate","useInnerBlockTemplateSync","useBlockContext","BlockListItems","BlockContextProvider","useBlockEditContext","useBlockSync","blockEditorStore","useBlockDropZone","unlock","jsx","_jsx","EMPTY_OBJECT","BlockContext","children","clientId","context","value","BlockListItemsMemo","UncontrolledInnerBlocks","props","allowedBlocks","prioritizedInserterBlocks","defaultBlock","directInsert","__experimentalDefaultBlock","__experimentalDirectInsert","template","templateLock","wrapperRef","templateInsertUpdatesSelection","__experimentalCaptureToolbars","captureToolbars","__experimentalAppenderTagName","renderAppender","orientation","placeholder","layout","name","blockType","parentLock","defaultLayout","defaultLayoutBlockSupport","allowSizingOnChildren","usedLayout","memoedLayout","items","rootClientId","providesContext","Object","keys","length","ControlledInnerBlocks","ForwardedInnerBlocks","ref","innerBlocksProps","useInnerBlocksProps","className","options","__unstableDisableLayoutClassNames","__unstableDisableDropZone","dropZoneElement","__unstableLayoutClassNames","layoutClassNames","selected","select","getBlockName","isBlockSelected","hasSelectedInnerBlock","__unstableGetEditorMode","getTemplateLock","getBlockRootClientId","getBlockEditingMode","getBlockSettings","isDragging","getSectionRootClientId","_isDropZoneDisabled","isDropZoneDisabled","hasBlockSupport","getBlockType","blockName","enableClickThrough","blockEditingMode","parentClientId","sectionRootClientId","hasOverlay","blockDropZoneRef","isManualPlacement","window","__experimentalEnableGridInteractivity","InnerBlocks","onChange","save","Content"],"sources":["@wordpress/block-editor/src/components/inner-blocks/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useMergeRefs } from '@wordpress/compose';\nimport { forwardRef, useMemo, memo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tgetBlockSupport,\n\tstore as blocksStore,\n\t__unstableGetInnerBlocksProps as getInnerBlocksProps,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport ButtonBlockAppender from './button-block-appender';\nimport DefaultBlockAppender from './default-block-appender';\nimport useNestedSettingsUpdate from './use-nested-settings-update';\nimport useInnerBlockTemplateSync from './use-inner-block-template-sync';\nimport useBlockContext from './use-block-context';\nimport { BlockListItems } from '../block-list';\nimport { BlockContextProvider } from '../block-context';\nimport { useBlockEditContext } from '../block-edit/context';\nimport useBlockSync from '../provider/use-block-sync';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDropZone from '../use-block-drop-zone';\nimport { unlock } from '../../lock-unlock';\n\nconst EMPTY_OBJECT = {};\n\nfunction BlockContext( { children, clientId } ) {\n\tconst context = useBlockContext( clientId );\n\treturn (\n\t\t<BlockContextProvider value={ context }>\n\t\t\t{ children }\n\t\t</BlockContextProvider>\n\t);\n}\n\nconst BlockListItemsMemo = memo( BlockListItems );\n\n/**\n * InnerBlocks is a component which allows a single block to have multiple blocks\n * as children. The UncontrolledInnerBlocks component is used whenever the inner\n * blocks are not controlled by another entity. In other words, it is normally\n * used for inner blocks in the post editor\n *\n * @param {Object} props The component props.\n */\nfunction UncontrolledInnerBlocks( props ) {\n\tconst {\n\t\tclientId,\n\t\tallowedBlocks,\n\t\tprioritizedInserterBlocks,\n\t\tdefaultBlock,\n\t\tdirectInsert,\n\t\t__experimentalDefaultBlock,\n\t\t__experimentalDirectInsert,\n\t\ttemplate,\n\t\ttemplateLock,\n\t\twrapperRef,\n\t\ttemplateInsertUpdatesSelection,\n\t\t__experimentalCaptureToolbars: captureToolbars,\n\t\t__experimentalAppenderTagName,\n\t\trenderAppender,\n\t\torientation,\n\t\tplaceholder,\n\t\tlayout,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tdefaultLayout,\n\t} = props;\n\n\tuseNestedSettingsUpdate(\n\t\tclientId,\n\t\tparentLock,\n\t\tallowedBlocks,\n\t\tprioritizedInserterBlocks,\n\t\tdefaultBlock,\n\t\tdirectInsert,\n\t\t__experimentalDefaultBlock,\n\t\t__experimentalDirectInsert,\n\t\ttemplateLock,\n\t\tcaptureToolbars,\n\t\torientation,\n\t\tlayout\n\t);\n\n\tuseInnerBlockTemplateSync(\n\t\tclientId,\n\t\ttemplate,\n\t\ttemplateLock,\n\t\ttemplateInsertUpdatesSelection\n\t);\n\n\tconst defaultLayoutBlockSupport =\n\t\tgetBlockSupport( name, 'layout' ) ||\n\t\tgetBlockSupport( name, '__experimentalLayout' ) ||\n\t\tEMPTY_OBJECT;\n\n\tconst { allowSizingOnChildren = false } = defaultLayoutBlockSupport;\n\tconst usedLayout = layout || defaultLayoutBlockSupport;\n\n\tconst memoedLayout = useMemo(\n\t\t() => ( {\n\t\t\t// Default layout will know about any content/wide size defined by the theme.\n\t\t\t...defaultLayout,\n\t\t\t...usedLayout,\n\t\t\t...( allowSizingOnChildren && {\n\t\t\t\tallowSizingOnChildren: true,\n\t\t\t} ),\n\t\t} ),\n\t\t[ defaultLayout, usedLayout, allowSizingOnChildren ]\n\t);\n\n\t// For controlled inner blocks, we don't want a change in blocks to\n\t// re-render the blocks list.\n\tconst items = (\n\t\t<BlockListItemsMemo\n\t\t\trootClientId={ clientId }\n\t\t\trenderAppender={ renderAppender }\n\t\t\t__experimentalAppenderTagName={ __experimentalAppenderTagName }\n\t\t\tlayout={ memoedLayout }\n\t\t\twrapperRef={ wrapperRef }\n\t\t\tplaceholder={ placeholder }\n\t\t/>\n\t);\n\n\tif (\n\t\t! blockType?.providesContext ||\n\t\tObject.keys( blockType.providesContext ).length === 0\n\t) {\n\t\treturn items;\n\t}\n\n\treturn <BlockContext clientId={ clientId }>{ items }</BlockContext>;\n}\n\n/**\n * The controlled inner blocks component wraps the uncontrolled inner blocks\n * component with the blockSync hook. This keeps the innerBlocks of the block in\n * the block-editor store in sync with the blocks of the controlling entity. An\n * example of an inner block controller is a template part block, which provides\n * its own blocks from the template part entity data source.\n *\n * @param {Object} props The component props.\n */\nfunction ControlledInnerBlocks( props ) {\n\tuseBlockSync( props );\n\treturn <UncontrolledInnerBlocks { ...props } />;\n}\n\nconst ForwardedInnerBlocks = forwardRef( ( props, ref ) => {\n\tconst innerBlocksProps = useInnerBlocksProps( { ref }, props );\n\treturn (\n\t\t<div className=\"block-editor-inner-blocks\">\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</div>\n\t);\n} );\n\n/**\n * This hook is used to lightly mark an element as an inner blocks wrapper\n * element. Call this hook and pass the returned props to the element to mark as\n * an inner blocks wrapper, automatically rendering inner blocks as children. If\n * you define a ref for the element, it is important to pass the ref to this\n * hook, which the hook in turn will pass to the component through the props it\n * returns. Optionally, you can also pass any other props through this hook, and\n * they will be merged and returned.\n *\n * @param {Object} props Optional. Props to pass to the element. Must contain\n * the ref if one is defined.\n * @param {Object} options Optional. Inner blocks options.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/inner-blocks/README.md\n */\nexport function useInnerBlocksProps( props = {}, options = {} ) {\n\tconst {\n\t\t__unstableDisableLayoutClassNames,\n\t\t__unstableDisableDropZone,\n\t\tdropZoneElement,\n\t} = options;\n\tconst {\n\t\tclientId,\n\t\tlayout = null,\n\t\t__unstableLayoutClassNames: layoutClassNames = '',\n\t} = useBlockEditContext();\n\tconst selected = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tisBlockSelected,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockSettings,\n\t\t\t\tisDragging,\n\t\t\t\tgetSectionRootClientId,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tlet _isDropZoneDisabled;\n\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn { isDropZoneDisabled: _isDropZoneDisabled };\n\t\t\t}\n\n\t\t\tconst { hasBlockSupport, getBlockType } = select( blocksStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst enableClickThrough =\n\t\t\t\t__unstableGetEditorMode() === 'navigation';\n\t\t\tconst blockEditingMode = getBlockEditingMode( clientId );\n\t\t\tconst parentClientId = getBlockRootClientId( clientId );\n\t\t\tconst [ defaultLayout ] = getBlockSettings( clientId, 'layout' );\n\n\t\t\t_isDropZoneDisabled = blockEditingMode === 'disabled';\n\n\t\t\tif ( __unstableGetEditorMode() === 'zoom-out' ) {\n\t\t\t\t// In zoom out mode, we want to disable the drop zone for the sections.\n\t\t\t\t// The inner blocks belonging to the section drop zone is\n\t\t\t\t// already disabled by the blocks themselves being disabled.\n\t\t\t\tconst sectionRootClientId = getSectionRootClientId();\n\n\t\t\t\t_isDropZoneDisabled = clientId !== sectionRootClientId;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__experimentalCaptureToolbars: hasBlockSupport(\n\t\t\t\t\tblockName,\n\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\thasOverlay:\n\t\t\t\t\tblockName !== 'core/template' &&\n\t\t\t\t\t! isBlockSelected( clientId ) &&\n\t\t\t\t\t! hasSelectedInnerBlock( clientId, true ) &&\n\t\t\t\t\tenableClickThrough &&\n\t\t\t\t\t! isDragging(),\n\t\t\t\tname: blockName,\n\t\t\t\tblockType: getBlockType( blockName ),\n\t\t\t\tparentLock: getTemplateLock( parentClientId ),\n\t\t\t\tparentClientId,\n\t\t\t\tisDropZoneDisabled: _isDropZoneDisabled,\n\t\t\t\tdefaultLayout,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst {\n\t\t__experimentalCaptureToolbars,\n\t\thasOverlay,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tparentClientId,\n\t\tisDropZoneDisabled,\n\t\tdefaultLayout,\n\t} = selected;\n\n\tconst blockDropZoneRef = useBlockDropZone( {\n\t\tdropZoneElement,\n\t\trootClientId: clientId,\n\t\tparentClientId,\n\t} );\n\n\tconst ref = useMergeRefs( [\n\t\tprops.ref,\n\t\t__unstableDisableDropZone ||\n\t\tisDropZoneDisabled ||\n\t\t( layout?.isManualPlacement &&\n\t\t\twindow.__experimentalEnableGridInteractivity )\n\t\t\t? null\n\t\t\t: blockDropZoneRef,\n\t] );\n\n\tconst innerBlocksProps = {\n\t\t__experimentalCaptureToolbars,\n\t\tlayout,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tdefaultLayout,\n\t\t...options,\n\t};\n\tconst InnerBlocks =\n\t\tinnerBlocksProps.value && innerBlocksProps.onChange\n\t\t\t? ControlledInnerBlocks\n\t\t\t: UncontrolledInnerBlocks;\n\n\treturn {\n\t\t...props,\n\t\tref,\n\t\tclassName: clsx(\n\t\t\tprops.className,\n\t\t\t'block-editor-block-list__layout',\n\t\t\t__unstableDisableLayoutClassNames ? '' : layoutClassNames,\n\t\t\t{\n\t\t\t\t'has-overlay': hasOverlay,\n\t\t\t}\n\t\t),\n\t\tchildren: clientId ? (\n\t\t\t<InnerBlocks { ...innerBlocksProps } clientId={ clientId } />\n\t\t) : (\n\t\t\t<BlockListItems { ...options } />\n\t\t),\n\t};\n}\n\nuseInnerBlocksProps.save = getInnerBlocksProps;\n\n// Expose default appender placeholders as components.\nForwardedInnerBlocks.DefaultBlockAppender = DefaultBlockAppender;\nForwardedInnerBlocks.ButtonBlockAppender = ButtonBlockAppender;\n\nForwardedInnerBlocks.Content = () => useInnerBlocksProps.save().children;\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/inner-blocks/README.md\n */\nexport default ForwardedInnerBlocks;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useMergeRefs","forwardRef","useMemo","memo","useSelect","getBlockSupport","store","blocksStore","__unstableGetInnerBlocksProps","getInnerBlocksProps","ButtonBlockAppender","DefaultBlockAppender","useNestedSettingsUpdate","useInnerBlockTemplateSync","useBlockContext","BlockListItems","BlockContextProvider","useBlockEditContext","useBlockSync","blockEditorStore","useBlockDropZone","unlock","jsx","_jsx","EMPTY_OBJECT","BlockContext","children","clientId","context","value","BlockListItemsMemo","UncontrolledInnerBlocks","props","allowedBlocks","prioritizedInserterBlocks","defaultBlock","directInsert","__experimentalDefaultBlock","__experimentalDirectInsert","template","templateLock","wrapperRef","templateInsertUpdatesSelection","__experimentalCaptureToolbars","captureToolbars","__experimentalAppenderTagName","renderAppender","orientation","placeholder","layout","name","blockType","parentLock","defaultLayout","defaultLayoutBlockSupport","allowSizingOnChildren","usedLayout","memoedLayout","items","rootClientId","providesContext","Object","keys","length","ControlledInnerBlocks","ForwardedInnerBlocks","ref","innerBlocksProps","useInnerBlocksProps","className","options","__unstableDisableLayoutClassNames","__unstableDisableDropZone","dropZoneElement","__unstableLayoutClassNames","layoutClassNames","selected","select","getBlockName","__unstableGetEditorMode","getTemplateLock","getBlockRootClientId","getBlockEditingMode","getBlockSettings","getSectionRootClientId","_isDropZoneDisabled","isDropZoneDisabled","hasBlockSupport","getBlockType","blockName","blockEditingMode","parentClientId","sectionRootClientId","blockDropZoneRef","isManualPlacement","window","__experimentalEnableGridInteractivity","InnerBlocks","onChange","save","Content"],"sources":["@wordpress/block-editor/src/components/inner-blocks/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useMergeRefs } from '@wordpress/compose';\nimport { forwardRef, useMemo, memo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tgetBlockSupport,\n\tstore as blocksStore,\n\t__unstableGetInnerBlocksProps as getInnerBlocksProps,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport ButtonBlockAppender from './button-block-appender';\nimport DefaultBlockAppender from './default-block-appender';\nimport useNestedSettingsUpdate from './use-nested-settings-update';\nimport useInnerBlockTemplateSync from './use-inner-block-template-sync';\nimport useBlockContext from './use-block-context';\nimport { BlockListItems } from '../block-list';\nimport { BlockContextProvider } from '../block-context';\nimport { useBlockEditContext } from '../block-edit/context';\nimport useBlockSync from '../provider/use-block-sync';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDropZone from '../use-block-drop-zone';\nimport { unlock } from '../../lock-unlock';\n\nconst EMPTY_OBJECT = {};\n\nfunction BlockContext( { children, clientId } ) {\n\tconst context = useBlockContext( clientId );\n\treturn (\n\t\t<BlockContextProvider value={ context }>\n\t\t\t{ children }\n\t\t</BlockContextProvider>\n\t);\n}\n\nconst BlockListItemsMemo = memo( BlockListItems );\n\n/**\n * InnerBlocks is a component which allows a single block to have multiple blocks\n * as children. The UncontrolledInnerBlocks component is used whenever the inner\n * blocks are not controlled by another entity. In other words, it is normally\n * used for inner blocks in the post editor\n *\n * @param {Object} props The component props.\n */\nfunction UncontrolledInnerBlocks( props ) {\n\tconst {\n\t\tclientId,\n\t\tallowedBlocks,\n\t\tprioritizedInserterBlocks,\n\t\tdefaultBlock,\n\t\tdirectInsert,\n\t\t__experimentalDefaultBlock,\n\t\t__experimentalDirectInsert,\n\t\ttemplate,\n\t\ttemplateLock,\n\t\twrapperRef,\n\t\ttemplateInsertUpdatesSelection,\n\t\t__experimentalCaptureToolbars: captureToolbars,\n\t\t__experimentalAppenderTagName,\n\t\trenderAppender,\n\t\torientation,\n\t\tplaceholder,\n\t\tlayout,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tdefaultLayout,\n\t} = props;\n\n\tuseNestedSettingsUpdate(\n\t\tclientId,\n\t\tparentLock,\n\t\tallowedBlocks,\n\t\tprioritizedInserterBlocks,\n\t\tdefaultBlock,\n\t\tdirectInsert,\n\t\t__experimentalDefaultBlock,\n\t\t__experimentalDirectInsert,\n\t\ttemplateLock,\n\t\tcaptureToolbars,\n\t\torientation,\n\t\tlayout\n\t);\n\n\tuseInnerBlockTemplateSync(\n\t\tclientId,\n\t\ttemplate,\n\t\ttemplateLock,\n\t\ttemplateInsertUpdatesSelection\n\t);\n\n\tconst defaultLayoutBlockSupport =\n\t\tgetBlockSupport( name, 'layout' ) ||\n\t\tgetBlockSupport( name, '__experimentalLayout' ) ||\n\t\tEMPTY_OBJECT;\n\n\tconst { allowSizingOnChildren = false } = defaultLayoutBlockSupport;\n\tconst usedLayout = layout || defaultLayoutBlockSupport;\n\n\tconst memoedLayout = useMemo(\n\t\t() => ( {\n\t\t\t// Default layout will know about any content/wide size defined by the theme.\n\t\t\t...defaultLayout,\n\t\t\t...usedLayout,\n\t\t\t...( allowSizingOnChildren && {\n\t\t\t\tallowSizingOnChildren: true,\n\t\t\t} ),\n\t\t} ),\n\t\t[ defaultLayout, usedLayout, allowSizingOnChildren ]\n\t);\n\n\t// For controlled inner blocks, we don't want a change in blocks to\n\t// re-render the blocks list.\n\tconst items = (\n\t\t<BlockListItemsMemo\n\t\t\trootClientId={ clientId }\n\t\t\trenderAppender={ renderAppender }\n\t\t\t__experimentalAppenderTagName={ __experimentalAppenderTagName }\n\t\t\tlayout={ memoedLayout }\n\t\t\twrapperRef={ wrapperRef }\n\t\t\tplaceholder={ placeholder }\n\t\t/>\n\t);\n\n\tif (\n\t\t! blockType?.providesContext ||\n\t\tObject.keys( blockType.providesContext ).length === 0\n\t) {\n\t\treturn items;\n\t}\n\n\treturn <BlockContext clientId={ clientId }>{ items }</BlockContext>;\n}\n\n/**\n * The controlled inner blocks component wraps the uncontrolled inner blocks\n * component with the blockSync hook. This keeps the innerBlocks of the block in\n * the block-editor store in sync with the blocks of the controlling entity. An\n * example of an inner block controller is a template part block, which provides\n * its own blocks from the template part entity data source.\n *\n * @param {Object} props The component props.\n */\nfunction ControlledInnerBlocks( props ) {\n\tuseBlockSync( props );\n\treturn <UncontrolledInnerBlocks { ...props } />;\n}\n\nconst ForwardedInnerBlocks = forwardRef( ( props, ref ) => {\n\tconst innerBlocksProps = useInnerBlocksProps( { ref }, props );\n\treturn (\n\t\t<div className=\"block-editor-inner-blocks\">\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</div>\n\t);\n} );\n\n/**\n * This hook is used to lightly mark an element as an inner blocks wrapper\n * element. Call this hook and pass the returned props to the element to mark as\n * an inner blocks wrapper, automatically rendering inner blocks as children. If\n * you define a ref for the element, it is important to pass the ref to this\n * hook, which the hook in turn will pass to the component through the props it\n * returns. Optionally, you can also pass any other props through this hook, and\n * they will be merged and returned.\n *\n * @param {Object} props Optional. Props to pass to the element. Must contain\n * the ref if one is defined.\n * @param {Object} options Optional. Inner blocks options.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/inner-blocks/README.md\n */\nexport function useInnerBlocksProps( props = {}, options = {} ) {\n\tconst {\n\t\t__unstableDisableLayoutClassNames,\n\t\t__unstableDisableDropZone,\n\t\tdropZoneElement,\n\t} = options;\n\tconst {\n\t\tclientId,\n\t\tlayout = null,\n\t\t__unstableLayoutClassNames: layoutClassNames = '',\n\t} = useBlockEditContext();\n\tconst selected = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockSettings,\n\t\t\t\tgetSectionRootClientId,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tlet _isDropZoneDisabled;\n\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn { isDropZoneDisabled: _isDropZoneDisabled };\n\t\t\t}\n\n\t\t\tconst { hasBlockSupport, getBlockType } = select( blocksStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst blockEditingMode = getBlockEditingMode( clientId );\n\t\t\tconst parentClientId = getBlockRootClientId( clientId );\n\t\t\tconst [ defaultLayout ] = getBlockSettings( clientId, 'layout' );\n\n\t\t\t_isDropZoneDisabled = blockEditingMode === 'disabled';\n\n\t\t\tif ( __unstableGetEditorMode() === 'zoom-out' ) {\n\t\t\t\t// In zoom out mode, we want to disable the drop zone for the sections.\n\t\t\t\t// The inner blocks belonging to the section drop zone is\n\t\t\t\t// already disabled by the blocks themselves being disabled.\n\t\t\t\tconst sectionRootClientId = getSectionRootClientId();\n\n\t\t\t\t_isDropZoneDisabled = clientId !== sectionRootClientId;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__experimentalCaptureToolbars: hasBlockSupport(\n\t\t\t\t\tblockName,\n\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\tname: blockName,\n\t\t\t\tblockType: getBlockType( blockName ),\n\t\t\t\tparentLock: getTemplateLock( parentClientId ),\n\t\t\t\tparentClientId,\n\t\t\t\tisDropZoneDisabled: _isDropZoneDisabled,\n\t\t\t\tdefaultLayout,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst {\n\t\t__experimentalCaptureToolbars,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tparentClientId,\n\t\tisDropZoneDisabled,\n\t\tdefaultLayout,\n\t} = selected;\n\n\tconst blockDropZoneRef = useBlockDropZone( {\n\t\tdropZoneElement,\n\t\trootClientId: clientId,\n\t\tparentClientId,\n\t} );\n\n\tconst ref = useMergeRefs( [\n\t\tprops.ref,\n\t\t__unstableDisableDropZone ||\n\t\tisDropZoneDisabled ||\n\t\t( layout?.isManualPlacement &&\n\t\t\twindow.__experimentalEnableGridInteractivity )\n\t\t\t? null\n\t\t\t: blockDropZoneRef,\n\t] );\n\n\tconst innerBlocksProps = {\n\t\t__experimentalCaptureToolbars,\n\t\tlayout,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tdefaultLayout,\n\t\t...options,\n\t};\n\tconst InnerBlocks =\n\t\tinnerBlocksProps.value && innerBlocksProps.onChange\n\t\t\t? ControlledInnerBlocks\n\t\t\t: UncontrolledInnerBlocks;\n\n\treturn {\n\t\t...props,\n\t\tref,\n\t\tclassName: clsx(\n\t\t\tprops.className,\n\t\t\t'block-editor-block-list__layout',\n\t\t\t__unstableDisableLayoutClassNames ? '' : layoutClassNames\n\t\t),\n\t\tchildren: clientId ? (\n\t\t\t<InnerBlocks { ...innerBlocksProps } clientId={ clientId } />\n\t\t) : (\n\t\t\t<BlockListItems { ...options } />\n\t\t),\n\t};\n}\n\nuseInnerBlocksProps.save = getInnerBlocksProps;\n\n// Expose default appender placeholders as components.\nForwardedInnerBlocks.DefaultBlockAppender = DefaultBlockAppender;\nForwardedInnerBlocks.ButtonBlockAppender = ButtonBlockAppender;\n\nForwardedInnerBlocks.Content = () => useInnerBlocksProps.save().children;\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/inner-blocks/README.md\n */\nexport default ForwardedInnerBlocks;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,UAAU,EAAEC,OAAO,EAAEC,IAAI,QAAQ,oBAAoB;AAC9D,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SACCC,eAAe,EACfC,KAAK,IAAIC,WAAW,EACpBC,6BAA6B,IAAIC,mBAAmB,QAC9C,mBAAmB;;AAE1B;AACA;AACA;AACA,OAAOC,mBAAmB,MAAM,yBAAyB;AACzD,OAAOC,oBAAoB,MAAM,0BAA0B;AAC3D,OAAOC,uBAAuB,MAAM,8BAA8B;AAClE,OAAOC,yBAAyB,MAAM,iCAAiC;AACvE,OAAOC,eAAe,MAAM,qBAAqB;AACjD,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,oBAAoB,QAAQ,kBAAkB;AACvD,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,OAAOC,YAAY,MAAM,4BAA4B;AACrD,SAASZ,KAAK,IAAIa,gBAAgB,QAAQ,aAAa;AACvD,OAAOC,gBAAgB,MAAM,wBAAwB;AACrD,SAASC,MAAM,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3C,MAAMC,YAAY,GAAG,CAAC,CAAC;AAEvB,SAASC,YAAYA,CAAE;EAAEC,QAAQ;EAAEC;AAAS,CAAC,EAAG;EAC/C,MAAMC,OAAO,GAAGd,eAAe,CAAEa,QAAS,CAAC;EAC3C,oBACCJ,IAAA,CAACP,oBAAoB;IAACa,KAAK,EAAGD,OAAS;IAAAF,QAAA,EACpCA;EAAQ,CACW,CAAC;AAEzB;AAEA,MAAMI,kBAAkB,GAAG3B,IAAI,CAAEY,cAAe,CAAC;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASgB,uBAAuBA,CAAEC,KAAK,EAAG;EACzC,MAAM;IACLL,QAAQ;IACRM,aAAa;IACbC,yBAAyB;IACzBC,YAAY;IACZC,YAAY;IACZC,0BAA0B;IAC1BC,0BAA0B;IAC1BC,QAAQ;IACRC,YAAY;IACZC,UAAU;IACVC,8BAA8B;IAC9BC,6BAA6B,EAAEC,eAAe;IAC9CC,6BAA6B;IAC7BC,cAAc;IACdC,WAAW;IACXC,WAAW;IACXC,MAAM;IACNC,IAAI;IACJC,SAAS;IACTC,UAAU;IACVC;EACD,CAAC,GAAGrB,KAAK;EAETpB,uBAAuB,CACtBe,QAAQ,EACRyB,UAAU,EACVnB,aAAa,EACbC,yBAAyB,EACzBC,YAAY,EACZC,YAAY,EACZC,0BAA0B,EAC1BC,0BAA0B,EAC1BE,YAAY,EACZI,eAAe,EACfG,WAAW,EACXE,MACD,CAAC;EAEDpC,yBAAyB,CACxBc,QAAQ,EACRY,QAAQ,EACRC,YAAY,EACZE,8BACD,CAAC;EAED,MAAMY,yBAAyB,GAC9BjD,eAAe,CAAE6C,IAAI,EAAE,QAAS,CAAC,IACjC7C,eAAe,CAAE6C,IAAI,EAAE,sBAAuB,CAAC,IAC/C1B,YAAY;EAEb,MAAM;IAAE+B,qBAAqB,GAAG;EAAM,CAAC,GAAGD,yBAAyB;EACnE,MAAME,UAAU,GAAGP,MAAM,IAAIK,yBAAyB;EAEtD,MAAMG,YAAY,GAAGvD,OAAO,CAC3B,OAAQ;IACP;IACA,GAAGmD,aAAa;IAChB,GAAGG,UAAU;IACb,IAAKD,qBAAqB,IAAI;MAC7BA,qBAAqB,EAAE;IACxB,CAAC;EACF,CAAC,CAAE,EACH,CAAEF,aAAa,EAAEG,UAAU,EAAED,qBAAqB,CACnD,CAAC;;EAED;EACA;EACA,MAAMG,KAAK,gBACVnC,IAAA,CAACO,kBAAkB;IAClB6B,YAAY,EAAGhC,QAAU;IACzBmB,cAAc,EAAGA,cAAgB;IACjCD,6BAA6B,EAAGA,6BAA+B;IAC/DI,MAAM,EAAGQ,YAAc;IACvBhB,UAAU,EAAGA,UAAY;IACzBO,WAAW,EAAGA;EAAa,CAC3B,CACD;EAED,IACC,CAAEG,SAAS,EAAES,eAAe,IAC5BC,MAAM,CAACC,IAAI,CAAEX,SAAS,CAACS,eAAgB,CAAC,CAACG,MAAM,KAAK,CAAC,EACpD;IACD,OAAOL,KAAK;EACb;EAEA,oBAAOnC,IAAA,CAACE,YAAY;IAACE,QAAQ,EAAGA,QAAU;IAAAD,QAAA,EAAGgC;EAAK,CAAgB,CAAC;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASM,qBAAqBA,CAAEhC,KAAK,EAAG;EACvCd,YAAY,CAAEc,KAAM,CAAC;EACrB,oBAAOT,IAAA,CAACQ,uBAAuB;IAAA,GAAMC;EAAK,CAAI,CAAC;AAChD;AAEA,MAAMiC,oBAAoB,GAAGhE,UAAU,CAAE,CAAE+B,KAAK,EAAEkC,GAAG,KAAM;EAC1D,MAAMC,gBAAgB,GAAGC,mBAAmB,CAAE;IAAEF;EAAI,CAAC,EAAElC,KAAM,CAAC;EAC9D,oBACCT,IAAA;IAAK8C,SAAS,EAAC,2BAA2B;IAAA3C,QAAA,eACzCH,IAAA;MAAA,GAAU4C;IAAgB,CAAI;EAAC,CAC3B,CAAC;AAER,CAAE,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAAEpC,KAAK,GAAG,CAAC,CAAC,EAAEsC,OAAO,GAAG,CAAC,CAAC,EAAG;EAC/D,MAAM;IACLC,iCAAiC;IACjCC,yBAAyB;IACzBC;EACD,CAAC,GAAGH,OAAO;EACX,MAAM;IACL3C,QAAQ;IACRsB,MAAM,GAAG,IAAI;IACbyB,0BAA0B,EAAEC,gBAAgB,GAAG;EAChD,CAAC,GAAG1D,mBAAmB,CAAC,CAAC;EACzB,MAAM2D,QAAQ,GAAGxE,SAAS,CACvByE,MAAM,IAAM;IACb,MAAM;MACLC,YAAY;MACZC,uBAAuB;MACvBC,eAAe;MACfC,oBAAoB;MACpBC,mBAAmB;MACnBC,gBAAgB;MAChBC;IACD,CAAC,GAAG/D,MAAM,CAAEwD,MAAM,CAAE1D,gBAAiB,CAAE,CAAC;IACxC,IAAIkE,mBAAmB;IAEvB,IAAK,CAAE1D,QAAQ,EAAG;MACjB,OAAO;QAAE2D,kBAAkB,EAAED;MAAoB,CAAC;IACnD;IAEA,MAAM;MAAEE,eAAe;MAAEC;IAAa,CAAC,GAAGX,MAAM,CAAEtE,WAAY,CAAC;IAC/D,MAAMkF,SAAS,GAAGX,YAAY,CAAEnD,QAAS,CAAC;IAC1C,MAAM+D,gBAAgB,GAAGR,mBAAmB,CAAEvD,QAAS,CAAC;IACxD,MAAMgE,cAAc,GAAGV,oBAAoB,CAAEtD,QAAS,CAAC;IACvD,MAAM,CAAE0B,aAAa,CAAE,GAAG8B,gBAAgB,CAAExD,QAAQ,EAAE,QAAS,CAAC;IAEhE0D,mBAAmB,GAAGK,gBAAgB,KAAK,UAAU;IAErD,IAAKX,uBAAuB,CAAC,CAAC,KAAK,UAAU,EAAG;MAC/C;MACA;MACA;MACA,MAAMa,mBAAmB,GAAGR,sBAAsB,CAAC,CAAC;MAEpDC,mBAAmB,GAAG1D,QAAQ,KAAKiE,mBAAmB;IACvD;IAEA,OAAO;MACNjD,6BAA6B,EAAE4C,eAAe,CAC7CE,SAAS,EACT,wCAAwC,EACxC,KACD,CAAC;MACDvC,IAAI,EAAEuC,SAAS;MACftC,SAAS,EAAEqC,YAAY,CAAEC,SAAU,CAAC;MACpCrC,UAAU,EAAE4B,eAAe,CAAEW,cAAe,CAAC;MAC7CA,cAAc;MACdL,kBAAkB,EAAED,mBAAmB;MACvChC;IACD,CAAC;EACF,CAAC,EACD,CAAE1B,QAAQ,CACX,CAAC;EACD,MAAM;IACLgB,6BAA6B;IAC7BO,IAAI;IACJC,SAAS;IACTC,UAAU;IACVuC,cAAc;IACdL,kBAAkB;IAClBjC;EACD,CAAC,GAAGuB,QAAQ;EAEZ,MAAMiB,gBAAgB,GAAGzE,gBAAgB,CAAE;IAC1CqD,eAAe;IACfd,YAAY,EAAEhC,QAAQ;IACtBgE;EACD,CAAE,CAAC;EAEH,MAAMzB,GAAG,GAAGlE,YAAY,CAAE,CACzBgC,KAAK,CAACkC,GAAG,EACTM,yBAAyB,IACzBc,kBAAkB,IAChBrC,MAAM,EAAE6C,iBAAiB,IAC1BC,MAAM,CAACC,qCAAuC,GAC5C,IAAI,GACJH,gBAAgB,CAClB,CAAC;EAEH,MAAM1B,gBAAgB,GAAG;IACxBxB,6BAA6B;IAC7BM,MAAM;IACNC,IAAI;IACJC,SAAS;IACTC,UAAU;IACVC,aAAa;IACb,GAAGiB;EACJ,CAAC;EACD,MAAM2B,WAAW,GAChB9B,gBAAgB,CAACtC,KAAK,IAAIsC,gBAAgB,CAAC+B,QAAQ,GAChDlC,qBAAqB,GACrBjC,uBAAuB;EAE3B,OAAO;IACN,GAAGC,KAAK;IACRkC,GAAG;IACHG,SAAS,EAAEtE,IAAI,CACdiC,KAAK,CAACqC,SAAS,EACf,iCAAiC,EACjCE,iCAAiC,GAAG,EAAE,GAAGI,gBAC1C,CAAC;IACDjD,QAAQ,EAAEC,QAAQ,gBACjBJ,IAAA,CAAC0E,WAAW;MAAA,GAAM9B,gBAAgB;MAAGxC,QAAQ,EAAGA;IAAU,CAAE,CAAC,gBAE7DJ,IAAA,CAACR,cAAc;MAAA,GAAMuD;IAAO,CAAI;EAElC,CAAC;AACF;AAEAF,mBAAmB,CAAC+B,IAAI,GAAG1F,mBAAmB;;AAE9C;AACAwD,oBAAoB,CAACtD,oBAAoB,GAAGA,oBAAoB;AAChEsD,oBAAoB,CAACvD,mBAAmB,GAAGA,mBAAmB;AAE9DuD,oBAAoB,CAACmC,OAAO,GAAG,MAAMhC,mBAAmB,CAAC+B,IAAI,CAAC,CAAC,CAACzE,QAAQ;;AAExE;AACA;AACA;AACA,eAAeuC,oBAAoB","ignoreList":[]}
@@ -145,7 +145,7 @@ export function BlockTypesTab({
145
145
  if (item.category === 'reusable') {
146
146
  continue;
147
147
  }
148
- if (rootClientId && item.rootClientId === rootClientId) {
148
+ if (rootClientId && item.isAllowedInCurrentRoot) {
149
149
  itemsForCurrentRoot.push(item);
150
150
  } else {
151
151
  itemsRemaining.push(item);
@@ -1 +1 @@
1
- {"version":3,"names":["__","_x","useMemo","useEffect","forwardRef","useAsyncList","BlockTypesList","InserterPanel","useBlockTypesState","InserterListbox","orderBy","InserterNoResults","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","getBlockNamespace","item","name","split","MAX_SUGGESTED_ITEMS","EMPTY_ARRAY","BlockTypesTabPanel","items","collections","categories","onSelectItem","onHover","showMostUsedBlocks","className","suggestedItems","slice","uncategorizedItems","filter","category","itemsPerCollection","result","Object","keys","forEach","namespace","length","currentlyRenderedCategories","didRenderAllCategories","collectionEntries","entries","currentlyRenderedCollections","children","title","onSelect","label","map","categoryItems","slug","icon","collection","collectionItems","BlockTypesTab","rootClientId","onInsert","ref","itemsForCurrentRoot","itemsRemaining","push"],"sources":["@wordpress/block-editor/src/components/inserter/block-types-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { useMemo, useEffect, forwardRef } from '@wordpress/element';\nimport { useAsyncList } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesList from '../block-types-list';\nimport InserterPanel from './panel';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport InserterListbox from '../inserter-listbox';\nimport { orderBy } from '../../utils/sorting';\nimport InserterNoResults from './no-results';\n\nconst getBlockNamespace = ( item ) => item.name.split( '/' )[ 0 ];\n\nconst MAX_SUGGESTED_ITEMS = 6;\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation and rerendering the component.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nexport function BlockTypesTabPanel( {\n\titems,\n\tcollections,\n\tcategories,\n\tonSelectItem,\n\tonHover,\n\tshowMostUsedBlocks,\n\tclassName,\n} ) {\n\tconst suggestedItems = useMemo( () => {\n\t\treturn orderBy( items, 'frecency', 'desc' ).slice(\n\t\t\t0,\n\t\t\tMAX_SUGGESTED_ITEMS\n\t\t);\n\t}, [ items ] );\n\n\tconst uncategorizedItems = useMemo( () => {\n\t\treturn items.filter( ( item ) => ! item.category );\n\t}, [ items ] );\n\n\tconst itemsPerCollection = useMemo( () => {\n\t\t// Create a new Object to avoid mutating collection.\n\t\tconst result = { ...collections };\n\t\tObject.keys( collections ).forEach( ( namespace ) => {\n\t\t\tresult[ namespace ] = items.filter(\n\t\t\t\t( item ) => getBlockNamespace( item ) === namespace\n\t\t\t);\n\t\t\tif ( result[ namespace ].length === 0 ) {\n\t\t\t\tdelete result[ namespace ];\n\t\t\t}\n\t\t} );\n\n\t\treturn result;\n\t}, [ items, collections ] );\n\n\t// Hide block preview on unmount.\n\tuseEffect( () => () => onHover( null ), [] );\n\n\t/**\n\t * The inserter contains a big number of blocks and opening it is a costful operation.\n\t * The rendering is the most costful part of it, in order to improve the responsiveness\n\t * of the \"opening\" action, these lazy lists allow us to render the inserter category per category,\n\t * once all the categories are rendered, we start rendering the collections and the uncategorized block types.\n\t */\n\tconst currentlyRenderedCategories = useAsyncList( categories );\n\tconst didRenderAllCategories =\n\t\tcategories.length === currentlyRenderedCategories.length;\n\n\t// Async List requires an array.\n\tconst collectionEntries = useMemo( () => {\n\t\treturn Object.entries( collections );\n\t}, [ collections ] );\n\tconst currentlyRenderedCollections = useAsyncList(\n\t\tdidRenderAllCategories ? collectionEntries : EMPTY_ARRAY\n\t);\n\n\treturn (\n\t\t<div className={ className }>\n\t\t\t{ showMostUsedBlocks &&\n\t\t\t\t// Only show the most used blocks if the total amount of block\n\t\t\t\t// is larger than 1 row, otherwise it is not so useful.\n\t\t\t\titems.length > 3 &&\n\t\t\t\t!! suggestedItems.length && (\n\t\t\t\t\t<InserterPanel title={ _x( 'Most used', 'blocks' ) }>\n\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\titems={ suggestedItems }\n\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tlabel={ _x( 'Most used', 'blocks' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InserterPanel>\n\t\t\t\t) }\n\n\t\t\t{ currentlyRenderedCategories.map( ( category ) => {\n\t\t\t\tconst categoryItems = items.filter(\n\t\t\t\t\t( item ) => item.category === category.slug\n\t\t\t\t);\n\t\t\t\tif ( ! categoryItems || ! categoryItems.length ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<InserterPanel\n\t\t\t\t\t\tkey={ category.slug }\n\t\t\t\t\t\ttitle={ category.title }\n\t\t\t\t\t\ticon={ category.icon }\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\titems={ categoryItems }\n\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tlabel={ category.title }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InserterPanel>\n\t\t\t\t);\n\t\t\t} ) }\n\n\t\t\t{ didRenderAllCategories && uncategorizedItems.length > 0 && (\n\t\t\t\t<InserterPanel\n\t\t\t\t\tclassName=\"block-editor-inserter__uncategorized-blocks-panel\"\n\t\t\t\t\ttitle={ __( 'Uncategorized' ) }\n\t\t\t\t>\n\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\titems={ uncategorizedItems }\n\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\tlabel={ __( 'Uncategorized' ) }\n\t\t\t\t\t/>\n\t\t\t\t</InserterPanel>\n\t\t\t) }\n\n\t\t\t{ currentlyRenderedCollections.map(\n\t\t\t\t( [ namespace, collection ] ) => {\n\t\t\t\t\tconst collectionItems = itemsPerCollection[ namespace ];\n\t\t\t\t\tif ( ! collectionItems || ! collectionItems.length ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<InserterPanel\n\t\t\t\t\t\t\tkey={ namespace }\n\t\t\t\t\t\t\ttitle={ collection.title }\n\t\t\t\t\t\t\ticon={ collection.icon }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\t\titems={ collectionItems }\n\t\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\t\tlabel={ collection.title }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</InserterPanel>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport function BlockTypesTab(\n\t{ rootClientId, onInsert, onHover, showMostUsedBlocks },\n\tref\n) {\n\tconst [ items, categories, collections, onSelectItem ] = useBlockTypesState(\n\t\trootClientId,\n\t\tonInsert\n\t);\n\n\tif ( ! items.length ) {\n\t\treturn <InserterNoResults />;\n\t}\n\n\tconst itemsForCurrentRoot = [];\n\tconst itemsRemaining = [];\n\n\tfor ( const item of items ) {\n\t\t// Skip reusable blocks, they moved to the patterns tab.\n\t\tif ( item.category === 'reusable' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( rootClientId && item.rootClientId === rootClientId ) {\n\t\t\titemsForCurrentRoot.push( item );\n\t\t} else {\n\t\t\titemsRemaining.push( item );\n\t\t}\n\t}\n\n\treturn (\n\t\t<InserterListbox>\n\t\t\t<div ref={ ref }>\n\t\t\t\t{ !! itemsForCurrentRoot.length && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockTypesTabPanel\n\t\t\t\t\t\t\titems={ itemsForCurrentRoot }\n\t\t\t\t\t\t\tcategories={ categories }\n\t\t\t\t\t\t\tcollections={ collections }\n\t\t\t\t\t\t\tonSelectItem={ onSelectItem }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__insertable-blocks-at-selection\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t<BlockTypesTabPanel\n\t\t\t\t\titems={ itemsRemaining }\n\t\t\t\t\tcategories={ categories }\n\t\t\t\t\tcollections={ collections }\n\t\t\t\t\tonSelectItem={ onSelectItem }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\tclassName=\"block-editor-inserter__all-blocks\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</InserterListbox>\n\t);\n}\n\nexport default forwardRef( BlockTypesTab );\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__","_x","useMemo","useEffect","forwardRef","useAsyncList","BlockTypesList","InserterPanel","useBlockTypesState","InserterListbox","orderBy","InserterNoResults","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","getBlockNamespace","item","name","split","MAX_SUGGESTED_ITEMS","EMPTY_ARRAY","BlockTypesTabPanel","items","collections","categories","onSelectItem","onHover","showMostUsedBlocks","className","suggestedItems","slice","uncategorizedItems","filter","category","itemsPerCollection","result","Object","keys","forEach","namespace","length","currentlyRenderedCategories","didRenderAllCategories","collectionEntries","entries","currentlyRenderedCollections","children","title","onSelect","label","map","categoryItems","slug","icon","collection","collectionItems","BlockTypesTab","rootClientId","onInsert","ref","itemsForCurrentRoot","itemsRemaining","isAllowedInCurrentRoot","push"],"sources":["@wordpress/block-editor/src/components/inserter/block-types-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { useMemo, useEffect, forwardRef } from '@wordpress/element';\nimport { useAsyncList } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesList from '../block-types-list';\nimport InserterPanel from './panel';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport InserterListbox from '../inserter-listbox';\nimport { orderBy } from '../../utils/sorting';\nimport InserterNoResults from './no-results';\n\nconst getBlockNamespace = ( item ) => item.name.split( '/' )[ 0 ];\n\nconst MAX_SUGGESTED_ITEMS = 6;\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation and rerendering the component.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nexport function BlockTypesTabPanel( {\n\titems,\n\tcollections,\n\tcategories,\n\tonSelectItem,\n\tonHover,\n\tshowMostUsedBlocks,\n\tclassName,\n} ) {\n\tconst suggestedItems = useMemo( () => {\n\t\treturn orderBy( items, 'frecency', 'desc' ).slice(\n\t\t\t0,\n\t\t\tMAX_SUGGESTED_ITEMS\n\t\t);\n\t}, [ items ] );\n\n\tconst uncategorizedItems = useMemo( () => {\n\t\treturn items.filter( ( item ) => ! item.category );\n\t}, [ items ] );\n\n\tconst itemsPerCollection = useMemo( () => {\n\t\t// Create a new Object to avoid mutating collection.\n\t\tconst result = { ...collections };\n\t\tObject.keys( collections ).forEach( ( namespace ) => {\n\t\t\tresult[ namespace ] = items.filter(\n\t\t\t\t( item ) => getBlockNamespace( item ) === namespace\n\t\t\t);\n\t\t\tif ( result[ namespace ].length === 0 ) {\n\t\t\t\tdelete result[ namespace ];\n\t\t\t}\n\t\t} );\n\n\t\treturn result;\n\t}, [ items, collections ] );\n\n\t// Hide block preview on unmount.\n\tuseEffect( () => () => onHover( null ), [] );\n\n\t/**\n\t * The inserter contains a big number of blocks and opening it is a costful operation.\n\t * The rendering is the most costful part of it, in order to improve the responsiveness\n\t * of the \"opening\" action, these lazy lists allow us to render the inserter category per category,\n\t * once all the categories are rendered, we start rendering the collections and the uncategorized block types.\n\t */\n\tconst currentlyRenderedCategories = useAsyncList( categories );\n\tconst didRenderAllCategories =\n\t\tcategories.length === currentlyRenderedCategories.length;\n\n\t// Async List requires an array.\n\tconst collectionEntries = useMemo( () => {\n\t\treturn Object.entries( collections );\n\t}, [ collections ] );\n\tconst currentlyRenderedCollections = useAsyncList(\n\t\tdidRenderAllCategories ? collectionEntries : EMPTY_ARRAY\n\t);\n\n\treturn (\n\t\t<div className={ className }>\n\t\t\t{ showMostUsedBlocks &&\n\t\t\t\t// Only show the most used blocks if the total amount of block\n\t\t\t\t// is larger than 1 row, otherwise it is not so useful.\n\t\t\t\titems.length > 3 &&\n\t\t\t\t!! suggestedItems.length && (\n\t\t\t\t\t<InserterPanel title={ _x( 'Most used', 'blocks' ) }>\n\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\titems={ suggestedItems }\n\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tlabel={ _x( 'Most used', 'blocks' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InserterPanel>\n\t\t\t\t) }\n\n\t\t\t{ currentlyRenderedCategories.map( ( category ) => {\n\t\t\t\tconst categoryItems = items.filter(\n\t\t\t\t\t( item ) => item.category === category.slug\n\t\t\t\t);\n\t\t\t\tif ( ! categoryItems || ! categoryItems.length ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<InserterPanel\n\t\t\t\t\t\tkey={ category.slug }\n\t\t\t\t\t\ttitle={ category.title }\n\t\t\t\t\t\ticon={ category.icon }\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\titems={ categoryItems }\n\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tlabel={ category.title }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InserterPanel>\n\t\t\t\t);\n\t\t\t} ) }\n\n\t\t\t{ didRenderAllCategories && uncategorizedItems.length > 0 && (\n\t\t\t\t<InserterPanel\n\t\t\t\t\tclassName=\"block-editor-inserter__uncategorized-blocks-panel\"\n\t\t\t\t\ttitle={ __( 'Uncategorized' ) }\n\t\t\t\t>\n\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\titems={ uncategorizedItems }\n\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\tlabel={ __( 'Uncategorized' ) }\n\t\t\t\t\t/>\n\t\t\t\t</InserterPanel>\n\t\t\t) }\n\n\t\t\t{ currentlyRenderedCollections.map(\n\t\t\t\t( [ namespace, collection ] ) => {\n\t\t\t\t\tconst collectionItems = itemsPerCollection[ namespace ];\n\t\t\t\t\tif ( ! collectionItems || ! collectionItems.length ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<InserterPanel\n\t\t\t\t\t\t\tkey={ namespace }\n\t\t\t\t\t\t\ttitle={ collection.title }\n\t\t\t\t\t\t\ticon={ collection.icon }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\t\titems={ collectionItems }\n\t\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\t\tlabel={ collection.title }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</InserterPanel>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport function BlockTypesTab(\n\t{ rootClientId, onInsert, onHover, showMostUsedBlocks },\n\tref\n) {\n\tconst [ items, categories, collections, onSelectItem ] = useBlockTypesState(\n\t\trootClientId,\n\t\tonInsert\n\t);\n\n\tif ( ! items.length ) {\n\t\treturn <InserterNoResults />;\n\t}\n\n\tconst itemsForCurrentRoot = [];\n\tconst itemsRemaining = [];\n\n\tfor ( const item of items ) {\n\t\t// Skip reusable blocks, they moved to the patterns tab.\n\t\tif ( item.category === 'reusable' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( rootClientId && item.isAllowedInCurrentRoot ) {\n\t\t\titemsForCurrentRoot.push( item );\n\t\t} else {\n\t\t\titemsRemaining.push( item );\n\t\t}\n\t}\n\n\treturn (\n\t\t<InserterListbox>\n\t\t\t<div ref={ ref }>\n\t\t\t\t{ !! itemsForCurrentRoot.length && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockTypesTabPanel\n\t\t\t\t\t\t\titems={ itemsForCurrentRoot }\n\t\t\t\t\t\t\tcategories={ categories }\n\t\t\t\t\t\t\tcollections={ collections }\n\t\t\t\t\t\t\tonSelectItem={ onSelectItem }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__insertable-blocks-at-selection\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t<BlockTypesTabPanel\n\t\t\t\t\titems={ itemsRemaining }\n\t\t\t\t\tcategories={ categories }\n\t\t\t\t\tcollections={ collections }\n\t\t\t\t\tonSelectItem={ onSelectItem }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\tclassName=\"block-editor-inserter__all-blocks\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</InserterListbox>\n\t);\n}\n\nexport default forwardRef( BlockTypesTab );\n"],"mappings":"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","ignoreList":[]}
@@ -1,15 +1,18 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { createBlock, createBlocksFromInnerBlocksTemplate, store as blocksStore, parse } from '@wordpress/blocks';
5
- import { useSelect } from '@wordpress/data';
4
+ import { getBlockType, createBlock, createBlocksFromInnerBlocksTemplate, store as blocksStore, parse } from '@wordpress/blocks';
5
+ import { useSelect, useDispatch } from '@wordpress/data';
6
6
  import { useCallback, useMemo } from '@wordpress/element';
7
+ import { store as noticesStore } from '@wordpress/notices';
8
+ import { __, sprintf } from '@wordpress/i18n';
7
9
 
8
10
  /**
9
11
  * Internal dependencies
10
12
  */
11
13
  import { store as blockEditorStore } from '../../../store';
12
- import { withRootClientIdOptionKey } from '../../../store/utils';
14
+ import { isFiltered } from '../../../store/utils';
15
+ import { unlock } from '../../../lock-unlock';
13
16
 
14
17
  /**
15
18
  * Retrieves the block types inserter state.
@@ -21,9 +24,15 @@ import { withRootClientIdOptionKey } from '../../../store/utils';
21
24
  */
22
25
  const useBlockTypesState = (rootClientId, onInsert, isQuick) => {
23
26
  const options = useMemo(() => ({
24
- [withRootClientIdOptionKey]: !isQuick
27
+ [isFiltered]: !!isQuick
25
28
  }), [isQuick]);
26
29
  const [items] = useSelect(select => [select(blockEditorStore).getInserterItems(rootClientId, options)], [rootClientId, options]);
30
+ const {
31
+ getClosestAllowedInsertionPoint
32
+ } = unlock(useSelect(blockEditorStore));
33
+ const {
34
+ createErrorNotice
35
+ } = useDispatch(noticesStore);
27
36
  const [categories, collections] = useSelect(select => {
28
37
  const {
29
38
  getCategories,
@@ -36,14 +45,24 @@ const useBlockTypesState = (rootClientId, onInsert, isQuick) => {
36
45
  initialAttributes,
37
46
  innerBlocks,
38
47
  syncStatus,
39
- content,
40
- rootClientId: _rootClientId
48
+ content
41
49
  }, shouldFocusBlock) => {
50
+ const destinationClientId = getClosestAllowedInsertionPoint(name, rootClientId);
51
+ if (destinationClientId === null) {
52
+ var _getBlockType$title;
53
+ const title = (_getBlockType$title = getBlockType(name)?.title) !== null && _getBlockType$title !== void 0 ? _getBlockType$title : name;
54
+ createErrorNotice(sprintf( /* translators: %s: block pattern title. */
55
+ __('Block "%s" can\'t be inserted.'), title), {
56
+ type: 'snackbar',
57
+ id: 'inserter-notice'
58
+ });
59
+ return;
60
+ }
42
61
  const insertedBlock = syncStatus === 'unsynced' ? parse(content, {
43
62
  __unstableSkipMigrationLogs: true
44
63
  }) : createBlock(name, initialAttributes, createBlocksFromInnerBlocksTemplate(innerBlocks));
45
- onInsert(insertedBlock, undefined, shouldFocusBlock, _rootClientId);
46
- }, [onInsert]);
64
+ onInsert(insertedBlock, undefined, shouldFocusBlock, destinationClientId);
65
+ }, [onInsert, getClosestAllowedInsertionPoint, rootClientId]);
47
66
  return [items, categories, collections, onSelectItem];
48
67
  };
49
68
  export default useBlockTypesState;
@@ -1 +1 @@
1
- {"version":3,"names":["createBlock","createBlocksFromInnerBlocksTemplate","store","blocksStore","parse","useSelect","useCallback","useMemo","blockEditorStore","withRootClientIdOptionKey","useBlockTypesState","rootClientId","onInsert","isQuick","options","items","select","getInserterItems","categories","collections","getCategories","getCollections","onSelectItem","name","initialAttributes","innerBlocks","syncStatus","content","_rootClientId","shouldFocusBlock","insertedBlock","__unstableSkipMigrationLogs","undefined"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-block-types-state.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n\tparse,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useCallback, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { withRootClientIdOptionKey } from '../../../store/utils';\n\n/**\n * Retrieves the block types inserter state.\n *\n * @param {string=} rootClientId Insertion's root client ID.\n * @param {Function} onInsert function called when inserter a list of blocks.\n * @param {boolean} isQuick\n * @return {Array} Returns the block types state. (block types, categories, collections, onSelect handler)\n */\nconst useBlockTypesState = ( rootClientId, onInsert, isQuick ) => {\n\tconst options = useMemo(\n\t\t() => ( { [ withRootClientIdOptionKey ]: ! isQuick } ),\n\t\t[ isQuick ]\n\t);\n\tconst [ items ] = useSelect(\n\t\t( select ) => [\n\t\t\tselect( blockEditorStore ).getInserterItems(\n\t\t\t\trootClientId,\n\t\t\t\toptions\n\t\t\t),\n\t\t],\n\t\t[ rootClientId, options ]\n\t);\n\n\tconst [ categories, collections ] = useSelect( ( select ) => {\n\t\tconst { getCategories, getCollections } = select( blocksStore );\n\t\treturn [ getCategories(), getCollections() ];\n\t}, [] );\n\n\tconst onSelectItem = useCallback(\n\t\t(\n\t\t\t{\n\t\t\t\tname,\n\t\t\t\tinitialAttributes,\n\t\t\t\tinnerBlocks,\n\t\t\t\tsyncStatus,\n\t\t\t\tcontent,\n\t\t\t\trootClientId: _rootClientId,\n\t\t\t},\n\t\t\tshouldFocusBlock\n\t\t) => {\n\t\t\tconst insertedBlock =\n\t\t\t\tsyncStatus === 'unsynced'\n\t\t\t\t\t? parse( content, {\n\t\t\t\t\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t\t\t } )\n\t\t\t\t\t: createBlock(\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tinitialAttributes,\n\t\t\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate( innerBlocks )\n\t\t\t\t\t );\n\n\t\t\tonInsert(\n\t\t\t\tinsertedBlock,\n\t\t\t\tundefined,\n\t\t\t\tshouldFocusBlock,\n\t\t\t\t_rootClientId\n\t\t\t);\n\t\t},\n\t\t[ onInsert ]\n\t);\n\n\treturn [ items, categories, collections, onSelectItem ];\n};\n\nexport default useBlockTypesState;\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,WAAW,EACXC,mCAAmC,EACnCC,KAAK,IAAIC,WAAW,EACpBC,KAAK,QACC,mBAAmB;AAC1B,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;;AAEzD;AACA;AACA;AACA,SAASL,KAAK,IAAIM,gBAAgB,QAAQ,gBAAgB;AAC1D,SAASC,yBAAyB,QAAQ,sBAAsB;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,GAAGA,CAAEC,YAAY,EAAEC,QAAQ,EAAEC,OAAO,KAAM;EACjE,MAAMC,OAAO,GAAGP,OAAO,CACtB,OAAQ;IAAE,CAAEE,yBAAyB,GAAI,CAAEI;EAAQ,CAAC,CAAE,EACtD,CAAEA,OAAO,CACV,CAAC;EACD,MAAM,CAAEE,KAAK,CAAE,GAAGV,SAAS,CACxBW,MAAM,IAAM,CACbA,MAAM,CAAER,gBAAiB,CAAC,CAACS,gBAAgB,CAC1CN,YAAY,EACZG,OACD,CAAC,CACD,EACD,CAAEH,YAAY,EAAEG,OAAO,CACxB,CAAC;EAED,MAAM,CAAEI,UAAU,EAAEC,WAAW,CAAE,GAAGd,SAAS,CAAIW,MAAM,IAAM;IAC5D,MAAM;MAAEI,aAAa;MAAEC;IAAe,CAAC,GAAGL,MAAM,CAAEb,WAAY,CAAC;IAC/D,OAAO,CAAEiB,aAAa,CAAC,CAAC,EAAEC,cAAc,CAAC,CAAC,CAAE;EAC7C,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMC,YAAY,GAAGhB,WAAW,CAC/B,CACC;IACCiB,IAAI;IACJC,iBAAiB;IACjBC,WAAW;IACXC,UAAU;IACVC,OAAO;IACPhB,YAAY,EAAEiB;EACf,CAAC,EACDC,gBAAgB,KACZ;IACJ,MAAMC,aAAa,GAClBJ,UAAU,KAAK,UAAU,GACtBtB,KAAK,CAAEuB,OAAO,EAAE;MAChBI,2BAA2B,EAAE;IAC7B,CAAE,CAAC,GACH/B,WAAW,CACXuB,IAAI,EACJC,iBAAiB,EACjBvB,mCAAmC,CAAEwB,WAAY,CACjD,CAAC;IAELb,QAAQ,CACPkB,aAAa,EACbE,SAAS,EACTH,gBAAgB,EAChBD,aACD,CAAC;EACF,CAAC,EACD,CAAEhB,QAAQ,CACX,CAAC;EAED,OAAO,CAAEG,KAAK,EAAEG,UAAU,EAAEC,WAAW,EAAEG,YAAY,CAAE;AACxD,CAAC;AAED,eAAeZ,kBAAkB","ignoreList":[]}
1
+ {"version":3,"names":["getBlockType","createBlock","createBlocksFromInnerBlocksTemplate","store","blocksStore","parse","useSelect","useDispatch","useCallback","useMemo","noticesStore","__","sprintf","blockEditorStore","isFiltered","unlock","useBlockTypesState","rootClientId","onInsert","isQuick","options","items","select","getInserterItems","getClosestAllowedInsertionPoint","createErrorNotice","categories","collections","getCategories","getCollections","onSelectItem","name","initialAttributes","innerBlocks","syncStatus","content","shouldFocusBlock","destinationClientId","_getBlockType$title","title","type","id","insertedBlock","__unstableSkipMigrationLogs","undefined"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-block-types-state.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockType,\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n\tparse,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { isFiltered } from '../../../store/utils';\nimport { unlock } from '../../../lock-unlock';\n\n/**\n * Retrieves the block types inserter state.\n *\n * @param {string=} rootClientId Insertion's root client ID.\n * @param {Function} onInsert function called when inserter a list of blocks.\n * @param {boolean} isQuick\n * @return {Array} Returns the block types state. (block types, categories, collections, onSelect handler)\n */\nconst useBlockTypesState = ( rootClientId, onInsert, isQuick ) => {\n\tconst options = useMemo(\n\t\t() => ( { [ isFiltered ]: !! isQuick } ),\n\t\t[ isQuick ]\n\t);\n\tconst [ items ] = useSelect(\n\t\t( select ) => [\n\t\t\tselect( blockEditorStore ).getInserterItems(\n\t\t\t\trootClientId,\n\t\t\t\toptions\n\t\t\t),\n\t\t],\n\t\t[ rootClientId, options ]\n\t);\n\tconst { getClosestAllowedInsertionPoint } = unlock(\n\t\tuseSelect( blockEditorStore )\n\t);\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst [ categories, collections ] = useSelect( ( select ) => {\n\t\tconst { getCategories, getCollections } = select( blocksStore );\n\t\treturn [ getCategories(), getCollections() ];\n\t}, [] );\n\n\tconst onSelectItem = useCallback(\n\t\t(\n\t\t\t{ name, initialAttributes, innerBlocks, syncStatus, content },\n\t\t\tshouldFocusBlock\n\t\t) => {\n\t\t\tconst destinationClientId = getClosestAllowedInsertionPoint(\n\t\t\t\tname,\n\t\t\t\trootClientId\n\t\t\t);\n\t\t\tif ( destinationClientId === null ) {\n\t\t\t\tconst title = getBlockType( name )?.title ?? name;\n\t\t\t\tcreateErrorNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t/* translators: %s: block pattern title. */\n\t\t\t\t\t\t__( 'Block \"%s\" can\\'t be inserted.' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\tid: 'inserter-notice',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst insertedBlock =\n\t\t\t\tsyncStatus === 'unsynced'\n\t\t\t\t\t? parse( content, {\n\t\t\t\t\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t\t\t } )\n\t\t\t\t\t: createBlock(\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tinitialAttributes,\n\t\t\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate( innerBlocks )\n\t\t\t\t\t );\n\t\t\tonInsert(\n\t\t\t\tinsertedBlock,\n\t\t\t\tundefined,\n\t\t\t\tshouldFocusBlock,\n\t\t\t\tdestinationClientId\n\t\t\t);\n\t\t},\n\t\t[ onInsert, getClosestAllowedInsertionPoint, rootClientId ]\n\t);\n\n\treturn [ items, categories, collections, onSelectItem ];\n};\n\nexport default useBlockTypesState;\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,YAAY,EACZC,WAAW,EACXC,mCAAmC,EACnCC,KAAK,IAAIC,WAAW,EACpBC,KAAK,QACC,mBAAmB;AAC1B,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;AACzD,SAASN,KAAK,IAAIO,YAAY,QAAQ,oBAAoB;AAC1D,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;;AAE7C;AACA;AACA;AACA,SAAST,KAAK,IAAIU,gBAAgB,QAAQ,gBAAgB;AAC1D,SAASC,UAAU,QAAQ,sBAAsB;AACjD,SAASC,MAAM,QAAQ,sBAAsB;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,GAAGA,CAAEC,YAAY,EAAEC,QAAQ,EAAEC,OAAO,KAAM;EACjE,MAAMC,OAAO,GAAGX,OAAO,CACtB,OAAQ;IAAE,CAAEK,UAAU,GAAI,CAAC,CAAEK;EAAQ,CAAC,CAAE,EACxC,CAAEA,OAAO,CACV,CAAC;EACD,MAAM,CAAEE,KAAK,CAAE,GAAGf,SAAS,CACxBgB,MAAM,IAAM,CACbA,MAAM,CAAET,gBAAiB,CAAC,CAACU,gBAAgB,CAC1CN,YAAY,EACZG,OACD,CAAC,CACD,EACD,CAAEH,YAAY,EAAEG,OAAO,CACxB,CAAC;EACD,MAAM;IAAEI;EAAgC,CAAC,GAAGT,MAAM,CACjDT,SAAS,CAAEO,gBAAiB,CAC7B,CAAC;EACD,MAAM;IAAEY;EAAkB,CAAC,GAAGlB,WAAW,CAAEG,YAAa,CAAC;EAEzD,MAAM,CAAEgB,UAAU,EAAEC,WAAW,CAAE,GAAGrB,SAAS,CAAIgB,MAAM,IAAM;IAC5D,MAAM;MAAEM,aAAa;MAAEC;IAAe,CAAC,GAAGP,MAAM,CAAElB,WAAY,CAAC;IAC/D,OAAO,CAAEwB,aAAa,CAAC,CAAC,EAAEC,cAAc,CAAC,CAAC,CAAE;EAC7C,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMC,YAAY,GAAGtB,WAAW,CAC/B,CACC;IAAEuB,IAAI;IAAEC,iBAAiB;IAAEC,WAAW;IAAEC,UAAU;IAAEC;EAAQ,CAAC,EAC7DC,gBAAgB,KACZ;IACJ,MAAMC,mBAAmB,GAAGb,+BAA+B,CAC1DO,IAAI,EACJd,YACD,CAAC;IACD,IAAKoB,mBAAmB,KAAK,IAAI,EAAG;MAAA,IAAAC,mBAAA;MACnC,MAAMC,KAAK,IAAAD,mBAAA,GAAGtC,YAAY,CAAE+B,IAAK,CAAC,EAAEQ,KAAK,cAAAD,mBAAA,cAAAA,mBAAA,GAAIP,IAAI;MACjDN,iBAAiB,CAChBb,OAAO,EACN;MACAD,EAAE,CAAE,gCAAiC,CAAC,EACtC4B,KACD,CAAC,EACD;QACCC,IAAI,EAAE,UAAU;QAChBC,EAAE,EAAE;MACL,CACD,CAAC;MACD;IACD;IAEA,MAAMC,aAAa,GAClBR,UAAU,KAAK,UAAU,GACtB7B,KAAK,CAAE8B,OAAO,EAAE;MAChBQ,2BAA2B,EAAE;IAC7B,CAAE,CAAC,GACH1C,WAAW,CACX8B,IAAI,EACJC,iBAAiB,EACjB9B,mCAAmC,CAAE+B,WAAY,CACjD,CAAC;IACLf,QAAQ,CACPwB,aAAa,EACbE,SAAS,EACTR,gBAAgB,EAChBC,mBACD,CAAC;EACF,CAAC,EACD,CAAEnB,QAAQ,EAAEM,+BAA+B,EAAEP,YAAY,CAC1D,CAAC;EAED,OAAO,CAAEI,KAAK,EAAEK,UAAU,EAAEC,WAAW,EAAEG,YAAY,CAAE;AACxD,CAAC;AAED,eAAed,kBAAkB","ignoreList":[]}
@@ -60,8 +60,10 @@ function useInsertionPoint({
60
60
  }) {
61
61
  const registry = useRegistry();
62
62
  const {
63
- getSelectedBlock
64
- } = useSelect(blockEditorStore);
63
+ getSelectedBlock,
64
+ getClosestAllowedInsertionPoint,
65
+ isBlockInsertionPointVisible
66
+ } = unlock(useSelect(blockEditorStore));
65
67
  const {
66
68
  destinationRootClientId,
67
69
  destinationIndex
@@ -70,14 +72,19 @@ function useInsertionPoint({
70
72
  getSelectedBlockClientId,
71
73
  getBlockRootClientId,
72
74
  getBlockIndex,
73
- getBlockOrder
74
- } = select(blockEditorStore);
75
+ getBlockOrder,
76
+ getInsertionPoint
77
+ } = unlock(select(blockEditorStore));
75
78
  const selectedBlockClientId = getSelectedBlockClientId();
76
79
  let _destinationRootClientId = rootClientId;
77
80
  let _destinationIndex;
81
+ const insertionPoint = getInsertionPoint();
78
82
  if (insertionIndex !== undefined) {
79
83
  // Insert into a specific index.
80
84
  _destinationIndex = insertionIndex;
85
+ } else if (insertionPoint && insertionPoint.hasOwnProperty('index')) {
86
+ _destinationRootClientId = insertionPoint?.rootClientId ? insertionPoint.rootClientId : rootClientId;
87
+ _destinationIndex = insertionPoint.index;
81
88
  } else if (clientId) {
82
89
  // Insert after a specific client ID.
83
90
  _destinationIndex = getBlockIndex(clientId);
@@ -129,17 +136,20 @@ function useInsertionPoint({
129
136
  }
130
137
  }, [isAppender, getSelectedBlock, replaceBlocks, insertBlocks, destinationRootClientId, destinationIndex, onSelect, shouldFocusBlock, selectBlockOnInsert]);
131
138
  const onToggleInsertionPoint = useCallback(item => {
132
- if (item?.hasOwnProperty('rootClientId')) {
133
- showInsertionPoint(item.rootClientId, getIndex({
134
- destinationRootClientId,
135
- destinationIndex,
136
- rootClientId: item.rootClientId,
137
- registry
138
- }));
139
+ if (item && !isBlockInsertionPointVisible()) {
140
+ const allowedDestinationRootClientId = getClosestAllowedInsertionPoint(item.name, destinationRootClientId);
141
+ if (allowedDestinationRootClientId !== null) {
142
+ showInsertionPoint(allowedDestinationRootClientId, getIndex({
143
+ destinationRootClientId,
144
+ destinationIndex,
145
+ rootClientId: allowedDestinationRootClientId,
146
+ registry
147
+ }));
148
+ }
139
149
  } else {
140
150
  hideInsertionPoint();
141
151
  }
142
- }, [showInsertionPoint, hideInsertionPoint, destinationRootClientId, destinationIndex]);
152
+ }, [getClosestAllowedInsertionPoint, isBlockInsertionPointVisible, showInsertionPoint, hideInsertionPoint, destinationRootClientId, destinationIndex]);
143
153
  return [destinationRootClientId, onInsertBlocks, onToggleInsertionPoint];
144
154
  }
145
155
  export default useInsertionPoint;
@@ -1 +1 @@
1
- {"version":3,"names":["useDispatch","useRegistry","useSelect","isUnmodifiedDefaultBlock","_n","sprintf","speak","useCallback","store","blockEditorStore","unlock","getIndex","destinationRootClientId","destinationIndex","rootClientId","registry","parents","select","getBlockParents","parentIndex","indexOf","getBlockIndex","getBlockOrder","length","useInsertionPoint","insertionIndex","clientId","isAppender","onSelect","shouldFocusBlock","selectBlockOnInsert","getSelectedBlock","getSelectedBlockClientId","getBlockRootClientId","selectedBlockClientId","_destinationRootClientId","_destinationIndex","undefined","replaceBlocks","insertBlocks","showInsertionPoint","hideInsertionPoint","setLastFocus","onInsertBlocks","blocks","meta","shouldForceFocusBlock","_rootClientId","selectedBlock","blockLength","Array","isArray","message","onToggleInsertionPoint","item","hasOwnProperty"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-insertion-point.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\nfunction getIndex( {\n\tdestinationRootClientId,\n\tdestinationIndex,\n\trootClientId,\n\tregistry,\n} ) {\n\tif ( rootClientId === destinationRootClientId ) {\n\t\treturn destinationIndex;\n\t}\n\tconst parents = [\n\t\t'',\n\t\t...registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlockParents( destinationRootClientId ),\n\t\tdestinationRootClientId,\n\t];\n\tconst parentIndex = parents.indexOf( rootClientId );\n\tif ( parentIndex !== -1 ) {\n\t\treturn (\n\t\t\tregistry\n\t\t\t\t.select( blockEditorStore )\n\t\t\t\t.getBlockIndex( parents[ parentIndex + 1 ] ) + 1\n\t\t);\n\t}\n\treturn registry.select( blockEditorStore ).getBlockOrder( rootClientId )\n\t\t.length;\n}\n\n/**\n * @typedef WPInserterConfig\n *\n * @property {string=} rootClientId If set, insertion will be into the\n * block with this ID.\n * @property {number=} insertionIndex If set, insertion will be into this\n * explicit position.\n * @property {string=} clientId If set, insertion will be after the\n * block with this ID.\n * @property {boolean=} isAppender Whether the inserter is an appender\n * or not.\n * @property {Function=} onSelect Called after insertion.\n */\n\n/**\n * Returns the insertion point state given the inserter config.\n *\n * @param {WPInserterConfig} config Inserter Config.\n * @return {Array} Insertion Point State (rootClientID, onInsertBlocks and onToggle).\n */\nfunction useInsertionPoint( {\n\trootClientId = '',\n\tinsertionIndex,\n\tclientId,\n\tisAppender,\n\tonSelect,\n\tshouldFocusBlock = true,\n\tselectBlockOnInsert = true,\n} ) {\n\tconst registry = useRegistry();\n\tconst { getSelectedBlock } = useSelect( blockEditorStore );\n\tconst { destinationRootClientId, destinationIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\n\t\t\tlet _destinationRootClientId = rootClientId;\n\t\t\tlet _destinationIndex;\n\n\t\t\tif ( insertionIndex !== undefined ) {\n\t\t\t\t// Insert into a specific index.\n\t\t\t\t_destinationIndex = insertionIndex;\n\t\t\t} else if ( clientId ) {\n\t\t\t\t// Insert after a specific client ID.\n\t\t\t\t_destinationIndex = getBlockIndex( clientId );\n\t\t\t} else if ( ! isAppender && selectedBlockClientId ) {\n\t\t\t\t_destinationRootClientId = getBlockRootClientId(\n\t\t\t\t\tselectedBlockClientId\n\t\t\t\t);\n\t\t\t\t_destinationIndex = getBlockIndex( selectedBlockClientId ) + 1;\n\t\t\t} else {\n\t\t\t\t// Insert at the end of the list.\n\t\t\t\t_destinationIndex = getBlockOrder(\n\t\t\t\t\t_destinationRootClientId\n\t\t\t\t).length;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdestinationRootClientId: _destinationRootClientId,\n\t\t\t\tdestinationIndex: _destinationIndex,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId, insertionIndex, clientId, isAppender ]\n\t);\n\n\tconst {\n\t\treplaceBlocks,\n\t\tinsertBlocks,\n\t\tshowInsertionPoint,\n\t\thideInsertionPoint,\n\t\tsetLastFocus,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\tconst onInsertBlocks = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock = false, _rootClientId ) => {\n\t\t\t// When we are trying to move focus or select a new block on insert, we also\n\t\t\t// need to clear the last focus to avoid the focus being set to the wrong block\n\t\t\t// when tabbing back into the canvas if the block was added from outside the\n\t\t\t// editor canvas.\n\t\t\tif (\n\t\t\t\tshouldForceFocusBlock ||\n\t\t\t\tshouldFocusBlock ||\n\t\t\t\tselectBlockOnInsert\n\t\t\t) {\n\t\t\t\tsetLastFocus( null );\n\t\t\t}\n\n\t\t\tconst selectedBlock = getSelectedBlock();\n\n\t\t\tif (\n\t\t\t\t! isAppender &&\n\t\t\t\tselectedBlock &&\n\t\t\t\tisUnmodifiedDefaultBlock( selectedBlock )\n\t\t\t) {\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlock.clientId,\n\t\t\t\t\tblocks,\n\t\t\t\t\tnull,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tinsertBlocks(\n\t\t\t\t\tblocks,\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationIndex\n\t\t\t\t\t\t: getIndex( {\n\t\t\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\t\t\trootClientId: _rootClientId,\n\t\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t } ),\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationRootClientId\n\t\t\t\t\t\t: _rootClientId,\n\t\t\t\t\tselectBlockOnInsert,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst blockLength = Array.isArray( blocks ) ? blocks.length : 1;\n\t\t\tconst message = sprintf(\n\t\t\t\t// translators: %d: the name of the block that has been added\n\t\t\t\t_n( '%d block added.', '%d blocks added.', blockLength ),\n\t\t\t\tblockLength\n\t\t\t);\n\t\t\tspeak( message );\n\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( blocks );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tisAppender,\n\t\t\tgetSelectedBlock,\n\t\t\treplaceBlocks,\n\t\t\tinsertBlocks,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t\tonSelect,\n\t\t\tshouldFocusBlock,\n\t\t\tselectBlockOnInsert,\n\t\t]\n\t);\n\n\tconst onToggleInsertionPoint = useCallback(\n\t\t( item ) => {\n\t\t\tif ( item?.hasOwnProperty( 'rootClientId' ) ) {\n\t\t\t\tshowInsertionPoint(\n\t\t\t\t\titem.rootClientId,\n\t\t\t\t\tgetIndex( {\n\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\trootClientId: item.rootClientId,\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\thideInsertionPoint();\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tshowInsertionPoint,\n\t\t\thideInsertionPoint,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t]\n\t);\n\n\treturn [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ];\n}\n\nexport default useInsertionPoint;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useDispatch","useRegistry","useSelect","isUnmodifiedDefaultBlock","_n","sprintf","speak","useCallback","store","blockEditorStore","unlock","getIndex","destinationRootClientId","destinationIndex","rootClientId","registry","parents","select","getBlockParents","parentIndex","indexOf","getBlockIndex","getBlockOrder","length","useInsertionPoint","insertionIndex","clientId","isAppender","onSelect","shouldFocusBlock","selectBlockOnInsert","getSelectedBlock","getClosestAllowedInsertionPoint","isBlockInsertionPointVisible","getSelectedBlockClientId","getBlockRootClientId","getInsertionPoint","selectedBlockClientId","_destinationRootClientId","_destinationIndex","insertionPoint","undefined","hasOwnProperty","index","replaceBlocks","insertBlocks","showInsertionPoint","hideInsertionPoint","setLastFocus","onInsertBlocks","blocks","meta","shouldForceFocusBlock","_rootClientId","selectedBlock","blockLength","Array","isArray","message","onToggleInsertionPoint","item","allowedDestinationRootClientId","name"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-insertion-point.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\nfunction getIndex( {\n\tdestinationRootClientId,\n\tdestinationIndex,\n\trootClientId,\n\tregistry,\n} ) {\n\tif ( rootClientId === destinationRootClientId ) {\n\t\treturn destinationIndex;\n\t}\n\tconst parents = [\n\t\t'',\n\t\t...registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlockParents( destinationRootClientId ),\n\t\tdestinationRootClientId,\n\t];\n\tconst parentIndex = parents.indexOf( rootClientId );\n\tif ( parentIndex !== -1 ) {\n\t\treturn (\n\t\t\tregistry\n\t\t\t\t.select( blockEditorStore )\n\t\t\t\t.getBlockIndex( parents[ parentIndex + 1 ] ) + 1\n\t\t);\n\t}\n\treturn registry.select( blockEditorStore ).getBlockOrder( rootClientId )\n\t\t.length;\n}\n\n/**\n * @typedef WPInserterConfig\n *\n * @property {string=} rootClientId If set, insertion will be into the\n * block with this ID.\n * @property {number=} insertionIndex If set, insertion will be into this\n * explicit position.\n * @property {string=} clientId If set, insertion will be after the\n * block with this ID.\n * @property {boolean=} isAppender Whether the inserter is an appender\n * or not.\n * @property {Function=} onSelect Called after insertion.\n */\n\n/**\n * Returns the insertion point state given the inserter config.\n *\n * @param {WPInserterConfig} config Inserter Config.\n * @return {Array} Insertion Point State (rootClientID, onInsertBlocks and onToggle).\n */\nfunction useInsertionPoint( {\n\trootClientId = '',\n\tinsertionIndex,\n\tclientId,\n\tisAppender,\n\tonSelect,\n\tshouldFocusBlock = true,\n\tselectBlockOnInsert = true,\n} ) {\n\tconst registry = useRegistry();\n\tconst {\n\t\tgetSelectedBlock,\n\t\tgetClosestAllowedInsertionPoint,\n\t\tisBlockInsertionPointVisible,\n\t} = unlock( useSelect( blockEditorStore ) );\n\tconst { destinationRootClientId, destinationIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetInsertionPoint,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\t\tlet _destinationRootClientId = rootClientId;\n\t\t\tlet _destinationIndex;\n\t\t\tconst insertionPoint = getInsertionPoint();\n\n\t\t\tif ( insertionIndex !== undefined ) {\n\t\t\t\t// Insert into a specific index.\n\t\t\t\t_destinationIndex = insertionIndex;\n\t\t\t} else if (\n\t\t\t\tinsertionPoint &&\n\t\t\t\tinsertionPoint.hasOwnProperty( 'index' )\n\t\t\t) {\n\t\t\t\t_destinationRootClientId = insertionPoint?.rootClientId\n\t\t\t\t\t? insertionPoint.rootClientId\n\t\t\t\t\t: rootClientId;\n\t\t\t\t_destinationIndex = insertionPoint.index;\n\t\t\t} else if ( clientId ) {\n\t\t\t\t// Insert after a specific client ID.\n\t\t\t\t_destinationIndex = getBlockIndex( clientId );\n\t\t\t} else if ( ! isAppender && selectedBlockClientId ) {\n\t\t\t\t_destinationRootClientId = getBlockRootClientId(\n\t\t\t\t\tselectedBlockClientId\n\t\t\t\t);\n\t\t\t\t_destinationIndex = getBlockIndex( selectedBlockClientId ) + 1;\n\t\t\t} else {\n\t\t\t\t// Insert at the end of the list.\n\t\t\t\t_destinationIndex = getBlockOrder(\n\t\t\t\t\t_destinationRootClientId\n\t\t\t\t).length;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdestinationRootClientId: _destinationRootClientId,\n\t\t\t\tdestinationIndex: _destinationIndex,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId, insertionIndex, clientId, isAppender ]\n\t);\n\n\tconst {\n\t\treplaceBlocks,\n\t\tinsertBlocks,\n\t\tshowInsertionPoint,\n\t\thideInsertionPoint,\n\t\tsetLastFocus,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\tconst onInsertBlocks = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock = false, _rootClientId ) => {\n\t\t\t// When we are trying to move focus or select a new block on insert, we also\n\t\t\t// need to clear the last focus to avoid the focus being set to the wrong block\n\t\t\t// when tabbing back into the canvas if the block was added from outside the\n\t\t\t// editor canvas.\n\t\t\tif (\n\t\t\t\tshouldForceFocusBlock ||\n\t\t\t\tshouldFocusBlock ||\n\t\t\t\tselectBlockOnInsert\n\t\t\t) {\n\t\t\t\tsetLastFocus( null );\n\t\t\t}\n\n\t\t\tconst selectedBlock = getSelectedBlock();\n\n\t\t\tif (\n\t\t\t\t! isAppender &&\n\t\t\t\tselectedBlock &&\n\t\t\t\tisUnmodifiedDefaultBlock( selectedBlock )\n\t\t\t) {\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlock.clientId,\n\t\t\t\t\tblocks,\n\t\t\t\t\tnull,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tinsertBlocks(\n\t\t\t\t\tblocks,\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationIndex\n\t\t\t\t\t\t: getIndex( {\n\t\t\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\t\t\trootClientId: _rootClientId,\n\t\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t } ),\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationRootClientId\n\t\t\t\t\t\t: _rootClientId,\n\t\t\t\t\tselectBlockOnInsert,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst blockLength = Array.isArray( blocks ) ? blocks.length : 1;\n\t\t\tconst message = sprintf(\n\t\t\t\t// translators: %d: the name of the block that has been added\n\t\t\t\t_n( '%d block added.', '%d blocks added.', blockLength ),\n\t\t\t\tblockLength\n\t\t\t);\n\t\t\tspeak( message );\n\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( blocks );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tisAppender,\n\t\t\tgetSelectedBlock,\n\t\t\treplaceBlocks,\n\t\t\tinsertBlocks,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t\tonSelect,\n\t\t\tshouldFocusBlock,\n\t\t\tselectBlockOnInsert,\n\t\t]\n\t);\n\n\tconst onToggleInsertionPoint = useCallback(\n\t\t( item ) => {\n\t\t\tif ( item && ! isBlockInsertionPointVisible() ) {\n\t\t\t\tconst allowedDestinationRootClientId =\n\t\t\t\t\tgetClosestAllowedInsertionPoint(\n\t\t\t\t\t\titem.name,\n\t\t\t\t\t\tdestinationRootClientId\n\t\t\t\t\t);\n\t\t\t\tif ( allowedDestinationRootClientId !== null ) {\n\t\t\t\t\tshowInsertionPoint(\n\t\t\t\t\t\tallowedDestinationRootClientId,\n\t\t\t\t\t\tgetIndex( {\n\t\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\t\trootClientId: allowedDestinationRootClientId,\n\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thideInsertionPoint();\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tgetClosestAllowedInsertionPoint,\n\t\t\tisBlockInsertionPointVisible,\n\t\t\tshowInsertionPoint,\n\t\t\thideInsertionPoint,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t]\n\t);\n\n\treturn [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ];\n}\n\nexport default useInsertionPoint;\n"],"mappings":"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","ignoreList":[]}