@wordpress/block-editor 12.3.0 → 12.3.1

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 (897) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +12 -0
  3. package/build/autocompleters/block.js +5 -3
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/alignment-control/index.js +4 -6
  6. package/build/components/alignment-control/index.js.map +1 -1
  7. package/build/components/alignment-control/ui.js +5 -9
  8. package/build/components/alignment-control/ui.js.map +1 -1
  9. package/build/components/autocomplete/index.js +2 -4
  10. package/build/components/autocomplete/index.js.map +1 -1
  11. package/build/components/block-actions/index.js +4 -0
  12. package/build/components/block-actions/index.js.map +1 -1
  13. package/build/components/block-alignment-control/constants.js +1 -5
  14. package/build/components/block-alignment-control/constants.js.map +1 -1
  15. package/build/components/block-alignment-control/index.js +4 -6
  16. package/build/components/block-alignment-control/index.js.map +1 -1
  17. package/build/components/block-alignment-control/ui.js +3 -4
  18. package/build/components/block-alignment-control/ui.js.map +1 -1
  19. package/build/components/block-alignment-control/ui.native.js +3 -3
  20. package/build/components/block-alignment-control/ui.native.js.map +1 -1
  21. package/build/components/block-alignment-matrix-control/index.js +0 -1
  22. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  23. package/build/components/block-breadcrumb/index.js +2 -3
  24. package/build/components/block-breadcrumb/index.js.map +1 -1
  25. package/build/components/block-controls/fill.js +2 -1
  26. package/build/components/block-controls/fill.js.map +1 -1
  27. package/build/components/block-controls/index.js +8 -8
  28. package/build/components/block-controls/index.js.map +1 -1
  29. package/build/components/block-controls/slot.js +2 -4
  30. package/build/components/block-controls/slot.js.map +1 -1
  31. package/build/components/block-controls/slot.native.js +4 -2
  32. package/build/components/block-controls/slot.native.js.map +1 -1
  33. package/build/components/block-edit/edit.js +4 -6
  34. package/build/components/block-edit/edit.js.map +1 -1
  35. package/build/components/block-edit/edit.native.js +2 -4
  36. package/build/components/block-edit/edit.native.js.map +1 -1
  37. package/build/components/block-edit/index.js +3 -2
  38. package/build/components/block-edit/index.js.map +1 -1
  39. package/build/components/block-heading-level-dropdown/heading-level-icon.js +47 -0
  40. package/build/components/block-heading-level-dropdown/heading-level-icon.js.map +1 -0
  41. package/build/components/block-heading-level-dropdown/index.js +83 -0
  42. package/build/components/block-heading-level-dropdown/index.js.map +1 -0
  43. package/build/components/block-heading-level-dropdown/index.native.js +72 -0
  44. package/build/components/block-heading-level-dropdown/index.native.js.map +1 -0
  45. package/build/components/block-icon/index.native.js +6 -7
  46. package/build/components/block-icon/index.native.js.map +1 -1
  47. package/build/components/block-info-slot-fill/index.js +4 -2
  48. package/build/components/block-info-slot-fill/index.js.map +1 -1
  49. package/build/components/block-inspector/index.js +20 -87
  50. package/build/components/block-inspector/index.js.map +1 -1
  51. package/build/components/block-list/block-list-item.native.js +4 -2
  52. package/build/components/block-list/block-list-item.native.js.map +1 -1
  53. package/build/components/block-list/block.js +6 -4
  54. package/build/components/block-list/block.js.map +1 -1
  55. package/build/components/block-list/block.native.js +1 -0
  56. package/build/components/block-list/block.native.js.map +1 -1
  57. package/build/components/block-list/index.js +7 -4
  58. package/build/components/block-list/index.js.map +1 -1
  59. package/build/components/block-list/index.native.js +8 -9
  60. package/build/components/block-list/index.native.js.map +1 -1
  61. package/build/components/block-list/subdirectory-icon.js +4 -7
  62. package/build/components/block-list/subdirectory-icon.js.map +1 -1
  63. package/build/components/block-list/use-in-between-inserter.js +1 -3
  64. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  65. package/build/components/block-list-appender/index.js +21 -19
  66. package/build/components/block-list-appender/index.js.map +1 -1
  67. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
  68. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  69. package/build/components/block-mover/button.js +12 -12
  70. package/build/components/block-mover/button.js.map +1 -1
  71. package/build/components/block-mover/index.js +11 -10
  72. package/build/components/block-mover/index.js.map +1 -1
  73. package/build/components/block-navigation/dropdown.js +4 -6
  74. package/build/components/block-navigation/dropdown.js.map +1 -1
  75. package/build/components/block-parent-selector/index.js +4 -5
  76. package/build/components/block-parent-selector/index.js.map +1 -1
  77. package/build/components/block-pattern-setup/index.js +6 -8
  78. package/build/components/block-pattern-setup/index.js.map +1 -1
  79. package/build/components/block-patterns-list/index.js +6 -8
  80. package/build/components/block-patterns-list/index.js.map +1 -1
  81. package/build/components/block-popover/inbetween.js +4 -6
  82. package/build/components/block-popover/inbetween.js.map +1 -1
  83. package/build/components/block-popover/index.js +4 -6
  84. package/build/components/block-popover/index.js.map +1 -1
  85. package/build/components/block-preview/auto.js +2 -4
  86. package/build/components/block-preview/auto.js.map +1 -1
  87. package/build/components/block-preview/index.js +7 -7
  88. package/build/components/block-preview/index.js.map +1 -1
  89. package/build/components/block-quick-navigation/index.js +83 -0
  90. package/build/components/block-quick-navigation/index.js.map +1 -0
  91. package/build/components/block-removal-warning-modal/index.js +90 -0
  92. package/build/components/block-removal-warning-modal/index.js.map +1 -0
  93. package/build/components/block-selection-clearer/index.js +4 -7
  94. package/build/components/block-selection-clearer/index.js.map +1 -1
  95. package/build/components/block-settings/button.native.js +2 -1
  96. package/build/components/block-settings/button.native.js.map +1 -1
  97. package/build/components/block-settings/container.native.js +6 -6
  98. package/build/components/block-settings/container.native.js.map +1 -1
  99. package/build/components/block-settings-menu/block-settings-dropdown.js +10 -11
  100. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  101. package/build/components/block-settings-menu/index.js +4 -5
  102. package/build/components/block-settings-menu/index.js.map +1 -1
  103. package/build/components/block-settings-menu-controls/index.js +4 -5
  104. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  105. package/build/components/block-switcher/index.js +1 -2
  106. package/build/components/block-switcher/index.js.map +1 -1
  107. package/build/components/block-switcher/pattern-transformations-menu.js +6 -8
  108. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  109. package/build/components/block-toolbar/index.js +4 -5
  110. package/build/components/block-toolbar/index.js.map +1 -1
  111. package/build/components/block-tools/block-contextual-toolbar.js +4 -5
  112. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  113. package/build/components/block-tools/block-selection-button.js +4 -5
  114. package/build/components/block-tools/block-selection-button.js.map +1 -1
  115. package/build/components/block-tools/index.js +13 -6
  116. package/build/components/block-tools/index.js.map +1 -1
  117. package/build/components/block-tools/insertion-point.js +5 -5
  118. package/build/components/block-tools/insertion-point.js.map +1 -1
  119. package/build/components/block-tools/selected-block-popover.js +8 -8
  120. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  121. package/build/components/block-types-list/index.native.js +4 -6
  122. package/build/components/block-types-list/index.native.js.map +1 -1
  123. package/build/components/block-vertical-alignment-control/index.js +4 -6
  124. package/build/components/block-vertical-alignment-control/index.js.map +1 -1
  125. package/build/components/block-vertical-alignment-control/ui.js +5 -12
  126. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  127. package/build/components/border-radius-control/all-input-control.js +2 -6
  128. package/build/components/border-radius-control/all-input-control.js.map +1 -1
  129. package/build/components/border-radius-control/input-controls.js +2 -6
  130. package/build/components/border-radius-control/input-controls.js.map +1 -1
  131. package/build/components/border-radius-control/linked-button.js +2 -6
  132. package/build/components/border-radius-control/linked-button.js.map +1 -1
  133. package/build/components/color-palette/control.js +2 -4
  134. package/build/components/color-palette/control.js.map +1 -1
  135. package/build/components/color-palette/with-color-context.js +2 -4
  136. package/build/components/color-palette/with-color-context.js.map +1 -1
  137. package/build/components/colors/utils.js +7 -3
  138. package/build/components/colors/utils.js.map +1 -1
  139. package/build/components/colors/with-colors.js +11 -16
  140. package/build/components/colors/with-colors.js.map +1 -1
  141. package/build/components/colors-gradients/control.js +7 -5
  142. package/build/components/colors-gradients/control.js.map +1 -1
  143. package/build/components/colors-gradients/dropdown.js +12 -11
  144. package/build/components/colors-gradients/dropdown.js.map +1 -1
  145. package/build/components/colors-gradients/panel-color-gradient-settings.js +7 -5
  146. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  147. package/build/components/copy-handler/index.js +5 -6
  148. package/build/components/copy-handler/index.js.map +1 -1
  149. package/build/components/duotone-control/index.js +1 -2
  150. package/build/components/duotone-control/index.js.map +1 -1
  151. package/build/components/editable-text/index.js +6 -7
  152. package/build/components/editable-text/index.js.map +1 -1
  153. package/build/components/font-appearance-control/index.js +2 -6
  154. package/build/components/font-appearance-control/index.js.map +1 -1
  155. package/build/components/font-family/index.js +4 -5
  156. package/build/components/font-family/index.js.map +1 -1
  157. package/build/components/font-sizes/font-size-picker.js +2 -4
  158. package/build/components/font-sizes/font-size-picker.js.map +1 -1
  159. package/build/components/font-sizes/utils.js +3 -3
  160. package/build/components/font-sizes/utils.js.map +1 -1
  161. package/build/components/font-sizes/with-font-sizes.js +7 -7
  162. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  163. package/build/components/global-styles/color-panel.js +15 -16
  164. package/build/components/global-styles/color-panel.js.map +1 -1
  165. package/build/components/global-styles/effects-panel.js +2 -1
  166. package/build/components/global-styles/effects-panel.js.map +1 -1
  167. package/build/components/global-styles/filters-panel.js +2 -1
  168. package/build/components/global-styles/filters-panel.js.map +1 -1
  169. package/build/components/global-styles/index.js +6 -0
  170. package/build/components/global-styles/index.js.map +1 -1
  171. package/build/components/global-styles/typography-panel.js +7 -7
  172. package/build/components/global-styles/typography-panel.js.map +1 -1
  173. package/build/components/global-styles/use-global-styles-output.js +19 -16
  174. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  175. package/build/components/gradients/with-gradient.js +2 -6
  176. package/build/components/gradients/with-gradient.js.map +1 -1
  177. package/build/components/iframe/index.js +5 -7
  178. package/build/components/iframe/index.js.map +1 -1
  179. package/build/components/image-editor/constants.js +1 -2
  180. package/build/components/image-editor/constants.js.map +1 -1
  181. package/build/components/index.js +9 -9
  182. package/build/components/index.js.map +1 -1
  183. package/build/components/index.native.js +9 -0
  184. package/build/components/index.native.js.map +1 -1
  185. package/build/components/inner-blocks/index.js +9 -8
  186. package/build/components/inner-blocks/index.js.map +1 -1
  187. package/build/components/inner-blocks/index.native.js +8 -7
  188. package/build/components/inner-blocks/index.native.js.map +1 -1
  189. package/build/components/inner-blocks/use-nested-settings-update.js +24 -30
  190. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  191. package/build/components/inner-blocks/with-client-id.js +2 -6
  192. package/build/components/inner-blocks/with-client-id.js.map +1 -1
  193. package/build/components/inserter/block-patterns-explorer/explorer.js +2 -1
  194. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  195. package/build/components/inserter/block-patterns-tab.js +33 -5
  196. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  197. package/build/components/inserter/hooks/use-block-types-state.js +4 -3
  198. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  199. package/build/components/inserter/hooks/use-insertion-point.js +1 -1
  200. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  201. package/build/components/inserter/index.js +8 -8
  202. package/build/components/inserter/index.js.map +1 -1
  203. package/build/components/inserter/index.native.js +4 -5
  204. package/build/components/inserter/index.native.js.map +1 -1
  205. package/build/components/inserter/library.js +1 -1
  206. package/build/components/inserter/library.js.map +1 -1
  207. package/build/components/inserter/media-tab/media-list.js +2 -6
  208. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  209. package/build/components/inserter/media-tab/media-preview.js +4 -6
  210. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  211. package/build/components/inserter/media-tab/media-tab.js +1 -1
  212. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  213. package/build/components/inserter/reusable-blocks-tab.js +3 -3
  214. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  215. package/build/components/inserter/tabs.js +3 -3
  216. package/build/components/inserter/tabs.js.map +1 -1
  217. package/build/components/inserter-list-item/index.js +4 -5
  218. package/build/components/inserter-list-item/index.js.map +1 -1
  219. package/build/components/inserter-listbox/group.js +4 -7
  220. package/build/components/inserter-listbox/group.js.map +1 -1
  221. package/build/components/inserter-listbox/item.js +8 -7
  222. package/build/components/inserter-listbox/item.js.map +1 -1
  223. package/build/components/inserter-listbox/row.js +4 -5
  224. package/build/components/inserter-listbox/row.js.map +1 -1
  225. package/build/components/inspector-controls/block-support-slot-container.js +2 -6
  226. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
  227. package/build/components/inspector-controls/fill.native.js +2 -1
  228. package/build/components/inspector-controls/fill.native.js.map +1 -1
  229. package/build/components/inspector-controls/index.js +4 -6
  230. package/build/components/inspector-controls/index.js.map +1 -1
  231. package/build/components/inspector-controls/slot.js +4 -6
  232. package/build/components/inspector-controls/slot.js.map +1 -1
  233. package/build/components/inspector-controls/slot.native.js +2 -1
  234. package/build/components/inspector-controls/slot.native.js.map +1 -1
  235. package/build/components/justify-content-control/index.js +4 -6
  236. package/build/components/justify-content-control/index.js.map +1 -1
  237. package/build/components/justify-content-control/ui.js +4 -7
  238. package/build/components/justify-content-control/ui.js.map +1 -1
  239. package/build/components/letter-spacing-control/index.js +2 -4
  240. package/build/components/letter-spacing-control/index.js.map +1 -1
  241. package/build/components/line-height-control/index.js +2 -4
  242. package/build/components/line-height-control/index.js.map +1 -1
  243. package/build/components/link-control/index.js +3 -9
  244. package/build/components/link-control/index.js.map +1 -1
  245. package/build/components/link-control/search-create-button.js +2 -4
  246. package/build/components/link-control/search-create-button.js.map +1 -1
  247. package/build/components/link-control/search-input.js +3 -1
  248. package/build/components/link-control/search-input.js.map +1 -1
  249. package/build/components/link-control/search-item.js +2 -4
  250. package/build/components/link-control/search-item.js.map +1 -1
  251. package/build/components/link-control/search-results.js +2 -4
  252. package/build/components/link-control/search-results.js.map +1 -1
  253. package/build/components/list-view/appender.js +4 -6
  254. package/build/components/list-view/appender.js.map +1 -1
  255. package/build/components/list-view/aria-referenced-text.js +4 -8
  256. package/build/components/list-view/aria-referenced-text.js.map +1 -1
  257. package/build/components/list-view/block-contents.js +4 -5
  258. package/build/components/list-view/block-contents.js.map +1 -1
  259. package/build/components/list-view/block-select-button.js +13 -2
  260. package/build/components/list-view/block-select-button.js.map +1 -1
  261. package/build/components/list-view/branch.js +9 -8
  262. package/build/components/list-view/branch.js.map +1 -1
  263. package/build/components/list-view/drop-indicator.js +62 -11
  264. package/build/components/list-view/drop-indicator.js.map +1 -1
  265. package/build/components/list-view/index.js +4 -6
  266. package/build/components/list-view/index.js.map +1 -1
  267. package/build/components/list-view/leaf.js +4 -5
  268. package/build/components/list-view/leaf.js.map +1 -1
  269. package/build/components/list-view/use-list-view-client-ids.js +2 -22
  270. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  271. package/build/components/list-view/use-list-view-drop-zone.js +46 -34
  272. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  273. package/build/components/media-placeholder/index.js +38 -13
  274. package/build/components/media-placeholder/index.js.map +1 -1
  275. package/build/components/media-replace-flow/index.js +1 -3
  276. package/build/components/media-replace-flow/index.js.map +1 -1
  277. package/build/components/navigable-toolbar/index.js +8 -8
  278. package/build/components/navigable-toolbar/index.js.map +1 -1
  279. package/build/components/panel-color-settings/index.js +4 -5
  280. package/build/components/panel-color-settings/index.js.map +1 -1
  281. package/build/components/plain-text/index.js +8 -8
  282. package/build/components/plain-text/index.js.map +1 -1
  283. package/build/components/plain-text/index.native.js +7 -6
  284. package/build/components/plain-text/index.native.js.map +1 -1
  285. package/build/components/preview-options/index.js +5 -4
  286. package/build/components/preview-options/index.js.map +1 -1
  287. package/build/components/provider/index.js +2 -4
  288. package/build/components/provider/index.js.map +1 -1
  289. package/build/components/provider/with-registry-provider.js +8 -10
  290. package/build/components/provider/with-registry-provider.js.map +1 -1
  291. package/build/components/publish-date-time-picker/index.js +4 -5
  292. package/build/components/publish-date-time-picker/index.js.map +1 -1
  293. package/build/components/resizable-box-popover/index.js +5 -5
  294. package/build/components/resizable-box-popover/index.js.map +1 -1
  295. package/build/components/rich-text/content.js +99 -0
  296. package/build/components/rich-text/content.js.map +1 -0
  297. package/build/components/rich-text/format-toolbar/index.js +1 -2
  298. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  299. package/build/components/rich-text/index.js +8 -42
  300. package/build/components/rich-text/index.js.map +1 -1
  301. package/build/components/rich-text/index.native.js +6 -34
  302. package/build/components/rich-text/index.native.js.map +1 -1
  303. package/build/components/rich-text/toolbar-button.js +2 -6
  304. package/build/components/rich-text/toolbar-button.js.map +1 -1
  305. package/build/components/spacing-sizes-control/index.js +8 -8
  306. package/build/components/spacing-sizes-control/index.js.map +1 -1
  307. package/build/components/tool-selector/index.js +2 -6
  308. package/build/components/tool-selector/index.js.map +1 -1
  309. package/build/components/unit-control/index.js +4 -5
  310. package/build/components/unit-control/index.js.map +1 -1
  311. package/build/components/url-input/index.js +8 -8
  312. package/build/components/url-input/index.js.map +1 -1
  313. package/build/components/url-input/index.native.js +4 -7
  314. package/build/components/url-input/index.native.js.map +1 -1
  315. package/build/components/url-popover/image-url-input-ui.js +21 -14
  316. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  317. package/build/components/url-popover/index.js +4 -5
  318. package/build/components/url-popover/index.js.map +1 -1
  319. package/build/components/url-popover/link-editor.js +4 -5
  320. package/build/components/url-popover/link-editor.js.map +1 -1
  321. package/build/components/url-popover/link-viewer.js +4 -5
  322. package/build/components/url-popover/link-viewer.js.map +1 -1
  323. package/build/components/use-block-display-information/index.js +30 -2
  324. package/build/components/use-block-display-information/index.js.map +1 -1
  325. package/build/components/video-player/index.native.js +2 -4
  326. package/build/components/video-player/index.native.js.map +1 -1
  327. package/build/components/warning/index.native.js +4 -5
  328. package/build/components/warning/index.native.js.map +1 -1
  329. package/build/components/writing-flow/index.js +2 -4
  330. package/build/components/writing-flow/index.js.map +1 -1
  331. package/build/components/writing-flow/use-drag-selection.js +1 -1
  332. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  333. package/build/components/writing-flow/use-tab-nav.js +32 -4
  334. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  335. package/build/hooks/align.js +8 -8
  336. package/build/hooks/align.js.map +1 -1
  337. package/build/hooks/anchor.js +4 -2
  338. package/build/hooks/anchor.js.map +1 -1
  339. package/build/hooks/behaviors.js +75 -37
  340. package/build/hooks/behaviors.js.map +1 -1
  341. package/build/hooks/border.js +4 -5
  342. package/build/hooks/border.js.map +1 -1
  343. package/build/hooks/color.js +4 -5
  344. package/build/hooks/color.js.map +1 -1
  345. package/build/hooks/content-lock-ui.js +8 -10
  346. package/build/hooks/content-lock-ui.js.map +1 -1
  347. package/build/hooks/custom-class-name.js +4 -2
  348. package/build/hooks/custom-class-name.js.map +1 -1
  349. package/build/hooks/dimensions.js +7 -7
  350. package/build/hooks/dimensions.js.map +1 -1
  351. package/build/hooks/duotone.js +5 -5
  352. package/build/hooks/duotone.js.map +1 -1
  353. package/build/hooks/font-family.js +2 -6
  354. package/build/hooks/font-family.js.map +1 -1
  355. package/build/hooks/font-size.js +10 -8
  356. package/build/hooks/font-size.js.map +1 -1
  357. package/build/hooks/layout.js +30 -28
  358. package/build/hooks/layout.js.map +1 -1
  359. package/build/hooks/position.js +24 -16
  360. package/build/hooks/position.js.map +1 -1
  361. package/build/hooks/style.js +8 -5
  362. package/build/hooks/style.js.map +1 -1
  363. package/build/hooks/supports.js +1 -1
  364. package/build/hooks/supports.js.map +1 -1
  365. package/build/hooks/typography.native.js +3 -1
  366. package/build/hooks/typography.native.js.map +1 -1
  367. package/build/hooks/use-typography-props.js +10 -17
  368. package/build/hooks/use-typography-props.js.map +1 -1
  369. package/build/index.js +0 -14
  370. package/build/index.js.map +1 -1
  371. package/build/layouts/constrained.js +3 -1
  372. package/build/layouts/constrained.js.map +1 -1
  373. package/build/layouts/definitions.js +154 -0
  374. package/build/layouts/definitions.js.map +1 -0
  375. package/build/layouts/flex.js +8 -5
  376. package/build/layouts/flex.js.map +1 -1
  377. package/build/layouts/flow.js +3 -1
  378. package/build/layouts/flow.js.map +1 -1
  379. package/build/layouts/grid.js +3 -1
  380. package/build/layouts/grid.js.map +1 -1
  381. package/build/layouts/utils.js +8 -2
  382. package/build/layouts/utils.js.map +1 -1
  383. package/build/private-apis.js +17 -1
  384. package/build/private-apis.js.map +1 -1
  385. package/build/store/actions.js +2 -62
  386. package/build/store/actions.js.map +1 -1
  387. package/build/store/private-actions.js +200 -0
  388. package/build/store/private-actions.js.map +1 -1
  389. package/build/store/private-selectors.js +72 -4
  390. package/build/store/private-selectors.js.map +1 -1
  391. package/build/store/reducer.js +52 -1
  392. package/build/store/reducer.js.map +1 -1
  393. package/build/store/selectors.js +42 -42
  394. package/build/store/selectors.js.map +1 -1
  395. package/build/utils/object.js +39 -0
  396. package/build/utils/object.js.map +1 -1
  397. package/build-module/autocompleters/block.js +5 -3
  398. package/build-module/autocompleters/block.js.map +1 -1
  399. package/build-module/components/alignment-control/index.js +4 -5
  400. package/build-module/components/alignment-control/index.js.map +1 -1
  401. package/build-module/components/alignment-control/ui.js +5 -6
  402. package/build-module/components/alignment-control/ui.js.map +1 -1
  403. package/build-module/components/autocomplete/index.js +2 -3
  404. package/build-module/components/autocomplete/index.js.map +1 -1
  405. package/build-module/components/block-actions/index.js +4 -0
  406. package/build-module/components/block-actions/index.js.map +1 -1
  407. package/build-module/components/block-alignment-control/constants.js +0 -3
  408. package/build-module/components/block-alignment-control/constants.js.map +1 -1
  409. package/build-module/components/block-alignment-control/index.js +4 -5
  410. package/build-module/components/block-alignment-control/index.js.map +1 -1
  411. package/build-module/components/block-alignment-control/ui.js +4 -4
  412. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  413. package/build-module/components/block-alignment-control/ui.native.js +3 -2
  414. package/build-module/components/block-alignment-control/ui.native.js.map +1 -1
  415. package/build-module/components/block-alignment-matrix-control/index.js +0 -1
  416. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  417. package/build-module/components/block-breadcrumb/index.js +2 -3
  418. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  419. package/build-module/components/block-controls/fill.js +2 -1
  420. package/build-module/components/block-controls/fill.js.map +1 -1
  421. package/build-module/components/block-controls/index.js +8 -7
  422. package/build-module/components/block-controls/index.js.map +1 -1
  423. package/build-module/components/block-controls/slot.js +2 -3
  424. package/build-module/components/block-controls/slot.js.map +1 -1
  425. package/build-module/components/block-controls/slot.native.js +4 -2
  426. package/build-module/components/block-controls/slot.native.js.map +1 -1
  427. package/build-module/components/block-edit/edit.js +4 -5
  428. package/build-module/components/block-edit/edit.js.map +1 -1
  429. package/build-module/components/block-edit/edit.native.js +2 -3
  430. package/build-module/components/block-edit/edit.native.js.map +1 -1
  431. package/build-module/components/block-edit/index.js +3 -2
  432. package/build-module/components/block-edit/index.js.map +1 -1
  433. package/build-module/components/block-heading-level-dropdown/heading-level-icon.js +39 -0
  434. package/build-module/components/block-heading-level-dropdown/heading-level-icon.js.map +1 -0
  435. package/build-module/components/block-heading-level-dropdown/index.js +71 -0
  436. package/build-module/components/block-heading-level-dropdown/index.js.map +1 -0
  437. package/build-module/components/block-heading-level-dropdown/index.native.js +60 -0
  438. package/build-module/components/block-heading-level-dropdown/index.native.js.map +1 -0
  439. package/build-module/components/block-icon/index.native.js +6 -6
  440. package/build-module/components/block-icon/index.native.js.map +1 -1
  441. package/build-module/components/block-info-slot-fill/index.js +4 -2
  442. package/build-module/components/block-info-slot-fill/index.js.map +1 -1
  443. package/build-module/components/block-inspector/index.js +20 -88
  444. package/build-module/components/block-inspector/index.js.map +1 -1
  445. package/build-module/components/block-list/block-list-item.native.js +4 -2
  446. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  447. package/build-module/components/block-list/block.js +6 -4
  448. package/build-module/components/block-list/block.js.map +1 -1
  449. package/build-module/components/block-list/block.native.js +1 -0
  450. package/build-module/components/block-list/block.native.js.map +1 -1
  451. package/build-module/components/block-list/index.js +7 -4
  452. package/build-module/components/block-list/index.js.map +1 -1
  453. package/build-module/components/block-list/index.native.js +8 -8
  454. package/build-module/components/block-list/index.native.js.map +1 -1
  455. package/build-module/components/block-list/subdirectory-icon.js +4 -4
  456. package/build-module/components/block-list/subdirectory-icon.js.map +1 -1
  457. package/build-module/components/block-list/use-in-between-inserter.js +1 -3
  458. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  459. package/build-module/components/block-list-appender/index.js +21 -19
  460. package/build-module/components/block-list-appender/index.js.map +1 -1
  461. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
  462. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  463. package/build-module/components/block-mover/button.js +12 -11
  464. package/build-module/components/block-mover/button.js.map +1 -1
  465. package/build-module/components/block-mover/index.js +11 -9
  466. package/build-module/components/block-mover/index.js.map +1 -1
  467. package/build-module/components/block-navigation/dropdown.js +4 -5
  468. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  469. package/build-module/components/block-parent-selector/index.js +4 -4
  470. package/build-module/components/block-parent-selector/index.js.map +1 -1
  471. package/build-module/components/block-pattern-setup/index.js +6 -7
  472. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  473. package/build-module/components/block-patterns-list/index.js +6 -7
  474. package/build-module/components/block-patterns-list/index.js.map +1 -1
  475. package/build-module/components/block-popover/inbetween.js +4 -5
  476. package/build-module/components/block-popover/inbetween.js.map +1 -1
  477. package/build-module/components/block-popover/index.js +4 -5
  478. package/build-module/components/block-popover/index.js.map +1 -1
  479. package/build-module/components/block-preview/auto.js +2 -3
  480. package/build-module/components/block-preview/auto.js.map +1 -1
  481. package/build-module/components/block-preview/index.js +7 -7
  482. package/build-module/components/block-preview/index.js.map +1 -1
  483. package/build-module/components/block-quick-navigation/index.js +69 -0
  484. package/build-module/components/block-quick-navigation/index.js.map +1 -0
  485. package/build-module/components/block-removal-warning-modal/index.js +76 -0
  486. package/build-module/components/block-removal-warning-modal/index.js.map +1 -0
  487. package/build-module/components/block-selection-clearer/index.js +4 -4
  488. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  489. package/build-module/components/block-settings/button.native.js +2 -1
  490. package/build-module/components/block-settings/button.native.js.map +1 -1
  491. package/build-module/components/block-settings/container.native.js +6 -5
  492. package/build-module/components/block-settings/container.native.js.map +1 -1
  493. package/build-module/components/block-settings-menu/block-settings-dropdown.js +10 -10
  494. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  495. package/build-module/components/block-settings-menu/index.js +4 -4
  496. package/build-module/components/block-settings-menu/index.js.map +1 -1
  497. package/build-module/components/block-settings-menu-controls/index.js +4 -4
  498. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  499. package/build-module/components/block-switcher/index.js +1 -2
  500. package/build-module/components/block-switcher/index.js.map +1 -1
  501. package/build-module/components/block-switcher/pattern-transformations-menu.js +6 -7
  502. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  503. package/build-module/components/block-toolbar/index.js +4 -4
  504. package/build-module/components/block-toolbar/index.js.map +1 -1
  505. package/build-module/components/block-tools/block-contextual-toolbar.js +4 -4
  506. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  507. package/build-module/components/block-tools/block-selection-button.js +4 -4
  508. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  509. package/build-module/components/block-tools/index.js +13 -5
  510. package/build-module/components/block-tools/index.js.map +1 -1
  511. package/build-module/components/block-tools/insertion-point.js +5 -4
  512. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  513. package/build-module/components/block-tools/selected-block-popover.js +8 -7
  514. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  515. package/build-module/components/block-types-list/index.native.js +4 -5
  516. package/build-module/components/block-types-list/index.native.js.map +1 -1
  517. package/build-module/components/block-vertical-alignment-control/index.js +4 -5
  518. package/build-module/components/block-vertical-alignment-control/index.js.map +1 -1
  519. package/build-module/components/block-vertical-alignment-control/ui.js +5 -9
  520. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  521. package/build-module/components/border-radius-control/all-input-control.js +2 -3
  522. package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
  523. package/build-module/components/border-radius-control/input-controls.js +2 -3
  524. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  525. package/build-module/components/border-radius-control/linked-button.js +2 -3
  526. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  527. package/build-module/components/color-palette/control.js +2 -3
  528. package/build-module/components/color-palette/control.js.map +1 -1
  529. package/build-module/components/color-palette/with-color-context.js +2 -3
  530. package/build-module/components/color-palette/with-color-context.js.map +1 -1
  531. package/build-module/components/colors/utils.js +5 -1
  532. package/build-module/components/colors/utils.js.map +1 -1
  533. package/build-module/components/colors/with-colors.js +10 -14
  534. package/build-module/components/colors/with-colors.js.map +1 -1
  535. package/build-module/components/colors-gradients/control.js +7 -4
  536. package/build-module/components/colors-gradients/control.js.map +1 -1
  537. package/build-module/components/colors-gradients/dropdown.js +12 -10
  538. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  539. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +7 -4
  540. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  541. package/build-module/components/copy-handler/index.js +5 -6
  542. package/build-module/components/copy-handler/index.js.map +1 -1
  543. package/build-module/components/duotone-control/index.js +1 -2
  544. package/build-module/components/duotone-control/index.js.map +1 -1
  545. package/build-module/components/editable-text/index.js +6 -6
  546. package/build-module/components/editable-text/index.js.map +1 -1
  547. package/build-module/components/font-appearance-control/index.js +2 -3
  548. package/build-module/components/font-appearance-control/index.js.map +1 -1
  549. package/build-module/components/font-family/index.js +4 -4
  550. package/build-module/components/font-family/index.js.map +1 -1
  551. package/build-module/components/font-sizes/font-size-picker.js +2 -3
  552. package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
  553. package/build-module/components/font-sizes/utils.js +2 -2
  554. package/build-module/components/font-sizes/utils.js.map +1 -1
  555. package/build-module/components/font-sizes/with-font-sizes.js +7 -6
  556. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  557. package/build-module/components/global-styles/color-panel.js +15 -15
  558. package/build-module/components/global-styles/color-panel.js.map +1 -1
  559. package/build-module/components/global-styles/effects-panel.js +2 -1
  560. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  561. package/build-module/components/global-styles/filters-panel.js +2 -1
  562. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  563. package/build-module/components/global-styles/index.js +1 -1
  564. package/build-module/components/global-styles/index.js.map +1 -1
  565. package/build-module/components/global-styles/typography-panel.js +7 -7
  566. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  567. package/build-module/components/global-styles/use-global-styles-output.js +11 -10
  568. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  569. package/build-module/components/gradients/with-gradient.js +2 -3
  570. package/build-module/components/gradients/with-gradient.js.map +1 -1
  571. package/build-module/components/iframe/index.js +5 -6
  572. package/build-module/components/iframe/index.js.map +1 -1
  573. package/build-module/components/image-editor/constants.js +1 -2
  574. package/build-module/components/image-editor/constants.js.map +1 -1
  575. package/build-module/components/index.js +1 -1
  576. package/build-module/components/index.js.map +1 -1
  577. package/build-module/components/index.native.js +1 -0
  578. package/build-module/components/index.native.js.map +1 -1
  579. package/build-module/components/inner-blocks/index.js +9 -7
  580. package/build-module/components/inner-blocks/index.js.map +1 -1
  581. package/build-module/components/inner-blocks/index.native.js +8 -6
  582. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  583. package/build-module/components/inner-blocks/use-nested-settings-update.js +24 -27
  584. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  585. package/build-module/components/inner-blocks/with-client-id.js +2 -3
  586. package/build-module/components/inner-blocks/with-client-id.js.map +1 -1
  587. package/build-module/components/inserter/block-patterns-explorer/explorer.js +2 -1
  588. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  589. package/build-module/components/inserter/block-patterns-tab.js +33 -7
  590. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  591. package/build-module/components/inserter/hooks/use-block-types-state.js +4 -3
  592. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  593. package/build-module/components/inserter/hooks/use-insertion-point.js +1 -1
  594. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  595. package/build-module/components/inserter/index.js +8 -7
  596. package/build-module/components/inserter/index.js.map +1 -1
  597. package/build-module/components/inserter/index.native.js +4 -4
  598. package/build-module/components/inserter/index.native.js.map +1 -1
  599. package/build-module/components/inserter/library.js +1 -1
  600. package/build-module/components/inserter/library.js.map +1 -1
  601. package/build-module/components/inserter/media-tab/media-list.js +2 -3
  602. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  603. package/build-module/components/inserter/media-tab/media-preview.js +4 -5
  604. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  605. package/build-module/components/inserter/media-tab/media-tab.js +3 -3
  606. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  607. package/build-module/components/inserter/reusable-blocks-tab.js +3 -3
  608. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  609. package/build-module/components/inserter/tabs.js +3 -3
  610. package/build-module/components/inserter/tabs.js.map +1 -1
  611. package/build-module/components/inserter-list-item/index.js +4 -4
  612. package/build-module/components/inserter-list-item/index.js.map +1 -1
  613. package/build-module/components/inserter-listbox/group.js +4 -4
  614. package/build-module/components/inserter-listbox/group.js.map +1 -1
  615. package/build-module/components/inserter-listbox/item.js +8 -6
  616. package/build-module/components/inserter-listbox/item.js.map +1 -1
  617. package/build-module/components/inserter-listbox/row.js +4 -4
  618. package/build-module/components/inserter-listbox/row.js.map +1 -1
  619. package/build-module/components/inspector-controls/block-support-slot-container.js +2 -3
  620. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
  621. package/build-module/components/inspector-controls/fill.native.js +2 -1
  622. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  623. package/build-module/components/inspector-controls/index.js +4 -5
  624. package/build-module/components/inspector-controls/index.js.map +1 -1
  625. package/build-module/components/inspector-controls/slot.js +4 -5
  626. package/build-module/components/inspector-controls/slot.js.map +1 -1
  627. package/build-module/components/inspector-controls/slot.native.js +2 -1
  628. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  629. package/build-module/components/justify-content-control/index.js +4 -5
  630. package/build-module/components/justify-content-control/index.js.map +1 -1
  631. package/build-module/components/justify-content-control/ui.js +4 -4
  632. package/build-module/components/justify-content-control/ui.js.map +1 -1
  633. package/build-module/components/letter-spacing-control/index.js +2 -3
  634. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  635. package/build-module/components/line-height-control/index.js +2 -3
  636. package/build-module/components/line-height-control/index.js.map +1 -1
  637. package/build-module/components/link-control/index.js +3 -9
  638. package/build-module/components/link-control/index.js.map +1 -1
  639. package/build-module/components/link-control/search-create-button.js +2 -3
  640. package/build-module/components/link-control/search-create-button.js.map +1 -1
  641. package/build-module/components/link-control/search-input.js +3 -1
  642. package/build-module/components/link-control/search-input.js.map +1 -1
  643. package/build-module/components/link-control/search-item.js +2 -3
  644. package/build-module/components/link-control/search-item.js.map +1 -1
  645. package/build-module/components/link-control/search-results.js +2 -3
  646. package/build-module/components/link-control/search-results.js.map +1 -1
  647. package/build-module/components/list-view/appender.js +4 -5
  648. package/build-module/components/list-view/appender.js.map +1 -1
  649. package/build-module/components/list-view/aria-referenced-text.js +4 -5
  650. package/build-module/components/list-view/aria-referenced-text.js.map +1 -1
  651. package/build-module/components/list-view/block-contents.js +4 -4
  652. package/build-module/components/list-view/block-contents.js.map +1 -1
  653. package/build-module/components/list-view/block-select-button.js +14 -4
  654. package/build-module/components/list-view/block-select-button.js.map +1 -1
  655. package/build-module/components/list-view/branch.js +9 -7
  656. package/build-module/components/list-view/branch.js.map +1 -1
  657. package/build-module/components/list-view/drop-indicator.js +61 -11
  658. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  659. package/build-module/components/list-view/index.js +4 -5
  660. package/build-module/components/list-view/index.js.map +1 -1
  661. package/build-module/components/list-view/leaf.js +4 -4
  662. package/build-module/components/list-view/leaf.js.map +1 -1
  663. package/build-module/components/list-view/use-list-view-client-ids.js +2 -22
  664. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  665. package/build-module/components/list-view/use-list-view-drop-zone.js +45 -34
  666. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  667. package/build-module/components/media-placeholder/index.js +38 -13
  668. package/build-module/components/media-placeholder/index.js.map +1 -1
  669. package/build-module/components/media-replace-flow/index.js +1 -3
  670. package/build-module/components/media-replace-flow/index.js.map +1 -1
  671. package/build-module/components/navigable-toolbar/index.js +8 -7
  672. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  673. package/build-module/components/panel-color-settings/index.js +4 -4
  674. package/build-module/components/panel-color-settings/index.js.map +1 -1
  675. package/build-module/components/plain-text/index.js +8 -7
  676. package/build-module/components/plain-text/index.js.map +1 -1
  677. package/build-module/components/plain-text/index.native.js +7 -5
  678. package/build-module/components/plain-text/index.native.js.map +1 -1
  679. package/build-module/components/preview-options/index.js +5 -4
  680. package/build-module/components/preview-options/index.js.map +1 -1
  681. package/build-module/components/provider/index.js +2 -3
  682. package/build-module/components/provider/index.js.map +1 -1
  683. package/build-module/components/provider/with-registry-provider.js +8 -7
  684. package/build-module/components/provider/with-registry-provider.js.map +1 -1
  685. package/build-module/components/publish-date-time-picker/index.js +4 -4
  686. package/build-module/components/publish-date-time-picker/index.js.map +1 -1
  687. package/build-module/components/resizable-box-popover/index.js +5 -4
  688. package/build-module/components/resizable-box-popover/index.js.map +1 -1
  689. package/build-module/components/rich-text/content.js +85 -0
  690. package/build-module/components/rich-text/content.js.map +1 -0
  691. package/build-module/components/rich-text/format-toolbar/index.js +1 -2
  692. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  693. package/build-module/components/rich-text/index.js +8 -42
  694. package/build-module/components/rich-text/index.js.map +1 -1
  695. package/build-module/components/rich-text/index.native.js +6 -34
  696. package/build-module/components/rich-text/index.native.js.map +1 -1
  697. package/build-module/components/rich-text/toolbar-button.js +2 -3
  698. package/build-module/components/rich-text/toolbar-button.js.map +1 -1
  699. package/build-module/components/spacing-sizes-control/index.js +8 -7
  700. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  701. package/build-module/components/tool-selector/index.js +2 -3
  702. package/build-module/components/tool-selector/index.js.map +1 -1
  703. package/build-module/components/unit-control/index.js +4 -4
  704. package/build-module/components/unit-control/index.js.map +1 -1
  705. package/build-module/components/url-input/index.js +8 -7
  706. package/build-module/components/url-input/index.js.map +1 -1
  707. package/build-module/components/url-input/index.native.js +4 -4
  708. package/build-module/components/url-input/index.native.js.map +1 -1
  709. package/build-module/components/url-popover/image-url-input-ui.js +22 -15
  710. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  711. package/build-module/components/url-popover/index.js +4 -4
  712. package/build-module/components/url-popover/index.js.map +1 -1
  713. package/build-module/components/url-popover/link-editor.js +4 -4
  714. package/build-module/components/url-popover/link-editor.js.map +1 -1
  715. package/build-module/components/url-popover/link-viewer.js +4 -4
  716. package/build-module/components/url-popover/link-viewer.js.map +1 -1
  717. package/build-module/components/use-block-display-information/index.js +29 -2
  718. package/build-module/components/use-block-display-information/index.js.map +1 -1
  719. package/build-module/components/video-player/index.native.js +2 -3
  720. package/build-module/components/video-player/index.native.js.map +1 -1
  721. package/build-module/components/warning/index.native.js +4 -4
  722. package/build-module/components/warning/index.native.js.map +1 -1
  723. package/build-module/components/writing-flow/index.js +2 -3
  724. package/build-module/components/writing-flow/index.js.map +1 -1
  725. package/build-module/components/writing-flow/use-drag-selection.js +1 -1
  726. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  727. package/build-module/components/writing-flow/use-tab-nav.js +32 -5
  728. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  729. package/build-module/hooks/align.js +8 -7
  730. package/build-module/hooks/align.js.map +1 -1
  731. package/build-module/hooks/anchor.js +4 -2
  732. package/build-module/hooks/anchor.js.map +1 -1
  733. package/build-module/hooks/behaviors.js +76 -34
  734. package/build-module/hooks/behaviors.js.map +1 -1
  735. package/build-module/hooks/border.js +4 -4
  736. package/build-module/hooks/border.js.map +1 -1
  737. package/build-module/hooks/color.js +4 -4
  738. package/build-module/hooks/color.js.map +1 -1
  739. package/build-module/hooks/content-lock-ui.js +8 -7
  740. package/build-module/hooks/content-lock-ui.js.map +1 -1
  741. package/build-module/hooks/custom-class-name.js +4 -2
  742. package/build-module/hooks/custom-class-name.js.map +1 -1
  743. package/build-module/hooks/dimensions.js +7 -6
  744. package/build-module/hooks/dimensions.js.map +1 -1
  745. package/build-module/hooks/duotone.js +5 -4
  746. package/build-module/hooks/duotone.js.map +1 -1
  747. package/build-module/hooks/font-family.js +1 -5
  748. package/build-module/hooks/font-family.js.map +1 -1
  749. package/build-module/hooks/font-size.js +10 -9
  750. package/build-module/hooks/font-size.js.map +1 -1
  751. package/build-module/hooks/layout.js +26 -24
  752. package/build-module/hooks/layout.js.map +1 -1
  753. package/build-module/hooks/position.js +23 -15
  754. package/build-module/hooks/position.js.map +1 -1
  755. package/build-module/hooks/style.js +8 -4
  756. package/build-module/hooks/style.js.map +1 -1
  757. package/build-module/hooks/supports.js +1 -1
  758. package/build-module/hooks/supports.js.map +1 -1
  759. package/build-module/hooks/typography.native.js +3 -1
  760. package/build-module/hooks/typography.native.js.map +1 -1
  761. package/build-module/hooks/use-typography-props.js +8 -15
  762. package/build-module/hooks/use-typography-props.js.map +1 -1
  763. package/build-module/index.js +1 -1
  764. package/build-module/index.js.map +1 -1
  765. package/build-module/layouts/constrained.js +2 -1
  766. package/build-module/layouts/constrained.js.map +1 -1
  767. package/build-module/layouts/definitions.js +147 -0
  768. package/build-module/layouts/definitions.js.map +1 -0
  769. package/build-module/layouts/flex.js +8 -6
  770. package/build-module/layouts/flex.js.map +1 -1
  771. package/build-module/layouts/flow.js +2 -1
  772. package/build-module/layouts/flow.js.map +1 -1
  773. package/build-module/layouts/grid.js +2 -1
  774. package/build-module/layouts/grid.js.map +1 -1
  775. package/build-module/layouts/utils.js +7 -2
  776. package/build-module/layouts/utils.js.map +1 -1
  777. package/build-module/private-apis.js +12 -1
  778. package/build-module/private-apis.js.map +1 -1
  779. package/build-module/store/actions.js +2 -62
  780. package/build-module/store/actions.js.map +1 -1
  781. package/build-module/store/private-actions.js +186 -0
  782. package/build-module/store/private-actions.js.map +1 -1
  783. package/build-module/store/private-selectors.js +63 -3
  784. package/build-module/store/private-selectors.js.map +1 -1
  785. package/build-module/store/reducer.js +52 -1
  786. package/build-module/store/reducer.js.map +1 -1
  787. package/build-module/store/selectors.js +42 -42
  788. package/build-module/store/selectors.js.map +1 -1
  789. package/build-module/utils/object.js +37 -1
  790. package/build-module/utils/object.js.map +1 -1
  791. package/build-style/style-rtl.css +16 -21
  792. package/build-style/style.css +16 -21
  793. package/package.json +31 -31
  794. package/src/autocompleters/block.js +4 -2
  795. package/src/components/alignment-control/ui.js +1 -2
  796. package/src/components/block-actions/index.js +10 -0
  797. package/src/components/block-alignment-control/constants.js +0 -4
  798. package/src/components/block-alignment-control/ui.js +1 -6
  799. package/src/components/block-alignment-matrix-control/index.js +1 -1
  800. package/src/components/block-breadcrumb/index.js +2 -6
  801. package/src/components/block-edit/index.js +3 -5
  802. package/src/components/block-heading-level-dropdown/README.md +52 -0
  803. package/src/components/block-heading-level-dropdown/heading-level-icon.js +43 -0
  804. package/src/components/block-heading-level-dropdown/index.js +77 -0
  805. package/src/components/block-heading-level-dropdown/index.native.js +63 -0
  806. package/src/components/block-inspector/index.js +18 -92
  807. package/src/components/block-inspector/style.scss +0 -5
  808. package/src/components/block-list/block.native.js +1 -0
  809. package/src/components/block-list/index.js +1 -1
  810. package/src/components/block-list/use-in-between-inserter.js +0 -4
  811. package/src/components/block-list-appender/index.js +29 -22
  812. package/src/components/block-lock/style.scss +11 -4
  813. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
  814. package/src/components/block-mobile-toolbar/test/block-actions-menu.native.js +2 -2
  815. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +3 -3
  816. package/src/components/block-mover/test/index.native.js +1 -20
  817. package/src/components/block-preview/index.js +7 -14
  818. package/src/components/block-quick-navigation/index.js +81 -0
  819. package/src/components/block-removal-warning-modal/index.js +94 -0
  820. package/src/components/block-settings-menu/block-settings-dropdown.js +15 -13
  821. package/src/components/block-switcher/index.js +1 -2
  822. package/src/components/block-toolbar/style.scss +0 -4
  823. package/src/components/block-tools/index.js +10 -1
  824. package/src/components/block-vertical-alignment-control/ui.js +1 -3
  825. package/src/components/colors/utils.js +5 -1
  826. package/src/components/colors/with-colors.js +1 -5
  827. package/src/components/copy-handler/index.js +5 -5
  828. package/src/components/duotone-control/index.js +0 -1
  829. package/src/components/font-sizes/test/fluid-utils.js +97 -76
  830. package/src/components/font-sizes/utils.js +2 -2
  831. package/src/components/global-styles/color-panel.js +3 -3
  832. package/src/components/global-styles/index.js +1 -0
  833. package/src/components/global-styles/test/use-global-styles-output.js +14 -9
  834. package/src/components/global-styles/typography-panel.js +19 -16
  835. package/src/components/global-styles/use-global-styles-output.js +12 -12
  836. package/src/components/iframe/index.js +1 -1
  837. package/src/components/image-editor/constants.js +0 -1
  838. package/src/components/index.js +1 -1
  839. package/src/components/index.native.js +1 -0
  840. package/src/components/inner-blocks/index.js +4 -2
  841. package/src/components/inner-blocks/index.native.js +1 -1
  842. package/src/components/inner-blocks/use-nested-settings-update.js +31 -36
  843. package/src/components/inserter/block-patterns-tab.js +63 -8
  844. package/src/components/inserter/hooks/use-block-types-state.js +4 -3
  845. package/src/components/inserter/hooks/use-insertion-point.js +1 -0
  846. package/src/components/inserter/library.js +2 -1
  847. package/src/components/inserter/media-tab/media-tab.js +9 -3
  848. package/src/components/inserter/reusable-blocks-tab.js +3 -3
  849. package/src/components/inserter/tabs.js +3 -3
  850. package/src/components/link-control/index.js +2 -9
  851. package/src/components/link-control/search-input.js +1 -0
  852. package/src/components/link-control/test/index.js +40 -51
  853. package/src/components/list-view/block-select-button.js +19 -1
  854. package/src/components/list-view/branch.js +6 -3
  855. package/src/components/list-view/drop-indicator.js +94 -9
  856. package/src/components/list-view/style.scss +13 -12
  857. package/src/components/list-view/test/use-list-view-drop-zone.js +188 -93
  858. package/src/components/list-view/use-list-view-client-ids.js +3 -20
  859. package/src/components/list-view/use-list-view-drop-zone.js +97 -54
  860. package/src/components/media-placeholder/index.js +54 -20
  861. package/src/components/media-replace-flow/index.js +1 -3
  862. package/src/components/preview-options/index.js +3 -2
  863. package/src/components/provider/test/experimental-provider.js +9 -6
  864. package/src/components/rich-text/content.js +85 -0
  865. package/src/components/rich-text/format-toolbar/index.js +1 -2
  866. package/src/components/rich-text/index.js +2 -35
  867. package/src/components/rich-text/index.native.js +3 -33
  868. package/src/components/url-popover/image-url-input-ui.js +15 -15
  869. package/src/components/url-popover/test/__snapshots__/index.js.snap +3 -3
  870. package/src/components/use-block-display-information/index.js +26 -0
  871. package/src/components/writing-flow/use-drag-selection.js +1 -1
  872. package/src/components/writing-flow/use-tab-nav.js +42 -6
  873. package/src/hooks/behaviors.js +82 -39
  874. package/src/hooks/font-family.js +1 -5
  875. package/src/hooks/font-size.js +12 -17
  876. package/src/hooks/layout.js +17 -25
  877. package/src/hooks/position.js +24 -12
  878. package/src/hooks/supports.js +1 -1
  879. package/src/hooks/use-typography-props.js +14 -19
  880. package/src/index.js +0 -2
  881. package/src/layouts/constrained.js +2 -1
  882. package/src/layouts/definitions.js +174 -0
  883. package/src/layouts/flex.js +7 -5
  884. package/src/layouts/flow.js +2 -1
  885. package/src/layouts/grid.js +2 -1
  886. package/src/layouts/test/utils.js +2 -7
  887. package/src/layouts/utils.js +7 -2
  888. package/src/private-apis.js +11 -0
  889. package/src/store/actions.js +7 -56
  890. package/src/store/private-actions.js +193 -0
  891. package/src/store/private-selectors.js +108 -35
  892. package/src/store/reducer.js +44 -0
  893. package/src/store/selectors.js +61 -39
  894. package/src/store/test/private-selectors.js +269 -1
  895. package/src/store/test/selectors.js +18 -17
  896. package/src/utils/object.js +35 -0
  897. package/src/utils/test/object.js +96 -1
@@ -4,17 +4,28 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.__experimentalUpdateSettings = __experimentalUpdateSettings;
7
+ exports.clearRemovalPrompt = clearRemovalPrompt;
8
+ exports.displayRemovalPrompt = displayRemovalPrompt;
9
+ exports.ensureDefaultBlock = void 0;
7
10
  exports.hideBlockInterface = hideBlockInterface;
11
+ exports.privateRemoveBlocks = void 0;
8
12
  exports.setBlockEditingMode = setBlockEditingMode;
9
13
  exports.showBlockInterface = showBlockInterface;
14
+ exports.toggleRemovalPromptSupport = toggleRemovalPromptSupport;
10
15
  exports.unsetBlockEditingMode = unsetBlockEditingMode;
11
16
 
12
17
  var _element = require("@wordpress/element");
13
18
 
19
+ var _blockRemovalWarningModal = require("../components/block-removal-warning-modal");
20
+
14
21
  /**
15
22
  * WordPress dependencies
16
23
  */
17
24
 
25
+ /**
26
+ * Internal dependencies
27
+ */
28
+ const castArray = maybeArray => Array.isArray(maybeArray) ? maybeArray : [maybeArray];
18
29
  /**
19
30
  * A list of private/experimental block editor settings that
20
31
  * should not become a part of the WordPress public API.
@@ -23,6 +34,8 @@ var _element = require("@wordpress/element");
23
34
  *
24
35
  * @see https://github.com/WordPress/gutenberg/pull/46131
25
36
  */
37
+
38
+
26
39
  const privateSettings = ['inserterMediaCategories', 'blockInspectorAnimation'];
27
40
  /**
28
41
  * Action that updates the block editor settings and
@@ -117,4 +130,191 @@ function unsetBlockEditingMode(clientId = '') {
117
130
  clientId
118
131
  };
119
132
  }
133
+ /**
134
+ * Yields action objects used in signalling that the blocks corresponding to
135
+ * the set of specified client IDs are to be removed.
136
+ *
137
+ * Compared to `removeBlocks`, this private interface exposes an additional
138
+ * parameter; see `forceRemove`.
139
+ *
140
+ * @param {string|string[]} clientIds Client IDs of blocks to remove.
141
+ * @param {boolean} selectPrevious True if the previous block
142
+ * or the immediate parent
143
+ * (if no previous block exists)
144
+ * should be selected
145
+ * when a block is removed.
146
+ * @param {boolean} forceRemove Whether to force the operation,
147
+ * bypassing any checks for certain
148
+ * block types.
149
+ */
150
+
151
+
152
+ const privateRemoveBlocks = (clientIds, selectPrevious = true, forceRemove = false) => ({
153
+ select,
154
+ dispatch
155
+ }) => {
156
+ if (!clientIds || !clientIds.length) {
157
+ return;
158
+ }
159
+
160
+ clientIds = castArray(clientIds);
161
+ const rootClientId = select.getBlockRootClientId(clientIds[0]);
162
+ const canRemoveBlocks = select.canRemoveBlocks(clientIds, rootClientId);
163
+
164
+ if (!canRemoveBlocks) {
165
+ return;
166
+ } // In certain editing contexts, we'd like to prevent accidental removal
167
+ // of important blocks. For example, in the site editor, the Query Loop
168
+ // block is deemed important. In such cases, we'll ask the user for
169
+ // confirmation that they intended to remove such block(s). However,
170
+ // the editor instance is responsible for presenting those confirmation
171
+ // prompts to the user. Any instance opting into removal prompts must
172
+ // register using `toggleRemovalPromptSupport()`.
173
+ //
174
+ // @see https://github.com/WordPress/gutenberg/pull/51145
175
+
176
+
177
+ if (!forceRemove && // FIXME: Without this existence check, the unit tests for
178
+ // `__experimentalDeleteReusableBlock` in
179
+ // `packages/reusable-blocks/src/store/test/actions.js` fail due to
180
+ // the fact that the `registry` object passed to the thunk actions
181
+ // doesn't include this private action. This needs to be
182
+ // investigated to understand whether it's a real smell or if it's
183
+ // because not all store code has been updated to accommodate
184
+ // private selectors.
185
+ select.isRemovalPromptSupported && select.isRemovalPromptSupported()) {
186
+ const blockNamesForPrompt = new Set(); // Given a list of client IDs of blocks that the user intended to
187
+ // remove, perform a tree search (BFS) to find all block names
188
+ // corresponding to "important" blocks, i.e. blocks that require a
189
+ // removal prompt.
190
+ //
191
+ // @see blockTypePromptMessages
192
+
193
+ const queue = [...clientIds];
194
+
195
+ while (queue.length) {
196
+ const clientId = queue.shift();
197
+ const blockName = select.getBlockName(clientId);
198
+
199
+ if (_blockRemovalWarningModal.blockTypePromptMessages[blockName]) {
200
+ blockNamesForPrompt.add(blockName);
201
+ }
202
+
203
+ const innerBlocks = select.getBlockOrder(clientId);
204
+ queue.push(...innerBlocks);
205
+ } // If any such blocks were found, trigger the removal prompt and
206
+ // skip any other steps (thus postponing actual removal).
207
+
208
+
209
+ if (blockNamesForPrompt.size) {
210
+ dispatch(displayRemovalPrompt(clientIds, selectPrevious, Array.from(blockNamesForPrompt)));
211
+ return;
212
+ }
213
+ }
214
+
215
+ if (selectPrevious) {
216
+ dispatch.selectPreviousBlock(clientIds[0], selectPrevious);
217
+ }
218
+
219
+ dispatch({
220
+ type: 'REMOVE_BLOCKS',
221
+ clientIds
222
+ }); // To avoid a focus loss when removing the last block, assure there is
223
+ // always a default block if the last of the blocks have been removed.
224
+
225
+ dispatch(ensureDefaultBlock());
226
+ };
227
+ /**
228
+ * Action which will insert a default block insert action if there
229
+ * are no other blocks at the root of the editor. This action should be used
230
+ * in actions which may result in no blocks remaining in the editor (removal,
231
+ * replacement, etc).
232
+ */
233
+
234
+
235
+ exports.privateRemoveBlocks = privateRemoveBlocks;
236
+
237
+ const ensureDefaultBlock = () => ({
238
+ select,
239
+ dispatch
240
+ }) => {
241
+ // To avoid a focus loss when removing the last block, assure there is
242
+ // always a default block if the last of the blocks have been removed.
243
+ const count = select.getBlockCount();
244
+
245
+ if (count > 0) {
246
+ return;
247
+ } // If there's an custom appender, don't insert default block.
248
+ // We have to remember to manually move the focus elsewhere to
249
+ // prevent it from being lost though.
250
+
251
+
252
+ const {
253
+ __unstableHasCustomAppender
254
+ } = select.getSettings();
255
+
256
+ if (__unstableHasCustomAppender) {
257
+ return;
258
+ }
259
+
260
+ dispatch.insertDefaultBlock();
261
+ };
262
+ /**
263
+ * Returns an action object used in signalling that a block removal prompt must
264
+ * be displayed.
265
+ *
266
+ * Contrast with `toggleRemovalPromptSupport`.
267
+ *
268
+ * @param {string|string[]} clientIds Client IDs of blocks to remove.
269
+ * @param {boolean} selectPrevious True if the previous block
270
+ * or the immediate parent
271
+ * (if no previous block exists)
272
+ * should be selected
273
+ * when a block is removed.
274
+ * @param {string[]} blockNamesForPrompt Names of blocks requiring user
275
+ * @return {Object} Action object.
276
+ */
277
+
278
+
279
+ exports.ensureDefaultBlock = ensureDefaultBlock;
280
+
281
+ function displayRemovalPrompt(clientIds, selectPrevious, blockNamesForPrompt) {
282
+ return {
283
+ type: 'DISPLAY_REMOVAL_PROMPT',
284
+ clientIds,
285
+ selectPrevious,
286
+ blockNamesForPrompt
287
+ };
288
+ }
289
+ /**
290
+ * Returns an action object used in signalling that a block removal prompt must
291
+ * be cleared, either be cause the user has confirmed or canceled the request
292
+ * for removal.
293
+ *
294
+ * @return {Object} Action object.
295
+ */
296
+
297
+
298
+ function clearRemovalPrompt() {
299
+ return {
300
+ type: 'CLEAR_REMOVAL_PROMPT'
301
+ };
302
+ }
303
+ /**
304
+ * Returns an action object used in signalling that a removal prompt display
305
+ * mechanism is available or unavailable in the current editor.
306
+ *
307
+ * Contrast with `displayRemovalPrompt`.
308
+ *
309
+ * @param {boolean} status Whether a prompt display mechanism exists.
310
+ * @return {Object} Action object.
311
+ */
312
+
313
+
314
+ function toggleRemovalPromptSupport(status = true) {
315
+ return {
316
+ type: 'TOGGLE_REMOVAL_PROMPT_SUPPORT',
317
+ status
318
+ };
319
+ }
120
320
  //# sourceMappingURL=private-actions.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/store/private-actions.js"],"names":["privateSettings","__experimentalUpdateSettings","settings","stripExperimentalSettings","cleanSettings","Platform","OS","key","includes","type","hideBlockInterface","showBlockInterface","setBlockEditingMode","clientId","mode","unsetBlockEditingMode"],"mappings":";;;;;;;;;;;AAGA;;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,eAAe,GAAG,CACvB,yBADuB,EAEvB,yBAFuB,CAAxB;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,4BAAT,CACNC,QADM,EAENC,yBAAyB,GAAG,KAFtB,EAGL;AACD,MAAIC,aAAa,GAAGF,QAApB,CADC,CAED;AACA;;AACA,MAAKC,yBAAyB,IAAIE,kBAASC,EAAT,KAAgB,KAAlD,EAA0D;AACzDF,IAAAA,aAAa,GAAG,EAAhB;;AACA,SAAM,MAAMG,GAAZ,IAAmBL,QAAnB,EAA8B;AAC7B,UAAK,CAAEF,eAAe,CAACQ,QAAhB,CAA0BD,GAA1B,CAAP,EAAyC;AACxCH,QAAAA,aAAa,CAAEG,GAAF,CAAb,GAAuBL,QAAQ,CAAEK,GAAF,CAA/B;AACA;AACD;AACD;;AACD,SAAO;AACNE,IAAAA,IAAI,EAAE,iBADA;AAENP,IAAAA,QAAQ,EAAEE;AAFJ,GAAP;AAIA;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASM,kBAAT,GAA8B;AACpC,SAAO;AACND,IAAAA,IAAI,EAAE;AADA,GAAP;AAGA;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASE,kBAAT,GAA8B;AACpC,SAAO;AACNF,IAAAA,IAAI,EAAE;AADA,GAAP;AAGA;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASG,mBAAT,CAA8BC,QAAQ,GAAG,EAAzC,EAA6CC,IAA7C,EAAoD;AAC1D,SAAO;AACNL,IAAAA,IAAI,EAAE,wBADA;AAENI,IAAAA,QAFM;AAGNC,IAAAA;AAHM,GAAP;AAKA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,qBAAT,CAAgCF,QAAQ,GAAG,EAA3C,EAAgD;AACtD,SAAO;AACNJ,IAAAA,IAAI,EAAE,0BADA;AAENI,IAAAA;AAFM,GAAP;AAIA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Platform } from '@wordpress/element';\n\n/**\n * A list of private/experimental block editor settings that\n * should not become a part of the WordPress public API.\n * BlockEditorProvider will remove these settings from the\n * settings object it receives.\n *\n * @see https://github.com/WordPress/gutenberg/pull/46131\n */\nconst privateSettings = [\n\t'inserterMediaCategories',\n\t'blockInspectorAnimation',\n];\n\n/**\n * Action that updates the block editor settings and\n * conditionally preserves the experimental ones.\n *\n * @param {Object} settings Updated settings\n * @param {boolean} stripExperimentalSettings Whether to strip experimental settings.\n * @return {Object} Action object\n */\nexport function __experimentalUpdateSettings(\n\tsettings,\n\tstripExperimentalSettings = false\n) {\n\tlet cleanSettings = settings;\n\t// There are no plugins in the mobile apps, so there is no\n\t// need to strip the experimental settings:\n\tif ( stripExperimentalSettings && Platform.OS === 'web' ) {\n\t\tcleanSettings = {};\n\t\tfor ( const key in settings ) {\n\t\t\tif ( ! privateSettings.includes( key ) ) {\n\t\t\t\tcleanSettings[ key ] = settings[ key ];\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\ttype: 'UPDATE_SETTINGS',\n\t\tsettings: cleanSettings,\n\t};\n}\n\n/**\n * Hides the block interface (eg. toolbar, outline, etc.)\n *\n * @return {Object} Action object.\n */\nexport function hideBlockInterface() {\n\treturn {\n\t\ttype: 'HIDE_BLOCK_INTERFACE',\n\t};\n}\n\n/**\n * Shows the block interface (eg. toolbar, outline, etc.)\n *\n * @return {Object} Action object.\n */\nexport function showBlockInterface() {\n\treturn {\n\t\ttype: 'SHOW_BLOCK_INTERFACE',\n\t};\n}\n\n/**\n * @typedef {import('../components/block-editing-mode').BlockEditingMode} BlockEditingMode\n */\n\n/**\n * Sets the block editing mode for a given block.\n *\n * @see useBlockEditingMode\n *\n * @param {string} clientId The block client ID, or `''` for the root container.\n * @param {BlockEditingMode} mode The block editing mode. One of `'disabled'`,\n * `'contentOnly'`, or `'default'`.\n *\n * @return {Object} Action object.\n */\nexport function setBlockEditingMode( clientId = '', mode ) {\n\treturn {\n\t\ttype: 'SET_BLOCK_EDITING_MODE',\n\t\tclientId,\n\t\tmode,\n\t};\n}\n\n/**\n * Clears the block editing mode for a given block.\n *\n * @see useBlockEditingMode\n *\n * @param {string} clientId The block client ID, or `''` for the root container.\n *\n * @return {Object} Action object.\n */\nexport function unsetBlockEditingMode( clientId = '' ) {\n\treturn {\n\t\ttype: 'UNSET_BLOCK_EDITING_MODE',\n\t\tclientId,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/store/private-actions.js"],"names":["castArray","maybeArray","Array","isArray","privateSettings","__experimentalUpdateSettings","settings","stripExperimentalSettings","cleanSettings","Platform","OS","key","includes","type","hideBlockInterface","showBlockInterface","setBlockEditingMode","clientId","mode","unsetBlockEditingMode","privateRemoveBlocks","clientIds","selectPrevious","forceRemove","select","dispatch","length","rootClientId","getBlockRootClientId","canRemoveBlocks","isRemovalPromptSupported","blockNamesForPrompt","Set","queue","shift","blockName","getBlockName","blockTypePromptMessages","add","innerBlocks","getBlockOrder","push","size","displayRemovalPrompt","from","selectPreviousBlock","ensureDefaultBlock","count","getBlockCount","__unstableHasCustomAppender","getSettings","insertDefaultBlock","clearRemovalPrompt","toggleRemovalPromptSupport","status"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { blockTypePromptMessages } from '../components/block-removal-warning-modal';\n\nconst castArray = ( maybeArray ) =>\n\tArray.isArray( maybeArray ) ? maybeArray : [ maybeArray ];\n\n/**\n * A list of private/experimental block editor settings that\n * should not become a part of the WordPress public API.\n * BlockEditorProvider will remove these settings from the\n * settings object it receives.\n *\n * @see https://github.com/WordPress/gutenberg/pull/46131\n */\nconst privateSettings = [\n\t'inserterMediaCategories',\n\t'blockInspectorAnimation',\n];\n\n/**\n * Action that updates the block editor settings and\n * conditionally preserves the experimental ones.\n *\n * @param {Object} settings Updated settings\n * @param {boolean} stripExperimentalSettings Whether to strip experimental settings.\n * @return {Object} Action object\n */\nexport function __experimentalUpdateSettings(\n\tsettings,\n\tstripExperimentalSettings = false\n) {\n\tlet cleanSettings = settings;\n\t// There are no plugins in the mobile apps, so there is no\n\t// need to strip the experimental settings:\n\tif ( stripExperimentalSettings && Platform.OS === 'web' ) {\n\t\tcleanSettings = {};\n\t\tfor ( const key in settings ) {\n\t\t\tif ( ! privateSettings.includes( key ) ) {\n\t\t\t\tcleanSettings[ key ] = settings[ key ];\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\ttype: 'UPDATE_SETTINGS',\n\t\tsettings: cleanSettings,\n\t};\n}\n\n/**\n * Hides the block interface (eg. toolbar, outline, etc.)\n *\n * @return {Object} Action object.\n */\nexport function hideBlockInterface() {\n\treturn {\n\t\ttype: 'HIDE_BLOCK_INTERFACE',\n\t};\n}\n\n/**\n * Shows the block interface (eg. toolbar, outline, etc.)\n *\n * @return {Object} Action object.\n */\nexport function showBlockInterface() {\n\treturn {\n\t\ttype: 'SHOW_BLOCK_INTERFACE',\n\t};\n}\n\n/**\n * @typedef {import('../components/block-editing-mode').BlockEditingMode} BlockEditingMode\n */\n\n/**\n * Sets the block editing mode for a given block.\n *\n * @see useBlockEditingMode\n *\n * @param {string} clientId The block client ID, or `''` for the root container.\n * @param {BlockEditingMode} mode The block editing mode. One of `'disabled'`,\n * `'contentOnly'`, or `'default'`.\n *\n * @return {Object} Action object.\n */\nexport function setBlockEditingMode( clientId = '', mode ) {\n\treturn {\n\t\ttype: 'SET_BLOCK_EDITING_MODE',\n\t\tclientId,\n\t\tmode,\n\t};\n}\n\n/**\n * Clears the block editing mode for a given block.\n *\n * @see useBlockEditingMode\n *\n * @param {string} clientId The block client ID, or `''` for the root container.\n *\n * @return {Object} Action object.\n */\nexport function unsetBlockEditingMode( clientId = '' ) {\n\treturn {\n\t\ttype: 'UNSET_BLOCK_EDITING_MODE',\n\t\tclientId,\n\t};\n}\n\n/**\n * Yields action objects used in signalling that the blocks corresponding to\n * the set of specified client IDs are to be removed.\n *\n * Compared to `removeBlocks`, this private interface exposes an additional\n * parameter; see `forceRemove`.\n *\n * @param {string|string[]} clientIds Client IDs of blocks to remove.\n * @param {boolean} selectPrevious True if the previous block\n * or the immediate parent\n * (if no previous block exists)\n * should be selected\n * when a block is removed.\n * @param {boolean} forceRemove Whether to force the operation,\n * bypassing any checks for certain\n * block types.\n */\nexport const privateRemoveBlocks =\n\t( clientIds, selectPrevious = true, forceRemove = false ) =>\n\t( { select, dispatch } ) => {\n\t\tif ( ! clientIds || ! clientIds.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclientIds = castArray( clientIds );\n\t\tconst rootClientId = select.getBlockRootClientId( clientIds[ 0 ] );\n\t\tconst canRemoveBlocks = select.canRemoveBlocks(\n\t\t\tclientIds,\n\t\t\trootClientId\n\t\t);\n\n\t\tif ( ! canRemoveBlocks ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In certain editing contexts, we'd like to prevent accidental removal\n\t\t// of important blocks. For example, in the site editor, the Query Loop\n\t\t// block is deemed important. In such cases, we'll ask the user for\n\t\t// confirmation that they intended to remove such block(s). However,\n\t\t// the editor instance is responsible for presenting those confirmation\n\t\t// prompts to the user. Any instance opting into removal prompts must\n\t\t// register using `toggleRemovalPromptSupport()`.\n\t\t//\n\t\t// @see https://github.com/WordPress/gutenberg/pull/51145\n\t\tif (\n\t\t\t! forceRemove &&\n\t\t\t// FIXME: Without this existence check, the unit tests for\n\t\t\t// `__experimentalDeleteReusableBlock` in\n\t\t\t// `packages/reusable-blocks/src/store/test/actions.js` fail due to\n\t\t\t// the fact that the `registry` object passed to the thunk actions\n\t\t\t// doesn't include this private action. This needs to be\n\t\t\t// investigated to understand whether it's a real smell or if it's\n\t\t\t// because not all store code has been updated to accommodate\n\t\t\t// private selectors.\n\t\t\tselect.isRemovalPromptSupported &&\n\t\t\tselect.isRemovalPromptSupported()\n\t\t) {\n\t\t\tconst blockNamesForPrompt = new Set();\n\n\t\t\t// Given a list of client IDs of blocks that the user intended to\n\t\t\t// remove, perform a tree search (BFS) to find all block names\n\t\t\t// corresponding to \"important\" blocks, i.e. blocks that require a\n\t\t\t// removal prompt.\n\t\t\t//\n\t\t\t// @see blockTypePromptMessages\n\t\t\tconst queue = [ ...clientIds ];\n\t\t\twhile ( queue.length ) {\n\t\t\t\tconst clientId = queue.shift();\n\t\t\t\tconst blockName = select.getBlockName( clientId );\n\t\t\t\tif ( blockTypePromptMessages[ blockName ] ) {\n\t\t\t\t\tblockNamesForPrompt.add( blockName );\n\t\t\t\t}\n\t\t\t\tconst innerBlocks = select.getBlockOrder( clientId );\n\t\t\t\tqueue.push( ...innerBlocks );\n\t\t\t}\n\n\t\t\t// If any such blocks were found, trigger the removal prompt and\n\t\t\t// skip any other steps (thus postponing actual removal).\n\t\t\tif ( blockNamesForPrompt.size ) {\n\t\t\t\tdispatch(\n\t\t\t\t\tdisplayRemovalPrompt(\n\t\t\t\t\t\tclientIds,\n\t\t\t\t\t\tselectPrevious,\n\t\t\t\t\t\tArray.from( blockNamesForPrompt )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif ( selectPrevious ) {\n\t\t\tdispatch.selectPreviousBlock( clientIds[ 0 ], selectPrevious );\n\t\t}\n\n\t\tdispatch( { type: 'REMOVE_BLOCKS', clientIds } );\n\n\t\t// To avoid a focus loss when removing the last block, assure there is\n\t\t// always a default block if the last of the blocks have been removed.\n\t\tdispatch( ensureDefaultBlock() );\n\t};\n\n/**\n * Action which will insert a default block insert action if there\n * are no other blocks at the root of the editor. This action should be used\n * in actions which may result in no blocks remaining in the editor (removal,\n * replacement, etc).\n */\nexport const ensureDefaultBlock =\n\t() =>\n\t( { select, dispatch } ) => {\n\t\t// To avoid a focus loss when removing the last block, assure there is\n\t\t// always a default block if the last of the blocks have been removed.\n\t\tconst count = select.getBlockCount();\n\t\tif ( count > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there's an custom appender, don't insert default block.\n\t\t// We have to remember to manually move the focus elsewhere to\n\t\t// prevent it from being lost though.\n\t\tconst { __unstableHasCustomAppender } = select.getSettings();\n\t\tif ( __unstableHasCustomAppender ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdispatch.insertDefaultBlock();\n\t};\n\n/**\n * Returns an action object used in signalling that a block removal prompt must\n * be displayed.\n *\n * Contrast with `toggleRemovalPromptSupport`.\n *\n * @param {string|string[]} clientIds Client IDs of blocks to remove.\n * @param {boolean} selectPrevious True if the previous block\n * or the immediate parent\n * (if no previous block exists)\n * should be selected\n * when a block is removed.\n * @param {string[]} blockNamesForPrompt Names of blocks requiring user\n * @return {Object} Action object.\n */\nexport function displayRemovalPrompt(\n\tclientIds,\n\tselectPrevious,\n\tblockNamesForPrompt\n) {\n\treturn {\n\t\ttype: 'DISPLAY_REMOVAL_PROMPT',\n\t\tclientIds,\n\t\tselectPrevious,\n\t\tblockNamesForPrompt,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a block removal prompt must\n * be cleared, either be cause the user has confirmed or canceled the request\n * for removal.\n *\n * @return {Object} Action object.\n */\nexport function clearRemovalPrompt() {\n\treturn {\n\t\ttype: 'CLEAR_REMOVAL_PROMPT',\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a removal prompt display\n * mechanism is available or unavailable in the current editor.\n *\n * Contrast with `displayRemovalPrompt`.\n *\n * @param {boolean} status Whether a prompt display mechanism exists.\n * @return {Object} Action object.\n */\nexport function toggleRemovalPromptSupport( status = true ) {\n\treturn {\n\t\ttype: 'TOGGLE_REMOVAL_PROMPT_SUPPORT',\n\t\tstatus,\n\t};\n}\n"]}
@@ -5,10 +5,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.getBlockEditingMode = void 0;
8
+ exports.getBlockEditingMode = getBlockEditingMode;
9
+ exports.getEnabledBlockParents = void 0;
9
10
  exports.getLastInsertedBlocksClientIds = getLastInsertedBlocksClientIds;
11
+ exports.getListViewClientIdsTree = void 0;
12
+ exports.getRemovalPromptData = getRemovalPromptData;
10
13
  exports.isBlockInterfaceHidden = isBlockInterfaceHidden;
11
14
  exports.isBlockSubtreeDisabled = void 0;
15
+ exports.isRemovalPromptSupported = isRemovalPromptSupported;
12
16
 
13
17
  var _rememo = _interopRequireDefault(require("rememo"));
14
18
 
@@ -85,7 +89,7 @@ function getLastInsertedBlocksClientIds(state) {
85
89
  */
86
90
 
87
91
 
88
- const getBlockEditingMode = (0, _rememo.default)((state, clientId = '') => {
92
+ function getBlockEditingMode(state, clientId = '') {
89
93
  if (state.blockEditingModes.has(clientId)) {
90
94
  return state.blockEditingModes.get(clientId);
91
95
  }
@@ -113,7 +117,7 @@ const getBlockEditingMode = (0, _rememo.default)((state, clientId = '') => {
113
117
 
114
118
  const parentMode = getBlockEditingMode(state, rootClientId);
115
119
  return parentMode === 'contentOnly' ? 'default' : parentMode;
116
- }, state => [state.blockEditingModes, state.blocks.parents, state.settings.templateLock, state.blockListSettings]);
120
+ }
117
121
  /**
118
122
  * Returns true if the block with the given client ID and all of its descendants
119
123
  * have an editing mode of 'disabled', or false otherwise.
@@ -124,7 +128,7 @@ const getBlockEditingMode = (0, _rememo.default)((state, clientId = '') => {
124
128
  * @return {boolean} Whether the block and its descendants are disabled.
125
129
  */
126
130
 
127
- exports.getBlockEditingMode = getBlockEditingMode;
131
+
128
132
  const isBlockSubtreeDisabled = (0, _rememo.default)((state, clientId) => {
129
133
  const isChildSubtreeDisabled = childClientId => {
130
134
  const mode = state.blockEditingModes.get(childClientId);
@@ -133,5 +137,69 @@ const isBlockSubtreeDisabled = (0, _rememo.default)((state, clientId) => {
133
137
 
134
138
  return getBlockEditingMode(state, clientId) === 'disabled' && (0, _selectors.getBlockOrder)(state, clientId).every(isChildSubtreeDisabled);
135
139
  }, state => [state.blockEditingModes, state.blocks.parents]);
140
+ /**
141
+ * Returns a tree of block objects with only clientID and innerBlocks set.
142
+ * Blocks with a 'disabled' editing mode are not included.
143
+ *
144
+ * @param {Object} state Global application state.
145
+ * @param {?string} rootClientId Optional root client ID of block list.
146
+ *
147
+ * @return {Object[]} Tree of block objects with only clientID and innerBlocks set.
148
+ */
149
+
136
150
  exports.isBlockSubtreeDisabled = isBlockSubtreeDisabled;
151
+ const getListViewClientIdsTree = (0, _rememo.default)((state, rootClientId = '') => {
152
+ return (0, _selectors.getBlockOrder)(state, rootClientId).flatMap(clientId => {
153
+ if (getBlockEditingMode(state, clientId) !== 'disabled') {
154
+ return [{
155
+ clientId,
156
+ innerBlocks: getListViewClientIdsTree(state, clientId)
157
+ }];
158
+ }
159
+
160
+ return getListViewClientIdsTree(state, clientId);
161
+ });
162
+ }, state => [state.blocks.order, state.blockEditingModes, state.settings.templateLock, state.blockListSettings]);
163
+ /**
164
+ * Returns a list of a given block's ancestors, from top to bottom. Blocks with
165
+ * a 'disabled' editing mode are excluded.
166
+ *
167
+ * @see getBlockParents
168
+ *
169
+ * @param {Object} state Global application state.
170
+ * @param {string} clientId The block client ID.
171
+ * @param {boolean} ascending Order results from bottom to top (true) or top
172
+ * to bottom (false).
173
+ */
174
+
175
+ exports.getListViewClientIdsTree = getListViewClientIdsTree;
176
+ const getEnabledBlockParents = (0, _rememo.default)((state, clientId, ascending = false) => {
177
+ return (0, _selectors.getBlockParents)(state, clientId, ascending).filter(parent => getBlockEditingMode(state, parent) !== 'disabled');
178
+ }, state => [state.blocks.parents, state.blockEditingModes, state.settings.templateLock, state.blockListSettings]);
179
+ /**
180
+ * Selector that returns the data needed to display a prompt when certain
181
+ * blocks are removed, or `false` if no such prompt is requested.
182
+ *
183
+ * @param {Object} state Global application state.
184
+ *
185
+ * @return {Object|false} Data for removal prompt display, if any.
186
+ */
187
+
188
+ exports.getEnabledBlockParents = getEnabledBlockParents;
189
+
190
+ function getRemovalPromptData(state) {
191
+ return state.removalPromptData;
192
+ }
193
+ /**
194
+ * Returns true if removal prompt exists, or false otherwise.
195
+ *
196
+ * @param {Object} state Global application state.
197
+ *
198
+ * @return {boolean} Whether removal prompt exists.
199
+ */
200
+
201
+
202
+ function isRemovalPromptSupported(state) {
203
+ return state.isRemovalPromptSupported;
204
+ }
137
205
  //# sourceMappingURL=private-selectors.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/store/private-selectors.js"],"names":["isBlockInterfaceHidden","state","getLastInsertedBlocksClientIds","lastBlockInserted","clientIds","getBlockEditingMode","clientId","blockEditingModes","has","get","rootClientId","templateLock","name","isContent","blocksStore","__experimentalHasContentRoleAttribute","parentMode","blocks","parents","settings","blockListSettings","isBlockSubtreeDisabled","isChildSubtreeDisabled","childClientId","mode","undefined","every"],"mappings":";;;;;;;;;;;;AAGA;;AAKA;;AACA;;AAKA;;AAdA;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,sBAAT,CAAiCC,KAAjC,EAAyC;AAC/C,SAAOA,KAAK,CAACD,sBAAb;AACA;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASE,8BAAT,CAAyCD,KAAzC,EAAiD;AACvD,SAAOA,KAAK,EAAEE,iBAAP,EAA0BC,SAAjC;AACA;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,mBAAmB,GAAG,qBAClC,CAAEJ,KAAF,EAASK,QAAQ,GAAG,EAApB,KAA4B;AAC3B,MAAKL,KAAK,CAACM,iBAAN,CAAwBC,GAAxB,CAA6BF,QAA7B,CAAL,EAA+C;AAC9C,WAAOL,KAAK,CAACM,iBAAN,CAAwBE,GAAxB,CAA6BH,QAA7B,CAAP;AACA;;AACD,MAAK,CAAEA,QAAP,EAAkB;AACjB,WAAO,SAAP;AACA;;AACD,QAAMI,YAAY,GAAG,qCAAsBT,KAAtB,EAA6BK,QAA7B,CAArB;AACA,QAAMK,YAAY,GAAG,gCAAiBV,KAAjB,EAAwBS,YAAxB,CAArB;;AACA,MAAKC,YAAY,KAAK,aAAtB,EAAsC;AACrC,UAAMC,IAAI,GAAG,6BAAcX,KAAd,EAAqBK,QAArB,CAAb,CADqC,CAErC;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,UAAMO,SAAS,GACd,kBAAQC,aAAR,EAAsBC,qCAAtB,CACCH,IADD,CADD;;AAIA,WAAOC,SAAS,GAAG,aAAH,GAAmB,UAAnC;AACA;;AACD,QAAMG,UAAU,GAAGX,mBAAmB,CAAEJ,KAAF,EAASS,YAAT,CAAtC;AACA,SAAOM,UAAU,KAAK,aAAf,GAA+B,SAA/B,GAA2CA,UAAlD;AACA,CA3BiC,EA4BhCf,KAAF,IAAa,CACZA,KAAK,CAACM,iBADM,EAEZN,KAAK,CAACgB,MAAN,CAAaC,OAFD,EAGZjB,KAAK,CAACkB,QAAN,CAAeR,YAHH,EAIZV,KAAK,CAACmB,iBAJM,CA5BqB,CAA5B;AAoCP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,sBAAsB,GAAG,qBACrC,CAAEpB,KAAF,EAASK,QAAT,KAAuB;AACtB,QAAMgB,sBAAsB,GAAKC,aAAF,IAAqB;AACnD,UAAMC,IAAI,GAAGvB,KAAK,CAACM,iBAAN,CAAwBE,GAAxB,CAA6Bc,aAA7B,CAAb;AACA,WACC,CAAEC,IAAI,KAAKC,SAAT,IAAsBD,IAAI,KAAK,UAAjC,KACA,8BAAevB,KAAf,EAAsBsB,aAAtB,EAAsCG,KAAtC,CACCJ,sBADD,CAFD;AAMA,GARD;;AASA,SACCjB,mBAAmB,CAAEJ,KAAF,EAASK,QAAT,CAAnB,KAA2C,UAA3C,IACA,8BAAeL,KAAf,EAAsBK,QAAtB,EAAiCoB,KAAjC,CAAwCJ,sBAAxC,CAFD;AAIA,CAfoC,EAgBnCrB,KAAF,IAAa,CAAEA,KAAK,CAACM,iBAAR,EAA2BN,KAAK,CAACgB,MAAN,CAAaC,OAAxC,CAhBwB,CAA/B","sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\n\n/**\n * WordPress dependencies\n */\nimport { select } from '@wordpress/data';\nimport { store as blocksStore } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetBlockRootClientId,\n\tgetTemplateLock,\n\tgetBlockName,\n\tgetBlockOrder,\n} from './selectors';\n\n/**\n * Returns true if the block interface is hidden, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the block toolbar is hidden.\n */\nexport function isBlockInterfaceHidden( state ) {\n\treturn state.isBlockInterfaceHidden;\n}\n\n/**\n * Gets the client ids of the last inserted blocks.\n *\n * @param {Object} state Global application state.\n * @return {Array|undefined} Client Ids of the last inserted block(s).\n */\nexport function getLastInsertedBlocksClientIds( state ) {\n\treturn state?.lastBlockInserted?.clientIds;\n}\n\n/**\n * @typedef {import('../components/block-editing-mode').BlockEditingMode} BlockEditingMode\n */\n\n/**\n * Returns the block editing mode for a given block.\n *\n * The mode can be one of three options:\n *\n * - `'disabled'`: Prevents editing the block entirely, i.e. it cannot be\n * selected.\n * - `'contentOnly'`: Hides all non-content UI, e.g. auxiliary controls in the\n * toolbar, the block movers, block settings.\n * - `'default'`: Allows editing the block as normal.\n *\n * Blocks can set a mode using the `useBlockEditingMode` hook.\n *\n * The mode is inherited by all of the block's inner blocks, unless they have\n * their own mode.\n *\n * A template lock can also set a mode. If the template lock is `'contentOnly'`,\n * the block's mode is overridden to `'contentOnly'` if the block has a content\n * role attribute, or `'disabled'` otherwise.\n *\n * @see useBlockEditingMode\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID, or `''` for the root container.\n *\n * @return {BlockEditingMode} The block editing mode. One of `'disabled'`,\n * `'contentOnly'`, or `'default'`.\n */\nexport const getBlockEditingMode = createSelector(\n\t( state, clientId = '' ) => {\n\t\tif ( state.blockEditingModes.has( clientId ) ) {\n\t\t\treturn state.blockEditingModes.get( clientId );\n\t\t}\n\t\tif ( ! clientId ) {\n\t\t\treturn 'default';\n\t\t}\n\t\tconst rootClientId = getBlockRootClientId( state, clientId );\n\t\tconst templateLock = getTemplateLock( state, rootClientId );\n\t\tif ( templateLock === 'contentOnly' ) {\n\t\t\tconst name = getBlockName( state, clientId );\n\t\t\t// TODO: Terrible hack! We're calling the global select() function\n\t\t\t// here instead of using createRegistrySelector(). The problem with\n\t\t\t// using createRegistrySelector() is that then the public\n\t\t\t// block-editor selectors (e.g. canInsertBlockTypeUnmemoized) can't\n\t\t\t// call this private block-editor selector due to a bug in\n\t\t\t// @wordpress/data. See\n\t\t\t// https://github.com/WordPress/gutenberg/pull/50985.\n\t\t\tconst isContent =\n\t\t\t\tselect( blocksStore ).__experimentalHasContentRoleAttribute(\n\t\t\t\t\tname\n\t\t\t\t);\n\t\t\treturn isContent ? 'contentOnly' : 'disabled';\n\t\t}\n\t\tconst parentMode = getBlockEditingMode( state, rootClientId );\n\t\treturn parentMode === 'contentOnly' ? 'default' : parentMode;\n\t},\n\t( state ) => [\n\t\tstate.blockEditingModes,\n\t\tstate.blocks.parents,\n\t\tstate.settings.templateLock,\n\t\tstate.blockListSettings,\n\t]\n);\n\n/**\n * Returns true if the block with the given client ID and all of its descendants\n * have an editing mode of 'disabled', or false otherwise.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID.\n *\n * @return {boolean} Whether the block and its descendants are disabled.\n */\nexport const isBlockSubtreeDisabled = createSelector(\n\t( state, clientId ) => {\n\t\tconst isChildSubtreeDisabled = ( childClientId ) => {\n\t\t\tconst mode = state.blockEditingModes.get( childClientId );\n\t\t\treturn (\n\t\t\t\t( mode === undefined || mode === 'disabled' ) &&\n\t\t\t\tgetBlockOrder( state, childClientId ).every(\n\t\t\t\t\tisChildSubtreeDisabled\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\treturn (\n\t\t\tgetBlockEditingMode( state, clientId ) === 'disabled' &&\n\t\t\tgetBlockOrder( state, clientId ).every( isChildSubtreeDisabled )\n\t\t);\n\t},\n\t( state ) => [ state.blockEditingModes, state.blocks.parents ]\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/store/private-selectors.js"],"names":["isBlockInterfaceHidden","state","getLastInsertedBlocksClientIds","lastBlockInserted","clientIds","getBlockEditingMode","clientId","blockEditingModes","has","get","rootClientId","templateLock","name","isContent","blocksStore","__experimentalHasContentRoleAttribute","parentMode","isBlockSubtreeDisabled","isChildSubtreeDisabled","childClientId","mode","undefined","every","blocks","parents","getListViewClientIdsTree","flatMap","innerBlocks","order","settings","blockListSettings","getEnabledBlockParents","ascending","filter","parent","getRemovalPromptData","removalPromptData","isRemovalPromptSupported"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\n\n/**\n * WordPress dependencies\n */\nimport { select } from '@wordpress/data';\nimport { store as blocksStore } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetBlockRootClientId,\n\tgetTemplateLock,\n\tgetBlockName,\n\tgetBlockOrder,\n\tgetBlockParents,\n} from './selectors';\n\n/**\n * Returns true if the block interface is hidden, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the block toolbar is hidden.\n */\nexport function isBlockInterfaceHidden( state ) {\n\treturn state.isBlockInterfaceHidden;\n}\n\n/**\n * Gets the client ids of the last inserted blocks.\n *\n * @param {Object} state Global application state.\n * @return {Array|undefined} Client Ids of the last inserted block(s).\n */\nexport function getLastInsertedBlocksClientIds( state ) {\n\treturn state?.lastBlockInserted?.clientIds;\n}\n\n/**\n * @typedef {import('../components/block-editing-mode').BlockEditingMode} BlockEditingMode\n */\n\n/**\n * Returns the block editing mode for a given block.\n *\n * The mode can be one of three options:\n *\n * - `'disabled'`: Prevents editing the block entirely, i.e. it cannot be\n * selected.\n * - `'contentOnly'`: Hides all non-content UI, e.g. auxiliary controls in the\n * toolbar, the block movers, block settings.\n * - `'default'`: Allows editing the block as normal.\n *\n * Blocks can set a mode using the `useBlockEditingMode` hook.\n *\n * The mode is inherited by all of the block's inner blocks, unless they have\n * their own mode.\n *\n * A template lock can also set a mode. If the template lock is `'contentOnly'`,\n * the block's mode is overridden to `'contentOnly'` if the block has a content\n * role attribute, or `'disabled'` otherwise.\n *\n * @see useBlockEditingMode\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID, or `''` for the root container.\n *\n * @return {BlockEditingMode} The block editing mode. One of `'disabled'`,\n * `'contentOnly'`, or `'default'`.\n */\nexport function getBlockEditingMode( state, clientId = '' ) {\n\tif ( state.blockEditingModes.has( clientId ) ) {\n\t\treturn state.blockEditingModes.get( clientId );\n\t}\n\tif ( ! clientId ) {\n\t\treturn 'default';\n\t}\n\tconst rootClientId = getBlockRootClientId( state, clientId );\n\tconst templateLock = getTemplateLock( state, rootClientId );\n\tif ( templateLock === 'contentOnly' ) {\n\t\tconst name = getBlockName( state, clientId );\n\t\t// TODO: Terrible hack! We're calling the global select() function\n\t\t// here instead of using createRegistrySelector(). The problem with\n\t\t// using createRegistrySelector() is that then the public\n\t\t// block-editor selectors (e.g. canInsertBlockTypeUnmemoized) can't\n\t\t// call this private block-editor selector due to a bug in\n\t\t// @wordpress/data. See\n\t\t// https://github.com/WordPress/gutenberg/pull/50985.\n\t\tconst isContent =\n\t\t\tselect( blocksStore ).__experimentalHasContentRoleAttribute( name );\n\t\treturn isContent ? 'contentOnly' : 'disabled';\n\t}\n\tconst parentMode = getBlockEditingMode( state, rootClientId );\n\treturn parentMode === 'contentOnly' ? 'default' : parentMode;\n}\n\n/**\n * Returns true if the block with the given client ID and all of its descendants\n * have an editing mode of 'disabled', or false otherwise.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID.\n *\n * @return {boolean} Whether the block and its descendants are disabled.\n */\nexport const isBlockSubtreeDisabled = createSelector(\n\t( state, clientId ) => {\n\t\tconst isChildSubtreeDisabled = ( childClientId ) => {\n\t\t\tconst mode = state.blockEditingModes.get( childClientId );\n\t\t\treturn (\n\t\t\t\t( mode === undefined || mode === 'disabled' ) &&\n\t\t\t\tgetBlockOrder( state, childClientId ).every(\n\t\t\t\t\tisChildSubtreeDisabled\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\treturn (\n\t\t\tgetBlockEditingMode( state, clientId ) === 'disabled' &&\n\t\t\tgetBlockOrder( state, clientId ).every( isChildSubtreeDisabled )\n\t\t);\n\t},\n\t( state ) => [ state.blockEditingModes, state.blocks.parents ]\n);\n\n/**\n * Returns a tree of block objects with only clientID and innerBlocks set.\n * Blocks with a 'disabled' editing mode are not included.\n *\n * @param {Object} state Global application state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Object[]} Tree of block objects with only clientID and innerBlocks set.\n */\nexport const getListViewClientIdsTree = createSelector(\n\t( state, rootClientId = '' ) => {\n\t\treturn getBlockOrder( state, rootClientId ).flatMap( ( clientId ) => {\n\t\t\tif ( getBlockEditingMode( state, clientId ) !== 'disabled' ) {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tinnerBlocks: getListViewClientIdsTree(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tclientId\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn getListViewClientIdsTree( state, clientId );\n\t\t} );\n\t},\n\t( state ) => [\n\t\tstate.blocks.order,\n\t\tstate.blockEditingModes,\n\t\tstate.settings.templateLock,\n\t\tstate.blockListSettings,\n\t]\n);\n\n/**\n * Returns a list of a given block's ancestors, from top to bottom. Blocks with\n * a 'disabled' editing mode are excluded.\n *\n * @see getBlockParents\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID.\n * @param {boolean} ascending Order results from bottom to top (true) or top\n * to bottom (false).\n */\nexport const getEnabledBlockParents = createSelector(\n\t( state, clientId, ascending = false ) => {\n\t\treturn getBlockParents( state, clientId, ascending ).filter(\n\t\t\t( parent ) => getBlockEditingMode( state, parent ) !== 'disabled'\n\t\t);\n\t},\n\t( state ) => [\n\t\tstate.blocks.parents,\n\t\tstate.blockEditingModes,\n\t\tstate.settings.templateLock,\n\t\tstate.blockListSettings,\n\t]\n);\n\n/**\n * Selector that returns the data needed to display a prompt when certain\n * blocks are removed, or `false` if no such prompt is requested.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object|false} Data for removal prompt display, if any.\n */\nexport function getRemovalPromptData( state ) {\n\treturn state.removalPromptData;\n}\n\n/**\n * Returns true if removal prompt exists, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether removal prompt exists.\n */\nexport function isRemovalPromptSupported( state ) {\n\treturn state.isRemovalPromptSupported;\n}\n"]}
@@ -1442,6 +1442,55 @@ function isSelectionEnabled(state = true, action) {
1442
1442
 
1443
1443
  return state;
1444
1444
  }
1445
+ /**
1446
+ * Reducer returning the data needed to display a prompt when certain blocks
1447
+ * are removed, or `false` if no such prompt is requested.
1448
+ *
1449
+ * @param {boolean} state Current state.
1450
+ * @param {Object} action Dispatched action.
1451
+ *
1452
+ * @return {Object|false} Data for removal prompt display, if any.
1453
+ */
1454
+
1455
+
1456
+ function removalPromptData(state = false, action) {
1457
+ switch (action.type) {
1458
+ case 'DISPLAY_REMOVAL_PROMPT':
1459
+ const {
1460
+ clientIds,
1461
+ selectPrevious,
1462
+ blockNamesForPrompt
1463
+ } = action;
1464
+ return {
1465
+ clientIds,
1466
+ selectPrevious,
1467
+ blockNamesForPrompt
1468
+ };
1469
+
1470
+ case 'CLEAR_REMOVAL_PROMPT':
1471
+ return false;
1472
+ }
1473
+
1474
+ return state;
1475
+ }
1476
+ /**
1477
+ * Reducer prompt availability state.
1478
+ *
1479
+ * @param {boolean} state Current state.
1480
+ * @param {Object} action Dispatched action.
1481
+ *
1482
+ * @return {boolean} Updated state.
1483
+ */
1484
+
1485
+
1486
+ function isRemovalPromptSupported(state = false, action) {
1487
+ switch (action.type) {
1488
+ case 'TOGGLE_REMOVAL_PROMPT_SUPPORT':
1489
+ return action.status;
1490
+ }
1491
+
1492
+ return state;
1493
+ }
1445
1494
  /**
1446
1495
  * Reducer returning the initial block selection.
1447
1496
  *
@@ -1871,7 +1920,9 @@ const combinedReducers = (0, _data.combineReducers)({
1871
1920
  lastBlockInserted,
1872
1921
  temporarilyEditingAsBlocks,
1873
1922
  blockVisibility,
1874
- blockEditingModes
1923
+ blockEditingModes,
1924
+ removalPromptData,
1925
+ isRemovalPromptSupported
1875
1926
  });
1876
1927
 
1877
1928
  function withAutomaticChangeReset(reducer) {