@wordpress/block-editor 15.4.1-next.f56bd8138.0 → 15.5.1-next.47f435fc9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2663) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +0 -4
  3. package/build/autocompleters/block.js +117 -87
  4. package/build/autocompleters/block.js.map +7 -1
  5. package/build/autocompleters/link.js +58 -48
  6. package/build/autocompleters/link.js.map +7 -1
  7. package/build/components/alignment-control/index.js +44 -28
  8. package/build/components/alignment-control/index.js.map +7 -1
  9. package/build/components/alignment-control/ui.js +72 -54
  10. package/build/components/alignment-control/ui.js.map +7 -1
  11. package/build/components/autocomplete/index.js +64 -62
  12. package/build/components/autocomplete/index.js.map +7 -1
  13. package/build/components/background-image-control/index.js +507 -438
  14. package/build/components/background-image-control/index.js.map +7 -1
  15. package/build/components/block-actions/index.js +76 -62
  16. package/build/components/block-actions/index.js.map +7 -1
  17. package/build/components/block-alignment-control/constants.js +44 -25
  18. package/build/components/block-alignment-control/constants.js.map +7 -1
  19. package/build/components/block-alignment-control/index.js +44 -28
  20. package/build/components/block-alignment-control/index.js.map +7 -1
  21. package/build/components/block-alignment-control/ui.js +75 -71
  22. package/build/components/block-alignment-control/ui.js.map +7 -1
  23. package/build/components/block-alignment-control/use-available-alignments.js +60 -54
  24. package/build/components/block-alignment-control/use-available-alignments.js.map +7 -1
  25. package/build/components/block-alignment-matrix-control/index.js +66 -82
  26. package/build/components/block-alignment-matrix-control/index.js.map +7 -1
  27. package/build/components/block-allowed-blocks/allowed-blocks-control.js +99 -0
  28. package/build/components/block-allowed-blocks/allowed-blocks-control.js.map +7 -0
  29. package/build/components/block-allowed-blocks/index.js +42 -0
  30. package/build/components/block-allowed-blocks/index.js.map +7 -0
  31. package/build/components/block-allowed-blocks/modal.js +124 -0
  32. package/build/components/block-allowed-blocks/modal.js.map +7 -0
  33. package/build/components/block-breadcrumb/index.js +125 -103
  34. package/build/components/block-breadcrumb/index.js.map +7 -1
  35. package/build/components/block-canvas/index.js +121 -123
  36. package/build/components/block-canvas/index.js.map +7 -1
  37. package/build/components/block-card/index.js +92 -121
  38. package/build/components/block-card/index.js.map +7 -1
  39. package/build/components/block-compare/block-view.js +38 -35
  40. package/build/components/block-compare/block-view.js.map +7 -1
  41. package/build/components/block-compare/index.js +73 -60
  42. package/build/components/block-compare/index.js.map +7 -1
  43. package/build/components/block-content-overlay/index.js +31 -21
  44. package/build/components/block-content-overlay/index.js.map +7 -1
  45. package/build/components/block-context/index.js +39 -46
  46. package/build/components/block-context/index.js.map +7 -1
  47. package/build/components/block-controls/fill.js +51 -40
  48. package/build/components/block-controls/fill.js.map +7 -1
  49. package/build/components/block-controls/groups.js +29 -16
  50. package/build/components/block-controls/groups.js.map +7 -1
  51. package/build/components/block-controls/hook.js +39 -21
  52. package/build/components/block-controls/hook.js.map +7 -1
  53. package/build/components/block-controls/index.js +47 -29
  54. package/build/components/block-controls/index.js.map +7 -1
  55. package/build/components/block-controls/slot.js +58 -51
  56. package/build/components/block-controls/slot.js.map +7 -1
  57. package/build/components/block-draggable/draggable-chip.js +59 -44
  58. package/build/components/block-draggable/draggable-chip.js.map +7 -1
  59. package/build/components/block-draggable/index.js +165 -146
  60. package/build/components/block-draggable/index.js.map +7 -1
  61. package/build/components/block-draggable/use-scroll-when-dragging.js +58 -47
  62. package/build/components/block-draggable/use-scroll-when-dragging.js.map +7 -1
  63. package/build/components/block-edit/context.js +52 -30
  64. package/build/components/block-edit/context.js.map +7 -1
  65. package/build/components/block-edit/edit.js +237 -187
  66. package/build/components/block-edit/edit.js.map +7 -1
  67. package/build/components/block-edit/index.js +93 -72
  68. package/build/components/block-edit/index.js.map +7 -1
  69. package/build/components/block-edit/multiple-usage-warning.js +79 -41
  70. package/build/components/block-edit/multiple-usage-warning.js.map +7 -1
  71. package/build/components/block-edit-visually-button/index.js +40 -32
  72. package/build/components/block-edit-visually-button/index.js.map +7 -1
  73. package/build/components/block-editing-mode/index.js +42 -64
  74. package/build/components/block-editing-mode/index.js.map +7 -1
  75. package/build/components/block-full-height-alignment-control/index.js +38 -22
  76. package/build/components/block-full-height-alignment-control/index.js.map +7 -1
  77. package/build/components/block-heading-level-dropdown/heading-level-icon.js +35 -42
  78. package/build/components/block-heading-level-dropdown/heading-level-icon.js.map +7 -1
  79. package/build/components/block-heading-level-dropdown/index.js +64 -65
  80. package/build/components/block-heading-level-dropdown/index.js.map +7 -1
  81. package/build/components/block-icon/index.js +52 -43
  82. package/build/components/block-icon/index.js.map +7 -1
  83. package/build/components/block-inspector/edit-contents-button.js +53 -48
  84. package/build/components/block-inspector/edit-contents-button.js.map +7 -1
  85. package/build/components/block-inspector/index.js +237 -200
  86. package/build/components/block-inspector/index.js.map +7 -1
  87. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js +44 -38
  88. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js.map +7 -1
  89. package/build/components/block-list/block-crash-boundary.js +25 -12
  90. package/build/components/block-list/block-crash-boundary.js.map +7 -1
  91. package/build/components/block-list/block-crash-warning.js +37 -23
  92. package/build/components/block-list/block-crash-warning.js.map +7 -1
  93. package/build/components/block-list/block-html.js +65 -49
  94. package/build/components/block-list/block-html.js.map +7 -1
  95. package/build/components/block-list/block-invalid-warning.js +152 -106
  96. package/build/components/block-list/block-invalid-warning.js.map +7 -1
  97. package/build/components/block-list/block.js +363 -418
  98. package/build/components/block-list/block.js.map +7 -1
  99. package/build/components/block-list/index.js +210 -178
  100. package/build/components/block-list/index.js.map +7 -1
  101. package/build/components/block-list/layout.js +46 -48
  102. package/build/components/block-list/layout.js.map +7 -1
  103. package/build/components/block-list/private-block-context.js +29 -12
  104. package/build/components/block-list/private-block-context.js.map +7 -1
  105. package/build/components/block-list/subdirectory-icon.js +43 -26
  106. package/build/components/block-list/subdirectory-icon.js.map +7 -1
  107. package/build/components/block-list/use-block-props/index.js +121 -151
  108. package/build/components/block-list/use-block-props/index.js.map +7 -1
  109. package/build/components/block-list/use-block-props/use-block-refs.js +49 -59
  110. package/build/components/block-list/use-block-props/use-block-refs.js.map +7 -1
  111. package/build/components/block-list/use-block-props/use-firefox-draggable-compatibility.js +42 -47
  112. package/build/components/block-list/use-block-props/use-firefox-draggable-compatibility.js.map +7 -1
  113. package/build/components/block-list/use-block-props/use-focus-first-element.js +47 -62
  114. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +7 -1
  115. package/build/components/block-list/use-block-props/use-focus-handler.js +54 -65
  116. package/build/components/block-list/use-block-props/use-focus-handler.js.map +7 -1
  117. package/build/components/block-list/use-block-props/use-intersection-observer.js +41 -25
  118. package/build/components/block-list/use-block-props/use-intersection-observer.js.map +7 -1
  119. package/build/components/block-list/use-block-props/use-is-hovered.js +37 -24
  120. package/build/components/block-list/use-block-props/use-is-hovered.js.map +7 -1
  121. package/build/components/block-list/use-block-props/use-scroll-into-view.js +54 -40
  122. package/build/components/block-list/use-block-props/use-scroll-into-view.js.map +7 -1
  123. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +205 -173
  124. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +7 -1
  125. package/build/components/block-list/use-in-between-inserter.js +122 -113
  126. package/build/components/block-list/use-in-between-inserter.js.map +7 -1
  127. package/build/components/block-list/zoom-out-separator.js +85 -80
  128. package/build/components/block-list/zoom-out-separator.js.map +7 -1
  129. package/build/components/block-list-appender/index.js +79 -86
  130. package/build/components/block-list-appender/index.js.map +7 -1
  131. package/build/components/block-lock/index.js +44 -31
  132. package/build/components/block-lock/index.js.map +7 -1
  133. package/build/components/block-lock/menu-item.js +59 -42
  134. package/build/components/block-lock/menu-item.js.map +7 -1
  135. package/build/components/block-lock/modal.js +233 -183
  136. package/build/components/block-lock/modal.js.map +7 -1
  137. package/build/components/block-lock/toolbar.js +59 -51
  138. package/build/components/block-lock/toolbar.js.map +7 -1
  139. package/build/components/block-lock/use-block-lock.js +48 -43
  140. package/build/components/block-lock/use-block-lock.js.map +7 -1
  141. package/build/components/block-manager/category.js +111 -65
  142. package/build/components/block-manager/category.js.map +7 -1
  143. package/build/components/block-manager/checklist.js +55 -36
  144. package/build/components/block-manager/checklist.js.map +7 -1
  145. package/build/components/block-manager/index.js +123 -91
  146. package/build/components/block-manager/index.js.map +7 -1
  147. package/build/components/block-mover/button.js +155 -133
  148. package/build/components/block-mover/button.js.map +7 -1
  149. package/build/components/block-mover/index.js +111 -95
  150. package/build/components/block-mover/index.js.map +7 -1
  151. package/build/components/block-mover/mover-description.js +243 -169
  152. package/build/components/block-mover/mover-description.js.map +7 -1
  153. package/build/components/block-navigation/dropdown.js +86 -72
  154. package/build/components/block-navigation/dropdown.js.map +7 -1
  155. package/build/components/block-parent-selector/index.js +73 -59
  156. package/build/components/block-parent-selector/index.js.map +7 -1
  157. package/build/components/block-pattern-setup/constants.js +29 -8
  158. package/build/components/block-pattern-setup/constants.js.map +7 -1
  159. package/build/components/block-pattern-setup/index.js +175 -147
  160. package/build/components/block-pattern-setup/index.js.map +7 -1
  161. package/build/components/block-pattern-setup/setup-toolbar.js +94 -73
  162. package/build/components/block-pattern-setup/setup-toolbar.js.map +7 -1
  163. package/build/components/block-pattern-setup/use-patterns-setup.js +42 -28
  164. package/build/components/block-pattern-setup/use-patterns-setup.js.map +7 -1
  165. package/build/components/block-patterns-list/index.js +189 -164
  166. package/build/components/block-patterns-list/index.js.map +7 -1
  167. package/build/components/block-patterns-paging/index.js +119 -84
  168. package/build/components/block-patterns-paging/index.js.map +7 -1
  169. package/build/components/block-popover/cover.js +54 -45
  170. package/build/components/block-popover/cover.js.map +7 -1
  171. package/build/components/block-popover/drop-zone.js +64 -54
  172. package/build/components/block-popover/drop-zone.js.map +7 -1
  173. package/build/components/block-popover/inbetween.js +127 -133
  174. package/build/components/block-popover/inbetween.js.map +7 -1
  175. package/build/components/block-popover/index.js +113 -91
  176. package/build/components/block-popover/index.js.map +7 -1
  177. package/build/components/block-popover/use-popover-scroll.js +48 -53
  178. package/build/components/block-popover/use-popover-scroll.js.map +7 -1
  179. package/build/components/block-preview/async.js +33 -35
  180. package/build/components/block-preview/async.js.map +7 -1
  181. package/build/components/block-preview/auto.js +114 -103
  182. package/build/components/block-preview/auto.js.map +7 -1
  183. package/build/components/block-preview/index.js +136 -116
  184. package/build/components/block-preview/index.js.map +7 -1
  185. package/build/components/block-quick-navigation/index.js +82 -76
  186. package/build/components/block-quick-navigation/index.js.map +7 -1
  187. package/build/components/block-removal-warning-modal/index.js +76 -55
  188. package/build/components/block-removal-warning-modal/index.js.map +7 -1
  189. package/build/components/block-rename/index.js +41 -24
  190. package/build/components/block-rename/index.js.map +7 -1
  191. package/build/components/block-rename/is-empty-string.js +22 -5
  192. package/build/components/block-rename/is-empty-string.js.map +7 -1
  193. package/build/components/block-rename/modal.js +135 -103
  194. package/build/components/block-rename/modal.js.map +7 -1
  195. package/build/components/block-rename/rename-control.js +59 -36
  196. package/build/components/block-rename/rename-control.js.map +7 -1
  197. package/build/components/block-rename/use-block-rename.js +24 -11
  198. package/build/components/block-rename/use-block-rename.js.map +7 -1
  199. package/build/components/block-selection-clearer/index.js +53 -57
  200. package/build/components/block-selection-clearer/index.js.map +7 -1
  201. package/build/components/block-settings-menu/block-html-convert-button.js +46 -34
  202. package/build/components/block-settings-menu/block-html-convert-button.js.map +7 -1
  203. package/build/components/block-settings-menu/block-mode-toggle.js +56 -53
  204. package/build/components/block-settings-menu/block-mode-toggle.js.map +7 -1
  205. package/build/components/block-settings-menu/block-parent-selector-menu-item.js +59 -42
  206. package/build/components/block-settings-menu/block-parent-selector-menu-item.js.map +7 -1
  207. package/build/components/block-settings-menu/block-settings-dropdown.js +287 -233
  208. package/build/components/block-settings-menu/block-settings-dropdown.js.map +7 -1
  209. package/build/components/block-settings-menu/block-settings-menu-first-item.js +27 -15
  210. package/build/components/block-settings-menu/block-settings-menu-first-item.js.map +7 -1
  211. package/build/components/block-settings-menu/index.js +53 -32
  212. package/build/components/block-settings-menu/index.js.map +7 -1
  213. package/build/components/block-settings-menu-controls/index.js +132 -102
  214. package/build/components/block-settings-menu-controls/index.js.map +7 -1
  215. package/build/components/block-styles/index.js +99 -75
  216. package/build/components/block-styles/index.js.map +7 -1
  217. package/build/components/block-styles/menu-items.js +60 -43
  218. package/build/components/block-styles/menu-items.js.map +7 -1
  219. package/build/components/block-styles/preview-panel.js +42 -26
  220. package/build/components/block-styles/preview-panel.js.map +7 -1
  221. package/build/components/block-styles/use-styles-for-block.js +53 -70
  222. package/build/components/block-styles/use-styles-for-block.js.map +7 -1
  223. package/build/components/block-styles/utils.js +61 -66
  224. package/build/components/block-styles/utils.js.map +7 -1
  225. package/build/components/block-switcher/block-styles-menu.js +46 -33
  226. package/build/components/block-switcher/block-styles-menu.js.map +7 -1
  227. package/build/components/block-switcher/block-transformations-menu.js +137 -126
  228. package/build/components/block-switcher/block-transformations-menu.js.map +7 -1
  229. package/build/components/block-switcher/block-variation-transformations.js +113 -85
  230. package/build/components/block-switcher/block-variation-transformations.js.map +7 -1
  231. package/build/components/block-switcher/index.js +247 -208
  232. package/build/components/block-switcher/index.js.map +7 -1
  233. package/build/components/block-switcher/pattern-transformations-menu.js +129 -99
  234. package/build/components/block-switcher/pattern-transformations-menu.js.map +7 -1
  235. package/build/components/block-switcher/preview-block-popover.js +48 -38
  236. package/build/components/block-switcher/preview-block-popover.js.map +7 -1
  237. package/build/components/block-switcher/use-transformed-patterns.js +62 -80
  238. package/build/components/block-switcher/use-transformed-patterns.js.map +7 -1
  239. package/build/components/block-switcher/utils.js +37 -45
  240. package/build/components/block-switcher/utils.js.map +7 -1
  241. package/build/components/block-title/index.js +35 -38
  242. package/build/components/block-title/index.js.map +7 -1
  243. package/build/components/block-title/use-block-display-title.js +48 -60
  244. package/build/components/block-title/use-block-display-title.js.map +7 -1
  245. package/build/components/block-toolbar/block-name-context.js +26 -13
  246. package/build/components/block-toolbar/block-name-context.js.map +7 -1
  247. package/build/components/block-toolbar/block-toolbar-last-item.js +27 -15
  248. package/build/components/block-toolbar/block-toolbar-last-item.js.map +7 -1
  249. package/build/components/block-toolbar/change-design.js +104 -92
  250. package/build/components/block-toolbar/change-design.js.map +7 -1
  251. package/build/components/block-toolbar/index.js +205 -183
  252. package/build/components/block-toolbar/index.js.map +7 -1
  253. package/build/components/block-toolbar/switch-section-style.js +111 -88
  254. package/build/components/block-toolbar/switch-section-style.js.map +7 -1
  255. package/build/components/block-toolbar/use-has-block-toolbar.js +33 -33
  256. package/build/components/block-toolbar/use-has-block-toolbar.js.map +7 -1
  257. package/build/components/block-toolbar/utils.js +63 -79
  258. package/build/components/block-toolbar/utils.js.map +7 -1
  259. package/build/components/block-tools/block-toolbar-popover.js +75 -72
  260. package/build/components/block-tools/block-toolbar-popover.js.map +7 -1
  261. package/build/components/block-tools/empty-block-inserter.js +64 -40
  262. package/build/components/block-tools/empty-block-inserter.js.map +7 -1
  263. package/build/components/block-tools/index.js +168 -119
  264. package/build/components/block-tools/index.js.map +7 -1
  265. package/build/components/block-tools/insertion-point.js +174 -159
  266. package/build/components/block-tools/insertion-point.js.map +7 -1
  267. package/build/components/block-tools/use-block-toolbar-popover-props.js +74 -101
  268. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +7 -1
  269. package/build/components/block-tools/use-selected-block-tool-props.js +58 -51
  270. package/build/components/block-tools/use-selected-block-tool-props.js.map +7 -1
  271. package/build/components/block-tools/use-show-block-tools.js +34 -31
  272. package/build/components/block-tools/use-show-block-tools.js.map +7 -1
  273. package/build/components/block-tools/zoom-out-mode-inserter-button.js +56 -31
  274. package/build/components/block-tools/zoom-out-mode-inserter-button.js.map +7 -1
  275. package/build/components/block-tools/zoom-out-mode-inserters.js +71 -54
  276. package/build/components/block-tools/zoom-out-mode-inserters.js.map +7 -1
  277. package/build/components/block-types-list/index.js +57 -35
  278. package/build/components/block-types-list/index.js.map +7 -1
  279. package/build/components/block-variation-picker/index.js +86 -58
  280. package/build/components/block-variation-picker/index.js.map +7 -1
  281. package/build/components/block-variation-transforms/index.js +155 -140
  282. package/build/components/block-variation-transforms/index.js.map +7 -1
  283. package/build/components/block-vertical-alignment-control/index.js +44 -28
  284. package/build/components/block-vertical-alignment-control/index.js.map +7 -1
  285. package/build/components/block-vertical-alignment-control/ui.js +62 -49
  286. package/build/components/block-vertical-alignment-control/ui.js.map +7 -1
  287. package/build/components/block-visibility/index.js +42 -0
  288. package/build/components/block-visibility/index.js.map +7 -0
  289. package/build/components/block-visibility/menu-item.js +107 -0
  290. package/build/components/block-visibility/menu-item.js.map +7 -0
  291. package/build/components/block-visibility/toolbar.js +90 -0
  292. package/build/components/block-visibility/toolbar.js.map +7 -0
  293. package/build/components/border-radius-control/constants.js +61 -32
  294. package/build/components/border-radius-control/constants.js.map +7 -1
  295. package/build/components/border-radius-control/index.js +106 -97
  296. package/build/components/border-radius-control/index.js.map +7 -1
  297. package/build/components/border-radius-control/linked-button.js +39 -26
  298. package/build/components/border-radius-control/linked-button.js.map +7 -1
  299. package/build/components/border-radius-control/single-input-control.js +171 -139
  300. package/build/components/border-radius-control/single-input-control.js.map +7 -1
  301. package/build/components/border-radius-control/utils.js +87 -181
  302. package/build/components/border-radius-control/utils.js.map +7 -1
  303. package/build/components/button-block-appender/index.js +105 -90
  304. package/build/components/button-block-appender/index.js.map +7 -1
  305. package/build/components/child-layout-control/index.js +317 -272
  306. package/build/components/child-layout-control/index.js.map +7 -1
  307. package/build/components/collab/block-comment-icon-slot.js +25 -12
  308. package/build/components/collab/block-comment-icon-slot.js.map +7 -1
  309. package/build/components/collab/block-comment-icon-toolbar-slot.js +27 -12
  310. package/build/components/collab/block-comment-icon-toolbar-slot.js.map +7 -1
  311. package/build/components/color-palette/control.js +44 -19
  312. package/build/components/color-palette/control.js.map +7 -1
  313. package/build/components/color-palette/index.js +35 -15
  314. package/build/components/color-palette/index.js.map +7 -1
  315. package/build/components/color-palette/with-color-context.js +58 -30
  316. package/build/components/color-palette/with-color-context.js.map +7 -1
  317. package/build/components/color-style-selector/index.js +72 -90
  318. package/build/components/color-style-selector/index.js.map +7 -1
  319. package/build/components/colors/index.js +44 -36
  320. package/build/components/colors/index.js.map +7 -1
  321. package/build/components/colors/utils.js +57 -81
  322. package/build/components/colors/utils.js.map +7 -1
  323. package/build/components/colors/with-colors.js +155 -192
  324. package/build/components/colors/with-colors.js.map +7 -1
  325. package/build/components/colors-gradients/control.js +140 -117
  326. package/build/components/colors-gradients/control.js.map +7 -1
  327. package/build/components/colors-gradients/dropdown.js +153 -159
  328. package/build/components/colors-gradients/dropdown.js.map +7 -1
  329. package/build/components/colors-gradients/panel-color-gradient-settings.js +120 -83
  330. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +7 -1
  331. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +92 -41
  332. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +7 -1
  333. package/build/components/content-lock/index.js +26 -10
  334. package/build/components/content-lock/index.js.map +7 -1
  335. package/build/components/content-lock/modify-content-lock-menu-item.js +61 -57
  336. package/build/components/content-lock/modify-content-lock-menu-item.js.map +7 -1
  337. package/build/components/contrast-checker/index.js +87 -73
  338. package/build/components/contrast-checker/index.js.map +7 -1
  339. package/build/components/convert-to-group-buttons/index.js +86 -60
  340. package/build/components/convert-to-group-buttons/index.js.map +7 -1
  341. package/build/components/convert-to-group-buttons/toolbar.js +104 -102
  342. package/build/components/convert-to-group-buttons/toolbar.js.map +7 -1
  343. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +49 -61
  344. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +7 -1
  345. package/build/components/copy-handler/index.js +50 -40
  346. package/build/components/copy-handler/index.js.map +7 -1
  347. package/build/components/date-format-picker/index.js +136 -110
  348. package/build/components/date-format-picker/index.js.map +7 -1
  349. package/build/components/default-block-appender/index.js +110 -98
  350. package/build/components/default-block-appender/index.js.map +7 -1
  351. package/build/components/dimensions-tool/aspect-ratio-tool.js +76 -73
  352. package/build/components/dimensions-tool/aspect-ratio-tool.js.map +7 -1
  353. package/build/components/dimensions-tool/index.js +136 -190
  354. package/build/components/dimensions-tool/index.js.map +7 -1
  355. package/build/components/dimensions-tool/scale-tool.js +88 -93
  356. package/build/components/dimensions-tool/scale-tool.js.map +7 -1
  357. package/build/components/dimensions-tool/width-height-tool.js +93 -107
  358. package/build/components/dimensions-tool/width-height-tool.js.map +7 -1
  359. package/build/components/duotone/utils.js +40 -58
  360. package/build/components/duotone/utils.js.map +7 -1
  361. package/build/components/duotone-control/index.js +82 -69
  362. package/build/components/duotone-control/index.js.map +7 -1
  363. package/build/components/editable-text/index.js +40 -37
  364. package/build/components/editable-text/index.js.map +7 -1
  365. package/build/components/editor-styles/index.js +113 -100
  366. package/build/components/editor-styles/index.js.map +7 -1
  367. package/build/components/floating-toolbar/nav-up-icon.js +48 -29
  368. package/build/components/floating-toolbar/nav-up-icon.js.map +7 -1
  369. package/build/components/font-appearance-control/index.js +100 -118
  370. package/build/components/font-appearance-control/index.js.map +7 -1
  371. package/build/components/font-family/index.js +84 -66
  372. package/build/components/font-family/index.js.map +7 -1
  373. package/build/components/font-sizes/fluid-utils.js +81 -164
  374. package/build/components/font-sizes/fluid-utils.js.map +7 -1
  375. package/build/components/font-sizes/font-size-picker.js +38 -27
  376. package/build/components/font-sizes/font-size-picker.js.map +7 -1
  377. package/build/components/font-sizes/index.js +48 -43
  378. package/build/components/font-sizes/index.js.map +7 -1
  379. package/build/components/font-sizes/utils.js +37 -57
  380. package/build/components/font-sizes/utils.js.map +7 -1
  381. package/build/components/font-sizes/with-font-sizes.js +144 -119
  382. package/build/components/font-sizes/with-font-sizes.js.map +7 -1
  383. package/build/components/global-styles/advanced-panel.js +64 -51
  384. package/build/components/global-styles/advanced-panel.js.map +7 -1
  385. package/build/components/global-styles/background-panel.js +97 -88
  386. package/build/components/global-styles/background-panel.js.map +7 -1
  387. package/build/components/global-styles/border-panel.js +188 -156
  388. package/build/components/global-styles/border-panel.js.map +7 -1
  389. package/build/components/global-styles/color-panel.js +521 -401
  390. package/build/components/global-styles/color-panel.js.map +7 -1
  391. package/build/components/global-styles/context.js +36 -14
  392. package/build/components/global-styles/context.js.map +7 -1
  393. package/build/components/global-styles/dimensions-panel.js +427 -360
  394. package/build/components/global-styles/dimensions-panel.js.map +7 -1
  395. package/build/components/global-styles/filters-panel.js +153 -142
  396. package/build/components/global-styles/filters-panel.js.map +7 -1
  397. package/build/components/global-styles/get-block-css-selector.js +44 -79
  398. package/build/components/global-styles/get-block-css-selector.js.map +7 -1
  399. package/build/components/global-styles/get-global-styles-changes.js +152 -168
  400. package/build/components/global-styles/get-global-styles-changes.js.map +7 -1
  401. package/build/components/global-styles/hooks.js +259 -144
  402. package/build/components/global-styles/hooks.js.map +7 -1
  403. package/build/components/global-styles/image-settings-panel.js +62 -51
  404. package/build/components/global-styles/image-settings-panel.js.map +7 -1
  405. package/build/components/global-styles/index.js +107 -196
  406. package/build/components/global-styles/index.js.map +7 -1
  407. package/build/components/global-styles/shadow-panel-components.js +175 -164
  408. package/build/components/global-styles/shadow-panel-components.js.map +7 -1
  409. package/build/components/global-styles/typography-panel.js +421 -288
  410. package/build/components/global-styles/typography-panel.js.map +7 -1
  411. package/build/components/global-styles/typography-utils.js +92 -179
  412. package/build/components/global-styles/typography-utils.js.map +7 -1
  413. package/build/components/global-styles/use-global-styles-output.js +695 -761
  414. package/build/components/global-styles/use-global-styles-output.js.map +7 -1
  415. package/build/components/global-styles/utils.js +302 -358
  416. package/build/components/global-styles/utils.js.map +7 -1
  417. package/build/components/gradients/index.js +21 -15
  418. package/build/components/gradients/index.js.map +7 -1
  419. package/build/components/gradients/use-gradient.js +97 -83
  420. package/build/components/gradients/use-gradient.js.map +7 -1
  421. package/build/components/gradients/with-gradient.js +31 -20
  422. package/build/components/gradients/with-gradient.js.map +7 -1
  423. package/build/components/grid/grid-item-movers.js +160 -103
  424. package/build/components/grid/grid-item-movers.js.map +7 -1
  425. package/build/components/grid/grid-item-resizer.js +144 -108
  426. package/build/components/grid/grid-item-resizer.js.map +7 -1
  427. package/build/components/grid/grid-visualizer.js +279 -205
  428. package/build/components/grid/grid-visualizer.js.map +7 -1
  429. package/build/components/grid/index.js +34 -30
  430. package/build/components/grid/index.js.map +7 -1
  431. package/build/components/grid/use-get-number-of-blocks-before-cell.js +30 -24
  432. package/build/components/grid/use-get-number-of-blocks-before-cell.js.map +7 -1
  433. package/build/components/grid/use-grid-layout-sync.js +124 -118
  434. package/build/components/grid/use-grid-layout-sync.js.map +7 -1
  435. package/build/components/grid/utils.js +101 -80
  436. package/build/components/grid/utils.js.map +7 -1
  437. package/build/components/height-control/index.js +132 -196
  438. package/build/components/height-control/index.js.map +7 -1
  439. package/build/components/html-element-control/index.js +76 -91
  440. package/build/components/html-element-control/index.js.map +7 -1
  441. package/build/components/html-element-control/messages.js +58 -24
  442. package/build/components/html-element-control/messages.js.map +7 -1
  443. package/build/components/iframe/get-compatibility-styles.js +89 -87
  444. package/build/components/iframe/get-compatibility-styles.js.map +7 -1
  445. package/build/components/iframe/index.js +192 -214
  446. package/build/components/iframe/index.js.map +7 -1
  447. package/build/components/iframe/use-scale-canvas.js +164 -272
  448. package/build/components/iframe/use-scale-canvas.js.map +7 -1
  449. package/build/components/image-editor/aspect-ratio-dropdown.js +120 -106
  450. package/build/components/image-editor/aspect-ratio-dropdown.js.map +7 -1
  451. package/build/components/image-editor/constants.js +34 -9
  452. package/build/components/image-editor/constants.js.map +7 -1
  453. package/build/components/image-editor/context.js +54 -33
  454. package/build/components/image-editor/context.js.map +7 -1
  455. package/build/components/image-editor/cropper.js +85 -59
  456. package/build/components/image-editor/cropper.js.map +7 -1
  457. package/build/components/image-editor/form-controls.js +31 -32
  458. package/build/components/image-editor/form-controls.js.map +7 -1
  459. package/build/components/image-editor/index.js +73 -49
  460. package/build/components/image-editor/index.js.map +7 -1
  461. package/build/components/image-editor/rotation-button.js +37 -28
  462. package/build/components/image-editor/rotation-button.js.map +7 -1
  463. package/build/components/image-editor/use-save-image.js +98 -72
  464. package/build/components/image-editor/use-save-image.js.map +7 -1
  465. package/build/components/image-editor/use-transform-image.js +70 -45
  466. package/build/components/image-editor/use-transform-image.js.map +7 -1
  467. package/build/components/image-editor/zoom-dropdown.js +58 -50
  468. package/build/components/image-editor/zoom-dropdown.js.map +7 -1
  469. package/build/components/image-size-control/index.js +115 -102
  470. package/build/components/image-size-control/index.js.map +7 -1
  471. package/build/components/image-size-control/use-dimension-handler.js +40 -34
  472. package/build/components/image-size-control/use-dimension-handler.js.map +7 -1
  473. package/build/components/index.js +408 -1075
  474. package/build/components/index.js.map +7 -1
  475. package/build/components/inner-blocks/button-block-appender.js +49 -30
  476. package/build/components/inner-blocks/button-block-appender.js.map +7 -1
  477. package/build/components/inner-blocks/default-block-appender.js +37 -19
  478. package/build/components/inner-blocks/default-block-appender.js.map +7 -1
  479. package/build/components/inner-blocks/index.js +167 -190
  480. package/build/components/inner-blocks/index.js.map +7 -1
  481. package/build/components/inner-blocks/use-block-context.js +49 -37
  482. package/build/components/inner-blocks/use-block-context.js.map +7 -1
  483. package/build/components/inner-blocks/use-inner-block-template-sync.js +69 -73
  484. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +7 -1
  485. package/build/components/inner-blocks/use-nested-settings-update.js +82 -107
  486. package/build/components/inner-blocks/use-nested-settings-update.js.map +7 -1
  487. package/build/components/inserter/block-patterns-explorer/index.js +78 -59
  488. package/build/components/inserter/block-patterns-explorer/index.js.map +7 -1
  489. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +63 -49
  490. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +7 -1
  491. package/build/components/inserter/block-patterns-explorer/pattern-list.js +137 -85
  492. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +7 -1
  493. package/build/components/inserter/block-patterns-tab/index.js +89 -62
  494. package/build/components/inserter/block-patterns-tab/index.js.map +7 -1
  495. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +184 -114
  496. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +7 -1
  497. package/build/components/inserter/block-patterns-tab/patterns-filter.js +144 -104
  498. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +7 -1
  499. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +89 -38
  500. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +7 -1
  501. package/build/components/inserter/block-patterns-tab/utils.js +57 -42
  502. package/build/components/inserter/block-patterns-tab/utils.js.map +7 -1
  503. package/build/components/inserter/block-types-tab.js +173 -140
  504. package/build/components/inserter/block-types-tab.js.map +7 -1
  505. package/build/components/inserter/category-tabs/index.js +90 -71
  506. package/build/components/inserter/category-tabs/index.js.map +7 -1
  507. package/build/components/inserter/hooks/use-block-types-state.js +92 -68
  508. package/build/components/inserter/hooks/use-block-types-state.js.map +7 -1
  509. package/build/components/inserter/hooks/use-insertion-point.js +160 -127
  510. package/build/components/inserter/hooks/use-insertion-point.js.map +7 -1
  511. package/build/components/inserter/hooks/use-patterns-paging.js +47 -35
  512. package/build/components/inserter/hooks/use-patterns-paging.js.map +7 -1
  513. package/build/components/inserter/hooks/use-patterns-state.js +111 -84
  514. package/build/components/inserter/hooks/use-patterns-state.js.map +7 -1
  515. package/build/components/inserter/index.js +230 -237
  516. package/build/components/inserter/index.js.map +7 -1
  517. package/build/components/inserter/library.js +73 -53
  518. package/build/components/inserter/library.js.map +7 -1
  519. package/build/components/inserter/media-tab/hooks.js +88 -86
  520. package/build/components/inserter/media-tab/hooks.js.map +7 -1
  521. package/build/components/inserter/media-tab/index.js +41 -24
  522. package/build/components/inserter/media-tab/index.js.map +7 -1
  523. package/build/components/inserter/media-tab/media-list.js +45 -29
  524. package/build/components/inserter/media-tab/media-list.js.map +7 -1
  525. package/build/components/inserter/media-tab/media-panel.js +72 -52
  526. package/build/components/inserter/media-tab/media-panel.js.map +7 -1
  527. package/build/components/inserter/media-tab/media-preview.js +266 -238
  528. package/build/components/inserter/media-tab/media-preview.js.map +7 -1
  529. package/build/components/inserter/media-tab/media-tab.js +108 -84
  530. package/build/components/inserter/media-tab/media-tab.js.map +7 -1
  531. package/build/components/inserter/media-tab/utils.js +47 -45
  532. package/build/components/inserter/media-tab/utils.js.map +7 -1
  533. package/build/components/inserter/menu.js +317 -221
  534. package/build/components/inserter/menu.js.map +7 -1
  535. package/build/components/inserter/mobile-tab-navigation.js +82 -76
  536. package/build/components/inserter/mobile-tab-navigation.js.map +7 -1
  537. package/build/components/inserter/no-results.js +26 -18
  538. package/build/components/inserter/no-results.js.map +7 -1
  539. package/build/components/inserter/panel.js +33 -31
  540. package/build/components/inserter/panel.js.map +7 -1
  541. package/build/components/inserter/preview-panel.js +71 -64
  542. package/build/components/inserter/preview-panel.js.map +7 -1
  543. package/build/components/inserter/quick-inserter.js +114 -88
  544. package/build/components/inserter/quick-inserter.js.map +7 -1
  545. package/build/components/inserter/search-items.js +90 -114
  546. package/build/components/inserter/search-items.js.map +7 -1
  547. package/build/components/inserter/search-results.js +171 -115
  548. package/build/components/inserter/search-results.js.map +7 -1
  549. package/build/components/inserter/tips.js +55 -28
  550. package/build/components/inserter/tips.js.map +7 -1
  551. package/build/components/inserter-button/sparkles.js +30 -19
  552. package/build/components/inserter-button/sparkles.js.map +7 -1
  553. package/build/components/inserter-draggable-blocks/index.js +87 -75
  554. package/build/components/inserter-draggable-blocks/index.js.map +7 -1
  555. package/build/components/inserter-list-item/index.js +135 -100
  556. package/build/components/inserter-list-item/index.js.map +7 -1
  557. package/build/components/inserter-listbox/context.js +26 -13
  558. package/build/components/inserter-listbox/context.js.map +7 -1
  559. package/build/components/inserter-listbox/group.js +52 -32
  560. package/build/components/inserter-listbox/group.js.map +7 -1
  561. package/build/components/inserter-listbox/index.js +59 -52
  562. package/build/components/inserter-listbox/index.js.map +7 -1
  563. package/build/components/inserter-listbox/item.js +47 -47
  564. package/build/components/inserter-listbox/item.js.map +7 -1
  565. package/build/components/inserter-listbox/row.js +27 -18
  566. package/build/components/inserter-listbox/row.js.map +7 -1
  567. package/build/components/inserter-menu-extension/index.js +27 -15
  568. package/build/components/inserter-menu-extension/index.js.map +7 -1
  569. package/build/components/inspector-controls/block-support-slot-container.js +37 -28
  570. package/build/components/inspector-controls/block-support-slot-container.js.map +7 -1
  571. package/build/components/inspector-controls/block-support-tools-panel.js +74 -65
  572. package/build/components/inspector-controls/block-support-tools-panel.js.map +7 -1
  573. package/build/components/inspector-controls/fill.js +71 -74
  574. package/build/components/inspector-controls/fill.js.map +7 -1
  575. package/build/components/inspector-controls/groups.js +51 -24
  576. package/build/components/inspector-controls/groups.js.map +7 -1
  577. package/build/components/inspector-controls/index.js +48 -34
  578. package/build/components/inspector-controls/index.js.map +7 -1
  579. package/build/components/inspector-controls/slot.js +60 -46
  580. package/build/components/inspector-controls/slot.js.map +7 -1
  581. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +56 -30
  582. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +7 -1
  583. package/build/components/inspector-controls-tabs/content-tab.js +39 -28
  584. package/build/components/inspector-controls-tabs/content-tab.js.map +7 -1
  585. package/build/components/inspector-controls-tabs/index.js +96 -84
  586. package/build/components/inspector-controls-tabs/index.js.map +7 -1
  587. package/build/components/inspector-controls-tabs/position-controls-panel.js +90 -73
  588. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +7 -1
  589. package/build/components/inspector-controls-tabs/settings-tab.js +43 -24
  590. package/build/components/inspector-controls-tabs/settings-tab.js.map +7 -1
  591. package/build/components/inspector-controls-tabs/styles-tab.js +83 -56
  592. package/build/components/inspector-controls-tabs/styles-tab.js.map +7 -1
  593. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +67 -51
  594. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +7 -1
  595. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +30 -11
  596. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +7 -1
  597. package/build/components/inspector-controls-tabs/utils.js +54 -31
  598. package/build/components/inspector-controls-tabs/utils.js.map +7 -1
  599. package/build/components/inspector-popover-header/index.js +64 -46
  600. package/build/components/inspector-popover-header/index.js.map +7 -1
  601. package/build/components/justify-content-control/index.js +44 -28
  602. package/build/components/justify-content-control/index.js.map +7 -1
  603. package/build/components/justify-content-control/ui.js +86 -67
  604. package/build/components/justify-content-control/ui.js.map +7 -1
  605. package/build/components/keyboard-shortcuts/index.js +136 -107
  606. package/build/components/keyboard-shortcuts/index.js.map +7 -1
  607. package/build/components/letter-spacing-control/index.js +65 -55
  608. package/build/components/letter-spacing-control/index.js.map +7 -1
  609. package/build/components/line-height-control/index.js +75 -84
  610. package/build/components/line-height-control/index.js.map +7 -1
  611. package/build/components/line-height-control/utils.js +39 -33
  612. package/build/components/line-height-control/utils.js.map +7 -1
  613. package/build/components/link-control/constants.js +56 -23
  614. package/build/components/link-control/constants.js.map +7 -1
  615. package/build/components/link-control/index.js +336 -323
  616. package/build/components/link-control/index.js.map +7 -1
  617. package/build/components/link-control/is-url-like.js +31 -42
  618. package/build/components/link-control/is-url-like.js.map +7 -1
  619. package/build/components/link-control/link-preview.js +147 -140
  620. package/build/components/link-control/link-preview.js.map +7 -1
  621. package/build/components/link-control/search-create-button.js +53 -29
  622. package/build/components/link-control/search-create-button.js.map +7 -1
  623. package/build/components/link-control/search-input.js +154 -140
  624. package/build/components/link-control/search-input.js.map +7 -1
  625. package/build/components/link-control/search-item.js +108 -93
  626. package/build/components/link-control/search-item.js.map +7 -1
  627. package/build/components/link-control/search-results.js +100 -73
  628. package/build/components/link-control/search-results.js.map +7 -1
  629. package/build/components/link-control/settings-drawer.js +56 -51
  630. package/build/components/link-control/settings-drawer.js.map +7 -1
  631. package/build/components/link-control/settings.js +66 -35
  632. package/build/components/link-control/settings.js.map +7 -1
  633. package/build/components/link-control/use-create-page.js +44 -42
  634. package/build/components/link-control/use-create-page.js.map +7 -1
  635. package/build/components/link-control/use-internal-value.js +56 -35
  636. package/build/components/link-control/use-internal-value.js.map +7 -1
  637. package/build/components/link-control/use-rich-url-data.js +38 -38
  638. package/build/components/link-control/use-rich-url-data.js.map +7 -1
  639. package/build/components/link-control/use-search-handler.js +97 -87
  640. package/build/components/link-control/use-search-handler.js.map +7 -1
  641. package/build/components/link-control/viewer-slot.js +34 -17
  642. package/build/components/link-control/viewer-slot.js.map +7 -1
  643. package/build/components/list-view/appender.js +118 -98
  644. package/build/components/list-view/appender.js.map +7 -1
  645. package/build/components/list-view/aria-referenced-text.js +28 -32
  646. package/build/components/list-view/aria-referenced-text.js.map +7 -1
  647. package/build/components/list-view/block-contents.js +93 -78
  648. package/build/components/list-view/block-contents.js.map +7 -1
  649. package/build/components/list-view/block-select-button.js +147 -127
  650. package/build/components/list-view/block-select-button.js.map +7 -1
  651. package/build/components/list-view/block.js +386 -380
  652. package/build/components/list-view/block.js.map +7 -1
  653. package/build/components/list-view/branch.js +154 -147
  654. package/build/components/list-view/branch.js.map +7 -1
  655. package/build/components/list-view/context.js +32 -14
  656. package/build/components/list-view/context.js.map +7 -1
  657. package/build/components/list-view/drop-indicator.js +168 -172
  658. package/build/components/list-view/drop-indicator.js.map +7 -1
  659. package/build/components/list-view/expander.js +36 -27
  660. package/build/components/list-view/expander.js.map +7 -1
  661. package/build/components/list-view/index.js +279 -270
  662. package/build/components/list-view/index.js.map +7 -1
  663. package/build/components/list-view/leaf.js +74 -55
  664. package/build/components/list-view/leaf.js.map +7 -1
  665. package/build/components/list-view/use-block-selection.js +116 -108
  666. package/build/components/list-view/use-block-selection.js.map +7 -1
  667. package/build/components/list-view/use-clipboard-handler.js +71 -78
  668. package/build/components/list-view/use-clipboard-handler.js.map +7 -1
  669. package/build/components/list-view/use-list-view-block-indexes.js +26 -13
  670. package/build/components/list-view/use-list-view-block-indexes.js.map +7 -1
  671. package/build/components/list-view/use-list-view-client-ids.js +41 -32
  672. package/build/components/list-view/use-list-view-client-ids.js.map +7 -1
  673. package/build/components/list-view/use-list-view-collapse-items.js +32 -33
  674. package/build/components/list-view/use-list-view-collapse-items.js.map +7 -1
  675. package/build/components/list-view/use-list-view-drop-zone.js +189 -303
  676. package/build/components/list-view/use-list-view-drop-zone.js.map +7 -1
  677. package/build/components/list-view/use-list-view-expand-selected-item.js +46 -38
  678. package/build/components/list-view/use-list-view-expand-selected-item.js.map +7 -1
  679. package/build/components/list-view/use-list-view-images.js +44 -64
  680. package/build/components/list-view/use-list-view-images.js.map +7 -1
  681. package/build/components/list-view/use-list-view-scroll-into-view.js +27 -26
  682. package/build/components/list-view/use-list-view-scroll-into-view.js.map +7 -1
  683. package/build/components/list-view/utils.js +72 -120
  684. package/build/components/list-view/utils.js.map +7 -1
  685. package/build/components/media-placeholder/index.js +352 -298
  686. package/build/components/media-placeholder/index.js.map +7 -1
  687. package/build/components/media-replace-flow/index.js +181 -160
  688. package/build/components/media-replace-flow/index.js.map +7 -1
  689. package/build/components/media-upload/check.js +33 -29
  690. package/build/components/media-upload/check.js.map +7 -1
  691. package/build/components/media-upload/index.js +24 -22
  692. package/build/components/media-upload/index.js.map +7 -1
  693. package/build/components/media-upload-progress/constants.js +42 -11
  694. package/build/components/media-upload-progress/constants.js.map +7 -1
  695. package/build/components/multi-selection-inspector/index.js +59 -35
  696. package/build/components/multi-selection-inspector/index.js.map +7 -1
  697. package/build/components/navigable-toolbar/index.js +98 -103
  698. package/build/components/navigable-toolbar/index.js.map +7 -1
  699. package/build/components/observe-typing/index.js +142 -211
  700. package/build/components/observe-typing/index.js.map +7 -1
  701. package/build/components/panel-color-settings/index.js +47 -29
  702. package/build/components/panel-color-settings/index.js.map +7 -1
  703. package/build/components/plain-text/index.js +50 -79
  704. package/build/components/plain-text/index.js.map +7 -1
  705. package/build/components/preview-options/index.js +35 -13
  706. package/build/components/preview-options/index.js.map +7 -1
  707. package/build/components/provider/block-refs-provider.js +36 -27
  708. package/build/components/provider/block-refs-provider.js.map +7 -1
  709. package/build/components/provider/index.js +111 -97
  710. package/build/components/provider/index.js.map +7 -1
  711. package/build/components/provider/use-block-sync.js +57 -153
  712. package/build/components/provider/use-block-sync.js.map +7 -1
  713. package/build/components/provider/use-media-upload-settings.js +33 -24
  714. package/build/components/provider/use-media-upload-settings.js.map +7 -1
  715. package/build/components/provider/with-registry-provider.js +47 -43
  716. package/build/components/provider/with-registry-provider.js.map +7 -1
  717. package/build/components/publish-date-time-picker/index.js +76 -48
  718. package/build/components/publish-date-time-picker/index.js.map +7 -1
  719. package/build/components/recursion-provider/index.js +68 -93
  720. package/build/components/recursion-provider/index.js.map +7 -1
  721. package/build/components/resizable-box-popover/index.js +44 -25
  722. package/build/components/resizable-box-popover/index.js.map +7 -1
  723. package/build/components/resolution-tool/index.js +67 -43
  724. package/build/components/resolution-tool/index.js.map +7 -1
  725. package/build/components/responsive-block-control/index.js +114 -72
  726. package/build/components/responsive-block-control/index.js.map +7 -1
  727. package/build/components/responsive-block-control/label.js +40 -26
  728. package/build/components/responsive-block-control/label.js.map +7 -1
  729. package/build/components/rich-text/content.js +56 -48
  730. package/build/components/rich-text/content.js.map +7 -1
  731. package/build/components/rich-text/event-listeners/before-input-rules.js +45 -61
  732. package/build/components/rich-text/event-listeners/before-input-rules.js.map +7 -1
  733. package/build/components/rich-text/event-listeners/delete.js +34 -39
  734. package/build/components/rich-text/event-listeners/delete.js.map +7 -1
  735. package/build/components/rich-text/event-listeners/enter.js +43 -46
  736. package/build/components/rich-text/event-listeners/enter.js.map +7 -1
  737. package/build/components/rich-text/event-listeners/firefox-compat.js +31 -24
  738. package/build/components/rich-text/event-listeners/firefox-compat.js.map +7 -1
  739. package/build/components/rich-text/event-listeners/index.js +80 -40
  740. package/build/components/rich-text/event-listeners/index.js.map +7 -1
  741. package/build/components/rich-text/event-listeners/input-events.js +26 -12
  742. package/build/components/rich-text/event-listeners/input-events.js.map +7 -1
  743. package/build/components/rich-text/event-listeners/input-rules.js +68 -74
  744. package/build/components/rich-text/event-listeners/input-rules.js.map +7 -1
  745. package/build/components/rich-text/event-listeners/insert-replacement-text.js +29 -24
  746. package/build/components/rich-text/event-listeners/insert-replacement-text.js.map +7 -1
  747. package/build/components/rich-text/event-listeners/paste-handler.js +59 -72
  748. package/build/components/rich-text/event-listeners/paste-handler.js.map +7 -1
  749. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js +27 -18
  750. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +7 -1
  751. package/build/components/rich-text/event-listeners/shortcuts.js +26 -12
  752. package/build/components/rich-text/event-listeners/shortcuts.js.map +7 -1
  753. package/build/components/rich-text/event-listeners/undo-automatic-change.js +32 -31
  754. package/build/components/rich-text/event-listeners/undo-automatic-change.js.map +7 -1
  755. package/build/components/rich-text/format-edit.js +72 -57
  756. package/build/components/rich-text/format-edit.js.map +7 -1
  757. package/build/components/rich-text/format-toolbar/index.js +79 -61
  758. package/build/components/rich-text/format-toolbar/index.js.map +7 -1
  759. package/build/components/rich-text/format-toolbar-container.js +61 -52
  760. package/build/components/rich-text/format-toolbar-container.js.map +7 -1
  761. package/build/components/rich-text/get-rich-text-values.js +75 -54
  762. package/build/components/rich-text/get-rich-text-values.js.map +7 -1
  763. package/build/components/rich-text/index.js +340 -340
  764. package/build/components/rich-text/index.js.map +7 -1
  765. package/build/components/rich-text/input-event.js +32 -22
  766. package/build/components/rich-text/input-event.js.map +7 -1
  767. package/build/components/rich-text/multiline.js +104 -76
  768. package/build/components/rich-text/multiline.js.map +7 -1
  769. package/build/components/rich-text/native/format-edit.js +44 -30
  770. package/build/components/rich-text/native/format-edit.js.map +7 -1
  771. package/build/components/rich-text/native/index.js +24 -7
  772. package/build/components/rich-text/native/index.js.map +7 -1
  773. package/build/components/rich-text/native/use-format-types.js +89 -63
  774. package/build/components/rich-text/native/use-format-types.js.map +7 -1
  775. package/build/components/rich-text/prevent-event-discovery.js +31 -17
  776. package/build/components/rich-text/prevent-event-discovery.js.map +7 -1
  777. package/build/components/rich-text/shortcut.js +34 -25
  778. package/build/components/rich-text/shortcut.js.map +7 -1
  779. package/build/components/rich-text/toolbar-button.js +32 -21
  780. package/build/components/rich-text/toolbar-button.js.map +7 -1
  781. package/build/components/rich-text/use-format-types.js +127 -90
  782. package/build/components/rich-text/use-format-types.js.map +7 -1
  783. package/build/components/rich-text/use-mark-persistent.js +34 -32
  784. package/build/components/rich-text/use-mark-persistent.js.map +7 -1
  785. package/build/components/rich-text/utils.js +46 -45
  786. package/build/components/rich-text/utils.js.map +7 -1
  787. package/build/components/rich-text/with-deprecations.js +64 -37
  788. package/build/components/rich-text/with-deprecations.js.map +7 -1
  789. package/build/components/selection-scroll-into-view/index.js +40 -20
  790. package/build/components/selection-scroll-into-view/index.js.map +7 -1
  791. package/build/components/skip-to-selected-block/index.js +46 -33
  792. package/build/components/skip-to-selected-block/index.js.map +7 -1
  793. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +56 -39
  794. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +7 -1
  795. package/build/components/spacing-sizes-control/index.js +91 -113
  796. package/build/components/spacing-sizes-control/index.js.map +7 -1
  797. package/build/components/spacing-sizes-control/input-controls/axial.js +61 -38
  798. package/build/components/spacing-sizes-control/input-controls/axial.js.map +7 -1
  799. package/build/components/spacing-sizes-control/input-controls/separated.js +57 -32
  800. package/build/components/spacing-sizes-control/input-controls/separated.js.map +7 -1
  801. package/build/components/spacing-sizes-control/input-controls/single.js +56 -29
  802. package/build/components/spacing-sizes-control/input-controls/single.js.map +7 -1
  803. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +239 -276
  804. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +7 -1
  805. package/build/components/spacing-sizes-control/linked-button.js +38 -25
  806. package/build/components/spacing-sizes-control/linked-button.js.map +7 -1
  807. package/build/components/spacing-sizes-control/utils.js +112 -180
  808. package/build/components/spacing-sizes-control/utils.js.map +7 -1
  809. package/build/components/tabbed-sidebar/index.js +77 -99
  810. package/build/components/tabbed-sidebar/index.js.map +7 -1
  811. package/build/components/text-alignment-control/index.js +95 -69
  812. package/build/components/text-alignment-control/index.js.map +7 -1
  813. package/build/components/text-decoration-control/index.js +82 -61
  814. package/build/components/text-decoration-control/index.js.map +7 -1
  815. package/build/components/text-transform-control/index.js +88 -70
  816. package/build/components/text-transform-control/index.js.map +7 -1
  817. package/build/components/typewriter/index.js +173 -211
  818. package/build/components/typewriter/index.js.map +7 -1
  819. package/build/components/unit-control/index.js +30 -27
  820. package/build/components/unit-control/index.js.map +7 -1
  821. package/build/components/url-input/button.js +93 -74
  822. package/build/components/url-input/button.js.map +7 -1
  823. package/build/components/url-input/index.js +211 -247
  824. package/build/components/url-input/index.js.map +7 -1
  825. package/build/components/url-popover/image-url-input-ui.js +253 -202
  826. package/build/components/url-popover/image-url-input-ui.js.map +7 -1
  827. package/build/components/url-popover/index.js +113 -101
  828. package/build/components/url-popover/index.js.map +7 -1
  829. package/build/components/url-popover/link-editor.js +67 -38
  830. package/build/components/url-popover/link-editor.js.map +7 -1
  831. package/build/components/url-popover/link-viewer-url.js +43 -32
  832. package/build/components/url-popover/link-viewer-url.js.map +7 -1
  833. package/build/components/url-popover/link-viewer.js +67 -38
  834. package/build/components/url-popover/link-viewer.js.map +7 -1
  835. package/build/components/use-block-commands/index.js +181 -151
  836. package/build/components/use-block-commands/index.js.map +7 -1
  837. package/build/components/use-block-display-information/index.js +74 -105
  838. package/build/components/use-block-display-information/index.js.map +7 -1
  839. package/build/components/use-block-drop-zone/index.js +303 -309
  840. package/build/components/use-block-drop-zone/index.js.map +7 -1
  841. package/build/components/use-flash-editable-blocks/index.js +66 -52
  842. package/build/components/use-flash-editable-blocks/index.js.map +7 -1
  843. package/build/components/use-moving-animation/index.js +66 -111
  844. package/build/components/use-moving-animation/index.js.map +7 -1
  845. package/build/components/use-on-block-drop/index.js +201 -180
  846. package/build/components/use-on-block-drop/index.js.map +7 -1
  847. package/build/components/use-on-block-drop/types.js +16 -5
  848. package/build/components/use-on-block-drop/types.js.map +7 -1
  849. package/build/components/use-paste-styles/index.js +144 -142
  850. package/build/components/use-paste-styles/index.js.map +7 -1
  851. package/build/components/use-resize-canvas/index.js +38 -32
  852. package/build/components/use-resize-canvas/index.js.map +7 -1
  853. package/build/components/use-settings/index.js +55 -57
  854. package/build/components/use-settings/index.js.map +7 -1
  855. package/build/components/warning/index.js +73 -65
  856. package/build/components/warning/index.js.map +7 -1
  857. package/build/components/writing-flow/index.js +111 -72
  858. package/build/components/writing-flow/index.js.map +7 -1
  859. package/build/components/writing-flow/use-arrow-nav.js +115 -153
  860. package/build/components/writing-flow/use-arrow-nav.js.map +7 -1
  861. package/build/components/writing-flow/use-click-selection.js +55 -55
  862. package/build/components/writing-flow/use-click-selection.js.map +7 -1
  863. package/build/components/writing-flow/use-clipboard-handler.js +83 -87
  864. package/build/components/writing-flow/use-clipboard-handler.js.map +7 -1
  865. package/build/components/writing-flow/use-drag-selection.js +99 -149
  866. package/build/components/writing-flow/use-drag-selection.js.map +7 -1
  867. package/build/components/writing-flow/use-input.js +72 -62
  868. package/build/components/writing-flow/use-input.js.map +7 -1
  869. package/build/components/writing-flow/use-multi-selection.js +57 -61
  870. package/build/components/writing-flow/use-multi-selection.js.map +7 -1
  871. package/build/components/writing-flow/use-select-all.js +39 -37
  872. package/build/components/writing-flow/use-select-all.js.map +7 -1
  873. package/build/components/writing-flow/use-selection-observer.js +136 -188
  874. package/build/components/writing-flow/use-selection-observer.js.map +7 -1
  875. package/build/components/writing-flow/use-tab-nav.js +97 -147
  876. package/build/components/writing-flow/use-tab-nav.js.map +7 -1
  877. package/build/components/writing-flow/utils.js +59 -71
  878. package/build/components/writing-flow/utils.js.map +7 -1
  879. package/build/components/writing-mode-control/index.js +75 -62
  880. package/build/components/writing-mode-control/index.js.map +7 -1
  881. package/build/elements/index.js +30 -10
  882. package/build/elements/index.js.map +7 -1
  883. package/build/hooks/align.js +102 -133
  884. package/build/hooks/align.js.map +7 -1
  885. package/build/hooks/allowed-blocks.js +84 -0
  886. package/build/hooks/allowed-blocks.js.map +7 -0
  887. package/build/hooks/anchor.js +81 -88
  888. package/build/hooks/anchor.js.map +7 -1
  889. package/build/hooks/aria-label.js +43 -43
  890. package/build/hooks/aria-label.js.map +7 -1
  891. package/build/hooks/background.js +112 -112
  892. package/build/hooks/background.js.map +7 -1
  893. package/build/hooks/block-bindings.js +394 -248
  894. package/build/hooks/block-bindings.js.map +7 -1
  895. package/build/hooks/block-hooks.js +171 -163
  896. package/build/hooks/block-hooks.js.map +7 -1
  897. package/build/hooks/block-renaming.js +41 -32
  898. package/build/hooks/block-renaming.js.map +7 -1
  899. package/build/hooks/block-style-variation.js +152 -180
  900. package/build/hooks/block-style-variation.js.map +7 -1
  901. package/build/hooks/border.js +183 -254
  902. package/build/hooks/border.js.map +7 -1
  903. package/build/hooks/color.js +216 -195
  904. package/build/hooks/color.js.map +7 -1
  905. package/build/hooks/compat.js +10 -13
  906. package/build/hooks/compat.js.map +7 -1
  907. package/build/hooks/content-lock-ui.js +51 -58
  908. package/build/hooks/content-lock-ui.js.map +7 -1
  909. package/build/hooks/contrast-checker.js +67 -46
  910. package/build/hooks/contrast-checker.js.map +7 -1
  911. package/build/hooks/custom-class-name.js +84 -87
  912. package/build/hooks/custom-class-name.js.map +7 -1
  913. package/build/hooks/dimensions.js +153 -141
  914. package/build/hooks/dimensions.js.map +7 -1
  915. package/build/hooks/duotone.js +173 -194
  916. package/build/hooks/duotone.js.map +7 -1
  917. package/build/hooks/fit-text.js +206 -0
  918. package/build/hooks/fit-text.js.map +7 -0
  919. package/build/hooks/font-family.js +70 -78
  920. package/build/hooks/font-family.js.map +7 -1
  921. package/build/hooks/font-size.js +134 -127
  922. package/build/hooks/font-size.js.map +7 -1
  923. package/build/hooks/gap.js +33 -31
  924. package/build/hooks/gap.js.map +7 -1
  925. package/build/hooks/generated-class-name.js +42 -32
  926. package/build/hooks/generated-class-name.js.map +7 -1
  927. package/build/hooks/grid-visualizer.js +51 -60
  928. package/build/hooks/grid-visualizer.js.map +7 -1
  929. package/build/hooks/index.js +157 -147
  930. package/build/hooks/index.js.map +7 -1
  931. package/build/hooks/layout-child.js +128 -141
  932. package/build/hooks/layout-child.js.map +7 -1
  933. package/build/hooks/layout.js +260 -295
  934. package/build/hooks/layout.js.map +7 -1
  935. package/build/hooks/line-height.js +61 -55
  936. package/build/hooks/line-height.js.map +7 -1
  937. package/build/hooks/lock.js +30 -23
  938. package/build/hooks/lock.js.map +7 -1
  939. package/build/hooks/metadata.js +34 -23
  940. package/build/hooks/metadata.js.map +7 -1
  941. package/build/hooks/position.js +169 -240
  942. package/build/hooks/position.js.map +7 -1
  943. package/build/hooks/settings.js +10 -13
  944. package/build/hooks/settings.js.map +7 -1
  945. package/build/hooks/spacing-visualizer.js +108 -88
  946. package/build/hooks/spacing-visualizer.js.map +7 -1
  947. package/build/hooks/style.js +157 -281
  948. package/build/hooks/style.js.map +7 -1
  949. package/build/hooks/supports.js +145 -288
  950. package/build/hooks/supports.js.map +7 -1
  951. package/build/hooks/text-align.js +110 -101
  952. package/build/hooks/text-align.js.map +7 -1
  953. package/build/hooks/typography.js +139 -107
  954. package/build/hooks/typography.js.map +7 -1
  955. package/build/hooks/use-border-props.js +47 -52
  956. package/build/hooks/use-border-props.js.map +7 -1
  957. package/build/hooks/use-cached-truthy.js +29 -18
  958. package/build/hooks/use-cached-truthy.js.map +7 -1
  959. package/build/hooks/use-color-props.js +101 -89
  960. package/build/hooks/use-color-props.js.map +7 -1
  961. package/build/hooks/use-shadow-props.js +29 -25
  962. package/build/hooks/use-shadow-props.js.map +7 -1
  963. package/build/hooks/use-spacing-props.js +29 -30
  964. package/build/hooks/use-spacing-props.js.map +7 -1
  965. package/build/hooks/use-typography-props.js +55 -51
  966. package/build/hooks/use-typography-props.js.map +7 -1
  967. package/build/hooks/use-zoom-out.js +40 -56
  968. package/build/hooks/use-zoom-out.js.map +7 -1
  969. package/build/hooks/utils.js +421 -251
  970. package/build/hooks/utils.js.map +7 -1
  971. package/build/index.js +65 -150
  972. package/build/index.js.map +7 -1
  973. package/build/layouts/constrained.js +211 -211
  974. package/build/layouts/constrained.js.map +7 -1
  975. package/build/layouts/definitions.js +188 -144
  976. package/build/layouts/definitions.js.map +7 -1
  977. package/build/layouts/flex.js +250 -239
  978. package/build/layouts/flex.js.map +7 -1
  979. package/build/layouts/flow.js +59 -61
  980. package/build/layouts/flow.js.map +7 -1
  981. package/build/layouts/grid.js +247 -249
  982. package/build/layouts/grid.js.map +7 -1
  983. package/build/layouts/index.js +45 -31
  984. package/build/layouts/index.js.map +7 -1
  985. package/build/layouts/utils.js +51 -70
  986. package/build/layouts/utils.js.map +7 -1
  987. package/build/lock-unlock.js +31 -14
  988. package/build/lock-unlock.js.map +7 -1
  989. package/build/private-apis.js +119 -97
  990. package/build/private-apis.js.map +7 -1
  991. package/build/store/actions.js +620 -1283
  992. package/build/store/actions.js.map +7 -1
  993. package/build/store/array.js +38 -28
  994. package/build/store/array.js.map +7 -1
  995. package/build/store/constants.js +27 -6
  996. package/build/store/constants.js.map +7 -1
  997. package/build/store/defaults.js +191 -202
  998. package/build/store/defaults.js.map +7 -1
  999. package/build/store/get-block-settings.js +105 -96
  1000. package/build/store/get-block-settings.js.map +7 -1
  1001. package/build/store/index.js +56 -56
  1002. package/build/store/index.js.map +7 -1
  1003. package/build/store/private-actions.js +158 -323
  1004. package/build/store/private-actions.js.map +7 -1
  1005. package/build/store/private-keys.js +45 -12
  1006. package/build/store/private-keys.js.map +7 -1
  1007. package/build/store/private-selectors.js +304 -456
  1008. package/build/store/private-selectors.js.map +7 -1
  1009. package/build/store/reducer.js +1143 -1824
  1010. package/build/store/reducer.js.map +7 -1
  1011. package/build/store/selectors.js +1191 -2198
  1012. package/build/store/selectors.js.map +7 -1
  1013. package/build/store/utils.js +87 -54
  1014. package/build/store/utils.js.map +7 -1
  1015. package/build/utils/block-bindings.js +47 -225
  1016. package/build/utils/block-bindings.js.map +7 -1
  1017. package/build/utils/dom.js +58 -105
  1018. package/build/utils/dom.js.map +7 -1
  1019. package/build/utils/fit-text-frontend.js +41 -0
  1020. package/build/utils/fit-text-frontend.js.map +7 -0
  1021. package/build/utils/fit-text-utils.js +63 -0
  1022. package/build/utils/fit-text-utils.js.map +7 -0
  1023. package/build/utils/format-font-style.js +35 -27
  1024. package/build/utils/format-font-style.js.map +7 -1
  1025. package/build/utils/format-font-weight.js +51 -43
  1026. package/build/utils/format-font-weight.js.map +7 -1
  1027. package/build/utils/get-editor-region.js +27 -25
  1028. package/build/utils/get-editor-region.js.map +7 -1
  1029. package/build/utils/get-font-styles-and-weights.js +113 -107
  1030. package/build/utils/get-font-styles-and-weights.js.map +7 -1
  1031. package/build/utils/get-px-from-css-unit.js +23 -14
  1032. package/build/utils/get-px-from-css-unit.js.map +7 -1
  1033. package/build/utils/index.js +41 -24
  1034. package/build/utils/index.js.map +7 -1
  1035. package/build/utils/math.js +40 -82
  1036. package/build/utils/math.js.map +7 -1
  1037. package/build/utils/object.js +37 -57
  1038. package/build/utils/object.js.map +7 -1
  1039. package/build/utils/order-inserter-block-items.js +27 -22
  1040. package/build/utils/order-inserter-block-items.js.map +7 -1
  1041. package/build/utils/pasting.js +41 -85
  1042. package/build/utils/pasting.js.map +7 -1
  1043. package/build/utils/selection.js +35 -29
  1044. package/build/utils/selection.js.map +7 -1
  1045. package/build/utils/sorting.js +32 -33
  1046. package/build/utils/sorting.js.map +7 -1
  1047. package/build/utils/transform-styles/index.js +101 -145
  1048. package/build/utils/transform-styles/index.js.map +7 -1
  1049. package/build/utils/use-notify-copy.js +81 -55
  1050. package/build/utils/use-notify-copy.js.map +7 -1
  1051. package/build-module/autocompleters/block.js +92 -79
  1052. package/build-module/autocompleters/block.js.map +7 -1
  1053. package/build-module/autocompleters/link.js +29 -41
  1054. package/build-module/autocompleters/link.js.map +7 -1
  1055. package/build-module/components/alignment-control/index.js +11 -21
  1056. package/build-module/components/alignment-control/index.js.map +7 -1
  1057. package/build-module/components/alignment-control/ui.js +52 -47
  1058. package/build-module/components/alignment-control/ui.js.map +7 -1
  1059. package/build-module/components/autocomplete/index.js +31 -53
  1060. package/build-module/components/autocomplete/index.js.map +7 -1
  1061. package/build-module/components/background-image-control/index.js +485 -419
  1062. package/build-module/components/background-image-control/index.js.map +7 -1
  1063. package/build-module/components/block-actions/index.js +51 -55
  1064. package/build-module/components/block-actions/index.js.map +7 -1
  1065. package/build-module/components/block-alignment-control/constants.js +22 -14
  1066. package/build-module/components/block-alignment-control/constants.js.map +7 -1
  1067. package/build-module/components/block-alignment-control/index.js +11 -21
  1068. package/build-module/components/block-alignment-control/index.js.map +7 -1
  1069. package/build-module/components/block-alignment-control/ui.js +47 -60
  1070. package/build-module/components/block-alignment-control/ui.js.map +7 -1
  1071. package/build-module/components/block-alignment-control/use-available-alignments.js +41 -48
  1072. package/build-module/components/block-alignment-control/use-available-alignments.js.map +7 -1
  1073. package/build-module/components/block-alignment-matrix-control/index.js +52 -77
  1074. package/build-module/components/block-alignment-matrix-control/index.js.map +7 -1
  1075. package/build-module/components/block-allowed-blocks/allowed-blocks-control.js +69 -0
  1076. package/build-module/components/block-allowed-blocks/allowed-blocks-control.js.map +7 -0
  1077. package/build-module/components/block-allowed-blocks/index.js +7 -0
  1078. package/build-module/components/block-allowed-blocks/index.js.map +7 -0
  1079. package/build-module/components/block-allowed-blocks/modal.js +101 -0
  1080. package/build-module/components/block-allowed-blocks/modal.js.map +7 -0
  1081. package/build-module/components/block-breadcrumb/index.js +94 -96
  1082. package/build-module/components/block-breadcrumb/index.js.map +7 -1
  1083. package/build-module/components/block-canvas/index.js +85 -113
  1084. package/build-module/components/block-canvas/index.js.map +7 -1
  1085. package/build-module/components/block-card/index.js +67 -115
  1086. package/build-module/components/block-card/index.js.map +7 -1
  1087. package/build-module/components/block-compare/block-view.js +21 -31
  1088. package/build-module/components/block-compare/block-view.js.map +7 -1
  1089. package/build-module/components/block-compare/index.js +44 -52
  1090. package/build-module/components/block-compare/index.js.map +7 -1
  1091. package/build-module/components/block-content-overlay/index.js +14 -17
  1092. package/build-module/components/block-content-overlay/index.js.map +7 -1
  1093. package/build-module/components/block-context/index.js +15 -40
  1094. package/build-module/components/block-context/index.js.map +7 -1
  1095. package/build-module/components/block-controls/fill.js +27 -35
  1096. package/build-module/components/block-controls/fill.js.map +7 -1
  1097. package/build-module/components/block-controls/groups.js +11 -11
  1098. package/build-module/components/block-controls/groups.js.map +7 -1
  1099. package/build-module/components/block-controls/hook.js +11 -11
  1100. package/build-module/components/block-controls/hook.js.map +7 -1
  1101. package/build-module/components/block-controls/index.js +13 -20
  1102. package/build-module/components/block-controls/index.js.map +7 -1
  1103. package/build-module/components/block-controls/slot.js +31 -41
  1104. package/build-module/components/block-controls/slot.js.map +7 -1
  1105. package/build-module/components/block-draggable/draggable-chip.js +32 -39
  1106. package/build-module/components/block-draggable/draggable-chip.js.map +7 -1
  1107. package/build-module/components/block-draggable/index.js +131 -134
  1108. package/build-module/components/block-draggable/index.js.map +7 -1
  1109. package/build-module/components/block-draggable/use-scroll-when-dragging.js +36 -38
  1110. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +7 -1
  1111. package/build-module/components/block-edit/context.js +22 -24
  1112. package/build-module/components/block-edit/context.js.map +7 -1
  1113. package/build-module/components/block-edit/edit.js +212 -178
  1114. package/build-module/components/block-edit/edit.js.map +7 -1
  1115. package/build-module/components/block-edit/index.js +70 -64
  1116. package/build-module/components/block-edit/index.js.map +7 -1
  1117. package/build-module/components/block-edit/multiple-usage-warning.js +47 -35
  1118. package/build-module/components/block-edit/multiple-usage-warning.js.map +7 -1
  1119. package/build-module/components/block-edit-visually-button/index.js +22 -27
  1120. package/build-module/components/block-edit-visually-button/index.js.map +7 -1
  1121. package/build-module/components/block-editing-mode/index.js +21 -58
  1122. package/build-module/components/block-editing-mode/index.js.map +7 -1
  1123. package/build-module/components/block-full-height-alignment-control/index.js +20 -17
  1124. package/build-module/components/block-full-height-alignment-control/index.js.map +7 -1
  1125. package/build-module/components/block-heading-level-dropdown/heading-level-icon.js +17 -31
  1126. package/build-module/components/block-heading-level-dropdown/heading-level-icon.js.map +7 -1
  1127. package/build-module/components/block-heading-level-dropdown/index.js +37 -60
  1128. package/build-module/components/block-heading-level-dropdown/index.js.map +7 -1
  1129. package/build-module/components/block-icon/index.js +23 -36
  1130. package/build-module/components/block-icon/index.js.map +7 -1
  1131. package/build-module/components/block-inspector/edit-contents-button.js +35 -43
  1132. package/build-module/components/block-inspector/edit-contents-button.js.map +7 -1
  1133. package/build-module/components/block-inspector/index.js +208 -189
  1134. package/build-module/components/block-inspector/index.js.map +7 -1
  1135. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js +27 -34
  1136. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js.map +7 -1
  1137. package/build-module/components/block-list/block-crash-boundary.js +6 -6
  1138. package/build-module/components/block-list/block-crash-boundary.js.map +7 -1
  1139. package/build-module/components/block-list/block-crash-warning.js +9 -16
  1140. package/build-module/components/block-list/block-crash-warning.js.map +7 -1
  1141. package/build-module/components/block-list/block-html.js +38 -38
  1142. package/build-module/components/block-list/block-html.js.map +7 -1
  1143. package/build-module/components/block-list/block-invalid-warning.js +123 -99
  1144. package/build-module/components/block-list/block-invalid-warning.js.map +7 -1
  1145. package/build-module/components/block-list/block.js +332 -398
  1146. package/build-module/components/block-list/block.js.map +7 -1
  1147. package/build-module/components/block-list/index.js +187 -167
  1148. package/build-module/components/block-list/index.js.map +7 -1
  1149. package/build-module/components/block-list/layout.js +19 -38
  1150. package/build-module/components/block-list/layout.js.map +7 -1
  1151. package/build-module/components/block-list/private-block-context.js +7 -7
  1152. package/build-module/components/block-list/private-block-context.js.map +7 -1
  1153. package/build-module/components/block-list/subdirectory-icon.js +25 -21
  1154. package/build-module/components/block-list/subdirectory-icon.js.map +7 -1
  1155. package/build-module/components/block-list/use-block-props/index.js +87 -141
  1156. package/build-module/components/block-list/use-block-props/index.js.map +7 -1
  1157. package/build-module/components/block-list/use-block-props/use-block-refs.js +26 -54
  1158. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +7 -1
  1159. package/build-module/components/block-list/use-block-props/use-firefox-draggable-compatibility.js +21 -43
  1160. package/build-module/components/block-list/use-block-props/use-firefox-draggable-compatibility.js.map +7 -1
  1161. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +23 -51
  1162. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +7 -1
  1163. package/build-module/components/block-list/use-block-props/use-focus-handler.js +33 -62
  1164. package/build-module/components/block-list/use-block-props/use-focus-handler.js.map +7 -1
  1165. package/build-module/components/block-list/use-block-props/use-intersection-observer.js +19 -20
  1166. package/build-module/components/block-list/use-block-props/use-intersection-observer.js.map +7 -1
  1167. package/build-module/components/block-list/use-block-props/use-is-hovered.js +16 -20
  1168. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +7 -1
  1169. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js +31 -34
  1170. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js.map +7 -1
  1171. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +182 -167
  1172. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +7 -1
  1173. package/build-module/components/block-list/use-in-between-inserter.js +99 -107
  1174. package/build-module/components/block-list/use-in-between-inserter.js.map +7 -1
  1175. package/build-module/components/block-list/zoom-out-separator.js +54 -72
  1176. package/build-module/components/block-list/zoom-out-separator.js.map +7 -1
  1177. package/build-module/components/block-list-appender/index.js +52 -81
  1178. package/build-module/components/block-list-appender/index.js.map +7 -1
  1179. package/build-module/components/block-lock/index.js +11 -5
  1180. package/build-module/components/block-lock/index.js.map +7 -1
  1181. package/build-module/components/block-lock/menu-item.js +31 -36
  1182. package/build-module/components/block-lock/menu-item.js.map +7 -1
  1183. package/build-module/components/block-lock/modal.js +211 -176
  1184. package/build-module/components/block-lock/modal.js.map +7 -1
  1185. package/build-module/components/block-lock/toolbar.js +28 -42
  1186. package/build-module/components/block-lock/toolbar.js.map +7 -1
  1187. package/build-module/components/block-lock/use-block-lock.js +31 -40
  1188. package/build-module/components/block-lock/use-block-lock.js.map +7 -1
  1189. package/build-module/components/block-manager/category.js +82 -58
  1190. package/build-module/components/block-manager/category.js.map +7 -1
  1191. package/build-module/components/block-manager/checklist.js +27 -30
  1192. package/build-module/components/block-manager/checklist.js.map +7 -1
  1193. package/build-module/components/block-manager/index.js +95 -83
  1194. package/build-module/components/block-manager/index.js.map +7 -1
  1195. package/build-module/components/block-mover/button.js +124 -124
  1196. package/build-module/components/block-mover/button.js.map +7 -1
  1197. package/build-module/components/block-mover/index.js +83 -90
  1198. package/build-module/components/block-mover/index.js.map +7 -1
  1199. package/build-module/components/block-mover/mover-description.js +191 -134
  1200. package/build-module/components/block-mover/mover-description.js.map +7 -1
  1201. package/build-module/components/block-navigation/dropdown.js +58 -66
  1202. package/build-module/components/block-navigation/dropdown.js.map +7 -1
  1203. package/build-module/components/block-parent-selector/index.js +41 -51
  1204. package/build-module/components/block-parent-selector/index.js.map +7 -1
  1205. package/build-module/components/block-pattern-setup/constants.js +7 -4
  1206. package/build-module/components/block-pattern-setup/constants.js.map +7 -1
  1207. package/build-module/components/block-pattern-setup/index.js +142 -136
  1208. package/build-module/components/block-pattern-setup/index.js.map +7 -1
  1209. package/build-module/components/block-pattern-setup/setup-toolbar.js +80 -67
  1210. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +7 -1
  1211. package/build-module/components/block-pattern-setup/use-patterns-setup.js +24 -23
  1212. package/build-module/components/block-pattern-setup/use-patterns-setup.js.map +7 -1
  1213. package/build-module/components/block-patterns-list/index.js +160 -152
  1214. package/build-module/components/block-patterns-list/index.js.map +7 -1
  1215. package/build-module/components/block-patterns-paging/index.js +107 -80
  1216. package/build-module/components/block-patterns-paging/index.js.map +7 -1
  1217. package/build-module/components/block-popover/cover.js +31 -35
  1218. package/build-module/components/block-popover/cover.js.map +7 -1
  1219. package/build-module/components/block-popover/drop-zone.js +35 -47
  1220. package/build-module/components/block-popover/drop-zone.js.map +7 -1
  1221. package/build-module/components/block-popover/inbetween.js +90 -118
  1222. package/build-module/components/block-popover/inbetween.js.map +7 -1
  1223. package/build-module/components/block-popover/index.js +84 -83
  1224. package/build-module/components/block-popover/index.js.map +7 -1
  1225. package/build-module/components/block-popover/use-popover-scroll.js +30 -48
  1226. package/build-module/components/block-popover/use-popover-scroll.js.map +7 -1
  1227. package/build-module/components/block-preview/async.js +7 -26
  1228. package/build-module/components/block-preview/async.js.map +7 -1
  1229. package/build-module/components/block-preview/auto.js +84 -96
  1230. package/build-module/components/block-preview/auto.js.map +7 -1
  1231. package/build-module/components/block-preview/index.js +100 -106
  1232. package/build-module/components/block-preview/index.js.map +7 -1
  1233. package/build-module/components/block-quick-navigation/index.js +59 -68
  1234. package/build-module/components/block-quick-navigation/index.js.map +7 -1
  1235. package/build-module/components/block-removal-warning-modal/index.js +56 -48
  1236. package/build-module/components/block-removal-warning-modal/index.js.map +7 -1
  1237. package/build-module/components/block-rename/index.js +9 -4
  1238. package/build-module/components/block-rename/index.js.map +7 -1
  1239. package/build-module/components/block-rename/is-empty-string.js +5 -2
  1240. package/build-module/components/block-rename/is-empty-string.js.map +7 -1
  1241. package/build-module/components/block-rename/modal.js +110 -94
  1242. package/build-module/components/block-rename/modal.js.map +7 -1
  1243. package/build-module/components/block-rename/rename-control.js +30 -29
  1244. package/build-module/components/block-rename/rename-control.js.map +7 -1
  1245. package/build-module/components/block-rename/use-block-rename.js +7 -7
  1246. package/build-module/components/block-rename/use-block-rename.js.map +7 -1
  1247. package/build-module/components/block-selection-clearer/index.js +33 -54
  1248. package/build-module/components/block-selection-clearer/index.js.map +7 -1
  1249. package/build-module/components/block-settings-menu/block-html-convert-button.js +28 -29
  1250. package/build-module/components/block-settings-menu/block-html-convert-button.js.map +7 -1
  1251. package/build-module/components/block-settings-menu/block-mode-toggle.js +38 -48
  1252. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +7 -1
  1253. package/build-module/components/block-settings-menu/block-parent-selector-menu-item.js +30 -35
  1254. package/build-module/components/block-settings-menu/block-parent-selector-menu-item.js.map +7 -1
  1255. package/build-module/components/block-settings-menu/block-settings-dropdown.js +259 -226
  1256. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +7 -1
  1257. package/build-module/components/block-settings-menu/block-settings-menu-first-item.js +9 -10
  1258. package/build-module/components/block-settings-menu/block-settings-menu-first-item.js.map +7 -1
  1259. package/build-module/components/block-settings-menu/index.js +21 -25
  1260. package/build-module/components/block-settings-menu/index.js.map +7 -1
  1261. package/build-module/components/block-settings-menu-controls/index.js +110 -95
  1262. package/build-module/components/block-settings-menu-controls/index.js.map +7 -1
  1263. package/build-module/components/block-styles/index.js +72 -66
  1264. package/build-module/components/block-styles/index.js.map +7 -1
  1265. package/build-module/components/block-styles/menu-items.js +31 -36
  1266. package/build-module/components/block-styles/menu-items.js.map +7 -1
  1267. package/build-module/components/block-styles/preview-panel.js +12 -18
  1268. package/build-module/components/block-styles/preview-panel.js.map +7 -1
  1269. package/build-module/components/block-styles/use-styles-for-block.js +35 -61
  1270. package/build-module/components/block-styles/use-styles-for-block.js.map +7 -1
  1271. package/build-module/components/block-styles/utils.js +28 -60
  1272. package/build-module/components/block-styles/utils.js.map +7 -1
  1273. package/build-module/components/block-switcher/block-styles-menu.js +18 -27
  1274. package/build-module/components/block-switcher/block-styles-menu.js.map +7 -1
  1275. package/build-module/components/block-switcher/block-transformations-menu.js +109 -119
  1276. package/build-module/components/block-switcher/block-transformations-menu.js.map +7 -1
  1277. package/build-module/components/block-switcher/block-variation-transformations.js +83 -76
  1278. package/build-module/components/block-switcher/block-variation-transformations.js.map +7 -1
  1279. package/build-module/components/block-switcher/index.js +223 -197
  1280. package/build-module/components/block-switcher/index.js.map +7 -1
  1281. package/build-module/components/block-switcher/pattern-transformations-menu.js +105 -91
  1282. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +7 -1
  1283. package/build-module/components/block-switcher/preview-block-popover.js +20 -32
  1284. package/build-module/components/block-switcher/preview-block-popover.js.map +7 -1
  1285. package/build-module/components/block-switcher/use-transformed-patterns.js +41 -76
  1286. package/build-module/components/block-switcher/use-transformed-patterns.js.map +7 -1
  1287. package/build-module/components/block-switcher/utils.js +15 -40
  1288. package/build-module/components/block-switcher/utils.js.map +7 -1
  1289. package/build-module/components/block-title/index.js +7 -34
  1290. package/build-module/components/block-title/index.js.map +7 -1
  1291. package/build-module/components/block-title/use-block-display-title.js +34 -57
  1292. package/build-module/components/block-title/use-block-display-title.js.map +7 -1
  1293. package/build-module/components/block-toolbar/block-name-context.js +8 -8
  1294. package/build-module/components/block-toolbar/block-name-context.js.map +7 -1
  1295. package/build-module/components/block-toolbar/block-toolbar-last-item.js +9 -10
  1296. package/build-module/components/block-toolbar/block-toolbar-last-item.js.map +7 -1
  1297. package/build-module/components/block-toolbar/change-design.js +79 -84
  1298. package/build-module/components/block-toolbar/change-design.js.map +7 -1
  1299. package/build-module/components/block-toolbar/index.js +171 -170
  1300. package/build-module/components/block-toolbar/index.js.map +7 -1
  1301. package/build-module/components/block-toolbar/switch-section-style.js +89 -82
  1302. package/build-module/components/block-toolbar/switch-section-style.js.map +7 -1
  1303. package/build-module/components/block-toolbar/use-has-block-toolbar.js +11 -28
  1304. package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +7 -1
  1305. package/build-module/components/block-toolbar/utils.js +38 -71
  1306. package/build-module/components/block-toolbar/utils.js.map +7 -1
  1307. package/build-module/components/block-tools/block-toolbar-popover.js +43 -60
  1308. package/build-module/components/block-tools/block-toolbar-popover.js.map +7 -1
  1309. package/build-module/components/block-tools/empty-block-inserter.js +35 -33
  1310. package/build-module/components/block-tools/empty-block-inserter.js.map +7 -1
  1311. package/build-module/components/block-tools/index.js +139 -103
  1312. package/build-module/components/block-tools/index.js.map +7 -1
  1313. package/build-module/components/block-tools/insertion-point.js +144 -149
  1314. package/build-module/components/block-tools/insertion-point.js.map +7 -1
  1315. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +55 -90
  1316. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +7 -1
  1317. package/build-module/components/block-tools/use-selected-block-tool-props.js +41 -48
  1318. package/build-module/components/block-tools/use-selected-block-tool-props.js.map +7 -1
  1319. package/build-module/components/block-tools/use-show-block-tools.js +12 -27
  1320. package/build-module/components/block-tools/use-show-block-tools.js.map +7 -1
  1321. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js +28 -25
  1322. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js.map +7 -1
  1323. package/build-module/components/block-tools/zoom-out-mode-inserters.js +40 -45
  1324. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +7 -1
  1325. package/build-module/components/block-types-list/index.js +28 -28
  1326. package/build-module/components/block-types-list/index.js.map +7 -1
  1327. package/build-module/components/block-variation-picker/index.js +57 -51
  1328. package/build-module/components/block-variation-picker/index.js.map +7 -1
  1329. package/build-module/components/block-variation-transforms/index.js +134 -133
  1330. package/build-module/components/block-variation-transforms/index.js.map +7 -1
  1331. package/build-module/components/block-vertical-alignment-control/index.js +11 -21
  1332. package/build-module/components/block-vertical-alignment-control/index.js.map +7 -1
  1333. package/build-module/components/block-vertical-alignment-control/ui.js +44 -38
  1334. package/build-module/components/block-vertical-alignment-control/ui.js.map +7 -1
  1335. package/build-module/components/block-visibility/index.js +7 -0
  1336. package/build-module/components/block-visibility/index.js.map +7 -0
  1337. package/build-module/components/block-visibility/menu-item.js +87 -0
  1338. package/build-module/components/block-visibility/menu-item.js.map +7 -0
  1339. package/build-module/components/block-visibility/toolbar.js +70 -0
  1340. package/build-module/components/block-visibility/toolbar.js.map +7 -0
  1341. package/build-module/components/border-radius-control/constants.js +34 -22
  1342. package/build-module/components/border-radius-control/constants.js.map +7 -1
  1343. package/build-module/components/border-radius-control/index.js +81 -84
  1344. package/build-module/components/border-radius-control/index.js.map +7 -1
  1345. package/build-module/components/border-radius-control/linked-button.js +21 -21
  1346. package/build-module/components/border-radius-control/linked-button.js.map +7 -1
  1347. package/build-module/components/border-radius-control/single-input-control.js +168 -126
  1348. package/build-module/components/border-radius-control/single-input-control.js.map +7 -1
  1349. package/build-module/components/border-radius-control/utils.js +66 -178
  1350. package/build-module/components/border-radius-control/utils.js.map +7 -1
  1351. package/build-module/components/button-block-appender/index.js +72 -83
  1352. package/build-module/components/button-block-appender/index.js.map +7 -1
  1353. package/build-module/components/child-layout-control/index.js +305 -266
  1354. package/build-module/components/child-layout-control/index.js.map +7 -1
  1355. package/build-module/components/collab/block-comment-icon-slot.js +7 -7
  1356. package/build-module/components/collab/block-comment-icon-slot.js.map +7 -1
  1357. package/build-module/components/collab/block-comment-icon-toolbar-slot.js +9 -7
  1358. package/build-module/components/collab/block-comment-icon-toolbar-slot.js.map +7 -1
  1359. package/build-module/components/color-palette/control.js +17 -14
  1360. package/build-module/components/color-palette/control.js.map +7 -1
  1361. package/build-module/components/color-palette/index.js +7 -11
  1362. package/build-module/components/color-palette/index.js.map +7 -1
  1363. package/build-module/components/color-palette/with-color-context.js +40 -27
  1364. package/build-module/components/color-palette/with-color-context.js.map +7 -1
  1365. package/build-module/components/color-style-selector/index.js +48 -82
  1366. package/build-module/components/color-style-selector/index.js.map +7 -1
  1367. package/build-module/components/colors/index.js +14 -3
  1368. package/build-module/components/colors/index.js.map +7 -1
  1369. package/build-module/components/colors/utils.js +24 -73
  1370. package/build-module/components/colors/utils.js.map +7 -1
  1371. package/build-module/components/colors/with-colors.js +140 -188
  1372. package/build-module/components/colors/with-colors.js.map +7 -1
  1373. package/build-module/components/colors-gradients/control.js +118 -111
  1374. package/build-module/components/colors-gradients/control.js.map +7 -1
  1375. package/build-module/components/colors-gradients/dropdown.js +134 -155
  1376. package/build-module/components/colors-gradients/dropdown.js.map +7 -1
  1377. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +90 -75
  1378. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +7 -1
  1379. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +73 -36
  1380. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +7 -1
  1381. package/build-module/components/content-lock/index.js +5 -2
  1382. package/build-module/components/content-lock/index.js.map +7 -1
  1383. package/build-module/components/content-lock/modify-content-lock-menu-item.js +38 -51
  1384. package/build-module/components/content-lock/modify-content-lock-menu-item.js.map +7 -1
  1385. package/build-module/components/contrast-checker/index.js +54 -62
  1386. package/build-module/components/contrast-checker/index.js.map +7 -1
  1387. package/build-module/components/convert-to-group-buttons/index.js +53 -44
  1388. package/build-module/components/convert-to-group-buttons/index.js.map +7 -1
  1389. package/build-module/components/convert-to-group-buttons/toolbar.js +86 -97
  1390. package/build-module/components/convert-to-group-buttons/toolbar.js.map +7 -1
  1391. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +32 -58
  1392. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +7 -1
  1393. package/build-module/components/copy-handler/index.js +19 -34
  1394. package/build-module/components/copy-handler/index.js.map +7 -1
  1395. package/build-module/components/date-format-picker/index.js +126 -107
  1396. package/build-module/components/date-format-picker/index.js.map +7 -1
  1397. package/build-module/components/default-block-appender/index.js +78 -92
  1398. package/build-module/components/default-block-appender/index.js.map +7 -1
  1399. package/build-module/components/dimensions-tool/aspect-ratio-tool.js +61 -69
  1400. package/build-module/components/dimensions-tool/aspect-ratio-tool.js.map +7 -1
  1401. package/build-module/components/dimensions-tool/index.js +105 -183
  1402. package/build-module/components/dimensions-tool/index.js.map +7 -1
  1403. package/build-module/components/dimensions-tool/scale-tool.js +74 -90
  1404. package/build-module/components/dimensions-tool/scale-tool.js.map +7 -1
  1405. package/build-module/components/dimensions-tool/width-height-tool.js +69 -106
  1406. package/build-module/components/dimensions-tool/width-height-tool.js.map +7 -1
  1407. package/build-module/components/duotone/utils.js +18 -54
  1408. package/build-module/components/duotone/utils.js.map +7 -1
  1409. package/build-module/components/duotone-control/index.js +71 -64
  1410. package/build-module/components/duotone-control/index.js.map +7 -1
  1411. package/build-module/components/editable-text/index.js +11 -30
  1412. package/build-module/components/editable-text/index.js.map +7 -1
  1413. package/build-module/components/editor-styles/index.js +83 -92
  1414. package/build-module/components/editor-styles/index.js.map +7 -1
  1415. package/build-module/components/floating-toolbar/nav-up-icon.js +30 -24
  1416. package/build-module/components/floating-toolbar/nav-up-icon.js.map +7 -1
  1417. package/build-module/components/font-appearance-control/index.js +68 -110
  1418. package/build-module/components/font-appearance-control/index.js.map +7 -1
  1419. package/build-module/components/font-family/index.js +57 -61
  1420. package/build-module/components/font-family/index.js.map +7 -1
  1421. package/build-module/components/font-sizes/fluid-utils.js +60 -161
  1422. package/build-module/components/font-sizes/fluid-utils.js.map +7 -1
  1423. package/build-module/components/font-sizes/font-size-picker.js +20 -22
  1424. package/build-module/components/font-sizes/font-size-picker.js.map +7 -1
  1425. package/build-module/components/font-sizes/index.js +17 -5
  1426. package/build-module/components/font-sizes/index.js.map +7 -1
  1427. package/build-module/components/font-sizes/utils.js +16 -52
  1428. package/build-module/components/font-sizes/utils.js.map +7 -1
  1429. package/build-module/components/font-sizes/with-font-sizes.js +126 -113
  1430. package/build-module/components/font-sizes/with-font-sizes.js.map +7 -1
  1431. package/build-module/components/global-styles/advanced-panel.js +40 -45
  1432. package/build-module/components/global-styles/advanced-panel.js.map +7 -1
  1433. package/build-module/components/global-styles/background-panel.js +69 -81
  1434. package/build-module/components/global-styles/background-panel.js.map +7 -1
  1435. package/build-module/components/global-styles/border-panel.js +157 -143
  1436. package/build-module/components/global-styles/border-panel.js.map +7 -1
  1437. package/build-module/components/global-styles/color-panel.js +491 -384
  1438. package/build-module/components/global-styles/color-panel.js.map +7 -1
  1439. package/build-module/components/global-styles/context.js +13 -9
  1440. package/build-module/components/global-styles/context.js.map +7 -1
  1441. package/build-module/components/global-styles/dimensions-panel.js +400 -351
  1442. package/build-module/components/global-styles/dimensions-panel.js.map +7 -1
  1443. package/build-module/components/global-styles/filters-panel.js +136 -136
  1444. package/build-module/components/global-styles/filters-panel.js.map +7 -1
  1445. package/build-module/components/global-styles/get-block-css-selector.js +20 -73
  1446. package/build-module/components/global-styles/get-block-css-selector.js.map +7 -1
  1447. package/build-module/components/global-styles/get-global-styles-changes.js +122 -163
  1448. package/build-module/components/global-styles/get-global-styles-changes.js.map +7 -1
  1449. package/build-module/components/global-styles/hooks.js +214 -124
  1450. package/build-module/components/global-styles/hooks.js.map +7 -1
  1451. package/build-module/components/global-styles/image-settings-panel.js +45 -46
  1452. package/build-module/components/global-styles/image-settings-panel.js.map +7 -1
  1453. package/build-module/components/global-styles/index.js +73 -15
  1454. package/build-module/components/global-styles/index.js.map +7 -1
  1455. package/build-module/components/global-styles/shadow-panel-components.js +147 -154
  1456. package/build-module/components/global-styles/shadow-panel-components.js.map +7 -1
  1457. package/build-module/components/global-styles/typography-panel.js +395 -279
  1458. package/build-module/components/global-styles/typography-panel.js.map +7 -1
  1459. package/build-module/components/global-styles/typography-utils.js +73 -175
  1460. package/build-module/components/global-styles/typography-utils.js.map +7 -1
  1461. package/build-module/components/global-styles/use-global-styles-output.js +667 -733
  1462. package/build-module/components/global-styles/use-global-styles-output.js.map +7 -1
  1463. package/build-module/components/global-styles/utils.js +264 -351
  1464. package/build-module/components/global-styles/utils.js.map +7 -1
  1465. package/build-module/components/gradients/index.js +2 -2
  1466. package/build-module/components/gradients/index.js.map +7 -1
  1467. package/build-module/components/gradients/use-gradient.js +76 -79
  1468. package/build-module/components/gradients/use-gradient.js.map +7 -1
  1469. package/build-module/components/gradients/with-gradient.js +9 -14
  1470. package/build-module/components/gradients/with-gradient.js.map +7 -1
  1471. package/build-module/components/grid/grid-item-movers.js +135 -95
  1472. package/build-module/components/grid/grid-item-movers.js.map +7 -1
  1473. package/build-module/components/grid/grid-item-resizer.js +109 -99
  1474. package/build-module/components/grid/grid-item-resizer.js.map +7 -1
  1475. package/build-module/components/grid/grid-visualizer.js +238 -190
  1476. package/build-module/components/grid/grid-visualizer.js.map +7 -1
  1477. package/build-module/components/grid/index.js +11 -5
  1478. package/build-module/components/grid/index.js.map +7 -1
  1479. package/build-module/components/grid/use-get-number-of-blocks-before-cell.js +9 -20
  1480. package/build-module/components/grid/use-get-number-of-blocks-before-cell.js.map +7 -1
  1481. package/build-module/components/grid/use-grid-layout-sync.js +98 -109
  1482. package/build-module/components/grid/use-grid-layout-sync.js.map +7 -1
  1483. package/build-module/components/grid/utils.js +79 -75
  1484. package/build-module/components/grid/utils.js.map +7 -1
  1485. package/build-module/components/height-control/index.js +122 -190
  1486. package/build-module/components/height-control/index.js.map +7 -1
  1487. package/build-module/components/html-element-control/index.js +62 -88
  1488. package/build-module/components/html-element-control/index.js.map +7 -1
  1489. package/build-module/components/html-element-control/messages.js +36 -20
  1490. package/build-module/components/html-element-control/messages.js.map +7 -1
  1491. package/build-module/components/iframe/get-compatibility-styles.js +68 -84
  1492. package/build-module/components/iframe/get-compatibility-styles.js.map +7 -1
  1493. package/build-module/components/iframe/index.js +161 -199
  1494. package/build-module/components/iframe/index.js.map +7 -1
  1495. package/build-module/components/iframe/use-scale-canvas.js +131 -257
  1496. package/build-module/components/iframe/use-scale-canvas.js.map +7 -1
  1497. package/build-module/components/image-editor/aspect-ratio-dropdown.js +99 -101
  1498. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +7 -1
  1499. package/build-module/components/image-editor/constants.js +10 -5
  1500. package/build-module/components/image-editor/constants.js.map +7 -1
  1501. package/build-module/components/image-editor/context.js +20 -23
  1502. package/build-module/components/image-editor/context.js.map +7 -1
  1503. package/build-module/components/image-editor/cropper.js +57 -53
  1504. package/build-module/components/image-editor/cropper.js.map +7 -1
  1505. package/build-module/components/image-editor/form-controls.js +14 -28
  1506. package/build-module/components/image-editor/form-controls.js.map +7 -1
  1507. package/build-module/components/image-editor/index.js +46 -44
  1508. package/build-module/components/image-editor/index.js.map +7 -1
  1509. package/build-module/components/image-editor/rotation-button.js +20 -25
  1510. package/build-module/components/image-editor/rotation-button.js.map +7 -1
  1511. package/build-module/components/image-editor/use-save-image.js +76 -63
  1512. package/build-module/components/image-editor/use-save-image.js.map +7 -1
  1513. package/build-module/components/image-editor/use-transform-image.js +47 -35
  1514. package/build-module/components/image-editor/use-transform-image.js.map +7 -1
  1515. package/build-module/components/image-editor/zoom-dropdown.js +46 -46
  1516. package/build-module/components/image-editor/zoom-dropdown.js.map +7 -1
  1517. package/build-module/components/image-size-control/index.js +95 -97
  1518. package/build-module/components/image-size-control/index.js.map +7 -1
  1519. package/build-module/components/image-size-control/use-dimension-handler.js +21 -28
  1520. package/build-module/components/image-size-control/use-dimension-handler.js.map +7 -1
  1521. package/build-module/components/index.js +293 -125
  1522. package/build-module/components/index.js.map +7 -1
  1523. package/build-module/components/inner-blocks/button-block-appender.js +22 -25
  1524. package/build-module/components/inner-blocks/button-block-appender.js.map +7 -1
  1525. package/build-module/components/inner-blocks/default-block-appender.js +10 -14
  1526. package/build-module/components/inner-blocks/default-block-appender.js.map +7 -1
  1527. package/build-module/components/inner-blocks/index.js +131 -175
  1528. package/build-module/components/inner-blocks/index.js.map +7 -1
  1529. package/build-module/components/inner-blocks/use-block-context.js +32 -34
  1530. package/build-module/components/inner-blocks/use-block-context.js.map +7 -1
  1531. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +37 -64
  1532. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +7 -1
  1533. package/build-module/components/inner-blocks/use-nested-settings-update.js +51 -99
  1534. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +7 -1
  1535. package/build-module/components/inserter/block-patterns-explorer/index.js +49 -52
  1536. package/build-module/components/inserter/block-patterns-explorer/index.js.map +7 -1
  1537. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +45 -44
  1538. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +7 -1
  1539. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +105 -70
  1540. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +7 -1
  1541. package/build-module/components/inserter/block-patterns-tab/index.js +59 -54
  1542. package/build-module/components/inserter/block-patterns-tab/index.js.map +7 -1
  1543. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +169 -107
  1544. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +7 -1
  1545. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +132 -98
  1546. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +7 -1
  1547. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +58 -27
  1548. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +7 -1
  1549. package/build-module/components/inserter/block-patterns-tab/utils.js +31 -37
  1550. package/build-module/components/inserter/block-patterns-tab/utils.js.map +7 -1
  1551. package/build-module/components/inserter/block-types-tab.js +135 -127
  1552. package/build-module/components/inserter/block-types-tab.js.map +7 -1
  1553. package/build-module/components/inserter/category-tabs/index.js +72 -63
  1554. package/build-module/components/inserter/category-tabs/index.js.map +7 -1
  1555. package/build-module/components/inserter/hooks/use-block-types-state.js +80 -64
  1556. package/build-module/components/inserter/hooks/use-block-types-state.js.map +7 -1
  1557. package/build-module/components/inserter/hooks/use-insertion-point.js +137 -117
  1558. package/build-module/components/inserter/hooks/use-insertion-point.js.map +7 -1
  1559. package/build-module/components/inserter/hooks/use-patterns-paging.js +25 -26
  1560. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +7 -1
  1561. package/build-module/components/inserter/hooks/use-patterns-state.js +92 -79
  1562. package/build-module/components/inserter/hooks/use-patterns-state.js.map +7 -1
  1563. package/build-module/components/inserter/index.js +199 -228
  1564. package/build-module/components/inserter/index.js.map +7 -1
  1565. package/build-module/components/inserter/library.js +51 -48
  1566. package/build-module/components/inserter/library.js.map +7 -1
  1567. package/build-module/components/inserter/media-tab/hooks.js +61 -77
  1568. package/build-module/components/inserter/media-tab/hooks.js.map +7 -1
  1569. package/build-module/components/inserter/media-tab/index.js +9 -4
  1570. package/build-module/components/inserter/media-tab/index.js.map +7 -1
  1571. package/build-module/components/inserter/media-tab/media-list.js +27 -24
  1572. package/build-module/components/inserter/media-tab/media-list.js.map +7 -1
  1573. package/build-module/components/inserter/media-tab/media-panel.js +39 -45
  1574. package/build-module/components/inserter/media-tab/media-panel.js.map +7 -1
  1575. package/build-module/components/inserter/media-tab/media-preview.js +241 -227
  1576. package/build-module/components/inserter/media-tab/media-preview.js.map +7 -1
  1577. package/build-module/components/inserter/media-tab/media-tab.js +79 -77
  1578. package/build-module/components/inserter/media-tab/media-tab.js.map +7 -1
  1579. package/build-module/components/inserter/media-tab/utils.js +25 -40
  1580. package/build-module/components/inserter/media-tab/utils.js.map +7 -1
  1581. package/build-module/components/inserter/menu.js +279 -202
  1582. package/build-module/components/inserter/menu.js.map +7 -1
  1583. package/build-module/components/inserter/mobile-tab-navigation.js +74 -71
  1584. package/build-module/components/inserter/mobile-tab-navigation.js.map +7 -1
  1585. package/build-module/components/inserter/no-results.js +8 -13
  1586. package/build-module/components/inserter/no-results.js.map +7 -1
  1587. package/build-module/components/inserter/panel.js +15 -26
  1588. package/build-module/components/inserter/panel.js.map +7 -1
  1589. package/build-module/components/inserter/preview-panel.js +43 -54
  1590. package/build-module/components/inserter/preview-panel.js.map +7 -1
  1591. package/build-module/components/inserter/quick-inserter.js +85 -81
  1592. package/build-module/components/inserter/quick-inserter.js.map +7 -1
  1593. package/build-module/components/inserter/search-items.js +53 -102
  1594. package/build-module/components/inserter/search-items.js.map +7 -1
  1595. package/build-module/components/inserter/search-results.js +136 -102
  1596. package/build-module/components/inserter/search-results.js.map +7 -1
  1597. package/build-module/components/inserter/tips.js +36 -22
  1598. package/build-module/components/inserter/tips.js.map +7 -1
  1599. package/build-module/components/inserter-button/sparkles.js +12 -14
  1600. package/build-module/components/inserter-button/sparkles.js.map +7 -1
  1601. package/build-module/components/inserter-draggable-blocks/index.js +58 -68
  1602. package/build-module/components/inserter-draggable-blocks/index.js.map +7 -1
  1603. package/build-module/components/inserter-list-item/index.js +111 -93
  1604. package/build-module/components/inserter-list-item/index.js.map +7 -1
  1605. package/build-module/components/inserter-listbox/context.js +7 -7
  1606. package/build-module/components/inserter-listbox/context.js.map +7 -1
  1607. package/build-module/components/inserter-listbox/group.js +32 -25
  1608. package/build-module/components/inserter-listbox/group.js.map +7 -1
  1609. package/build-module/components/inserter-listbox/index.js +26 -31
  1610. package/build-module/components/inserter-listbox/index.js.map +7 -1
  1611. package/build-module/components/inserter-listbox/item.js +29 -42
  1612. package/build-module/components/inserter-listbox/item.js.map +7 -1
  1613. package/build-module/components/inserter-listbox/row.js +9 -13
  1614. package/build-module/components/inserter-listbox/row.js.map +7 -1
  1615. package/build-module/components/inserter-menu-extension/index.js +9 -10
  1616. package/build-module/components/inserter-menu-extension/index.js.map +7 -1
  1617. package/build-module/components/inspector-controls/block-support-slot-container.js +19 -23
  1618. package/build-module/components/inspector-controls/block-support-slot-container.js.map +7 -1
  1619. package/build-module/components/inspector-controls/block-support-tools-panel.js +54 -58
  1620. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +7 -1
  1621. package/build-module/components/inspector-controls/fill.js +46 -65
  1622. package/build-module/components/inspector-controls/fill.js.map +7 -1
  1623. package/build-module/components/inspector-controls/groups.js +29 -19
  1624. package/build-module/components/inspector-controls/groups.js.map +7 -1
  1625. package/build-module/components/inspector-controls/index.js +14 -25
  1626. package/build-module/components/inspector-controls/index.js.map +7 -1
  1627. package/build-module/components/inspector-controls/slot.js +31 -39
  1628. package/build-module/components/inspector-controls/slot.js.map +7 -1
  1629. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +33 -22
  1630. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +7 -1
  1631. package/build-module/components/inspector-controls-tabs/content-tab.js +11 -22
  1632. package/build-module/components/inspector-controls-tabs/content-tab.js.map +7 -1
  1633. package/build-module/components/inspector-controls-tabs/index.js +73 -79
  1634. package/build-module/components/inspector-controls-tabs/index.js.map +7 -1
  1635. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +64 -65
  1636. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +7 -1
  1637. package/build-module/components/inspector-controls-tabs/settings-tab.js +15 -18
  1638. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +7 -1
  1639. package/build-module/components/inspector-controls-tabs/styles-tab.js +55 -50
  1640. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +7 -1
  1641. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +32 -38
  1642. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +7 -1
  1643. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +8 -6
  1644. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +7 -1
  1645. package/build-module/components/inspector-controls-tabs/utils.js +25 -22
  1646. package/build-module/components/inspector-controls-tabs/utils.js.map +7 -1
  1647. package/build-module/components/inspector-popover-header/index.js +54 -42
  1648. package/build-module/components/inspector-popover-header/index.js.map +7 -1
  1649. package/build-module/components/justify-content-control/index.js +11 -21
  1650. package/build-module/components/justify-content-control/index.js.map +7 -1
  1651. package/build-module/components/justify-content-control/ui.js +69 -57
  1652. package/build-module/components/justify-content-control/ui.js.map +7 -1
  1653. package/build-module/components/keyboard-shortcuts/index.js +117 -101
  1654. package/build-module/components/keyboard-shortcuts/index.js.map +7 -1
  1655. package/build-module/components/letter-spacing-control/index.js +39 -50
  1656. package/build-module/components/letter-spacing-control/index.js.map +7 -1
  1657. package/build-module/components/line-height-control/index.js +44 -69
  1658. package/build-module/components/line-height-control/index.js.map +7 -1
  1659. package/build-module/components/line-height-control/utils.js +14 -29
  1660. package/build-module/components/line-height-control/utils.js.map +7 -1
  1661. package/build-module/components/link-control/constants.js +28 -19
  1662. package/build-module/components/link-control/constants.js.map +7 -1
  1663. package/build-module/components/link-control/index.js +297 -305
  1664. package/build-module/components/link-control/index.js.map +7 -1
  1665. package/build-module/components/link-control/is-url-like.js +12 -37
  1666. package/build-module/components/link-control/is-url-like.js.map +7 -1
  1667. package/build-module/components/link-control/link-preview.js +128 -134
  1668. package/build-module/components/link-control/link-preview.js.map +7 -1
  1669. package/build-module/components/link-control/search-create-button.js +32 -24
  1670. package/build-module/components/link-control/search-create-button.js.map +7 -1
  1671. package/build-module/components/link-control/search-input.js +122 -134
  1672. package/build-module/components/link-control/search-input.js.map +7 -1
  1673. package/build-module/components/link-control/search-item.js +78 -78
  1674. package/build-module/components/link-control/search-item.js.map +7 -1
  1675. package/build-module/components/link-control/search-results.js +67 -65
  1676. package/build-module/components/link-control/search-results.js.map +7 -1
  1677. package/build-module/components/link-control/settings-drawer.js +40 -44
  1678. package/build-module/components/link-control/settings-drawer.js.map +7 -1
  1679. package/build-module/components/link-control/settings.js +48 -30
  1680. package/build-module/components/link-control/settings.js.map +7 -1
  1681. package/build-module/components/link-control/use-create-page.js +23 -34
  1682. package/build-module/components/link-control/use-create-page.js.map +7 -1
  1683. package/build-module/components/link-control/use-internal-value.js +26 -27
  1684. package/build-module/components/link-control/use-internal-value.js.map +7 -1
  1685. package/build-module/components/link-control/use-rich-url-data.js +18 -31
  1686. package/build-module/components/link-control/use-rich-url-data.js.map +7 -1
  1687. package/build-module/components/link-control/use-search-handler.js +66 -74
  1688. package/build-module/components/link-control/use-search-handler.js.map +7 -1
  1689. package/build-module/components/link-control/viewer-slot.js +11 -11
  1690. package/build-module/components/link-control/viewer-slot.js.map +7 -1
  1691. package/build-module/components/list-view/appender.js +87 -93
  1692. package/build-module/components/list-view/appender.js.map +7 -1
  1693. package/build-module/components/list-view/aria-referenced-text.js +8 -27
  1694. package/build-module/components/list-view/aria-referenced-text.js.map +7 -1
  1695. package/build-module/components/list-view/block-contents.js +65 -72
  1696. package/build-module/components/list-view/block-contents.js.map +7 -1
  1697. package/build-module/components/list-view/block-select-button.js +120 -118
  1698. package/build-module/components/list-view/block-select-button.js.map +7 -1
  1699. package/build-module/components/list-view/block.js +358 -354
  1700. package/build-module/components/list-view/block.js.map +7 -1
  1701. package/build-module/components/list-view/branch.js +125 -139
  1702. package/build-module/components/list-view/branch.js.map +7 -1
  1703. package/build-module/components/list-view/context.js +9 -8
  1704. package/build-module/components/list-view/context.js.map +7 -1
  1705. package/build-module/components/list-view/drop-indicator.js +135 -157
  1706. package/build-module/components/list-view/drop-indicator.js.map +7 -1
  1707. package/build-module/components/list-view/expander.js +18 -22
  1708. package/build-module/components/list-view/expander.js.map +7 -1
  1709. package/build-module/components/list-view/index.js +249 -252
  1710. package/build-module/components/list-view/index.js.map +7 -1
  1711. package/build-module/components/list-view/leaf.js +45 -48
  1712. package/build-module/components/list-view/leaf.js.map +7 -1
  1713. package/build-module/components/list-view/use-block-selection.js +98 -103
  1714. package/build-module/components/list-view/use-block-selection.js.map +7 -1
  1715. package/build-module/components/list-view/use-clipboard-handler.js +48 -69
  1716. package/build-module/components/list-view/use-clipboard-handler.js.map +7 -1
  1717. package/build-module/components/list-view/use-list-view-block-indexes.js +8 -8
  1718. package/build-module/components/list-view/use-list-view-block-indexes.js.map +7 -1
  1719. package/build-module/components/list-view/use-list-view-client-ids.js +23 -28
  1720. package/build-module/components/list-view/use-list-view-client-ids.js.map +7 -1
  1721. package/build-module/components/list-view/use-list-view-collapse-items.js +13 -27
  1722. package/build-module/components/list-view/use-list-view-collapse-items.js.map +7 -1
  1723. package/build-module/components/list-view/use-list-view-drop-zone.js +157 -290
  1724. package/build-module/components/list-view/use-list-view-drop-zone.js.map +7 -1
  1725. package/build-module/components/list-view/use-list-view-expand-selected-item.js +27 -32
  1726. package/build-module/components/list-view/use-list-view-expand-selected-item.js.map +7 -1
  1727. package/build-module/components/list-view/use-list-view-images.js +25 -59
  1728. package/build-module/components/list-view/use-list-view-images.js.map +7 -1
  1729. package/build-module/components/list-view/use-list-view-scroll-into-view.js +8 -20
  1730. package/build-module/components/list-view/use-list-view-scroll-into-view.js.map +7 -1
  1731. package/build-module/components/list-view/utils.js +48 -111
  1732. package/build-module/components/list-view/utils.js.map +7 -1
  1733. package/build-module/components/media-placeholder/index.js +326 -289
  1734. package/build-module/components/media-placeholder/index.js.map +7 -1
  1735. package/build-module/components/media-replace-flow/index.js +162 -152
  1736. package/build-module/components/media-replace-flow/index.js.map +7 -1
  1737. package/build-module/components/media-upload/check.js +11 -23
  1738. package/build-module/components/media-upload/check.js.map +7 -1
  1739. package/build-module/components/media-upload/index.js +6 -18
  1740. package/build-module/components/media-upload/index.js.map +7 -1
  1741. package/build-module/components/media-upload-progress/constants.js +15 -7
  1742. package/build-module/components/media-upload-progress/constants.js.map +7 -1
  1743. package/build-module/components/multi-selection-inspector/index.js +32 -30
  1744. package/build-module/components/multi-selection-inspector/index.js.map +7 -1
  1745. package/build-module/components/navigable-toolbar/index.js +65 -86
  1746. package/build-module/components/navigable-toolbar/index.js.map +7 -1
  1747. package/build-module/components/observe-typing/index.js +129 -207
  1748. package/build-module/components/observe-typing/index.js.map +7 -1
  1749. package/build-module/components/panel-color-settings/index.js +19 -23
  1750. package/build-module/components/panel-color-settings/index.js.map +7 -1
  1751. package/build-module/components/plain-text/index.js +22 -75
  1752. package/build-module/components/plain-text/index.js.map +7 -1
  1753. package/build-module/components/preview-options/index.js +8 -8
  1754. package/build-module/components/preview-options/index.js.map +7 -1
  1755. package/build-module/components/provider/block-refs-provider.js +13 -21
  1756. package/build-module/components/provider/block-refs-provider.js.map +7 -1
  1757. package/build-module/components/provider/index.js +80 -91
  1758. package/build-module/components/provider/index.js.map +7 -1
  1759. package/build-module/components/provider/use-block-sync.js +27 -136
  1760. package/build-module/components/provider/use-block-sync.js.map +7 -1
  1761. package/build-module/components/provider/use-media-upload-settings.js +15 -20
  1762. package/build-module/components/provider/use-media-upload-settings.js.map +7 -1
  1763. package/build-module/components/provider/with-registry-provider.js +27 -36
  1764. package/build-module/components/provider/with-registry-provider.js.map +7 -1
  1765. package/build-module/components/publish-date-time-picker/index.js +42 -39
  1766. package/build-module/components/publish-date-time-picker/index.js.map +7 -1
  1767. package/build-module/components/recursion-provider/index.js +31 -81
  1768. package/build-module/components/recursion-provider/index.js.map +7 -1
  1769. package/build-module/components/resizable-box-popover/index.js +17 -20
  1770. package/build-module/components/resizable-box-popover/index.js.map +7 -1
  1771. package/build-module/components/resolution-tool/index.js +53 -39
  1772. package/build-module/components/resolution-tool/index.js.map +7 -1
  1773. package/build-module/components/responsive-block-control/index.js +86 -66
  1774. package/build-module/components/responsive-block-control/index.js.map +7 -1
  1775. package/build-module/components/responsive-block-control/label.js +22 -21
  1776. package/build-module/components/responsive-block-control/label.js.map +7 -1
  1777. package/build-module/components/rich-text/content.js +22 -40
  1778. package/build-module/components/rich-text/content.js.map +7 -1
  1779. package/build-module/components/rich-text/event-listeners/before-input-rules.js +23 -52
  1780. package/build-module/components/rich-text/event-listeners/before-input-rules.js.map +7 -1
  1781. package/build-module/components/rich-text/event-listeners/delete.js +13 -31
  1782. package/build-module/components/rich-text/event-listeners/delete.js.map +7 -1
  1783. package/build-module/components/rich-text/event-listeners/enter.js +22 -38
  1784. package/build-module/components/rich-text/event-listeners/enter.js.map +7 -1
  1785. package/build-module/components/rich-text/event-listeners/firefox-compat.js +12 -18
  1786. package/build-module/components/rich-text/event-listeners/firefox-compat.js.map +7 -1
  1787. package/build-module/components/rich-text/event-listeners/index.js +47 -33
  1788. package/build-module/components/rich-text/event-listeners/index.js.map +7 -1
  1789. package/build-module/components/rich-text/event-listeners/input-events.js +8 -7
  1790. package/build-module/components/rich-text/event-listeners/input-events.js.map +7 -1
  1791. package/build-module/components/rich-text/event-listeners/input-rules.js +46 -64
  1792. package/build-module/components/rich-text/event-listeners/input-rules.js.map +7 -1
  1793. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js +10 -19
  1794. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js.map +7 -1
  1795. package/build-module/components/rich-text/event-listeners/paste-handler.js +36 -65
  1796. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +7 -1
  1797. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js +9 -14
  1798. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +7 -1
  1799. package/build-module/components/rich-text/event-listeners/shortcuts.js +8 -7
  1800. package/build-module/components/rich-text/event-listeners/shortcuts.js.map +7 -1
  1801. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js +13 -26
  1802. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js.map +7 -1
  1803. package/build-module/components/rich-text/format-edit.js +36 -46
  1804. package/build-module/components/rich-text/format-edit.js.map +7 -1
  1805. package/build-module/components/rich-text/format-toolbar/index.js +51 -55
  1806. package/build-module/components/rich-text/format-toolbar/index.js.map +7 -1
  1807. package/build-module/components/rich-text/format-toolbar-container.js +33 -46
  1808. package/build-module/components/rich-text/format-toolbar-container.js.map +7 -1
  1809. package/build-module/components/rich-text/get-rich-text-values.js +37 -43
  1810. package/build-module/components/rich-text/get-rich-text-values.js.map +7 -1
  1811. package/build-module/components/rich-text/index.js +298 -301
  1812. package/build-module/components/rich-text/index.js.map +7 -1
  1813. package/build-module/components/rich-text/input-event.js +7 -14
  1814. package/build-module/components/rich-text/input-event.js.map +7 -1
  1815. package/build-module/components/rich-text/multiline.js +74 -68
  1816. package/build-module/components/rich-text/multiline.js.map +7 -1
  1817. package/build-module/components/rich-text/native/format-edit.js +25 -24
  1818. package/build-module/components/rich-text/native/format-edit.js.map +7 -1
  1819. package/build-module/components/rich-text/native/index.js +6 -2
  1820. package/build-module/components/rich-text/native/index.js.map +7 -1
  1821. package/build-module/components/rich-text/native/use-format-types.js +64 -55
  1822. package/build-module/components/rich-text/native/use-format-types.js.map +7 -1
  1823. package/build-module/components/rich-text/prevent-event-discovery.js +9 -12
  1824. package/build-module/components/rich-text/prevent-event-discovery.js.map +7 -1
  1825. package/build-module/components/rich-text/shortcut.js +8 -16
  1826. package/build-module/components/rich-text/shortcut.js.map +7 -1
  1827. package/build-module/components/rich-text/toolbar-button.js +10 -16
  1828. package/build-module/components/rich-text/toolbar-button.js.map +7 -1
  1829. package/build-module/components/rich-text/use-format-types.js +102 -82
  1830. package/build-module/components/rich-text/use-format-types.js.map +7 -1
  1831. package/build-module/components/rich-text/use-mark-persistent.js +10 -25
  1832. package/build-module/components/rich-text/use-mark-persistent.js.map +7 -1
  1833. package/build-module/components/rich-text/utils.js +24 -40
  1834. package/build-module/components/rich-text/utils.js.map +7 -1
  1835. package/build-module/components/rich-text/with-deprecations.js +30 -29
  1836. package/build-module/components/rich-text/with-deprecations.js.map +7 -1
  1837. package/build-module/components/selection-scroll-into-view/index.js +9 -16
  1838. package/build-module/components/selection-scroll-into-view/index.js.map +7 -1
  1839. package/build-module/components/skip-to-selected-block/index.js +26 -28
  1840. package/build-module/components/skip-to-selected-block/index.js.map +7 -1
  1841. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +38 -34
  1842. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +7 -1
  1843. package/build-module/components/spacing-sizes-control/index.js +65 -101
  1844. package/build-module/components/spacing-sizes-control/index.js.map +7 -1
  1845. package/build-module/components/spacing-sizes-control/input-controls/axial.js +37 -31
  1846. package/build-module/components/spacing-sizes-control/input-controls/axial.js.map +7 -1
  1847. package/build-module/components/spacing-sizes-control/input-controls/separated.js +33 -25
  1848. package/build-module/components/spacing-sizes-control/input-controls/separated.js.map +7 -1
  1849. package/build-module/components/spacing-sizes-control/input-controls/single.js +29 -24
  1850. package/build-module/components/spacing-sizes-control/input-controls/single.js.map +7 -1
  1851. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +230 -263
  1852. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +7 -1
  1853. package/build-module/components/spacing-sizes-control/linked-button.js +20 -20
  1854. package/build-module/components/spacing-sizes-control/linked-button.js.map +7 -1
  1855. package/build-module/components/spacing-sizes-control/utils.js +85 -167
  1856. package/build-module/components/spacing-sizes-control/utils.js.map +7 -1
  1857. package/build-module/components/tabbed-sidebar/index.js +62 -94
  1858. package/build-module/components/tabbed-sidebar/index.js.map +7 -1
  1859. package/build-module/components/text-alignment-control/index.js +76 -64
  1860. package/build-module/components/text-alignment-control/index.js.map +7 -1
  1861. package/build-module/components/text-decoration-control/index.js +58 -56
  1862. package/build-module/components/text-decoration-control/index.js.map +7 -1
  1863. package/build-module/components/text-transform-control/index.js +68 -64
  1864. package/build-module/components/text-transform-control/index.js.map +7 -1
  1865. package/build-module/components/typewriter/index.js +152 -206
  1866. package/build-module/components/typewriter/index.js.map +7 -1
  1867. package/build-module/components/unit-control/index.js +14 -21
  1868. package/build-module/components/unit-control/index.js.map +7 -1
  1869. package/build-module/components/url-input/button.js +68 -70
  1870. package/build-module/components/url-input/button.js.map +7 -1
  1871. package/build-module/components/url-input/index.js +191 -239
  1872. package/build-module/components/url-input/index.js.map +7 -1
  1873. package/build-module/components/url-popover/image-url-input-ui.js +232 -186
  1874. package/build-module/components/url-popover/image-url-input-ui.js.map +7 -1
  1875. package/build-module/components/url-popover/index.js +87 -93
  1876. package/build-module/components/url-popover/index.js.map +7 -1
  1877. package/build-module/components/url-popover/link-editor.js +40 -33
  1878. package/build-module/components/url-popover/link-editor.js.map +7 -1
  1879. package/build-module/components/url-popover/link-viewer-url.js +15 -26
  1880. package/build-module/components/url-popover/link-viewer-url.js.map +7 -1
  1881. package/build-module/components/url-popover/link-viewer.js +40 -33
  1882. package/build-module/components/url-popover/link-viewer.js.map +7 -1
  1883. package/build-module/components/use-block-commands/index.js +151 -133
  1884. package/build-module/components/use-block-commands/index.js.map +7 -1
  1885. package/build-module/components/use-block-display-information/index.js +62 -102
  1886. package/build-module/components/use-block-display-information/index.js.map +7 -1
  1887. package/build-module/components/use-block-drop-zone/index.js +277 -297
  1888. package/build-module/components/use-block-drop-zone/index.js.map +7 -1
  1889. package/build-module/components/use-flash-editable-blocks/index.js +45 -48
  1890. package/build-module/components/use-flash-editable-blocks/index.js.map +7 -1
  1891. package/build-module/components/use-moving-animation/index.js +43 -102
  1892. package/build-module/components/use-moving-animation/index.js.map +7 -1
  1893. package/build-module/components/use-on-block-drop/index.js +184 -173
  1894. package/build-module/components/use-on-block-drop/index.js.map +7 -1
  1895. package/build-module/components/use-on-block-drop/types.js +1 -2
  1896. package/build-module/components/use-on-block-drop/types.js.map +7 -1
  1897. package/build-module/components/use-paste-styles/index.js +127 -127
  1898. package/build-module/components/use-paste-styles/index.js.map +7 -1
  1899. package/build-module/components/use-resize-canvas/index.js +19 -27
  1900. package/build-module/components/use-resize-canvas/index.js.map +7 -1
  1901. package/build-module/components/use-settings/index.js +24 -53
  1902. package/build-module/components/use-settings/index.js.map +7 -1
  1903. package/build-module/components/warning/index.js +45 -59
  1904. package/build-module/components/warning/index.js.map +7 -1
  1905. package/build-module/components/writing-flow/index.js +79 -65
  1906. package/build-module/components/writing-flow/index.js.map +7 -1
  1907. package/build-module/components/writing-flow/use-arrow-nav.js +89 -136
  1908. package/build-module/components/writing-flow/use-arrow-nav.js.map +7 -1
  1909. package/build-module/components/writing-flow/use-click-selection.js +38 -51
  1910. package/build-module/components/writing-flow/use-click-selection.js.map +7 -1
  1911. package/build-module/components/writing-flow/use-clipboard-handler.js +68 -76
  1912. package/build-module/components/writing-flow/use-clipboard-handler.js.map +7 -1
  1913. package/build-module/components/writing-flow/use-drag-selection.js +81 -145
  1914. package/build-module/components/writing-flow/use-drag-selection.js.map +7 -1
  1915. package/build-module/components/writing-flow/use-input.js +54 -52
  1916. package/build-module/components/writing-flow/use-input.js.map +7 -1
  1917. package/build-module/components/writing-flow/use-multi-selection.js +38 -55
  1918. package/build-module/components/writing-flow/use-multi-selection.js.map +7 -1
  1919. package/build-module/components/writing-flow/use-select-all.js +20 -31
  1920. package/build-module/components/writing-flow/use-select-all.js.map +7 -1
  1921. package/build-module/components/writing-flow/use-selection-observer.js +118 -184
  1922. package/build-module/components/writing-flow/use-selection-observer.js.map +7 -1
  1923. package/build-module/components/writing-flow/use-tab-nav.js +68 -131
  1924. package/build-module/components/writing-flow/use-tab-nav.js.map +7 -1
  1925. package/build-module/components/writing-flow/utils.js +40 -62
  1926. package/build-module/components/writing-flow/utils.js.map +7 -1
  1927. package/build-module/components/writing-mode-control/index.js +50 -56
  1928. package/build-module/components/writing-mode-control/index.js.map +7 -1
  1929. package/build-module/elements/index.js +8 -5
  1930. package/build-module/elements/index.js.map +7 -1
  1931. package/build-module/hooks/align.js +71 -125
  1932. package/build-module/hooks/align.js.map +7 -1
  1933. package/build-module/hooks/allowed-blocks.js +50 -0
  1934. package/build-module/hooks/allowed-blocks.js.map +7 -0
  1935. package/build-module/hooks/anchor.js +58 -84
  1936. package/build-module/hooks/anchor.js.map +7 -1
  1937. package/build-module/hooks/aria-label.js +22 -39
  1938. package/build-module/hooks/aria-label.js.map +7 -1
  1939. package/build-module/hooks/background.js +80 -100
  1940. package/build-module/hooks/background.js.map +7 -1
  1941. package/build-module/hooks/block-bindings.js +370 -240
  1942. package/build-module/hooks/block-bindings.js.map +7 -1
  1943. package/build-module/hooks/block-hooks.js +153 -158
  1944. package/build-module/hooks/block-hooks.js.map +7 -1
  1945. package/build-module/hooks/block-renaming.js +20 -29
  1946. package/build-module/hooks/block-renaming.js.map +7 -1
  1947. package/build-module/hooks/block-style-variation.js +127 -167
  1948. package/build-module/hooks/block-style-variation.js.map +7 -1
  1949. package/build-module/hooks/border.js +143 -231
  1950. package/build-module/hooks/border.js.map +7 -1
  1951. package/build-module/hooks/color.js +182 -174
  1952. package/build-module/hooks/color.js.map +7 -1
  1953. package/build-module/hooks/compat.js +10 -11
  1954. package/build-module/hooks/compat.js.map +7 -1
  1955. package/build-module/hooks/content-lock-ui.js +32 -53
  1956. package/build-module/hooks/content-lock-ui.js.map +7 -1
  1957. package/build-module/hooks/contrast-checker.js +36 -37
  1958. package/build-module/hooks/contrast-checker.js.map +7 -1
  1959. package/build-module/hooks/custom-class-name.js +52 -82
  1960. package/build-module/hooks/custom-class-name.js.map +7 -1
  1961. package/build-module/hooks/dimensions.js +113 -126
  1962. package/build-module/hooks/dimensions.js.map +7 -1
  1963. package/build-module/hooks/duotone.js +148 -178
  1964. package/build-module/hooks/duotone.js.map +7 -1
  1965. package/build-module/hooks/fit-text.js +174 -0
  1966. package/build-module/hooks/fit-text.js.map +7 -0
  1967. package/build-module/hooks/font-family.js +33 -68
  1968. package/build-module/hooks/font-family.js.map +7 -1
  1969. package/build-module/hooks/font-size.js +102 -111
  1970. package/build-module/hooks/font-size.js.map +7 -1
  1971. package/build-module/hooks/gap.js +9 -25
  1972. package/build-module/hooks/gap.js.map +7 -1
  1973. package/build-module/hooks/generated-class-name.js +20 -28
  1974. package/build-module/hooks/generated-class-name.js.map +7 -1
  1975. package/build-module/hooks/grid-visualizer.js +50 -57
  1976. package/build-module/hooks/grid-visualizer.js.map +7 -1
  1977. package/build-module/hooks/index.js +113 -48
  1978. package/build-module/hooks/index.js.map +7 -1
  1979. package/build-module/hooks/layout-child.js +109 -132
  1980. package/build-module/hooks/layout-child.js.map +7 -1
  1981. package/build-module/hooks/layout.js +229 -283
  1982. package/build-module/hooks/layout.js.map +7 -1
  1983. package/build-module/hooks/line-height.js +27 -47
  1984. package/build-module/hooks/line-height.js.map +7 -1
  1985. package/build-module/hooks/lock.js +9 -20
  1986. package/build-module/hooks/lock.js.map +7 -1
  1987. package/build-module/hooks/metadata.js +13 -19
  1988. package/build-module/hooks/metadata.js.map +7 -1
  1989. package/build-module/hooks/position.js +123 -221
  1990. package/build-module/hooks/position.js.map +7 -1
  1991. package/build-module/hooks/settings.js +10 -11
  1992. package/build-module/hooks/settings.js.map +7 -1
  1993. package/build-module/hooks/spacing-visualizer.js +69 -75
  1994. package/build-module/hooks/spacing-visualizer.js.map +7 -1
  1995. package/build-module/hooks/style.js +145 -271
  1996. package/build-module/hooks/style.js.map +7 -1
  1997. package/build-module/hooks/supports.js +95 -253
  1998. package/build-module/hooks/supports.js.map +7 -1
  1999. package/build-module/hooks/text-align.js +77 -89
  2000. package/build-module/hooks/text-align.js.map +7 -1
  2001. package/build-module/hooks/typography.js +105 -94
  2002. package/build-module/hooks/typography.js.map +7 -1
  2003. package/build-module/hooks/use-border-props.js +14 -46
  2004. package/build-module/hooks/use-border-props.js.map +7 -1
  2005. package/build-module/hooks/use-cached-truthy.js +6 -13
  2006. package/build-module/hooks/use-cached-truthy.js.map +7 -1
  2007. package/build-module/hooks/use-color-props.js +74 -83
  2008. package/build-module/hooks/use-color-props.js.map +7 -1
  2009. package/build-module/hooks/use-shadow-props.js +8 -22
  2010. package/build-module/hooks/use-shadow-props.js.map +7 -1
  2011. package/build-module/hooks/use-spacing-props.js +8 -27
  2012. package/build-module/hooks/use-spacing-props.js.map +7 -1
  2013. package/build-module/hooks/use-typography-props.js +24 -46
  2014. package/build-module/hooks/use-typography-props.js.map +7 -1
  2015. package/build-module/hooks/use-zoom-out.js +15 -49
  2016. package/build-module/hooks/use-zoom-out.js.map +7 -1
  2017. package/build-module/hooks/utils.js +384 -235
  2018. package/build-module/hooks/utils.js.map +7 -1
  2019. package/build-module/index.js +38 -12
  2020. package/build-module/index.js.map +7 -1
  2021. package/build-module/layouts/constrained.js +200 -201
  2022. package/build-module/layouts/constrained.js.map +7 -1
  2023. package/build-module/layouts/definitions.js +166 -140
  2024. package/build-module/layouts/definitions.js.map +7 -1
  2025. package/build-module/layouts/flex.js +246 -231
  2026. package/build-module/layouts/flex.js.map +7 -1
  2027. package/build-module/layouts/flow.js +36 -53
  2028. package/build-module/layouts/flow.js.map +7 -1
  2029. package/build-module/layouts/grid.js +237 -243
  2030. package/build-module/layouts/grid.js.map +7 -1
  2031. package/build-module/layouts/index.js +12 -24
  2032. package/build-module/layouts/index.js.map +7 -1
  2033. package/build-module/layouts/utils.js +28 -65
  2034. package/build-module/layouts/utils.js.map +7 -1
  2035. package/build-module/lock-unlock.js +8 -7
  2036. package/build-module/lock-unlock.js.map +7 -1
  2037. package/build-module/private-apis.js +63 -44
  2038. package/build-module/private-apis.js.map +7 -1
  2039. package/build-module/store/actions.js +536 -1191
  2040. package/build-module/store/actions.js.map +7 -1
  2041. package/build-module/store/array.js +17 -25
  2042. package/build-module/store/array.js.map +7 -1
  2043. package/build-module/store/constants.js +5 -2
  2044. package/build-module/store/constants.js.map +7 -1
  2045. package/build-module/store/defaults.js +168 -197
  2046. package/build-module/store/defaults.js.map +7 -1
  2047. package/build-module/store/get-block-settings.js +83 -88
  2048. package/build-module/store/get-block-settings.js.map +7 -1
  2049. package/build-module/store/index.js +17 -43
  2050. package/build-module/store/index.js.map +7 -1
  2051. package/build-module/store/private-actions.js +121 -310
  2052. package/build-module/store/private-actions.js.map +7 -1
  2053. package/build-module/store/private-keys.js +17 -8
  2054. package/build-module/store/private-keys.js.map +7 -1
  2055. package/build-module/store/private-selectors.js +288 -431
  2056. package/build-module/store/private-selectors.js.map +7 -1
  2057. package/build-module/store/reducer.js +1103 -1806
  2058. package/build-module/store/reducer.js.map +7 -1
  2059. package/build-module/store/selectors.js +1135 -2151
  2060. package/build-module/store/selectors.js.map +7 -1
  2061. package/build-module/store/utils.js +60 -42
  2062. package/build-module/store/utils.js.map +7 -1
  2063. package/build-module/utils/block-bindings.js +25 -217
  2064. package/build-module/utils/block-bindings.js.map +7 -1
  2065. package/build-module/utils/dom.js +36 -101
  2066. package/build-module/utils/dom.js.map +7 -1
  2067. package/build-module/utils/fit-text-frontend.js +40 -0
  2068. package/build-module/utils/fit-text-frontend.js.map +7 -0
  2069. package/build-module/utils/fit-text-utils.js +39 -0
  2070. package/build-module/utils/fit-text-utils.js.map +7 -0
  2071. package/build-module/utils/format-font-style.js +14 -24
  2072. package/build-module/utils/format-font-style.js.map +7 -1
  2073. package/build-module/utils/format-font-weight.js +30 -40
  2074. package/build-module/utils/format-font-weight.js.map +7 -1
  2075. package/build-module/utils/get-editor-region.js +10 -22
  2076. package/build-module/utils/get-editor-region.js.map +7 -1
  2077. package/build-module/utils/get-font-styles-and-weights.js +90 -101
  2078. package/build-module/utils/get-font-styles-and-weights.js.map +7 -1
  2079. package/build-module/utils/get-px-from-css-unit.js +5 -9
  2080. package/build-module/utils/get-px-from-css-unit.js.map +7 -1
  2081. package/build-module/utils/index.js +9 -4
  2082. package/build-module/utils/index.js.map +7 -1
  2083. package/build-module/utils/math.js +18 -78
  2084. package/build-module/utils/math.js.map +7 -1
  2085. package/build-module/utils/object.js +16 -53
  2086. package/build-module/utils/object.js.map +7 -1
  2087. package/build-module/utils/order-inserter-block-items.js +6 -18
  2088. package/build-module/utils/order-inserter-block-items.js.map +7 -1
  2089. package/build-module/utils/pasting.js +17 -79
  2090. package/build-module/utils/pasting.js.map +7 -1
  2091. package/build-module/utils/selection.js +13 -25
  2092. package/build-module/utils/selection.js.map +7 -1
  2093. package/build-module/utils/sorting.js +10 -29
  2094. package/build-module/utils/sorting.js.map +7 -1
  2095. package/build-module/utils/transform-styles/index.js +72 -136
  2096. package/build-module/utils/transform-styles/index.js.map +7 -1
  2097. package/build-module/utils/use-notify-copy.js +58 -49
  2098. package/build-module/utils/use-notify-copy.js.map +7 -1
  2099. package/build-style/content-rtl.css +77 -192
  2100. package/build-style/content.css +77 -192
  2101. package/build-style/default-editor-styles-rtl.css +3 -197
  2102. package/build-style/default-editor-styles.css +3 -197
  2103. package/build-style/style-rtl.css +167 -290
  2104. package/build-style/style.css +167 -290
  2105. package/package.json +56 -36
  2106. package/src/autocompleters/style.scss +2 -0
  2107. package/src/components/background-image-control/index.js +54 -27
  2108. package/src/components/background-image-control/style.scss +32 -0
  2109. package/src/components/block-allowed-blocks/allowed-blocks-control.js +80 -0
  2110. package/src/components/block-allowed-blocks/index.js +2 -0
  2111. package/src/components/block-allowed-blocks/modal.js +100 -0
  2112. package/src/components/block-allowed-blocks/style.scss +27 -0
  2113. package/src/components/block-breadcrumb/style.scss +3 -0
  2114. package/src/components/block-canvas/style.scss +8 -1
  2115. package/src/components/block-card/index.js +37 -30
  2116. package/src/components/block-card/style.scss +3 -0
  2117. package/src/components/block-compare/style.scss +4 -0
  2118. package/src/components/block-draggable/content.scss +3 -2
  2119. package/src/components/block-draggable/style.scss +3 -0
  2120. package/src/components/block-edit/edit.js +23 -5
  2121. package/src/components/block-icon/content.scss +7 -0
  2122. package/src/components/block-icon/style.scss +7 -0
  2123. package/src/components/block-inspector/index.js +27 -3
  2124. package/src/components/block-inspector/style.scss +3 -0
  2125. package/src/components/block-list/block.js +16 -0
  2126. package/src/components/block-list/content.scss +38 -9
  2127. package/src/components/block-list/index.js +11 -6
  2128. package/src/components/block-list/use-block-props/index.js +9 -9
  2129. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +132 -34
  2130. package/src/components/block-list-appender/content.scss +2 -0
  2131. package/src/components/block-lock/style.scss +4 -0
  2132. package/src/components/block-manager/index.js +32 -28
  2133. package/src/components/block-manager/style.scss +4 -26
  2134. package/src/components/block-mover/style.scss +3 -0
  2135. package/src/components/block-navigation/style.scss +3 -0
  2136. package/src/components/block-pattern-setup/style.scss +5 -0
  2137. package/src/components/block-patterns-list/style.scss +3 -0
  2138. package/src/components/block-patterns-paging/style.scss +3 -0
  2139. package/src/components/block-popover/style.scss +2 -0
  2140. package/src/components/block-rename/modal.js +3 -2
  2141. package/src/components/block-rename/style.scss +2 -0
  2142. package/src/components/block-settings-menu/block-settings-dropdown.js +7 -9
  2143. package/src/components/block-settings-menu-controls/index.js +21 -1
  2144. package/src/components/block-styles/style.scss +5 -0
  2145. package/src/components/block-switcher/style.scss +3 -0
  2146. package/src/components/block-toolbar/index.js +11 -14
  2147. package/src/components/block-toolbar/style.scss +5 -1
  2148. package/src/components/block-tools/index.js +46 -1
  2149. package/src/components/block-tools/style.scss +4 -45
  2150. package/src/components/block-tools/use-show-block-tools.js +1 -8
  2151. package/src/components/block-variation-picker/content.scss +3 -0
  2152. package/src/components/block-variation-transforms/style.scss +3 -0
  2153. package/src/components/block-visibility/index.js +2 -0
  2154. package/src/components/block-visibility/menu-item.js +96 -0
  2155. package/src/components/block-visibility/toolbar.js +88 -0
  2156. package/src/components/border-radius-control/style.scss +2 -0
  2157. package/src/components/button-block-appender/content.scss +3 -0
  2158. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  2159. package/src/components/colors-gradients/style.scss +4 -0
  2160. package/src/components/date-format-picker/style.scss +3 -0
  2161. package/src/components/default-block-appender/content.scss +4 -0
  2162. package/src/components/duotone-control/style.scss +4 -0
  2163. package/src/components/font-appearance-control/style.scss +2 -0
  2164. package/src/components/font-family/style.scss +2 -0
  2165. package/src/components/global-styles/color-panel.js +2 -0
  2166. package/src/components/global-styles/get-global-styles-changes.js +2 -0
  2167. package/src/components/global-styles/style.scss +3 -0
  2168. package/src/components/grid/style.scss +5 -0
  2169. package/src/components/iframe/content.scss +8 -1
  2170. package/src/components/iframe/style.scss +7 -0
  2171. package/src/components/index.js +0 -1
  2172. package/src/components/inserter/style.scss +6 -5
  2173. package/src/components/inserter-list-item/style.scss +2 -0
  2174. package/src/components/inspector-controls/groups.js +5 -0
  2175. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +7 -1
  2176. package/src/components/inspector-controls-tabs/index.js +33 -1
  2177. package/src/components/inspector-popover-header/style.scss +2 -0
  2178. package/src/components/keyboard-shortcuts/index.js +10 -0
  2179. package/src/components/link-control/index.js +119 -17
  2180. package/src/components/link-control/link-preview.js +9 -2
  2181. package/src/components/link-control/search-input.js +3 -1
  2182. package/src/components/link-control/settings.js +38 -11
  2183. package/src/components/link-control/style.scss +20 -3
  2184. package/src/components/link-control/test/index.js +515 -5
  2185. package/src/components/list-view/block-select-button.js +32 -9
  2186. package/src/components/list-view/block.js +56 -14
  2187. package/src/components/list-view/style.scss +6 -0
  2188. package/src/components/media-placeholder/style.scss +2 -0
  2189. package/src/components/media-replace-flow/style.scss +3 -0
  2190. package/src/components/media-replace-flow/test/index.js +1 -1
  2191. package/src/components/multi-selection-inspector/style.scss +2 -0
  2192. package/src/components/responsive-block-control/style.scss +3 -0
  2193. package/src/components/rich-text/content.scss +2 -0
  2194. package/src/components/rich-text/index.js +24 -19
  2195. package/src/components/rich-text/style.scss +3 -0
  2196. package/src/components/skip-to-selected-block/style.scss +2 -0
  2197. package/src/components/spacing-sizes-control/style.scss +2 -0
  2198. package/src/components/tabbed-sidebar/style.scss +3 -0
  2199. package/src/components/url-input/index.js +8 -4
  2200. package/src/components/url-input/style.scss +4 -0
  2201. package/src/components/url-popover/link-viewer.js +2 -2
  2202. package/src/components/url-popover/style.scss +3 -0
  2203. package/src/components/use-block-commands/index.js +40 -0
  2204. package/src/components/use-block-drop-zone/index.js +14 -1
  2205. package/src/components/warning/content.scss +4 -0
  2206. package/src/content.scss +16 -14
  2207. package/src/default-editor-styles.scss +1 -0
  2208. package/src/hooks/allowed-blocks.js +74 -0
  2209. package/src/hooks/block-bindings.js +381 -176
  2210. package/src/hooks/block-hooks.scss +3 -0
  2211. package/src/hooks/color.scss +2 -0
  2212. package/src/hooks/fit-text.js +268 -0
  2213. package/src/hooks/index.js +6 -0
  2214. package/src/hooks/layout.scss +3 -0
  2215. package/src/hooks/typography.js +2 -0
  2216. package/src/private-apis.js +6 -1
  2217. package/src/store/actions.js +2 -15
  2218. package/src/store/private-actions.js +15 -0
  2219. package/src/store/private-selectors.js +34 -15
  2220. package/src/store/reducer.js +82 -271
  2221. package/src/store/selectors.js +2 -44
  2222. package/src/store/test/private-selectors.js +2 -9
  2223. package/src/store/test/reducer.js +1 -345
  2224. package/src/store/test/selectors.js +3 -1
  2225. package/src/store/utils.js +11 -12
  2226. package/src/style.scss +64 -62
  2227. package/src/utils/block-bindings.js +6 -48
  2228. package/src/utils/fit-text-frontend.js +84 -0
  2229. package/src/utils/fit-text-utils.js +75 -0
  2230. package/build/components/audio-player/audio-url-parser.native.js +0 -24
  2231. package/build/components/audio-player/audio-url-parser.native.js.map +0 -1
  2232. package/build/components/audio-player/index.native.js +0 -174
  2233. package/build/components/audio-player/index.native.js.map +0 -1
  2234. package/build/components/block-alignment-control/ui.native.js +0 -80
  2235. package/build/components/block-alignment-control/ui.native.js.map +0 -1
  2236. package/build/components/block-caption/index.native.js +0 -95
  2237. package/build/components/block-caption/index.native.js.map +0 -1
  2238. package/build/components/block-controls/slot.native.js +0 -46
  2239. package/build/components/block-controls/slot.native.js.map +0 -1
  2240. package/build/components/block-draggable/draggable-chip.native.js +0 -58
  2241. package/build/components/block-draggable/draggable-chip.native.js.map +0 -1
  2242. package/build/components/block-draggable/dropping-insertion-point.native.js +0 -134
  2243. package/build/components/block-draggable/dropping-insertion-point.native.js.map +0 -1
  2244. package/build/components/block-draggable/index.native.js +0 -432
  2245. package/build/components/block-draggable/index.native.js.map +0 -1
  2246. package/build/components/block-draggable/use-scroll-when-dragging.native.js +0 -118
  2247. package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +0 -1
  2248. package/build/components/block-edit/edit.native.js +0 -51
  2249. package/build/components/block-edit/edit.native.js.map +0 -1
  2250. package/build/components/block-heading-level-dropdown/index.native.js +0 -68
  2251. package/build/components/block-heading-level-dropdown/index.native.js.map +0 -1
  2252. package/build/components/block-icon/index.native.js +0 -56
  2253. package/build/components/block-icon/index.native.js.map +0 -1
  2254. package/build/components/block-list/block-crash-boundary.native.js +0 -49
  2255. package/build/components/block-list/block-crash-boundary.native.js.map +0 -1
  2256. package/build/components/block-list/block-crash-warning.native.js +0 -24
  2257. package/build/components/block-list/block-crash-warning.native.js.map +0 -1
  2258. package/build/components/block-list/block-invalid-warning.native.js +0 -79
  2259. package/build/components/block-list/block-invalid-warning.native.js.map +0 -1
  2260. package/build/components/block-list/block-list-context.native.js +0 -170
  2261. package/build/components/block-list/block-list-context.native.js.map +0 -1
  2262. package/build/components/block-list/block-list-item-cell.native.js +0 -74
  2263. package/build/components/block-list/block-list-item-cell.native.js.map +0 -1
  2264. package/build/components/block-list/block-list-item.native.js +0 -191
  2265. package/build/components/block-list/block-list-item.native.js.map +0 -1
  2266. package/build/components/block-list/block-outline.native.js +0 -61
  2267. package/build/components/block-list/block-outline.native.js.map +0 -1
  2268. package/build/components/block-list/block-selection-button.native.js +0 -98
  2269. package/build/components/block-list/block-selection-button.native.js.map +0 -1
  2270. package/build/components/block-list/block.native.js +0 -538
  2271. package/build/components/block-list/block.native.js.map +0 -1
  2272. package/build/components/block-list/grid-item.native.js +0 -63
  2273. package/build/components/block-list/grid-item.native.js.map +0 -1
  2274. package/build/components/block-list/index.native.js +0 -351
  2275. package/build/components/block-list/index.native.js.map +0 -1
  2276. package/build/components/block-list/insertion-point.native.js +0 -45
  2277. package/build/components/block-list/insertion-point.native.js.map +0 -1
  2278. package/build/components/block-list/use-block-props/index.native.js +0 -24
  2279. package/build/components/block-list/use-block-props/index.native.js.map +0 -1
  2280. package/build/components/block-list/use-scroll-upon-insertion.native.js +0 -40
  2281. package/build/components/block-list/use-scroll-upon-insertion.native.js.map +0 -1
  2282. package/build/components/block-list-appender/index.native.js +0 -69
  2283. package/build/components/block-list-appender/index.native.js.map +0 -1
  2284. package/build/components/block-media-update-progress/index.native.js +0 -287
  2285. package/build/components/block-media-update-progress/index.native.js.map +0 -1
  2286. package/build/components/block-mover/index.native.js +0 -173
  2287. package/build/components/block-mover/index.native.js.map +0 -1
  2288. package/build/components/block-mover/mover-description.native.js +0 -130
  2289. package/build/components/block-mover/mover-description.native.js.map +0 -1
  2290. package/build/components/block-settings/button.native.js +0 -44
  2291. package/build/components/block-settings/button.native.js.map +0 -1
  2292. package/build/components/block-settings/container.native.js +0 -84
  2293. package/build/components/block-settings/container.native.js.map +0 -1
  2294. package/build/components/block-settings/index.native.js +0 -29
  2295. package/build/components/block-settings/index.native.js.map +0 -1
  2296. package/build/components/block-styles/index.native.js +0 -89
  2297. package/build/components/block-styles/index.native.js.map +0 -1
  2298. package/build/components/block-styles/preview.native.js +0 -96
  2299. package/build/components/block-styles/preview.native.js.map +0 -1
  2300. package/build/components/block-switcher/block-transformations-menu.native.js +0 -79
  2301. package/build/components/block-switcher/block-transformations-menu.native.js.map +0 -1
  2302. package/build/components/block-toolbar/block-toolbar-menu.native.js +0 -378
  2303. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +0 -1
  2304. package/build/components/block-toolbar/index.native.js +0 -108
  2305. package/build/components/block-toolbar/index.native.js.map +0 -1
  2306. package/build/components/block-types-list/index.native.js +0 -141
  2307. package/build/components/block-types-list/index.native.js.map +0 -1
  2308. package/build/components/block-variation-picker/index.native.js +0 -91
  2309. package/build/components/block-variation-picker/index.native.js.map +0 -1
  2310. package/build/components/button-block-appender/index.native.js +0 -82
  2311. package/build/components/button-block-appender/index.native.js.map +0 -1
  2312. package/build/components/caption/index.native.js +0 -62
  2313. package/build/components/caption/index.native.js.map +0 -1
  2314. package/build/components/colors-gradients/panel-color-gradient-settings.native.js +0 -62
  2315. package/build/components/colors-gradients/panel-color-gradient-settings.native.js.map +0 -1
  2316. package/build/components/contrast-checker/index.native.js +0 -91
  2317. package/build/components/contrast-checker/index.native.js.map +0 -1
  2318. package/build/components/convert-to-group-buttons/index.native.js +0 -82
  2319. package/build/components/convert-to-group-buttons/index.native.js.map +0 -1
  2320. package/build/components/default-block-appender/index.native.js +0 -113
  2321. package/build/components/default-block-appender/index.native.js.map +0 -1
  2322. package/build/components/floating-toolbar/index.native.js +0 -126
  2323. package/build/components/floating-toolbar/index.native.js.map +0 -1
  2324. package/build/components/font-sizes/index.native.js +0 -40
  2325. package/build/components/font-sizes/index.native.js.map +0 -1
  2326. package/build/components/global-styles/color-panel.native.js +0 -146
  2327. package/build/components/global-styles/color-panel.native.js.map +0 -1
  2328. package/build/components/global-styles/use-global-styles-context.native.js +0 -456
  2329. package/build/components/global-styles/use-global-styles-context.native.js.map +0 -1
  2330. package/build/components/gradients/index.native.js +0 -28
  2331. package/build/components/gradients/index.native.js.map +0 -1
  2332. package/build/components/image-link-destinations/index.native.js +0 -127
  2333. package/build/components/image-link-destinations/index.native.js.map +0 -1
  2334. package/build/components/index.native.js +0 -657
  2335. package/build/components/index.native.js.map +0 -1
  2336. package/build/components/inner-blocks/constants.native.js +0 -12
  2337. package/build/components/inner-blocks/constants.native.js.map +0 -1
  2338. package/build/components/inner-blocks/index.native.js +0 -208
  2339. package/build/components/inner-blocks/index.native.js.map +0 -1
  2340. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js +0 -95
  2341. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js.map +0 -1
  2342. package/build/components/inserter/block-types-tab.native.js +0 -72
  2343. package/build/components/inserter/block-types-tab.native.js.map +0 -1
  2344. package/build/components/inserter/hooks/use-block-type-impressions.native.js +0 -62
  2345. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +0 -1
  2346. package/build/components/inserter/hooks/use-clipboard-block.native.js +0 -51
  2347. package/build/components/inserter/hooks/use-clipboard-block.native.js.map +0 -1
  2348. package/build/components/inserter/index.native.js +0 -369
  2349. package/build/components/inserter/index.native.js.map +0 -1
  2350. package/build/components/inserter/menu.native.js +0 -189
  2351. package/build/components/inserter/menu.native.js.map +0 -1
  2352. package/build/components/inserter/no-results.native.js +0 -49
  2353. package/build/components/inserter/no-results.native.js.map +0 -1
  2354. package/build/components/inserter/reusable-blocks-tab.native.js +0 -57
  2355. package/build/components/inserter/reusable-blocks-tab.native.js.map +0 -1
  2356. package/build/components/inserter/search-results.native.js +0 -71
  2357. package/build/components/inserter/search-results.native.js.map +0 -1
  2358. package/build/components/inserter/tabs.native.js +0 -140
  2359. package/build/components/inserter/tabs.native.js.map +0 -1
  2360. package/build/components/inserter/utils.native.js +0 -56
  2361. package/build/components/inserter/utils.native.js.map +0 -1
  2362. package/build/components/inserter-button/index.native.js +0 -92
  2363. package/build/components/inserter-button/index.native.js.map +0 -1
  2364. package/build/components/inspector-controls/fill.native.js +0 -63
  2365. package/build/components/inspector-controls/fill.native.js.map +0 -1
  2366. package/build/components/inspector-controls/slot.native.js +0 -42
  2367. package/build/components/inspector-controls/slot.native.js.map +0 -1
  2368. package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js +0 -38
  2369. package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +0 -1
  2370. package/build/components/line-height-control/index.native.js +0 -40
  2371. package/build/components/line-height-control/index.native.js.map +0 -1
  2372. package/build/components/media-placeholder/index.native.js +0 -200
  2373. package/build/components/media-placeholder/index.native.js.map +0 -1
  2374. package/build/components/media-replace-flow/index.native.js +0 -21
  2375. package/build/components/media-replace-flow/index.native.js.map +0 -1
  2376. package/build/components/media-upload/constants.native.js +0 -20
  2377. package/build/components/media-upload/constants.native.js.map +0 -1
  2378. package/build/components/media-upload/index.native.js +0 -294
  2379. package/build/components/media-upload/index.native.js.map +0 -1
  2380. package/build/components/media-upload-progress/index.native.js +0 -203
  2381. package/build/components/media-upload-progress/index.native.js.map +0 -1
  2382. package/build/components/plain-text/index.native.js +0 -157
  2383. package/build/components/plain-text/index.native.js.map +0 -1
  2384. package/build/components/provider/index.native.js +0 -42
  2385. package/build/components/provider/index.native.js.map +0 -1
  2386. package/build/components/rich-text/embed-handler-picker.native.js +0 -54
  2387. package/build/components/rich-text/embed-handler-picker.native.js.map +0 -1
  2388. package/build/components/rich-text/file-paste-handler.native.js +0 -10
  2389. package/build/components/rich-text/file-paste-handler.native.js.map +0 -1
  2390. package/build/components/rich-text/format-toolbar/index.native.js +0 -23
  2391. package/build/components/rich-text/format-toolbar/index.native.js.map +0 -1
  2392. package/build/components/rich-text/format-toolbar-container.native.js +0 -23
  2393. package/build/components/rich-text/format-toolbar-container.native.js.map +0 -1
  2394. package/build/components/rich-text/index.native.js +0 -601
  2395. package/build/components/rich-text/index.native.js.map +0 -1
  2396. package/build/components/rich-text/input-event.native.js +0 -18
  2397. package/build/components/rich-text/input-event.native.js.map +0 -1
  2398. package/build/components/rich-text/native/get-format-colors.native.js +0 -39
  2399. package/build/components/rich-text/native/get-format-colors.native.js.map +0 -1
  2400. package/build/components/rich-text/native/index.native.js +0 -1184
  2401. package/build/components/rich-text/native/index.native.js.map +0 -1
  2402. package/build/components/rich-text/native/toolbar-button-with-options.native.js +0 -60
  2403. package/build/components/rich-text/native/toolbar-button-with-options.native.js.map +0 -1
  2404. package/build/components/rich-text/remove-browser-shortcuts.native.js +0 -9
  2405. package/build/components/rich-text/remove-browser-shortcuts.native.js.map +0 -1
  2406. package/build/components/rich-text/shortcut.native.js +0 -18
  2407. package/build/components/rich-text/shortcut.native.js.map +0 -1
  2408. package/build/components/tool-selector/index.js +0 -90
  2409. package/build/components/tool-selector/index.js.map +0 -1
  2410. package/build/components/ungroup-button/index.native.js +0 -77
  2411. package/build/components/ungroup-button/index.native.js.map +0 -1
  2412. package/build/components/unsupported-block-details/index.native.js +0 -129
  2413. package/build/components/unsupported-block-details/index.native.js.map +0 -1
  2414. package/build/components/url-input/index.native.js +0 -39
  2415. package/build/components/url-input/index.native.js.map +0 -1
  2416. package/build/components/use-block-drop-zone/index.native.js +0 -192
  2417. package/build/components/use-block-drop-zone/index.native.js.map +0 -1
  2418. package/build/components/use-on-block-drop/index.native.js +0 -89
  2419. package/build/components/use-on-block-drop/index.native.js.map +0 -1
  2420. package/build/components/use-unsupported-block-editor/index.native.js +0 -57
  2421. package/build/components/use-unsupported-block-editor/index.native.js.map +0 -1
  2422. package/build/components/video-player/gridicon-play.native.js +0 -20
  2423. package/build/components/video-player/gridicon-play.native.js.map +0 -1
  2424. package/build/components/video-player/index.native.js +0 -135
  2425. package/build/components/video-player/index.native.js.map +0 -1
  2426. package/build/components/warning/index.native.js +0 -63
  2427. package/build/components/warning/index.native.js.map +0 -1
  2428. package/build/hooks/align.native.js +0 -56
  2429. package/build/hooks/align.native.js.map +0 -1
  2430. package/build/hooks/custom-class-name.native.js +0 -66
  2431. package/build/hooks/custom-class-name.native.js.map +0 -1
  2432. package/build/hooks/index.native.js +0 -85
  2433. package/build/hooks/index.native.js.map +0 -1
  2434. package/build/hooks/layout.native.js +0 -20
  2435. package/build/hooks/layout.native.js.map +0 -1
  2436. package/build/hooks/typography.native.js +0 -76
  2437. package/build/hooks/typography.native.js.map +0 -1
  2438. package/build/hooks/use-editor-wrapper-styles.native.js +0 -227
  2439. package/build/hooks/use-editor-wrapper-styles.native.js.map +0 -1
  2440. package/build/index.native.js +0 -28
  2441. package/build/index.native.js.map +0 -1
  2442. package/build/private-apis.native.js +0 -31
  2443. package/build/private-apis.native.js.map +0 -1
  2444. package/build/store/defaults.native.js +0 -31
  2445. package/build/store/defaults.native.js.map +0 -1
  2446. package/build-module/components/audio-player/audio-url-parser.native.js +0 -16
  2447. package/build-module/components/audio-player/audio-url-parser.native.js.map +0 -1
  2448. package/build-module/components/audio-player/index.native.js +0 -166
  2449. package/build-module/components/audio-player/index.native.js.map +0 -1
  2450. package/build-module/components/block-alignment-control/ui.native.js +0 -72
  2451. package/build-module/components/block-alignment-control/ui.native.js.map +0 -1
  2452. package/build-module/components/block-caption/index.native.js +0 -87
  2453. package/build-module/components/block-caption/index.native.js.map +0 -1
  2454. package/build-module/components/block-controls/slot.native.js +0 -38
  2455. package/build-module/components/block-controls/slot.native.js.map +0 -1
  2456. package/build-module/components/block-draggable/draggable-chip.native.js +0 -50
  2457. package/build-module/components/block-draggable/draggable-chip.native.js.map +0 -1
  2458. package/build-module/components/block-draggable/dropping-insertion-point.native.js +0 -126
  2459. package/build-module/components/block-draggable/dropping-insertion-point.native.js.map +0 -1
  2460. package/build-module/components/block-draggable/index.native.js +0 -422
  2461. package/build-module/components/block-draggable/index.native.js.map +0 -1
  2462. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +0 -111
  2463. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +0 -1
  2464. package/build-module/components/block-edit/edit.native.js +0 -44
  2465. package/build-module/components/block-edit/edit.native.js.map +0 -1
  2466. package/build-module/components/block-heading-level-dropdown/index.native.js +0 -60
  2467. package/build-module/components/block-heading-level-dropdown/index.native.js.map +0 -1
  2468. package/build-module/components/block-icon/index.native.js +0 -47
  2469. package/build-module/components/block-icon/index.native.js.map +0 -1
  2470. package/build-module/components/block-list/block-crash-boundary.native.js +0 -42
  2471. package/build-module/components/block-list/block-crash-boundary.native.js.map +0 -1
  2472. package/build-module/components/block-list/block-crash-warning.native.js +0 -15
  2473. package/build-module/components/block-list/block-crash-warning.native.js.map +0 -1
  2474. package/build-module/components/block-list/block-invalid-warning.native.js +0 -71
  2475. package/build-module/components/block-list/block-invalid-warning.native.js.map +0 -1
  2476. package/build-module/components/block-list/block-list-context.native.js +0 -160
  2477. package/build-module/components/block-list/block-list-context.native.js.map +0 -1
  2478. package/build-module/components/block-list/block-list-item-cell.native.js +0 -67
  2479. package/build-module/components/block-list/block-list-item-cell.native.js.map +0 -1
  2480. package/build-module/components/block-list/block-list-item.native.js +0 -185
  2481. package/build-module/components/block-list/block-list-item.native.js.map +0 -1
  2482. package/build-module/components/block-list/block-outline.native.js +0 -53
  2483. package/build-module/components/block-list/block-outline.native.js.map +0 -1
  2484. package/build-module/components/block-list/block-selection-button.native.js +0 -90
  2485. package/build-module/components/block-list/block-selection-button.native.js.map +0 -1
  2486. package/build-module/components/block-list/block.native.js +0 -530
  2487. package/build-module/components/block-list/block.native.js.map +0 -1
  2488. package/build-module/components/block-list/grid-item.native.js +0 -55
  2489. package/build-module/components/block-list/grid-item.native.js.map +0 -1
  2490. package/build-module/components/block-list/index.native.js +0 -343
  2491. package/build-module/components/block-list/index.native.js.map +0 -1
  2492. package/build-module/components/block-list/insertion-point.native.js +0 -37
  2493. package/build-module/components/block-list/insertion-point.native.js.map +0 -1
  2494. package/build-module/components/block-list/use-block-props/index.native.js +0 -17
  2495. package/build-module/components/block-list/use-block-props/index.native.js.map +0 -1
  2496. package/build-module/components/block-list/use-scroll-upon-insertion.native.js +0 -33
  2497. package/build-module/components/block-list/use-scroll-upon-insertion.native.js.map +0 -1
  2498. package/build-module/components/block-list-appender/index.native.js +0 -61
  2499. package/build-module/components/block-list-appender/index.native.js.map +0 -1
  2500. package/build-module/components/block-media-update-progress/index.native.js +0 -278
  2501. package/build-module/components/block-media-update-progress/index.native.js.map +0 -1
  2502. package/build-module/components/block-mover/index.native.js +0 -165
  2503. package/build-module/components/block-mover/index.native.js.map +0 -1
  2504. package/build-module/components/block-mover/mover-description.native.js +0 -122
  2505. package/build-module/components/block-mover/mover-description.native.js.map +0 -1
  2506. package/build-module/components/block-settings/button.native.js +0 -37
  2507. package/build-module/components/block-settings/button.native.js.map +0 -1
  2508. package/build-module/components/block-settings/container.native.js +0 -75
  2509. package/build-module/components/block-settings/container.native.js.map +0 -1
  2510. package/build-module/components/block-settings/index.native.js +0 -3
  2511. package/build-module/components/block-settings/index.native.js.map +0 -1
  2512. package/build-module/components/block-styles/index.native.js +0 -81
  2513. package/build-module/components/block-styles/index.native.js.map +0 -1
  2514. package/build-module/components/block-styles/preview.native.js +0 -88
  2515. package/build-module/components/block-styles/preview.native.js.map +0 -1
  2516. package/build-module/components/block-switcher/block-transformations-menu.native.js +0 -72
  2517. package/build-module/components/block-switcher/block-transformations-menu.native.js.map +0 -1
  2518. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +0 -369
  2519. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +0 -1
  2520. package/build-module/components/block-toolbar/index.native.js +0 -100
  2521. package/build-module/components/block-toolbar/index.native.js.map +0 -1
  2522. package/build-module/components/block-types-list/index.native.js +0 -133
  2523. package/build-module/components/block-types-list/index.native.js.map +0 -1
  2524. package/build-module/components/block-variation-picker/index.native.js +0 -83
  2525. package/build-module/components/block-variation-picker/index.native.js.map +0 -1
  2526. package/build-module/components/button-block-appender/index.native.js +0 -74
  2527. package/build-module/components/button-block-appender/index.native.js.map +0 -1
  2528. package/build-module/components/caption/index.native.js +0 -55
  2529. package/build-module/components/caption/index.native.js.map +0 -1
  2530. package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js +0 -55
  2531. package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js.map +0 -1
  2532. package/build-module/components/contrast-checker/index.native.js +0 -82
  2533. package/build-module/components/contrast-checker/index.native.js.map +0 -1
  2534. package/build-module/components/convert-to-group-buttons/index.native.js +0 -69
  2535. package/build-module/components/convert-to-group-buttons/index.native.js.map +0 -1
  2536. package/build-module/components/default-block-appender/index.native.js +0 -104
  2537. package/build-module/components/default-block-appender/index.native.js.map +0 -1
  2538. package/build-module/components/floating-toolbar/index.native.js +0 -118
  2539. package/build-module/components/floating-toolbar/index.native.js.map +0 -1
  2540. package/build-module/components/font-sizes/index.native.js +0 -4
  2541. package/build-module/components/font-sizes/index.native.js.map +0 -1
  2542. package/build-module/components/global-styles/color-panel.native.js +0 -133
  2543. package/build-module/components/global-styles/color-panel.native.js.map +0 -1
  2544. package/build-module/components/global-styles/use-global-styles-context.native.js +0 -437
  2545. package/build-module/components/global-styles/use-global-styles-context.native.js.map +0 -1
  2546. package/build-module/components/gradients/index.native.js +0 -3
  2547. package/build-module/components/gradients/index.native.js.map +0 -1
  2548. package/build-module/components/image-link-destinations/index.native.js +0 -119
  2549. package/build-module/components/image-link-destinations/index.native.js.map +0 -1
  2550. package/build-module/components/index.native.js +0 -58
  2551. package/build-module/components/index.native.js.map +0 -1
  2552. package/build-module/components/inner-blocks/constants.native.js +0 -6
  2553. package/build-module/components/inner-blocks/constants.native.js.map +0 -1
  2554. package/build-module/components/inner-blocks/index.native.js +0 -200
  2555. package/build-module/components/inner-blocks/index.native.js.map +0 -1
  2556. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js +0 -87
  2557. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js.map +0 -1
  2558. package/build-module/components/inserter/block-types-tab.native.js +0 -64
  2559. package/build-module/components/inserter/block-types-tab.native.js.map +0 -1
  2560. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +0 -55
  2561. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +0 -1
  2562. package/build-module/components/inserter/hooks/use-clipboard-block.native.js +0 -44
  2563. package/build-module/components/inserter/hooks/use-clipboard-block.native.js.map +0 -1
  2564. package/build-module/components/inserter/index.native.js +0 -360
  2565. package/build-module/components/inserter/index.native.js.map +0 -1
  2566. package/build-module/components/inserter/menu.native.js +0 -181
  2567. package/build-module/components/inserter/menu.native.js.map +0 -1
  2568. package/build-module/components/inserter/no-results.native.js +0 -41
  2569. package/build-module/components/inserter/no-results.native.js.map +0 -1
  2570. package/build-module/components/inserter/reusable-blocks-tab.native.js +0 -49
  2571. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +0 -1
  2572. package/build-module/components/inserter/search-results.native.js +0 -63
  2573. package/build-module/components/inserter/search-results.native.js.map +0 -1
  2574. package/build-module/components/inserter/tabs.native.js +0 -132
  2575. package/build-module/components/inserter/tabs.native.js.map +0 -1
  2576. package/build-module/components/inserter/utils.native.js +0 -48
  2577. package/build-module/components/inserter/utils.native.js.map +0 -1
  2578. package/build-module/components/inserter-button/index.native.js +0 -84
  2579. package/build-module/components/inserter-button/index.native.js.map +0 -1
  2580. package/build-module/components/inspector-controls/fill.native.js +0 -55
  2581. package/build-module/components/inspector-controls/fill.native.js.map +0 -1
  2582. package/build-module/components/inspector-controls/slot.native.js +0 -34
  2583. package/build-module/components/inspector-controls/slot.native.js.map +0 -1
  2584. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js +0 -30
  2585. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +0 -1
  2586. package/build-module/components/line-height-control/index.native.js +0 -32
  2587. package/build-module/components/line-height-control/index.native.js.map +0 -1
  2588. package/build-module/components/media-placeholder/index.native.js +0 -192
  2589. package/build-module/components/media-placeholder/index.native.js.map +0 -1
  2590. package/build-module/components/media-replace-flow/index.native.js +0 -15
  2591. package/build-module/components/media-replace-flow/index.native.js.map +0 -1
  2592. package/build-module/components/media-upload/constants.native.js +0 -13
  2593. package/build-module/components/media-upload/constants.native.js.map +0 -1
  2594. package/build-module/components/media-upload/index.native.js +0 -285
  2595. package/build-module/components/media-upload/index.native.js.map +0 -1
  2596. package/build-module/components/media-upload-progress/index.native.js +0 -194
  2597. package/build-module/components/media-upload-progress/index.native.js.map +0 -1
  2598. package/build-module/components/plain-text/index.native.js +0 -148
  2599. package/build-module/components/plain-text/index.native.js.map +0 -1
  2600. package/build-module/components/provider/index.native.js +0 -37
  2601. package/build-module/components/provider/index.native.js.map +0 -1
  2602. package/build-module/components/rich-text/embed-handler-picker.native.js +0 -47
  2603. package/build-module/components/rich-text/embed-handler-picker.native.js.map +0 -1
  2604. package/build-module/components/rich-text/file-paste-handler.native.js +0 -4
  2605. package/build-module/components/rich-text/file-paste-handler.native.js.map +0 -1
  2606. package/build-module/components/rich-text/format-toolbar/index.native.js +0 -17
  2607. package/build-module/components/rich-text/format-toolbar/index.native.js.map +0 -1
  2608. package/build-module/components/rich-text/format-toolbar-container.native.js +0 -15
  2609. package/build-module/components/rich-text/format-toolbar-container.native.js.map +0 -1
  2610. package/build-module/components/rich-text/index.native.js +0 -573
  2611. package/build-module/components/rich-text/index.native.js.map +0 -1
  2612. package/build-module/components/rich-text/input-event.native.js +0 -10
  2613. package/build-module/components/rich-text/input-event.native.js.map +0 -1
  2614. package/build-module/components/rich-text/native/get-format-colors.native.js +0 -32
  2615. package/build-module/components/rich-text/native/get-format-colors.native.js.map +0 -1
  2616. package/build-module/components/rich-text/native/index.native.js +0 -1176
  2617. package/build-module/components/rich-text/native/index.native.js.map +0 -1
  2618. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js +0 -55
  2619. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js.map +0 -1
  2620. package/build-module/components/rich-text/remove-browser-shortcuts.native.js +0 -2
  2621. package/build-module/components/rich-text/remove-browser-shortcuts.native.js.map +0 -1
  2622. package/build-module/components/rich-text/shortcut.native.js +0 -10
  2623. package/build-module/components/rich-text/shortcut.native.js.map +0 -1
  2624. package/build-module/components/tool-selector/index.js +0 -83
  2625. package/build-module/components/tool-selector/index.js.map +0 -1
  2626. package/build-module/components/ungroup-button/index.native.js +0 -69
  2627. package/build-module/components/ungroup-button/index.native.js.map +0 -1
  2628. package/build-module/components/unsupported-block-details/index.native.js +0 -121
  2629. package/build-module/components/unsupported-block-details/index.native.js.map +0 -1
  2630. package/build-module/components/url-input/index.native.js +0 -32
  2631. package/build-module/components/url-input/index.native.js.map +0 -1
  2632. package/build-module/components/use-block-drop-zone/index.native.js +0 -183
  2633. package/build-module/components/use-block-drop-zone/index.native.js.map +0 -1
  2634. package/build-module/components/use-on-block-drop/index.native.js +0 -82
  2635. package/build-module/components/use-on-block-drop/index.native.js.map +0 -1
  2636. package/build-module/components/use-unsupported-block-editor/index.native.js +0 -51
  2637. package/build-module/components/use-unsupported-block-editor/index.native.js.map +0 -1
  2638. package/build-module/components/video-player/gridicon-play.native.js +0 -14
  2639. package/build-module/components/video-player/gridicon-play.native.js.map +0 -1
  2640. package/build-module/components/video-player/index.native.js +0 -128
  2641. package/build-module/components/video-player/index.native.js.map +0 -1
  2642. package/build-module/components/warning/index.native.js +0 -55
  2643. package/build-module/components/warning/index.native.js.map +0 -1
  2644. package/build-module/hooks/align.native.js +0 -32
  2645. package/build-module/hooks/align.native.js.map +0 -1
  2646. package/build-module/hooks/custom-class-name.native.js +0 -57
  2647. package/build-module/hooks/custom-class-name.native.js.map +0 -1
  2648. package/build-module/hooks/index.native.js +0 -24
  2649. package/build-module/hooks/index.native.js.map +0 -1
  2650. package/build-module/hooks/layout.native.js +0 -18
  2651. package/build-module/hooks/layout.native.js.map +0 -1
  2652. package/build-module/hooks/typography.native.js +0 -68
  2653. package/build-module/hooks/typography.native.js.map +0 -1
  2654. package/build-module/hooks/use-editor-wrapper-styles.native.js +0 -219
  2655. package/build-module/hooks/use-editor-wrapper-styles.native.js.map +0 -1
  2656. package/build-module/index.native.js +0 -6
  2657. package/build-module/index.native.js.map +0 -1
  2658. package/build-module/private-apis.native.js +0 -22
  2659. package/build-module/private-apis.native.js.map +0 -1
  2660. package/build-module/store/defaults.native.js +0 -19
  2661. package/build-module/store/defaults.native.js.map +0 -1
  2662. package/src/components/tool-selector/index.js +0 -107
  2663. package/src/components/tool-selector/style.scss +0 -15
@@ -1 +1,7 @@
1
- {"version":3,"names":["_blocks","require","_element","_hooks","_icons","_richText","_deprecated","_interopRequireDefault","_data","_preferences","_utils","_sorting","_constants","_lockUnlock","_privateSelectors","isContentBlock","unlock","blocksPrivateApis","MILLISECONDS_PER_HOUR","MILLISECONDS_PER_DAY","MILLISECONDS_PER_WEEK","EMPTY_ARRAY","EMPTY_SET","Set","DEFAULT_INSERTER_OPTIONS","isFiltered","getBlockName","state","clientId","block","blocks","byClientId","get","socialLinkName","Platform","OS","name","attributes","service","isBlockValid","isValid","getBlockAttributes","getBlock","has","tree","__unstableGetBlockWithoutInnerBlocks","exports","createSelector","getBlocks","rootClientId","treeKey","areInnerBlocksControlled","innerBlocks","__unstableGetClientIdWithClientIdsTree","deprecated","since","version","__unstableGetClientIdsTree","order","getBlockOrder","map","getClientIdsOfDescendants","rootIds","Array","isArray","ids","rootId","push","index","length","id","splice","getClientIdsWithDescendants","getGlobalBlockCount","blockName","clientIds","count","getBlocksByName","blockNames","foundBlocks","filter","includes","__experimentalGetGlobalBlocksByName","alternative","getBlocksByClientId","getBlockNamesByClientId","Boolean","getBlockCount","getSelectionStart","selection","selectionStart","getSelectionEnd","selectionEnd","getBlockSelectionStart","getBlockSelectionEnd","getSelectedBlockCount","multiSelectedBlockCount","getMultiSelectedBlockClientIds","hasSelectedBlock","getSelectedBlockClientId","getSelectedBlock","getBlockRootClientId","_state$blocks$parents","parents","getBlockParents","ascending","current","reverse","getBlockParentsByBlockName","hasName","getBlockHierarchyRootClientId","parent","getLowestCommonAncestorWithSelectedBlock","selectedId","clientParents","selectedParents","lowestCommonAncestor","maxDepth","Math","min","getAdjacentBlockClientId","startClientId","modifier","undefined","getFirstMultiSelectedBlockClientId","getLastMultiSelectedBlockClientId","orderSet","indexOf","nextIndex","getPreviousBlockClientId","getNextBlockClientId","getSelectedBlocksInitialCaretPosition","initialPosition","getSelectedBlockClientIds","blockOrder","startIndex","endIndex","slice","getMultiSelectedBlocks","multiSelectedBlockClientIds","getDependants","selectedClientIds","isFirstMultiSelectedBlock","isBlockMultiSelected","isAncestorMultiSelected","ancestorClientId","isMultiSelected","getMultiSelectedBlocksStartClientId","getMultiSelectedBlocksEndClientId","__unstableIsFullySelected","selectionAnchor","selectionFocus","attributeKey","offset","__unstableIsSelectionCollapsed","__unstableSelectionHasUnmergeableBlock","some","blockType","getBlockType","merge","__unstableIsSelectionMergeable","isForward","anchorRootClientId","focusRootClientId","anchorIndex","focusIndex","targetBlockClientId","blockToMergeClientId","targetBlockName","targetBlockType","blockToMerge","blocksToMerge","switchToBlockType","__unstableGetSelectedBlocksWithPartialSelection","blockA","blockB","htmlA","htmlB","valueA","create","html","valueB","remove","text","toHTMLString","value","getBlockIndex","isBlockSelected","hasSelectedInnerBlock","deep","selectedBlockClientIds","hasDraggedInnerBlock","innerClientId","isBlockBeingDragged","isBlockWithinSelection","hasMultiSelection","isMultiSelecting","isSelectionEnabled","getBlockMode","blocksMode","isTyping","isDraggingBlocks","draggedBlocks","getDraggedBlockClientIds","isAncestorBeingDragged","parentClientId","isCaretWithinFormattedText","getBlockInsertionPoint","insertionCue","isBlockInsertionPointVisible","isValidTemplate","template","getTemplate","settings","getTemplateLock","_getBlockListSettings","_state$settings$templ","templateLock","getBlockListSettings","isBlockVisibleInTheInserter","blockNameOrType","allowedBlockTypes","getSettings","isBlockAllowedInEditor","checkAllowList","concat","ancestor","hasParent","canInsertBlockTypeUnmemoized","isLocked","isContentRoleBlock","isParentSectionBlock","isSectionBlock","blockEditingMode","getBlockEditingMode","parentBlockListSettings","isNavigationMode","isContainerInsertableToInWriteMode","parentName","parentBlockType","parentAllowedChildBlocks","allowedBlocks","hasParentAllowedBlock","parentAllowedBlocks","hasParentListAllowedBlock","blockAllowedParentBlocks","hasBlockAllowedParent","hasBlockAllowedAncestor","blockAllowedAncestorBlocks","ancestors","canInsert","applyFilters","bind","canInsertBlockType","createRegistrySelector","select","getInsertBlockTypeDependants","canInsertBlocks","every","canRemoveBlock","lock","isBlockWithinSection","getParentSectionBlock","canRemoveBlocks","canMoveBlock","move","canMoveBlocks","canEditBlock","edit","canLockBlockType","nameOrType","hasBlockSupport","canLockBlocks","getInsertUsage","_state$preferences$in","preferences","insertUsage","canIncludeBlockTypeInInserter","getItemFromVariation","item","variation","variationId","time","icon","title","description","category","example","hasOwnProperty","initialAttributes","keywords","frecency","calculateFrecency","duration","Date","now","buildBlockTypeItem","buildScope","isDisabled","blockItemBase","inserterVariations","getBlockVariations","variations","utility","getInserterItems","options","buildReusableBlockInserterItem","reusableBlock","wp_pattern_sync_status","src","symbol","foreground","userPattern","mapUserPattern","ref","content","getParsedPattern","syncStatus","patternInserterItems","STORE_NAME","getReusableBlocks","buildBlockTypeInserterItem","blockTypeInserterItems","getBlockTypes","isAllowedInCurrentRoot","items","reduce","accumulator","isDefault","variationMapper","groupByType","core","noncore","type","startsWith","coreItems","nonCoreItems","sortedBlockTypes","getBlockTransformItems","normalizedBlocks","buildBlockTypeTransformItem","blockTypeTransformItems","itemsByName","Object","fromEntries","entries","possibleTransforms","getPossibleBlockTransformations","orderBy","hasInserterItems","hasBlockType","hasReusableBlock","getAllowedBlocks","blockTypes","__experimentalGetAllowedBlocks","getDirectInsertBlock","_state$blockListSetti","defaultBlock","directInsert","blockListSettings","__experimentalGetDirectInsertBlock","__experimentalGetParsedPattern","patternName","pattern","getPatternBySlug","getAllowedPatternsDependants","getAllPatternsDependants","patternsWithParsedBlocks","WeakMap","enhancePatternWithParsedBlocks","enhancedPattern","set","__experimentalGetAllowedPatterns","getAllPatterns","patterns","parsedPatterns","inserter","availableParsedPatterns","checkAllowListRecursive","getGrammar","patternsAllowed","getPatternsByBlockTypes","normalizedBlockNames","filteredPatterns","__experimentalGetPatternsByBlockTypes","__experimentalGetPatternTransformItems","selectedBlockNames","from","isLastBlockChangePersistent","isPersistentChange","__experimentalGetBlockListSettingsForBlocks","blockListSettingsForBlocks","__experimentalGetReusableBlockTitle","find","raw","__unstableIsLastBlockChangeIgnored","isIgnoredChange","__experimentalGetLastBlockAttributeChanges","lastBlockAttributesChange","__unstableGetEditorMode","_state$settings$edito","window","__experimentalEditorWriteMode","editorTool","preferencesStore","hasBlockMovingClientId","hint","didAutomaticChange","automaticChangeStatus","isBlockHighlighted","highlightedBlock","controlledInnerBlocks","__experimentalGetActiveBlockIdByBlockNames","validBlockNames","selectedBlockClientId","entityAreaParents","wasBlockJustInserted","source","lastBlockInserted","isBlockVisible","_state$blockVisibilit","blockVisibility","getHoveredBlockClientId","__unstableGetVisibleBlocks","visibleBlocks","keys","key","size","__unstableHasActiveBlockOverlayActive","isZoomOut","sectionRootClientId","getSectionRootClientId","sectionClientIds","blockSupportDisable","shouldEnableIfUnselected","__unstableIsWithinBlockOverlay","isNavMode","derivedBlockEditingModes","derivedNavModeBlockEditingModes","blockEditingModes","isUngroupable","_clientId","getGroupingBlockName","blocksStore","groupingBlockName","_isUngroupable","transforms","ungroup","isGroupable","_clientIds","groupingBlockAvailable","_isGroupable","__unstableGetContentLockingParent","getContentLockingParent","__unstableGetTemporarilyEditingAsBlocks","getTemporarilyEditingAsBlocks","__unstableGetTemporarilyEditingFocusModeToRevert","getTemporarilyEditingFocusModeToRevert"],"sources":["@wordpress/block-editor/src/store/selectors.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockType,\n\tgetBlockTypes,\n\tgetBlockVariations,\n\thasBlockSupport,\n\tgetPossibleBlockTransformations,\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tprivateApis as blocksPrivateApis,\n} from '@wordpress/blocks';\nimport { Platform } from '@wordpress/element';\nimport { applyFilters } from '@wordpress/hooks';\nimport { symbol } from '@wordpress/icons';\nimport { create, remove, toHTMLString } from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { createSelector, createRegistrySelector } from '@wordpress/data';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport {\n\tisFiltered,\n\tcheckAllowListRecursive,\n\tcheckAllowList,\n\tgetAllPatternsDependants,\n\tgetInsertBlockTypeDependants,\n\tgetParsedPattern,\n\tgetGrammar,\n\tmapUserPattern,\n} from './utils';\nimport { orderBy } from '../utils/sorting';\nimport { STORE_NAME } from './constants';\nimport { unlock } from '../lock-unlock';\n\nimport {\n\tgetContentLockingParent,\n\tgetTemporarilyEditingAsBlocks,\n\tgetTemporarilyEditingFocusModeToRevert,\n\tgetSectionRootClientId,\n\tisSectionBlock,\n\tgetParentSectionBlock,\n\tisZoomOut,\n\tisContainerInsertableToInWriteMode,\n} from './private-selectors';\n\nconst { isContentBlock } = unlock( blocksPrivateApis );\n\n/**\n * A block selection object.\n *\n * @typedef {Object} WPBlockSelection\n *\n * @property {string} clientId A block client ID.\n * @property {string} attributeKey A block attribute key.\n * @property {number} offset An attribute value offset, based on the rich\n * text value. See `wp.richText.create`.\n */\n\n// Module constants.\nconst MILLISECONDS_PER_HOUR = 3600 * 1000;\nconst MILLISECONDS_PER_DAY = 24 * 3600 * 1000;\nconst MILLISECONDS_PER_WEEK = 7 * 24 * 3600 * 1000;\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation, as in a connected or\n * other pure component which performs `shouldComponentUpdate` check on props.\n * This should be used as a last resort, since the normalized data should be\n * maintained by the reducer result in state.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\n/**\n * Shared reference to an empty Set for cases where it is important to avoid\n * returning a new Set reference on every invocation, as in a connected or\n * other pure component which performs `shouldComponentUpdate` check on props.\n * This should be used as a last resort, since the normalized data should be\n * maintained by the reducer result in state.\n *\n * @type {Set}\n */\nconst EMPTY_SET = new Set();\n\nconst DEFAULT_INSERTER_OPTIONS = {\n\t[ isFiltered ]: true,\n};\n\n/**\n * Returns a block's name given its client ID, or null if no block exists with\n * the client ID.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {string} Block name.\n */\nexport function getBlockName( state, clientId ) {\n\tconst block = state.blocks.byClientId.get( clientId );\n\tconst socialLinkName = 'core/social-link';\n\n\tif ( Platform.OS !== 'web' && block?.name === socialLinkName ) {\n\t\tconst attributes = state.blocks.attributes.get( clientId );\n\t\tconst { service } = attributes ?? {};\n\n\t\treturn service ? `${ socialLinkName }-${ service }` : socialLinkName;\n\t}\n\treturn block ? block.name : null;\n}\n\n/**\n * Returns whether a block is valid or not.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Is Valid.\n */\nexport function isBlockValid( state, clientId ) {\n\tconst block = state.blocks.byClientId.get( clientId );\n\treturn !! block && block.isValid;\n}\n\n/**\n * Returns a block's attributes given its client ID, or null if no block exists with\n * the client ID.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {?Object} Block attributes.\n */\nexport function getBlockAttributes( state, clientId ) {\n\tconst block = state.blocks.byClientId.get( clientId );\n\tif ( ! block ) {\n\t\treturn null;\n\t}\n\n\treturn state.blocks.attributes.get( clientId );\n}\n\n/**\n * Returns a block given its client ID. This is a parsed copy of the block,\n * containing its `blockName`, `clientId`, and current `attributes` state. This\n * is not the block's registration settings, which must be retrieved from the\n * blocks module registration store.\n *\n * getBlock recurses through its inner blocks until all its children blocks have\n * been retrieved. Note that getBlock will not return the child inner blocks of\n * an inner block controller. This is because an inner block controller syncs\n * itself with its own entity, and should therefore not be included with the\n * blocks of a different entity. For example, say you call `getBlocks( TP )` to\n * get the blocks of a template part. If another template part is a child of TP,\n * then the nested template part's child blocks will not be returned. This way,\n * the template block itself is considered part of the parent, but the children\n * are not.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {Object} Parsed block object.\n */\nexport function getBlock( state, clientId ) {\n\tif ( ! state.blocks.byClientId.has( clientId ) ) {\n\t\treturn null;\n\t}\n\n\treturn state.blocks.tree.get( clientId );\n}\n\nexport const __unstableGetBlockWithoutInnerBlocks = createSelector(\n\t( state, clientId ) => {\n\t\tconst block = state.blocks.byClientId.get( clientId );\n\t\tif ( ! block ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\t...block,\n\t\t\tattributes: getBlockAttributes( state, clientId ),\n\t\t};\n\t},\n\t( state, clientId ) => [\n\t\tstate.blocks.byClientId.get( clientId ),\n\t\tstate.blocks.attributes.get( clientId ),\n\t]\n);\n\n/**\n * Returns all block objects for the current post being edited as an array in\n * the order they appear in the post. Note that this will exclude child blocks\n * of nested inner block controllers.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Object[]} Post blocks.\n */\nexport function getBlocks( state, rootClientId ) {\n\tconst treeKey =\n\t\t! rootClientId || ! areInnerBlocksControlled( state, rootClientId )\n\t\t\t? rootClientId || ''\n\t\t\t: 'controlled||' + rootClientId;\n\treturn state.blocks.tree.get( treeKey )?.innerBlocks || EMPTY_ARRAY;\n}\n\n/**\n * Returns a stripped down block object containing only its client ID,\n * and its inner blocks' client IDs.\n *\n * @deprecated\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Client ID of the block to get.\n *\n * @return {Object} Client IDs of the post blocks.\n */\nexport const __unstableGetClientIdWithClientIdsTree = createSelector(\n\t( state, clientId ) => {\n\t\tdeprecated(\n\t\t\t\"wp.data.select( 'core/block-editor' ).__unstableGetClientIdWithClientIdsTree\",\n\t\t\t{\n\t\t\t\tsince: '6.3',\n\t\t\t\tversion: '6.5',\n\t\t\t}\n\t\t);\n\t\treturn {\n\t\t\tclientId,\n\t\t\tinnerBlocks: __unstableGetClientIdsTree( state, clientId ),\n\t\t};\n\t},\n\t( state ) => [ state.blocks.order ]\n);\n\n/**\n * Returns the block tree represented in the block-editor store from the\n * given root, consisting of stripped down block objects containing only\n * their client IDs, and their inner blocks' client IDs.\n *\n * @deprecated\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Object[]} Client IDs of the post blocks.\n */\nexport const __unstableGetClientIdsTree = createSelector(\n\t( state, rootClientId = '' ) => {\n\t\tdeprecated(\n\t\t\t\"wp.data.select( 'core/block-editor' ).__unstableGetClientIdsTree\",\n\t\t\t{\n\t\t\t\tsince: '6.3',\n\t\t\t\tversion: '6.5',\n\t\t\t}\n\t\t);\n\t\treturn getBlockOrder( state, rootClientId ).map( ( clientId ) =>\n\t\t\t__unstableGetClientIdWithClientIdsTree( state, clientId )\n\t\t);\n\t},\n\t( state ) => [ state.blocks.order ]\n);\n\n/**\n * Returns an array containing the clientIds of all descendants of the blocks\n * given. Returned ids are ordered first by the order of the ids given, then\n * by the order that they appear in the editor.\n *\n * @param {Object} state Global application state.\n * @param {string|string[]} rootIds Client ID(s) for which descendant blocks are to be returned.\n *\n * @return {Array} Client IDs of descendants.\n */\nexport const getClientIdsOfDescendants = createSelector(\n\t( state, rootIds ) => {\n\t\trootIds = Array.isArray( rootIds ) ? [ ...rootIds ] : [ rootIds ];\n\t\tconst ids = [];\n\n\t\t// Add the descendants of the root blocks first.\n\t\tfor ( const rootId of rootIds ) {\n\t\t\tconst order = state.blocks.order.get( rootId );\n\t\t\tif ( order ) {\n\t\t\t\tids.push( ...order );\n\t\t\t}\n\t\t}\n\n\t\tlet index = 0;\n\n\t\t// Add the descendants of the descendants, recursively.\n\t\twhile ( index < ids.length ) {\n\t\t\tconst id = ids[ index ];\n\t\t\tconst order = state.blocks.order.get( id );\n\t\t\tif ( order ) {\n\t\t\t\tids.splice( index + 1, 0, ...order );\n\t\t\t}\n\t\t\tindex++;\n\t\t}\n\n\t\treturn ids;\n\t},\n\t( state ) => [ state.blocks.order ]\n);\n\n/**\n * Returns an array containing the clientIds of the top-level blocks and\n * their descendants of any depth (for nested blocks). Ids are returned\n * in the same order that they appear in the editor.\n *\n * @param {Object} state Global application state.\n *\n * @return {Array} ids of top-level and descendant blocks.\n */\nexport const getClientIdsWithDescendants = ( state ) =>\n\tgetClientIdsOfDescendants( state, '' );\n\n/**\n * Returns the total number of blocks, or the total number of blocks with a specific name in a post.\n * The number returned includes nested blocks.\n *\n * @param {Object} state Global application state.\n * @param {?string} blockName Optional block name, if specified only blocks of that type will be counted.\n *\n * @return {number} Number of blocks in the post, or number of blocks with name equal to blockName.\n */\nexport const getGlobalBlockCount = createSelector(\n\t( state, blockName ) => {\n\t\tconst clientIds = getClientIdsWithDescendants( state );\n\t\tif ( ! blockName ) {\n\t\t\treturn clientIds.length;\n\t\t}\n\t\tlet count = 0;\n\t\tfor ( const clientId of clientIds ) {\n\t\t\tconst block = state.blocks.byClientId.get( clientId );\n\t\t\tif ( block.name === blockName ) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t},\n\t( state ) => [ state.blocks.order, state.blocks.byClientId ]\n);\n\n/**\n * Returns all blocks that match a blockName. Results include nested blocks.\n *\n * @param {Object} state Global application state.\n * @param {string[]} blockName Block name(s) for which clientIds are to be returned.\n *\n * @return {Array} Array of clientIds of blocks with name equal to blockName.\n */\nexport const getBlocksByName = createSelector(\n\t( state, blockName ) => {\n\t\tif ( ! blockName ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\tconst blockNames = Array.isArray( blockName )\n\t\t\t? blockName\n\t\t\t: [ blockName ];\n\t\tconst clientIds = getClientIdsWithDescendants( state );\n\t\tconst foundBlocks = clientIds.filter( ( clientId ) => {\n\t\t\tconst block = state.blocks.byClientId.get( clientId );\n\t\t\treturn blockNames.includes( block.name );\n\t\t} );\n\t\treturn foundBlocks.length > 0 ? foundBlocks : EMPTY_ARRAY;\n\t},\n\t( state ) => [ state.blocks.order, state.blocks.byClientId ]\n);\n\n/**\n * Returns all global blocks that match a blockName. Results include nested blocks.\n *\n * @deprecated\n *\n * @param {Object} state Global application state.\n * @param {string[]} blockName Block name(s) for which clientIds are to be returned.\n *\n * @return {Array} Array of clientIds of blocks with name equal to blockName.\n */\nexport function __experimentalGetGlobalBlocksByName( state, blockName ) {\n\tdeprecated(\n\t\t\"wp.data.select( 'core/block-editor' ).__experimentalGetGlobalBlocksByName\",\n\t\t{\n\t\t\tsince: '6.5',\n\t\t\talternative: `wp.data.select( 'core/block-editor' ).getBlocksByName`,\n\t\t}\n\t);\n\treturn getBlocksByName( state, blockName );\n}\n\n/**\n * Given an array of block client IDs, returns the corresponding array of block\n * objects.\n *\n * @param {Object} state Editor state.\n * @param {string[]} clientIds Client IDs for which blocks are to be returned.\n *\n * @return {WPBlock[]} Block objects.\n */\nexport const getBlocksByClientId = createSelector(\n\t( state, clientIds ) =>\n\t\t( Array.isArray( clientIds ) ? clientIds : [ clientIds ] ).map(\n\t\t\t( clientId ) => getBlock( state, clientId )\n\t\t),\n\t( state, clientIds ) =>\n\t\t( Array.isArray( clientIds ) ? clientIds : [ clientIds ] ).map(\n\t\t\t( clientId ) => state.blocks.tree.get( clientId )\n\t\t)\n);\n\n/**\n * Given an array of block client IDs, returns the corresponding array of block\n * names.\n *\n * @param {Object} state Editor state.\n * @param {string[]} clientIds Client IDs for which block names are to be returned.\n *\n * @return {string[]} Block names.\n */\nexport const getBlockNamesByClientId = createSelector(\n\t( state, clientIds ) =>\n\t\tgetBlocksByClientId( state, clientIds )\n\t\t\t.filter( Boolean )\n\t\t\t.map( ( block ) => block.name ),\n\t( state, clientIds ) => getBlocksByClientId( state, clientIds )\n);\n\n/**\n * Returns the number of blocks currently present in the post.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {number} Number of blocks in the post.\n */\nexport function getBlockCount( state, rootClientId ) {\n\treturn getBlockOrder( state, rootClientId ).length;\n}\n\n/**\n * Returns the current selection start block client ID, attribute key and text\n * offset.\n *\n * @param {Object} state Block editor state.\n *\n * @return {WPBlockSelection} Selection start information.\n */\nexport function getSelectionStart( state ) {\n\treturn state.selection.selectionStart;\n}\n\n/**\n * Returns the current selection end block client ID, attribute key and text\n * offset.\n *\n * @param {Object} state Block editor state.\n *\n * @return {WPBlockSelection} Selection end information.\n */\nexport function getSelectionEnd( state ) {\n\treturn state.selection.selectionEnd;\n}\n\n/**\n * Returns the current block selection start. This value may be null, and it\n * may represent either a singular block selection or multi-selection start.\n * A selection is singular if its start and end match.\n *\n * @param {Object} state Global application state.\n *\n * @return {?string} Client ID of block selection start.\n */\nexport function getBlockSelectionStart( state ) {\n\treturn state.selection.selectionStart.clientId;\n}\n\n/**\n * Returns the current block selection end. This value may be null, and it\n * may represent either a singular block selection or multi-selection end.\n * A selection is singular if its start and end match.\n *\n * @param {Object} state Global application state.\n *\n * @return {?string} Client ID of block selection end.\n */\nexport function getBlockSelectionEnd( state ) {\n\treturn state.selection.selectionEnd.clientId;\n}\n\n/**\n * Returns the number of blocks currently selected in the post.\n *\n * @param {Object} state Global application state.\n *\n * @return {number} Number of blocks selected in the post.\n */\nexport function getSelectedBlockCount( state ) {\n\tconst multiSelectedBlockCount =\n\t\tgetMultiSelectedBlockClientIds( state ).length;\n\n\tif ( multiSelectedBlockCount ) {\n\t\treturn multiSelectedBlockCount;\n\t}\n\n\treturn state.selection.selectionStart.clientId ? 1 : 0;\n}\n\n/**\n * Returns true if there is a single selected block, or false otherwise.\n *\n * @param {Object} state Editor state.\n *\n * @return {boolean} Whether a single block is selected.\n */\nexport function hasSelectedBlock( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\treturn (\n\t\t!! selectionStart.clientId &&\n\t\tselectionStart.clientId === selectionEnd.clientId\n\t);\n}\n\n/**\n * Returns the currently selected block client ID, or null if there is no\n * selected block.\n *\n * @param {Object} state Editor state.\n *\n * @return {?string} Selected block client ID.\n */\nexport function getSelectedBlockClientId( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\tconst { clientId } = selectionStart;\n\n\tif ( ! clientId || clientId !== selectionEnd.clientId ) {\n\t\treturn null;\n\t}\n\n\treturn clientId;\n}\n\n/**\n * Returns the currently selected block, or null if there is no selected block.\n *\n * @param {Object} state Global application state.\n *\n * @example\n *\n *```js\n * import { select } from '@wordpress/data'\n * import { store as blockEditorStore } from '@wordpress/block-editor'\n *\n * // Set initial active block client ID\n * let activeBlockClientId = null\n *\n * const getActiveBlockData = () => {\n * \tconst activeBlock = select(blockEditorStore).getSelectedBlock()\n *\n * \tif (activeBlock && activeBlock.clientId !== activeBlockClientId) {\n * \t\tactiveBlockClientId = activeBlock.clientId\n *\n * \t\t// Get active block name and attributes\n * \t\tconst activeBlockName = activeBlock.name\n * \t\tconst activeBlockAttributes = activeBlock.attributes\n *\n * \t\t// Log active block name and attributes\n * \t\tconsole.log(activeBlockName, activeBlockAttributes)\n * \t\t}\n * \t}\n *\n * \t// Subscribe to changes in the editor\n * \t// wp.data.subscribe(() => {\n * \t\t// getActiveBlockData()\n * \t// })\n *\n * \t// Update active block data on click\n * \t// onclick=\"getActiveBlockData()\"\n *```\n *\n * @return {?Object} Selected block.\n */\nexport function getSelectedBlock( state ) {\n\tconst clientId = getSelectedBlockClientId( state );\n\treturn clientId ? getBlock( state, clientId ) : null;\n}\n\n/**\n * Given a block client ID, returns the root block from which the block is\n * nested, an empty string for top-level blocks, or null if the block does not\n * exist.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block from which to find root client ID.\n *\n * @return {?string} Root client ID, if exists\n */\nexport function getBlockRootClientId( state, clientId ) {\n\treturn state.blocks.parents.get( clientId ) ?? null;\n}\n\n/**\n * Given a block client ID, returns the list of all its parents from top to bottom.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block from which to find root client ID.\n * @param {boolean} ascending Order results from bottom to top (true) or top to bottom (false).\n *\n * @return {Array} ClientIDs of the parent blocks.\n */\nexport const getBlockParents = createSelector(\n\t( state, clientId, ascending = false ) => {\n\t\tconst parents = [];\n\t\tlet current = clientId;\n\t\twhile ( ( current = state.blocks.parents.get( current ) ) ) {\n\t\t\tparents.push( current );\n\t\t}\n\n\t\tif ( ! parents.length ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\treturn ascending ? parents : parents.reverse();\n\t},\n\t( state ) => [ state.blocks.parents ]\n);\n\n/**\n * Given a block client ID and a block name, returns the list of all its parents\n * from top to bottom, filtered by the given name(s). For example, if passed\n * 'core/group' as the blockName, it will only return parents which are group\n * blocks. If passed `[ 'core/group', 'core/cover']`, as the blockName, it will\n * return parents which are group blocks and parents which are cover blocks.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block from which to find root client ID.\n * @param {string|string[]} blockName Block name(s) to filter.\n * @param {boolean} ascending Order results from bottom to top (true) or top to bottom (false).\n *\n * @return {Array} ClientIDs of the parent blocks.\n */\nexport const getBlockParentsByBlockName = createSelector(\n\t( state, clientId, blockName, ascending = false ) => {\n\t\tconst parents = getBlockParents( state, clientId, ascending );\n\t\tconst hasName = Array.isArray( blockName )\n\t\t\t? ( name ) => blockName.includes( name )\n\t\t\t: ( name ) => blockName === name;\n\t\treturn parents.filter( ( id ) => hasName( getBlockName( state, id ) ) );\n\t},\n\t( state ) => [ state.blocks.parents ]\n);\n/**\n * Given a block client ID, returns the root of the hierarchy from which the block is nested, return the block itself for root level blocks.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block from which to find root client ID.\n *\n * @return {string} Root client ID\n */\nexport function getBlockHierarchyRootClientId( state, clientId ) {\n\tlet current = clientId;\n\tlet parent;\n\tdo {\n\t\tparent = current;\n\t\tcurrent = state.blocks.parents.get( current );\n\t} while ( current );\n\treturn parent;\n}\n\n/**\n * Given a block client ID, returns the lowest common ancestor with selected client ID.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block from which to find common ancestor client ID.\n *\n * @return {string} Common ancestor client ID or undefined\n */\nexport function getLowestCommonAncestorWithSelectedBlock( state, clientId ) {\n\tconst selectedId = getSelectedBlockClientId( state );\n\tconst clientParents = [ ...getBlockParents( state, clientId ), clientId ];\n\tconst selectedParents = [\n\t\t...getBlockParents( state, selectedId ),\n\t\tselectedId,\n\t];\n\n\tlet lowestCommonAncestor;\n\n\tconst maxDepth = Math.min( clientParents.length, selectedParents.length );\n\tfor ( let index = 0; index < maxDepth; index++ ) {\n\t\tif ( clientParents[ index ] === selectedParents[ index ] ) {\n\t\t\tlowestCommonAncestor = clientParents[ index ];\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn lowestCommonAncestor;\n}\n\n/**\n * Returns the client ID of the block adjacent one at the given reference\n * startClientId and modifier directionality. Defaults start startClientId to\n * the selected block, and direction as next block. Returns null if there is no\n * adjacent block.\n *\n * @param {Object} state Editor state.\n * @param {?string} startClientId Optional client ID of block from which to\n * search.\n * @param {?number} modifier Directionality multiplier (1 next, -1\n * previous).\n *\n * @return {?string} Return the client ID of the block, or null if none exists.\n */\nexport function getAdjacentBlockClientId( state, startClientId, modifier = 1 ) {\n\t// Default to selected block.\n\tif ( startClientId === undefined ) {\n\t\tstartClientId = getSelectedBlockClientId( state );\n\t}\n\n\t// Try multi-selection starting at extent based on modifier.\n\tif ( startClientId === undefined ) {\n\t\tif ( modifier < 0 ) {\n\t\t\tstartClientId = getFirstMultiSelectedBlockClientId( state );\n\t\t} else {\n\t\t\tstartClientId = getLastMultiSelectedBlockClientId( state );\n\t\t}\n\t}\n\n\t// Validate working start client ID.\n\tif ( ! startClientId ) {\n\t\treturn null;\n\t}\n\n\t// Retrieve start block root client ID, being careful to allow the falsey\n\t// empty string top-level root by explicitly testing against null.\n\tconst rootClientId = getBlockRootClientId( state, startClientId );\n\tif ( rootClientId === null ) {\n\t\treturn null;\n\t}\n\n\tconst { order } = state.blocks;\n\tconst orderSet = order.get( rootClientId );\n\tconst index = orderSet.indexOf( startClientId );\n\tconst nextIndex = index + 1 * modifier;\n\n\t// Block was first in set and we're attempting to get previous.\n\tif ( nextIndex < 0 ) {\n\t\treturn null;\n\t}\n\n\t// Block was last in set and we're attempting to get next.\n\tif ( nextIndex === orderSet.length ) {\n\t\treturn null;\n\t}\n\n\t// Assume incremented index is within the set.\n\treturn orderSet[ nextIndex ];\n}\n\n/**\n * Returns the previous block's client ID from the given reference start ID.\n * Defaults start to the selected block. Returns null if there is no previous\n * block.\n *\n * @param {Object} state Editor state.\n * @param {?string} startClientId Optional client ID of block from which to\n * search.\n *\n * @return {?string} Adjacent block's client ID, or null if none exists.\n */\nexport function getPreviousBlockClientId( state, startClientId ) {\n\treturn getAdjacentBlockClientId( state, startClientId, -1 );\n}\n\n/**\n * Returns the next block's client ID from the given reference start ID.\n * Defaults start to the selected block. Returns null if there is no next\n * block.\n *\n * @param {Object} state Editor state.\n * @param {?string} startClientId Optional client ID of block from which to\n * search.\n *\n * @return {?string} Adjacent block's client ID, or null if none exists.\n */\nexport function getNextBlockClientId( state, startClientId ) {\n\treturn getAdjacentBlockClientId( state, startClientId, 1 );\n}\n\n/* eslint-disable jsdoc/valid-types */\n/**\n * Returns the initial caret position for the selected block.\n * This position is to used to position the caret properly when the selected block changes.\n * If the current block is not a RichText, having initial position set to 0 means \"focus block\"\n *\n * @param {Object} state Global application state.\n *\n * @return {0|-1|null} Initial position.\n */\nexport function getSelectedBlocksInitialCaretPosition( state ) {\n\t/* eslint-enable jsdoc/valid-types */\n\treturn state.initialPosition;\n}\n\n/**\n * Returns the current selection set of block client IDs (multiselection or single selection).\n *\n * @param {Object} state Editor state.\n *\n * @return {Array} Multi-selected block client IDs.\n */\nexport const getSelectedBlockClientIds = createSelector(\n\t( state ) => {\n\t\tconst { selectionStart, selectionEnd } = state.selection;\n\n\t\tif ( ! selectionStart.clientId || ! selectionEnd.clientId ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\tif ( selectionStart.clientId === selectionEnd.clientId ) {\n\t\t\treturn [ selectionStart.clientId ];\n\t\t}\n\n\t\t// Retrieve root client ID to aid in retrieving relevant nested block\n\t\t// order, being careful to allow the falsey empty string top-level root\n\t\t// by explicitly testing against null.\n\t\tconst rootClientId = getBlockRootClientId(\n\t\t\tstate,\n\t\t\tselectionStart.clientId\n\t\t);\n\n\t\tif ( rootClientId === null ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\tconst blockOrder = getBlockOrder( state, rootClientId );\n\t\tconst startIndex = blockOrder.indexOf( selectionStart.clientId );\n\t\tconst endIndex = blockOrder.indexOf( selectionEnd.clientId );\n\n\t\tif ( startIndex > endIndex ) {\n\t\t\treturn blockOrder.slice( endIndex, startIndex + 1 );\n\t\t}\n\n\t\treturn blockOrder.slice( startIndex, endIndex + 1 );\n\t},\n\t( state ) => [\n\t\tstate.blocks.order,\n\t\tstate.selection.selectionStart.clientId,\n\t\tstate.selection.selectionEnd.clientId,\n\t]\n);\n\n/**\n * Returns the current multi-selection set of block client IDs, or an empty\n * array if there is no multi-selection.\n *\n * @param {Object} state Editor state.\n *\n * @return {Array} Multi-selected block client IDs.\n */\nexport function getMultiSelectedBlockClientIds( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\n\tif ( selectionStart.clientId === selectionEnd.clientId ) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\treturn getSelectedBlockClientIds( state );\n}\n\n/**\n * Returns the current multi-selection set of blocks, or an empty array if\n * there is no multi-selection.\n *\n * @param {Object} state Editor state.\n *\n * @return {Array} Multi-selected block objects.\n */\nexport const getMultiSelectedBlocks = createSelector(\n\t( state ) => {\n\t\tconst multiSelectedBlockClientIds =\n\t\t\tgetMultiSelectedBlockClientIds( state );\n\t\tif ( ! multiSelectedBlockClientIds.length ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\treturn multiSelectedBlockClientIds.map( ( clientId ) =>\n\t\t\tgetBlock( state, clientId )\n\t\t);\n\t},\n\t( state ) => [\n\t\t...getSelectedBlockClientIds.getDependants( state ),\n\t\tstate.blocks.byClientId,\n\t\tstate.blocks.order,\n\t\tstate.blocks.attributes,\n\t]\n);\n\n/**\n * Returns the client ID of the first block in the multi-selection set, or null\n * if there is no multi-selection.\n *\n * @param {Object} state Editor state.\n *\n * @return {?string} First block client ID in the multi-selection set.\n */\nexport function getFirstMultiSelectedBlockClientId( state ) {\n\treturn getMultiSelectedBlockClientIds( state )[ 0 ] || null;\n}\n\n/**\n * Returns the client ID of the last block in the multi-selection set, or null\n * if there is no multi-selection.\n *\n * @param {Object} state Editor state.\n *\n * @return {?string} Last block client ID in the multi-selection set.\n */\nexport function getLastMultiSelectedBlockClientId( state ) {\n\tconst selectedClientIds = getMultiSelectedBlockClientIds( state );\n\treturn selectedClientIds[ selectedClientIds.length - 1 ] || null;\n}\n\n/**\n * Returns true if a multi-selection exists, and the block corresponding to the\n * specified client ID is the first block of the multi-selection set, or false\n * otherwise.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Whether block is first in multi-selection.\n */\nexport function isFirstMultiSelectedBlock( state, clientId ) {\n\treturn getFirstMultiSelectedBlockClientId( state ) === clientId;\n}\n\n/**\n * Returns true if the client ID occurs within the block multi-selection, or\n * false otherwise.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Whether block is in multi-selection set.\n */\nexport function isBlockMultiSelected( state, clientId ) {\n\treturn getMultiSelectedBlockClientIds( state ).indexOf( clientId ) !== -1;\n}\n\n/**\n * Returns true if an ancestor of the block is multi-selected, or false\n * otherwise.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Whether an ancestor of the block is in multi-selection\n * set.\n */\nexport const isAncestorMultiSelected = createSelector(\n\t( state, clientId ) => {\n\t\tlet ancestorClientId = clientId;\n\t\tlet isMultiSelected = false;\n\t\twhile ( ancestorClientId && ! isMultiSelected ) {\n\t\t\tancestorClientId = getBlockRootClientId( state, ancestorClientId );\n\t\t\tisMultiSelected = isBlockMultiSelected( state, ancestorClientId );\n\t\t}\n\t\treturn isMultiSelected;\n\t},\n\t( state ) => [\n\t\tstate.blocks.order,\n\t\tstate.selection.selectionStart.clientId,\n\t\tstate.selection.selectionEnd.clientId,\n\t]\n);\n\n/**\n * Returns the client ID of the block which begins the multi-selection set, or\n * null if there is no multi-selection.\n *\n * This is not necessarily the first client ID in the selection.\n *\n * @see getFirstMultiSelectedBlockClientId\n *\n * @param {Object} state Editor state.\n *\n * @return {?string} Client ID of block beginning multi-selection.\n */\nexport function getMultiSelectedBlocksStartClientId( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\n\tif ( selectionStart.clientId === selectionEnd.clientId ) {\n\t\treturn null;\n\t}\n\n\treturn selectionStart.clientId || null;\n}\n\n/**\n * Returns the client ID of the block which ends the multi-selection set, or\n * null if there is no multi-selection.\n *\n * This is not necessarily the last client ID in the selection.\n *\n * @see getLastMultiSelectedBlockClientId\n *\n * @param {Object} state Editor state.\n *\n * @return {?string} Client ID of block ending multi-selection.\n */\nexport function getMultiSelectedBlocksEndClientId( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\n\tif ( selectionStart.clientId === selectionEnd.clientId ) {\n\t\treturn null;\n\t}\n\n\treturn selectionEnd.clientId || null;\n}\n\n/**\n * Returns true if the selection is not partial.\n *\n * @param {Object} state Editor state.\n *\n * @return {boolean} Whether the selection is mergeable.\n */\nexport function __unstableIsFullySelected( state ) {\n\tconst selectionAnchor = getSelectionStart( state );\n\tconst selectionFocus = getSelectionEnd( state );\n\treturn (\n\t\t! selectionAnchor.attributeKey &&\n\t\t! selectionFocus.attributeKey &&\n\t\ttypeof selectionAnchor.offset === 'undefined' &&\n\t\ttypeof selectionFocus.offset === 'undefined'\n\t);\n}\n\n/**\n * Returns true if the selection is collapsed.\n *\n * @param {Object} state Editor state.\n *\n * @return {boolean} Whether the selection is collapsed.\n */\nexport function __unstableIsSelectionCollapsed( state ) {\n\tconst selectionAnchor = getSelectionStart( state );\n\tconst selectionFocus = getSelectionEnd( state );\n\treturn (\n\t\t!! selectionAnchor &&\n\t\t!! selectionFocus &&\n\t\tselectionAnchor.clientId === selectionFocus.clientId &&\n\t\tselectionAnchor.attributeKey === selectionFocus.attributeKey &&\n\t\tselectionAnchor.offset === selectionFocus.offset\n\t);\n}\n\nexport function __unstableSelectionHasUnmergeableBlock( state ) {\n\treturn getSelectedBlockClientIds( state ).some( ( clientId ) => {\n\t\tconst blockName = getBlockName( state, clientId );\n\t\tconst blockType = getBlockType( blockName );\n\t\treturn ! blockType.merge;\n\t} );\n}\n\n/**\n * Check whether the selection is mergeable.\n *\n * @param {Object} state Editor state.\n * @param {boolean} isForward Whether to merge forwards.\n *\n * @return {boolean} Whether the selection is mergeable.\n */\nexport function __unstableIsSelectionMergeable( state, isForward ) {\n\tconst selectionAnchor = getSelectionStart( state );\n\tconst selectionFocus = getSelectionEnd( state );\n\n\t// It's not mergeable if the start and end are within the same block.\n\tif ( selectionAnchor.clientId === selectionFocus.clientId ) {\n\t\treturn false;\n\t}\n\n\t// It's not mergeable if there's no rich text selection.\n\tif (\n\t\t! selectionAnchor.attributeKey ||\n\t\t! selectionFocus.attributeKey ||\n\t\ttypeof selectionAnchor.offset === 'undefined' ||\n\t\ttypeof selectionFocus.offset === 'undefined'\n\t) {\n\t\treturn false;\n\t}\n\n\tconst anchorRootClientId = getBlockRootClientId(\n\t\tstate,\n\t\tselectionAnchor.clientId\n\t);\n\tconst focusRootClientId = getBlockRootClientId(\n\t\tstate,\n\t\tselectionFocus.clientId\n\t);\n\n\t// It's not mergeable if the selection doesn't start and end in the same\n\t// block list. Maybe in the future it should be allowed.\n\tif ( anchorRootClientId !== focusRootClientId ) {\n\t\treturn false;\n\t}\n\n\tconst blockOrder = getBlockOrder( state, anchorRootClientId );\n\tconst anchorIndex = blockOrder.indexOf( selectionAnchor.clientId );\n\tconst focusIndex = blockOrder.indexOf( selectionFocus.clientId );\n\n\t// Reassign selection start and end based on order.\n\tlet selectionStart, selectionEnd;\n\n\tif ( anchorIndex > focusIndex ) {\n\t\tselectionStart = selectionFocus;\n\t\tselectionEnd = selectionAnchor;\n\t} else {\n\t\tselectionStart = selectionAnchor;\n\t\tselectionEnd = selectionFocus;\n\t}\n\n\tconst targetBlockClientId = isForward\n\t\t? selectionEnd.clientId\n\t\t: selectionStart.clientId;\n\tconst blockToMergeClientId = isForward\n\t\t? selectionStart.clientId\n\t\t: selectionEnd.clientId;\n\n\tconst targetBlockName = getBlockName( state, targetBlockClientId );\n\tconst targetBlockType = getBlockType( targetBlockName );\n\n\tif ( ! targetBlockType.merge ) {\n\t\treturn false;\n\t}\n\n\tconst blockToMerge = getBlock( state, blockToMergeClientId );\n\n\t// It's mergeable if the blocks are of the same type.\n\tif ( blockToMerge.name === targetBlockName ) {\n\t\treturn true;\n\t}\n\n\t// If the blocks are of a different type, try to transform the block being\n\t// merged into the same type of block.\n\tconst blocksToMerge = switchToBlockType( blockToMerge, targetBlockName );\n\n\treturn blocksToMerge && blocksToMerge.length;\n}\n\n/**\n * Get partial selected blocks with their content updated\n * based on the selection.\n *\n * @param {Object} state Editor state.\n *\n * @return {Object[]} Updated partial selected blocks.\n */\nexport const __unstableGetSelectedBlocksWithPartialSelection = ( state ) => {\n\tconst selectionAnchor = getSelectionStart( state );\n\tconst selectionFocus = getSelectionEnd( state );\n\n\tif ( selectionAnchor.clientId === selectionFocus.clientId ) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\t// Can't split if the selection is not set.\n\tif (\n\t\t! selectionAnchor.attributeKey ||\n\t\t! selectionFocus.attributeKey ||\n\t\ttypeof selectionAnchor.offset === 'undefined' ||\n\t\ttypeof selectionFocus.offset === 'undefined'\n\t) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\tconst anchorRootClientId = getBlockRootClientId(\n\t\tstate,\n\t\tselectionAnchor.clientId\n\t);\n\tconst focusRootClientId = getBlockRootClientId(\n\t\tstate,\n\t\tselectionFocus.clientId\n\t);\n\n\t// It's not splittable if the selection doesn't start and end in the same\n\t// block list. Maybe in the future it should be allowed.\n\tif ( anchorRootClientId !== focusRootClientId ) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\tconst blockOrder = getBlockOrder( state, anchorRootClientId );\n\tconst anchorIndex = blockOrder.indexOf( selectionAnchor.clientId );\n\tconst focusIndex = blockOrder.indexOf( selectionFocus.clientId );\n\n\t// Reassign selection start and end based on order.\n\tconst [ selectionStart, selectionEnd ] =\n\t\tanchorIndex > focusIndex\n\t\t\t? [ selectionFocus, selectionAnchor ]\n\t\t\t: [ selectionAnchor, selectionFocus ];\n\n\tconst blockA = getBlock( state, selectionStart.clientId );\n\tconst blockB = getBlock( state, selectionEnd.clientId );\n\n\tconst htmlA = blockA.attributes[ selectionStart.attributeKey ];\n\tconst htmlB = blockB.attributes[ selectionEnd.attributeKey ];\n\n\tlet valueA = create( { html: htmlA } );\n\tlet valueB = create( { html: htmlB } );\n\n\tvalueA = remove( valueA, 0, selectionStart.offset );\n\tvalueB = remove( valueB, selectionEnd.offset, valueB.text.length );\n\n\treturn [\n\t\t{\n\t\t\t...blockA,\n\t\t\tattributes: {\n\t\t\t\t...blockA.attributes,\n\t\t\t\t[ selectionStart.attributeKey ]: toHTMLString( {\n\t\t\t\t\tvalue: valueA,\n\t\t\t\t} ),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t...blockB,\n\t\t\tattributes: {\n\t\t\t\t...blockB.attributes,\n\t\t\t\t[ selectionEnd.attributeKey ]: toHTMLString( {\n\t\t\t\t\tvalue: valueB,\n\t\t\t\t} ),\n\t\t\t},\n\t\t},\n\t];\n};\n\n/**\n * Returns an array containing all block client IDs in the editor in the order\n * they appear. Optionally accepts a root client ID of the block list for which\n * the order should be returned, defaulting to the top-level block order.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Array} Ordered client IDs of editor blocks.\n */\nexport function getBlockOrder( state, rootClientId ) {\n\treturn state.blocks.order.get( rootClientId || '' ) || EMPTY_ARRAY;\n}\n\n/**\n * Returns the index at which the block corresponding to the specified client\n * ID occurs within the block order, or `-1` if the block does not exist.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {number} Index at which block exists in order.\n */\nexport function getBlockIndex( state, clientId ) {\n\tconst rootClientId = getBlockRootClientId( state, clientId );\n\treturn getBlockOrder( state, rootClientId ).indexOf( clientId );\n}\n\n/**\n * Returns true if the block corresponding to the specified client ID is\n * currently selected and no multi-selection exists, or false otherwise.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Whether block is selected and multi-selection exists.\n */\nexport function isBlockSelected( state, clientId ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\n\tif ( selectionStart.clientId !== selectionEnd.clientId ) {\n\t\treturn false;\n\t}\n\n\treturn selectionStart.clientId === clientId;\n}\n\n/**\n * Returns true if one of the block's inner blocks is selected.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n * @param {boolean} deep Perform a deep check.\n *\n * @return {boolean} Whether the block has an inner block selected\n */\nexport function hasSelectedInnerBlock( state, clientId, deep = false ) {\n\tconst selectedBlockClientIds = getSelectedBlockClientIds( state );\n\n\tif ( ! selectedBlockClientIds.length ) {\n\t\treturn false;\n\t}\n\n\tif ( deep ) {\n\t\treturn selectedBlockClientIds.some( ( id ) =>\n\t\t\t// Pass true because we don't care about order and it's more\n\t\t\t// performant.\n\t\t\tgetBlockParents( state, id, true ).includes( clientId )\n\t\t);\n\t}\n\n\treturn selectedBlockClientIds.some(\n\t\t( id ) => getBlockRootClientId( state, id ) === clientId\n\t);\n}\n\n/**\n * Returns true if one of the block's inner blocks is dragged.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n * @param {boolean} deep Perform a deep check.\n *\n * @return {boolean} Whether the block has an inner block dragged\n */\nexport function hasDraggedInnerBlock( state, clientId, deep = false ) {\n\treturn getBlockOrder( state, clientId ).some(\n\t\t( innerClientId ) =>\n\t\t\tisBlockBeingDragged( state, innerClientId ) ||\n\t\t\t( deep && hasDraggedInnerBlock( state, innerClientId, deep ) )\n\t);\n}\n\n/**\n * Returns true if the block corresponding to the specified client ID is\n * currently selected but isn't the last of the selected blocks. Here \"last\"\n * refers to the block sequence in the document, _not_ the sequence of\n * multi-selection, which is why `state.selectionEnd` isn't used.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Whether block is selected and not the last in the\n * selection.\n */\nexport function isBlockWithinSelection( state, clientId ) {\n\tif ( ! clientId ) {\n\t\treturn false;\n\t}\n\n\tconst clientIds = getMultiSelectedBlockClientIds( state );\n\tconst index = clientIds.indexOf( clientId );\n\treturn index > -1 && index < clientIds.length - 1;\n}\n\n/**\n * Returns true if a multi-selection has been made, or false otherwise.\n *\n * @param {Object} state Editor state.\n *\n * @return {boolean} Whether multi-selection has been made.\n */\nexport function hasMultiSelection( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\treturn selectionStart.clientId !== selectionEnd.clientId;\n}\n\n/**\n * Whether in the process of multi-selecting or not. This flag is only true\n * while the multi-selection is being selected (by mouse move), and is false\n * once the multi-selection has been settled.\n *\n * @see hasMultiSelection\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} True if multi-selecting, false if not.\n */\nexport function isMultiSelecting( state ) {\n\treturn state.isMultiSelecting;\n}\n\n/**\n * Selector that returns if multi-selection is enabled or not.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} True if it should be possible to multi-select blocks, false if multi-selection is disabled.\n */\nexport function isSelectionEnabled( state ) {\n\treturn state.isSelectionEnabled;\n}\n\n/**\n * Returns the block's editing mode, defaulting to \"visual\" if not explicitly\n * assigned.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {Object} Block editing mode.\n */\nexport function getBlockMode( state, clientId ) {\n\treturn state.blocksMode[ clientId ] || 'visual';\n}\n\n/**\n * Returns true if the user is typing, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether user is typing.\n */\nexport function isTyping( state ) {\n\treturn state.isTyping;\n}\n\n/**\n * Returns true if the user is dragging blocks, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether user is dragging blocks.\n */\nexport function isDraggingBlocks( state ) {\n\treturn !! state.draggedBlocks.length;\n}\n\n/**\n * Returns the client ids of any blocks being directly dragged.\n *\n * This does not include children of a parent being dragged.\n *\n * @param {Object} state Global application state.\n *\n * @return {string[]} Array of dragged block client ids.\n */\nexport function getDraggedBlockClientIds( state ) {\n\treturn state.draggedBlocks;\n}\n\n/**\n * Returns whether the block is being dragged.\n *\n * Only returns true if the block is being directly dragged,\n * not if the block is a child of a parent being dragged.\n * See `isAncestorBeingDragged` for child blocks.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client id for block to check.\n *\n * @return {boolean} Whether the block is being dragged.\n */\nexport function isBlockBeingDragged( state, clientId ) {\n\treturn state.draggedBlocks.includes( clientId );\n}\n\n/**\n * Returns whether a parent/ancestor of the block is being dragged.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client id for block to check.\n *\n * @return {boolean} Whether the block's ancestor is being dragged.\n */\nexport function isAncestorBeingDragged( state, clientId ) {\n\t// Return early if no blocks are being dragged rather than\n\t// the more expensive check for parents.\n\tif ( ! isDraggingBlocks( state ) ) {\n\t\treturn false;\n\t}\n\n\tconst parents = getBlockParents( state, clientId );\n\treturn parents.some( ( parentClientId ) =>\n\t\tisBlockBeingDragged( state, parentClientId )\n\t);\n}\n\n/**\n * Returns true if the caret is within formatted text, or false otherwise.\n *\n * @deprecated\n *\n * @return {boolean} Whether the caret is within formatted text.\n */\nexport function isCaretWithinFormattedText() {\n\tdeprecated(\n\t\t'wp.data.select( \"core/block-editor\" ).isCaretWithinFormattedText',\n\t\t{\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t}\n\t);\n\n\treturn false;\n}\n\n/**\n * Returns the location of the insertion cue. Defaults to the last index.\n *\n * @param {Object} state Editor state.\n *\n * @return {Object} Insertion point object with `rootClientId`, `index`.\n */\nexport const getBlockInsertionPoint = createSelector(\n\t( state ) => {\n\t\tlet rootClientId, index;\n\n\t\tconst {\n\t\t\tinsertionCue,\n\t\t\tselection: { selectionEnd },\n\t\t} = state;\n\t\tif ( insertionCue !== null ) {\n\t\t\treturn insertionCue;\n\t\t}\n\n\t\tconst { clientId } = selectionEnd;\n\n\t\tif ( clientId ) {\n\t\t\trootClientId = getBlockRootClientId( state, clientId ) || undefined;\n\t\t\tindex = getBlockIndex( state, selectionEnd.clientId ) + 1;\n\t\t} else {\n\t\t\tindex = getBlockOrder( state ).length;\n\t\t}\n\n\t\treturn { rootClientId, index };\n\t},\n\t( state ) => [\n\t\tstate.insertionCue,\n\t\tstate.selection.selectionEnd.clientId,\n\t\tstate.blocks.parents,\n\t\tstate.blocks.order,\n\t]\n);\n\n/**\n * Returns true if the block insertion point is visible.\n *\n * @param {Object} state Global application state.\n *\n * @return {?boolean} Whether the insertion point is visible or not.\n */\nexport function isBlockInsertionPointVisible( state ) {\n\treturn state.insertionCue !== null;\n}\n\n/**\n * Returns whether the blocks matches the template or not.\n *\n * @param {boolean} state\n * @return {?boolean} Whether the template is valid or not.\n */\nexport function isValidTemplate( state ) {\n\treturn state.template.isValid;\n}\n\n/**\n * Returns the defined block template\n *\n * @param {boolean} state\n *\n * @return {?Array} Block Template.\n */\nexport function getTemplate( state ) {\n\treturn state.settings.template;\n}\n\n/**\n * Returns the defined block template lock. Optionally accepts a root block\n * client ID as context, otherwise defaulting to the global context.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional block root client ID.\n *\n * @return {string|false} Block Template Lock\n */\nexport function getTemplateLock( state, rootClientId ) {\n\tif ( ! rootClientId ) {\n\t\treturn state.settings.templateLock ?? false;\n\t}\n\n\treturn getBlockListSettings( state, rootClientId )?.templateLock ?? false;\n}\n\n/**\n * Determines if the given block type is visible in the inserter.\n * Note that this is different than whether a block is allowed to be inserted.\n * In some cases, the block is not allowed in a given position but\n * it should still be visible in the inserter to be able to add it\n * to a different position.\n *\n * @param {Object} state Editor state.\n * @param {string|Object} blockNameOrType The block type object, e.g., the response\n * from the block directory; or a string name of\n * an installed block type, e.g.' core/paragraph'.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Whether the given block type is allowed to be inserted.\n */\nconst isBlockVisibleInTheInserter = (\n\tstate,\n\tblockNameOrType,\n\trootClientId = null\n) => {\n\tlet blockType;\n\tlet blockName;\n\n\tif ( blockNameOrType && 'object' === typeof blockNameOrType ) {\n\t\tblockType = blockNameOrType;\n\t\tblockName = blockNameOrType.name;\n\t} else {\n\t\tblockType = getBlockType( blockNameOrType );\n\t\tblockName = blockNameOrType;\n\t}\n\n\tif ( ! blockType ) {\n\t\treturn false;\n\t}\n\n\tconst { allowedBlockTypes } = getSettings( state );\n\n\tconst isBlockAllowedInEditor = checkAllowList(\n\t\tallowedBlockTypes,\n\t\tblockName,\n\t\ttrue\n\t);\n\tif ( ! isBlockAllowedInEditor ) {\n\t\treturn false;\n\t}\n\n\t// If parent blocks are not visible, child blocks should be hidden too.\n\tconst parents = (\n\t\tArray.isArray( blockType.parent ) ? blockType.parent : []\n\t).concat( Array.isArray( blockType.ancestor ) ? blockType.ancestor : [] );\n\tif ( parents.length > 0 ) {\n\t\t// This is an exception to the rule that says that all blocks are visible in the inserter.\n\t\t// Blocks that require a given parent or ancestor are only visible if we're within that parent.\n\t\tif ( parents.includes( 'core/post-content' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet current = rootClientId;\n\t\tlet hasParent = false;\n\t\tdo {\n\t\t\tif ( parents.includes( getBlockName( state, current ) ) ) {\n\t\t\t\thasParent = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrent = state.blocks.parents.get( current );\n\t\t} while ( current );\n\n\t\treturn hasParent;\n\t}\n\n\treturn true;\n};\n\n/**\n * Determines if the given block type is allowed to be inserted into the block list.\n * This function is not exported and not memoized because using a memoized selector\n * inside another memoized selector is just a waste of time.\n *\n * @param {Object} state Editor state.\n * @param {string|Object} blockName The block type object, e.g., the response\n * from the block directory; or a string name of\n * an installed block type, e.g.' core/paragraph'.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Whether the given block type is allowed to be inserted.\n */\nconst canInsertBlockTypeUnmemoized = (\n\tstate,\n\tblockName,\n\trootClientId = null\n) => {\n\tif ( ! isBlockVisibleInTheInserter( state, blockName, rootClientId ) ) {\n\t\treturn false;\n\t}\n\n\tlet blockType;\n\tif ( blockName && 'object' === typeof blockName ) {\n\t\tblockType = blockName;\n\t\tblockName = blockType.name;\n\t} else {\n\t\tblockType = getBlockType( blockName );\n\t}\n\n\tconst isLocked = !! getTemplateLock( state, rootClientId );\n\tif ( isLocked ) {\n\t\treturn false;\n\t}\n\tconst isContentRoleBlock = isContentBlock( blockName );\n\tconst isParentSectionBlock = !! isSectionBlock( state, rootClientId );\n\t// It shouldn't be possible to insert inside a section block unless in\n\t// some cases when the block is a content block.\n\tif ( isParentSectionBlock && ! isContentRoleBlock ) {\n\t\treturn false;\n\t}\n\n\tconst blockEditingMode = getBlockEditingMode( state, rootClientId ?? '' );\n\tif ( blockEditingMode === 'disabled' ) {\n\t\treturn false;\n\t}\n\n\tconst parentBlockListSettings = getBlockListSettings( state, rootClientId );\n\n\t// The parent block doesn't have settings indicating it doesn't support\n\t// inner blocks, return false.\n\tif ( rootClientId && parentBlockListSettings === undefined ) {\n\t\treturn false;\n\t}\n\n\t// In write mode, check if this container allows insertion.\n\tif (\n\t\tblockEditingMode === 'contentOnly' &&\n\t\tisNavigationMode( state ) &&\n\t\t! isContainerInsertableToInWriteMode( state, blockName, rootClientId )\n\t) {\n\t\treturn false;\n\t}\n\n\tconst parentName = getBlockName( state, rootClientId );\n\n\tconst parentBlockType = getBlockType( parentName );\n\n\t// Look at the `blockType.allowedBlocks` field to determine whether this is an allowed child block.\n\tconst parentAllowedChildBlocks = parentBlockType?.allowedBlocks;\n\n\tlet hasParentAllowedBlock = checkAllowList(\n\t\tparentAllowedChildBlocks,\n\t\tblockName\n\t);\n\n\t// The `allowedBlocks` block list setting can further limit which blocks are allowed children.\n\tif ( hasParentAllowedBlock !== false ) {\n\t\tconst parentAllowedBlocks = parentBlockListSettings?.allowedBlocks;\n\t\tconst hasParentListAllowedBlock = checkAllowList(\n\t\t\tparentAllowedBlocks,\n\t\t\tblockName\n\t\t);\n\t\t// Never downgrade the result from `true` to `null`\n\t\tif ( hasParentListAllowedBlock !== null ) {\n\t\t\thasParentAllowedBlock = hasParentListAllowedBlock;\n\t\t}\n\t}\n\n\tconst blockAllowedParentBlocks = blockType.parent;\n\tconst hasBlockAllowedParent = checkAllowList(\n\t\tblockAllowedParentBlocks,\n\t\tparentName\n\t);\n\n\tlet hasBlockAllowedAncestor = true;\n\tconst blockAllowedAncestorBlocks = blockType.ancestor;\n\tif ( blockAllowedAncestorBlocks ) {\n\t\tconst ancestors = [\n\t\t\trootClientId,\n\t\t\t...getBlockParents( state, rootClientId ),\n\t\t];\n\n\t\thasBlockAllowedAncestor = ancestors.some( ( ancestorClientId ) =>\n\t\t\tcheckAllowList(\n\t\t\t\tblockAllowedAncestorBlocks,\n\t\t\t\tgetBlockName( state, ancestorClientId )\n\t\t\t)\n\t\t);\n\t}\n\n\tconst canInsert =\n\t\thasBlockAllowedAncestor &&\n\t\t( ( hasParentAllowedBlock === null &&\n\t\t\thasBlockAllowedParent === null ) ||\n\t\t\thasParentAllowedBlock === true ||\n\t\t\thasBlockAllowedParent === true );\n\n\tif ( ! canInsert ) {\n\t\treturn canInsert;\n\t}\n\n\t/**\n\t * This filter is an ad-hoc solution to prevent adding template parts inside post content.\n\t * Conceptually, having a filter inside a selector is bad pattern so this code will be\n\t * replaced by a declarative API that doesn't the following drawbacks:\n\t *\n\t * Filters are not reactive: Upon switching between \"template mode\" and non \"template mode\",\n\t * the filter and selector won't necessarily be executed again. For now, it doesn't matter much\n\t * because you can't switch between the two modes while the inserter stays open.\n\t *\n\t * Filters are global: Once they're defined, they will affect all editor instances and all registries.\n\t * An ideal API would only affect specific editor instances.\n\t */\n\treturn applyFilters(\n\t\t'blockEditor.__unstableCanInsertBlockType',\n\t\tcanInsert,\n\t\tblockType,\n\t\trootClientId,\n\t\t{\n\t\t\t// Pass bound selectors of the current registry. If we're in a nested\n\t\t\t// context, the data will differ from the one selected from the root\n\t\t\t// registry.\n\t\t\tgetBlock: getBlock.bind( null, state ),\n\t\t\tgetBlockParentsByBlockName: getBlockParentsByBlockName.bind(\n\t\t\t\tnull,\n\t\t\t\tstate\n\t\t\t),\n\t\t}\n\t);\n};\n\n/**\n * Determines if the given block type is allowed to be inserted into the block list.\n *\n * @param {Object} state Editor state.\n * @param {string} blockName The name of the block type, e.g.' core/paragraph'.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Whether the given block type is allowed to be inserted.\n */\nexport const canInsertBlockType = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\tcanInsertBlockTypeUnmemoized,\n\t\t( state, blockName, rootClientId ) =>\n\t\t\tgetInsertBlockTypeDependants( select )( state, rootClientId )\n\t)\n);\n\n/**\n * Determines if the given blocks are allowed to be inserted into the block\n * list.\n *\n * @param {Object} state Editor state.\n * @param {string[]} clientIds The block client IDs to be inserted.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Whether the given blocks are allowed to be inserted.\n */\nexport function canInsertBlocks( state, clientIds, rootClientId = null ) {\n\treturn clientIds.every( ( id ) =>\n\t\tcanInsertBlockType( state, getBlockName( state, id ), rootClientId )\n\t);\n}\n\n/**\n * Determines if the given block is allowed to be deleted.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId The block client Id.\n *\n * @return {boolean} Whether the given block is allowed to be removed.\n */\nexport function canRemoveBlock( state, clientId ) {\n\tconst attributes = getBlockAttributes( state, clientId );\n\tif ( attributes === null ) {\n\t\treturn true;\n\t}\n\tif ( attributes.lock?.remove !== undefined ) {\n\t\treturn ! attributes.lock.remove;\n\t}\n\n\tconst rootClientId = getBlockRootClientId( state, clientId );\n\tif ( getTemplateLock( state, rootClientId ) ) {\n\t\treturn false;\n\t}\n\n\tconst isBlockWithinSection = !! getParentSectionBlock( state, clientId );\n\tconst isContentRoleBlock = isContentBlock(\n\t\tgetBlockName( state, clientId )\n\t);\n\tif ( isBlockWithinSection && ! isContentRoleBlock ) {\n\t\treturn false;\n\t}\n\n\tconst blockEditingMode = getBlockEditingMode( state, rootClientId );\n\n\t// Check if the parent container allows insertion/removal in write mode\n\tif (\n\t\tblockEditingMode === 'contentOnly' &&\n\t\tisNavigationMode( state ) &&\n\t\t! isContainerInsertableToInWriteMode(\n\t\t\tstate,\n\t\t\tgetBlockName( state, rootClientId ),\n\t\t\trootClientId\n\t\t)\n\t) {\n\t\treturn false;\n\t}\n\n\treturn blockEditingMode !== 'disabled';\n}\n\n/**\n * Determines if the given blocks are allowed to be removed.\n *\n * @param {Object} state Editor state.\n * @param {string} clientIds The block client IDs to be removed.\n *\n * @return {boolean} Whether the given blocks are allowed to be removed.\n */\nexport function canRemoveBlocks( state, clientIds ) {\n\treturn clientIds.every( ( clientId ) => canRemoveBlock( state, clientId ) );\n}\n\n/**\n * Determines if the given block is allowed to be moved.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId The block client Id.\n *\n * @return {boolean} Whether the given block is allowed to be moved.\n */\nexport function canMoveBlock( state, clientId ) {\n\tconst attributes = getBlockAttributes( state, clientId );\n\tif ( attributes === null ) {\n\t\treturn true;\n\t}\n\tif ( attributes.lock?.move !== undefined ) {\n\t\treturn ! attributes.lock.move;\n\t}\n\n\tconst rootClientId = getBlockRootClientId( state, clientId );\n\tif ( getTemplateLock( state, rootClientId ) === 'all' ) {\n\t\treturn false;\n\t}\n\treturn getBlockEditingMode( state, rootClientId ) !== 'disabled';\n}\n\n/**\n * Determines if the given blocks are allowed to be moved.\n *\n * @param {Object} state Editor state.\n * @param {string} clientIds The block client IDs to be moved.\n *\n * @return {boolean} Whether the given blocks are allowed to be moved.\n */\nexport function canMoveBlocks( state, clientIds ) {\n\treturn clientIds.every( ( clientId ) => canMoveBlock( state, clientId ) );\n}\n\n/**\n * Determines if the given block is allowed to be edited.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId The block client Id.\n *\n * @return {boolean} Whether the given block is allowed to be edited.\n */\nexport function canEditBlock( state, clientId ) {\n\tconst attributes = getBlockAttributes( state, clientId );\n\tif ( attributes === null ) {\n\t\treturn true;\n\t}\n\n\tconst { lock } = attributes;\n\n\t// When the edit is true, we cannot edit the block.\n\treturn ! lock?.edit;\n}\n\n/**\n * Determines if the given block type can be locked/unlocked by a user.\n *\n * @param {Object} state Editor state.\n * @param {(string|Object)} nameOrType Block name or type object.\n *\n * @return {boolean} Whether a given block type can be locked/unlocked.\n */\nexport function canLockBlockType( state, nameOrType ) {\n\tif ( ! hasBlockSupport( nameOrType, 'lock', true ) ) {\n\t\treturn false;\n\t}\n\n\t// Use block editor settings as the default value.\n\treturn !! state.settings?.canLockBlocks;\n}\n\n/**\n * Returns information about how recently and frequently a block has been inserted.\n *\n * @param {Object} state Global application state.\n * @param {string} id A string which identifies the insert, e.g. 'core/block/12'\n *\n * @return {?{ time: number, count: number }} An object containing `time` which is when the last\n * insert occurred as a UNIX epoch, and `count` which is\n * the number of inserts that have occurred.\n */\nfunction getInsertUsage( state, id ) {\n\treturn state.preferences.insertUsage?.[ id ] ?? null;\n}\n\n/**\n * Returns whether we can show a block type in the inserter\n *\n * @param {Object} state Global State\n * @param {Object} blockType BlockType\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Whether the given block type is allowed to be shown in the inserter.\n */\nconst canIncludeBlockTypeInInserter = ( state, blockType, rootClientId ) => {\n\tif ( ! hasBlockSupport( blockType, 'inserter', true ) ) {\n\t\treturn false;\n\t}\n\n\treturn canInsertBlockTypeUnmemoized( state, blockType.name, rootClientId );\n};\n\n/**\n * Return a function to be used to transform a block variation to an inserter item\n *\n * @param {Object} state Global State\n * @param {Object} item Denormalized inserter item\n * @return {Function} Function to transform a block variation to inserter item\n */\nconst getItemFromVariation = ( state, item ) => ( variation ) => {\n\tconst variationId = `${ item.id }/${ variation.name }`;\n\tconst { time, count = 0 } = getInsertUsage( state, variationId ) || {};\n\treturn {\n\t\t...item,\n\t\tid: variationId,\n\t\ticon: variation.icon || item.icon,\n\t\ttitle: variation.title || item.title,\n\t\tdescription: variation.description || item.description,\n\t\tcategory: variation.category || item.category,\n\t\t// If `example` is explicitly undefined for the variation, the preview will not be shown.\n\t\texample: variation.hasOwnProperty( 'example' )\n\t\t\t? variation.example\n\t\t\t: item.example,\n\t\tinitialAttributes: {\n\t\t\t...item.initialAttributes,\n\t\t\t...variation.attributes,\n\t\t},\n\t\tinnerBlocks: variation.innerBlocks,\n\t\tkeywords: variation.keywords || item.keywords,\n\t\tfrecency: calculateFrecency( time, count ),\n\t};\n};\n\n/**\n * Returns the calculated frecency.\n *\n * 'frecency' is a heuristic (https://en.wikipedia.org/wiki/Frecency)\n * that combines block usage frequency and recency.\n *\n * @param {number} time When the last insert occurred as a UNIX epoch\n * @param {number} count The number of inserts that have occurred.\n *\n * @return {number} The calculated frecency.\n */\nconst calculateFrecency = ( time, count ) => {\n\tif ( ! time ) {\n\t\treturn count;\n\t}\n\t// The selector is cached, which means Date.now() is the last time that the\n\t// relevant state changed. This suits our needs.\n\tconst duration = Date.now() - time;\n\tswitch ( true ) {\n\t\tcase duration < MILLISECONDS_PER_HOUR:\n\t\t\treturn count * 4;\n\t\tcase duration < MILLISECONDS_PER_DAY:\n\t\t\treturn count * 2;\n\t\tcase duration < MILLISECONDS_PER_WEEK:\n\t\t\treturn count / 2;\n\t\tdefault:\n\t\t\treturn count / 4;\n\t}\n};\n\n/**\n * Returns a function that accepts a block type and builds an item to be shown\n * in a specific context. It's used for building items for Inserter and available\n * block Transforms list.\n *\n * @param {Object} state Editor state.\n * @param {Object} options Options object for handling the building of a block type.\n * @param {string} options.buildScope The scope for which the item is going to be used.\n * @return {Function} Function returns an item to be shown in a specific context (Inserter|Transforms list).\n */\nconst buildBlockTypeItem =\n\t( state, { buildScope = 'inserter' } ) =>\n\t( blockType ) => {\n\t\tconst id = blockType.name;\n\n\t\tlet isDisabled = false;\n\t\tif ( ! hasBlockSupport( blockType.name, 'multiple', true ) ) {\n\t\t\tisDisabled = getBlocksByClientId(\n\t\t\t\tstate,\n\t\t\t\tgetClientIdsWithDescendants( state )\n\t\t\t).some( ( { name } ) => name === blockType.name );\n\t\t}\n\n\t\tconst { time, count = 0 } = getInsertUsage( state, id ) || {};\n\t\tconst blockItemBase = {\n\t\t\tid,\n\t\t\tname: blockType.name,\n\t\t\ttitle: blockType.title,\n\t\t\ticon: blockType.icon,\n\t\t\tisDisabled,\n\t\t\tfrecency: calculateFrecency( time, count ),\n\t\t};\n\t\tif ( buildScope === 'transform' ) {\n\t\t\treturn blockItemBase;\n\t\t}\n\n\t\tconst inserterVariations = getBlockVariations(\n\t\t\tblockType.name,\n\t\t\t'inserter'\n\t\t);\n\t\treturn {\n\t\t\t...blockItemBase,\n\t\t\tinitialAttributes: {},\n\t\t\tdescription: blockType.description,\n\t\t\tcategory: blockType.category,\n\t\t\tkeywords: blockType.keywords,\n\t\t\tparent: blockType.parent,\n\t\t\tancestor: blockType.ancestor,\n\t\t\tvariations: inserterVariations,\n\t\t\texample: blockType.example,\n\t\t\tutility: 1, // Deprecated.\n\t\t};\n\t};\n\n/**\n * Determines the items that appear in the inserter. Includes both static\n * items (e.g. a regular block type) and dynamic items (e.g. a reusable block).\n *\n * Each item object contains what's necessary to display a button in the\n * inserter and handle its selection.\n *\n * The 'frecency' property is a heuristic (https://en.wikipedia.org/wiki/Frecency)\n * that combines block usage frequency and recency.\n *\n * Items are returned ordered descendingly by their 'utility' and 'frecency'.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {WPEditorInserterItem[]} Items that appear in inserter.\n *\n * @typedef {Object} WPEditorInserterItem\n * @property {string} id Unique identifier for the item.\n * @property {string} name The type of block to create.\n * @property {Object} initialAttributes Attributes to pass to the newly created block.\n * @property {string} title Title of the item, as it appears in the inserter.\n * @property {string} icon Dashicon for the item, as it appears in the inserter.\n * @property {string} category Block category that the item is associated with.\n * @property {string[]} keywords Keywords that can be searched to find this item.\n * @property {boolean} isDisabled Whether or not the user should be prevented from inserting\n * this item.\n * @property {number} frecency Heuristic that combines frequency and recency.\n */\nexport const getInserterItems = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, rootClientId = null, options = DEFAULT_INSERTER_OPTIONS ) => {\n\t\t\tconst buildReusableBlockInserterItem = ( reusableBlock ) => {\n\t\t\t\tconst icon = ! reusableBlock.wp_pattern_sync_status\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tsrc: symbol,\n\t\t\t\t\t\t\tforeground: 'var(--wp-block-synced-color)',\n\t\t\t\t\t }\n\t\t\t\t\t: symbol;\n\t\t\t\tconst userPattern = mapUserPattern( reusableBlock );\n\t\t\t\tconst { time, count = 0 } =\n\t\t\t\t\tgetInsertUsage( state, userPattern.name ) || {};\n\t\t\t\tconst frecency = calculateFrecency( time, count );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: userPattern.name,\n\t\t\t\t\tname: 'core/block',\n\t\t\t\t\tinitialAttributes: { ref: reusableBlock.id },\n\t\t\t\t\ttitle: userPattern.title,\n\t\t\t\t\ticon,\n\t\t\t\t\tcategory: 'reusable',\n\t\t\t\t\tkeywords: [ 'reusable' ],\n\t\t\t\t\tisDisabled: false,\n\t\t\t\t\tutility: 1, // Deprecated.\n\t\t\t\t\tfrecency,\n\t\t\t\t\tcontent: userPattern.content,\n\t\t\t\t\tget blocks() {\n\t\t\t\t\t\treturn getParsedPattern( userPattern ).blocks;\n\t\t\t\t\t},\n\t\t\t\t\tsyncStatus: userPattern.syncStatus,\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tconst patternInserterItems = canInsertBlockTypeUnmemoized(\n\t\t\t\tstate,\n\t\t\t\t'core/block',\n\t\t\t\trootClientId\n\t\t\t)\n\t\t\t\t? unlock( select( STORE_NAME ) )\n\t\t\t\t\t\t.getReusableBlocks()\n\t\t\t\t\t\t.map( buildReusableBlockInserterItem )\n\t\t\t\t: [];\n\n\t\t\tconst buildBlockTypeInserterItem = buildBlockTypeItem( state, {\n\t\t\t\tbuildScope: 'inserter',\n\t\t\t} );\n\n\t\t\tlet blockTypeInserterItems = getBlockTypes()\n\t\t\t\t.filter( ( blockType ) =>\n\t\t\t\t\thasBlockSupport( blockType, 'inserter', true )\n\t\t\t\t)\n\t\t\t\t.map( buildBlockTypeInserterItem );\n\n\t\t\tif ( options[ isFiltered ] !== false ) {\n\t\t\t\tblockTypeInserterItems = blockTypeInserterItems.filter(\n\t\t\t\t\t( blockType ) =>\n\t\t\t\t\t\tcanIncludeBlockTypeInInserter(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tblockType,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tblockTypeInserterItems = blockTypeInserterItems\n\t\t\t\t\t.filter( ( blockType ) =>\n\t\t\t\t\t\tisBlockVisibleInTheInserter(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tblockType,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.map( ( blockType ) => ( {\n\t\t\t\t\t\t...blockType,\n\t\t\t\t\t\tisAllowedInCurrentRoot: canIncludeBlockTypeInInserter(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tblockType,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t),\n\t\t\t\t\t} ) );\n\t\t\t}\n\n\t\t\tconst items = blockTypeInserterItems.reduce(\n\t\t\t\t( accumulator, item ) => {\n\t\t\t\t\tconst { variations = [] } = item;\n\t\t\t\t\t// Exclude any block type item that is to be replaced by a default variation.\n\t\t\t\t\tif ( ! variations.some( ( { isDefault } ) => isDefault ) ) {\n\t\t\t\t\t\taccumulator.push( item );\n\t\t\t\t\t}\n\t\t\t\t\tif ( variations.length ) {\n\t\t\t\t\t\tconst variationMapper = getItemFromVariation(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\titem\n\t\t\t\t\t\t);\n\t\t\t\t\t\taccumulator.push(\n\t\t\t\t\t\t\t...variations.map( variationMapper )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t[]\n\t\t\t);\n\n\t\t\t// Ensure core blocks are prioritized in the returned results,\n\t\t\t// because third party blocks can be registered earlier than\n\t\t\t// the core blocks (usually by using the `init` action),\n\t\t\t// thus affecting the display order.\n\t\t\t// We don't sort reusable blocks as they are handled differently.\n\t\t\tconst groupByType = ( blocks, block ) => {\n\t\t\t\tconst { core, noncore } = blocks;\n\t\t\t\tconst type = block.name.startsWith( 'core/' ) ? core : noncore;\n\n\t\t\t\ttype.push( block );\n\t\t\t\treturn blocks;\n\t\t\t};\n\t\t\tconst { core: coreItems, noncore: nonCoreItems } = items.reduce(\n\t\t\t\tgroupByType,\n\t\t\t\t{ core: [], noncore: [] }\n\t\t\t);\n\t\t\tconst sortedBlockTypes = [ ...coreItems, ...nonCoreItems ];\n\t\t\treturn [ ...sortedBlockTypes, ...patternInserterItems ];\n\t\t},\n\t\t( state, rootClientId ) => [\n\t\t\tgetBlockTypes(),\n\t\t\tunlock( select( STORE_NAME ) ).getReusableBlocks(),\n\t\t\tstate.blocks.order,\n\t\t\tstate.preferences.insertUsage,\n\t\t\t...getInsertBlockTypeDependants( select )( state, rootClientId ),\n\t\t]\n\t)\n);\n\n/**\n * Determines the items that appear in the available block transforms list.\n *\n * Each item object contains what's necessary to display a menu item in the\n * transform list and handle its selection.\n *\n * The 'frecency' property is a heuristic (https://en.wikipedia.org/wiki/Frecency)\n * that combines block usage frequency and recency.\n *\n * Items are returned ordered descendingly by their 'frecency'.\n *\n * @param {Object} state Editor state.\n * @param {Object|Object[]} blocks Block object or array objects.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {WPEditorTransformItem[]} Items that appear in inserter.\n *\n * @typedef {Object} WPEditorTransformItem\n * @property {string} id Unique identifier for the item.\n * @property {string} name The type of block to create.\n * @property {string} title Title of the item, as it appears in the inserter.\n * @property {string} icon Dashicon for the item, as it appears in the inserter.\n * @property {boolean} isDisabled Whether or not the user should be prevented from inserting\n * this item.\n * @property {number} frecency Heuristic that combines frequency and recency.\n */\nexport const getBlockTransformItems = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, blocks, rootClientId = null ) => {\n\t\t\tconst normalizedBlocks = Array.isArray( blocks )\n\t\t\t\t? blocks\n\t\t\t\t: [ blocks ];\n\t\t\tconst buildBlockTypeTransformItem = buildBlockTypeItem( state, {\n\t\t\t\tbuildScope: 'transform',\n\t\t\t} );\n\t\t\tconst blockTypeTransformItems = getBlockTypes()\n\t\t\t\t.filter( ( blockType ) =>\n\t\t\t\t\tcanIncludeBlockTypeInInserter(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tblockType,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.map( buildBlockTypeTransformItem );\n\n\t\t\tconst itemsByName = Object.fromEntries(\n\t\t\t\tObject.entries( blockTypeTransformItems ).map(\n\t\t\t\t\t( [ , value ] ) => [ value.name, value ]\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tconst possibleTransforms = getPossibleBlockTransformations(\n\t\t\t\tnormalizedBlocks\n\t\t\t).reduce( ( accumulator, block ) => {\n\t\t\t\tif ( itemsByName[ block?.name ] ) {\n\t\t\t\t\taccumulator.push( itemsByName[ block.name ] );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t}, [] );\n\t\t\treturn orderBy(\n\t\t\t\tpossibleTransforms,\n\t\t\t\t( block ) => itemsByName[ block.name ].frecency,\n\t\t\t\t'desc'\n\t\t\t);\n\t\t},\n\t\t( state, blocks, rootClientId ) => [\n\t\t\tgetBlockTypes(),\n\t\t\tstate.preferences.insertUsage,\n\t\t\t...getInsertBlockTypeDependants( select )( state, rootClientId ),\n\t\t]\n\t)\n);\n\n/**\n * Determines whether there are items to show in the inserter.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Items that appear in inserter.\n */\nexport const hasInserterItems = ( state, rootClientId = null ) => {\n\tconst hasBlockType = getBlockTypes().some( ( blockType ) =>\n\t\tcanIncludeBlockTypeInInserter( state, blockType, rootClientId )\n\t);\n\tif ( hasBlockType ) {\n\t\treturn true;\n\t}\n\tconst hasReusableBlock = canInsertBlockTypeUnmemoized(\n\t\tstate,\n\t\t'core/block',\n\t\trootClientId\n\t);\n\n\treturn hasReusableBlock;\n};\n\n/**\n * Returns the list of allowed inserter blocks for inner blocks children.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Array?} The list of allowed block types.\n */\nexport const getAllowedBlocks = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, rootClientId = null ) => {\n\t\t\tif ( ! rootClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blockTypes = getBlockTypes().filter( ( blockType ) =>\n\t\t\t\tcanIncludeBlockTypeInInserter( state, blockType, rootClientId )\n\t\t\t);\n\n\t\t\tconst hasReusableBlock = canInsertBlockTypeUnmemoized(\n\t\t\t\tstate,\n\t\t\t\t'core/block',\n\t\t\t\trootClientId\n\t\t\t);\n\n\t\t\tif ( hasReusableBlock ) {\n\t\t\t\tblockTypes.push( 'core/block' );\n\t\t\t}\n\n\t\t\treturn blockTypes;\n\t\t},\n\t\t( state, rootClientId ) => [\n\t\t\tgetBlockTypes(),\n\t\t\t...getInsertBlockTypeDependants( select )( state, rootClientId ),\n\t\t]\n\t)\n);\n\nexport const __experimentalGetAllowedBlocks = createSelector(\n\t( state, rootClientId = null ) => {\n\t\tdeprecated(\n\t\t\t'wp.data.select( \"core/block-editor\" ).__experimentalGetAllowedBlocks',\n\t\t\t{\n\t\t\t\talternative:\n\t\t\t\t\t'wp.data.select( \"core/block-editor\" ).getAllowedBlocks',\n\t\t\t\tsince: '6.2',\n\t\t\t\tversion: '6.4',\n\t\t\t}\n\t\t);\n\t\treturn getAllowedBlocks( state, rootClientId );\n\t},\n\t( state, rootClientId ) =>\n\t\tgetAllowedBlocks.getDependants( state, rootClientId )\n);\n\n/**\n * Returns the block to be directly inserted by the block appender.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {WPDirectInsertBlock|undefined} The block type to be directly inserted.\n *\n * @typedef {Object} WPDirectInsertBlock\n * @property {string} name The type of block.\n * @property {?Object} attributes Attributes to pass to the newly created block.\n * @property {?Array<string>} attributesToCopy Attributes to be copied from adjacent blocks when inserted.\n */\nexport function getDirectInsertBlock( state, rootClientId = null ) {\n\tif ( ! rootClientId ) {\n\t\treturn;\n\t}\n\tconst { defaultBlock, directInsert } =\n\t\tstate.blockListSettings[ rootClientId ] ?? {};\n\tif ( ! defaultBlock || ! directInsert ) {\n\t\treturn;\n\t}\n\n\treturn defaultBlock;\n}\n\nexport function __experimentalGetDirectInsertBlock(\n\tstate,\n\trootClientId = null\n) {\n\tdeprecated(\n\t\t'wp.data.select( \"core/block-editor\" ).__experimentalGetDirectInsertBlock',\n\t\t{\n\t\t\talternative:\n\t\t\t\t'wp.data.select( \"core/block-editor\" ).getDirectInsertBlock',\n\t\t\tsince: '6.3',\n\t\t\tversion: '6.4',\n\t\t}\n\t);\n\treturn getDirectInsertBlock( state, rootClientId );\n}\n\nexport const __experimentalGetParsedPattern = createRegistrySelector(\n\t( select ) => ( state, patternName ) => {\n\t\tconst pattern = unlock( select( STORE_NAME ) ).getPatternBySlug(\n\t\t\tpatternName\n\t\t);\n\t\treturn pattern ? getParsedPattern( pattern ) : null;\n\t}\n);\n\nconst getAllowedPatternsDependants = ( select ) => ( state, rootClientId ) => [\n\t...getAllPatternsDependants( select )( state ),\n\t...getInsertBlockTypeDependants( select )( state, rootClientId ),\n];\n\nconst patternsWithParsedBlocks = new WeakMap();\nfunction enhancePatternWithParsedBlocks( pattern ) {\n\tlet enhancedPattern = patternsWithParsedBlocks.get( pattern );\n\tif ( ! enhancedPattern ) {\n\t\tenhancedPattern = {\n\t\t\t...pattern,\n\t\t\tget blocks() {\n\t\t\t\treturn getParsedPattern( pattern ).blocks;\n\t\t\t},\n\t\t};\n\t\tpatternsWithParsedBlocks.set( pattern, enhancedPattern );\n\t}\n\treturn enhancedPattern;\n}\n\n/**\n * Returns the list of allowed patterns for inner blocks children.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional target root client ID.\n *\n * @return {Array?} The list of allowed patterns.\n */\nexport const __experimentalGetAllowedPatterns = createRegistrySelector(\n\t( select ) => {\n\t\treturn createSelector(\n\t\t\t(\n\t\t\t\tstate,\n\t\t\t\trootClientId = null,\n\t\t\t\toptions = DEFAULT_INSERTER_OPTIONS\n\t\t\t) => {\n\t\t\t\tconst { getAllPatterns } = unlock( select( STORE_NAME ) );\n\t\t\t\tconst patterns = getAllPatterns();\n\t\t\t\tconst { allowedBlockTypes } = getSettings( state );\n\t\t\t\tconst parsedPatterns = patterns\n\t\t\t\t\t.filter( ( { inserter = true } ) => !! inserter )\n\t\t\t\t\t.map( enhancePatternWithParsedBlocks );\n\n\t\t\t\tconst availableParsedPatterns = parsedPatterns.filter(\n\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\tcheckAllowListRecursive(\n\t\t\t\t\t\t\tgetGrammar( pattern ),\n\t\t\t\t\t\t\tallowedBlockTypes\n\t\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconst patternsAllowed = availableParsedPatterns.filter(\n\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\tgetGrammar( pattern ).every( ( { blockName: name } ) =>\n\t\t\t\t\t\t\toptions[ isFiltered ] !== false\n\t\t\t\t\t\t\t\t? canInsertBlockType(\n\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: isBlockVisibleInTheInserter(\n\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\treturn patternsAllowed;\n\t\t\t},\n\t\t\tgetAllowedPatternsDependants( select )\n\t\t);\n\t}\n);\n\n/**\n * Returns the list of patterns based on their declared `blockTypes`\n * and a block's name.\n * Patterns can use `blockTypes` to integrate in work flows like\n * suggesting appropriate patterns in a Placeholder state(during insertion)\n * or blocks transformations.\n *\n * @param {Object} state Editor state.\n * @param {string|string[]} blockNames Block's name or array of block names to find matching patterns.\n * @param {?string} rootClientId Optional target root client ID.\n *\n * @return {Array} The list of matched block patterns based on declared `blockTypes` and block name.\n */\nexport const getPatternsByBlockTypes = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, blockNames, rootClientId = null ) => {\n\t\t\tif ( ! blockNames ) {\n\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t}\n\t\t\tconst patterns =\n\t\t\t\tselect( STORE_NAME ).__experimentalGetAllowedPatterns(\n\t\t\t\t\trootClientId\n\t\t\t\t);\n\t\t\tconst normalizedBlockNames = Array.isArray( blockNames )\n\t\t\t\t? blockNames\n\t\t\t\t: [ blockNames ];\n\t\t\tconst filteredPatterns = patterns.filter( ( pattern ) =>\n\t\t\t\tpattern?.blockTypes?.some?.( ( blockName ) =>\n\t\t\t\t\tnormalizedBlockNames.includes( blockName )\n\t\t\t\t)\n\t\t\t);\n\t\t\tif ( filteredPatterns.length === 0 ) {\n\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t}\n\t\t\treturn filteredPatterns;\n\t\t},\n\t\t( state, blockNames, rootClientId ) =>\n\t\t\tgetAllowedPatternsDependants( select )( state, rootClientId )\n\t)\n);\n\nexport const __experimentalGetPatternsByBlockTypes = createRegistrySelector(\n\t( select ) => {\n\t\tdeprecated(\n\t\t\t'wp.data.select( \"core/block-editor\" ).__experimentalGetPatternsByBlockTypes',\n\t\t\t{\n\t\t\t\talternative:\n\t\t\t\t\t'wp.data.select( \"core/block-editor\" ).getPatternsByBlockTypes',\n\t\t\t\tsince: '6.2',\n\t\t\t\tversion: '6.4',\n\t\t\t}\n\t\t);\n\t\treturn select( STORE_NAME ).getPatternsByBlockTypes;\n\t}\n);\n\n/**\n * Determines the items that appear in the available pattern transforms list.\n *\n * For now we only handle blocks without InnerBlocks and take into account\n * the `role` property of blocks' attributes for the transformation.\n *\n * We return the first set of possible eligible block patterns,\n * by checking the `blockTypes` property. We still have to recurse through\n * block pattern's blocks and try to find matches from the selected blocks.\n * Now this happens in the consumer to avoid heavy operations in the selector.\n *\n * @param {Object} state Editor state.\n * @param {Object[]} blocks The selected blocks.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {WPBlockPattern[]} Items that are eligible for a pattern transformation.\n */\nexport const __experimentalGetPatternTransformItems = createRegistrySelector(\n\t( select ) =>\n\t\tcreateSelector(\n\t\t\t( state, blocks, rootClientId = null ) => {\n\t\t\t\tif ( ! blocks ) {\n\t\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * For now we only handle blocks without InnerBlocks and take into account\n\t\t\t\t * the `role` property of blocks' attributes for the transformation.\n\t\t\t\t * Note that the blocks have been retrieved through `getBlock`, which doesn't\n\t\t\t\t * return the inner blocks of an inner block controller, so we still need\n\t\t\t\t * to check for this case too.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tblocks.some(\n\t\t\t\t\t\t( { clientId, innerBlocks } ) =>\n\t\t\t\t\t\t\tinnerBlocks.length ||\n\t\t\t\t\t\t\tareInnerBlocksControlled( state, clientId )\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t\t}\n\n\t\t\t\t// Create a Set of the selected block names that is used in patterns filtering.\n\t\t\t\tconst selectedBlockNames = Array.from(\n\t\t\t\t\tnew Set( blocks.map( ( { name } ) => name ) )\n\t\t\t\t);\n\t\t\t\t/**\n\t\t\t\t * Here we will return first set of possible eligible block patterns,\n\t\t\t\t * by checking the `blockTypes` property. We still have to recurse through\n\t\t\t\t * block pattern's blocks and try to find matches from the selected blocks.\n\t\t\t\t * Now this happens in the consumer to avoid heavy operations in the selector.\n\t\t\t\t */\n\t\t\t\treturn select( STORE_NAME ).getPatternsByBlockTypes(\n\t\t\t\t\tselectedBlockNames,\n\t\t\t\t\trootClientId\n\t\t\t\t);\n\t\t\t},\n\t\t\t( state, blocks, rootClientId ) =>\n\t\t\t\tgetAllowedPatternsDependants( select )( state, rootClientId )\n\t\t)\n);\n\n/**\n * Returns the Block List settings of a block, if any exist.\n *\n * @param {Object} state Editor state.\n * @param {?string} clientId Block client ID.\n *\n * @return {?Object} Block settings of the block if set.\n */\nexport function getBlockListSettings( state, clientId ) {\n\treturn state.blockListSettings[ clientId ];\n}\n\n/**\n * Returns the editor settings.\n *\n * @param {Object} state Editor state.\n *\n * @return {Object} The editor settings object.\n */\nexport function getSettings( state ) {\n\treturn state.settings;\n}\n\n/**\n * Returns true if the most recent block change is be considered persistent, or\n * false otherwise. A persistent change is one committed by BlockEditorProvider\n * via its `onChange` callback, in addition to `onInput`.\n *\n * @param {Object} state Block editor state.\n *\n * @return {boolean} Whether the most recent block change was persistent.\n */\nexport function isLastBlockChangePersistent( state ) {\n\treturn state.blocks.isPersistentChange;\n}\n\n/**\n * Returns the block list settings for an array of blocks, if any exist.\n *\n * @param {Object} state Editor state.\n * @param {Array} clientIds Block client IDs.\n *\n * @return {Object} An object where the keys are client ids and the values are\n * a block list setting object.\n */\nexport const __experimentalGetBlockListSettingsForBlocks = createSelector(\n\t( state, clientIds = [] ) => {\n\t\treturn clientIds.reduce( ( blockListSettingsForBlocks, clientId ) => {\n\t\t\tif ( ! state.blockListSettings[ clientId ] ) {\n\t\t\t\treturn blockListSettingsForBlocks;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...blockListSettingsForBlocks,\n\t\t\t\t[ clientId ]: state.blockListSettings[ clientId ],\n\t\t\t};\n\t\t}, {} );\n\t},\n\t( state ) => [ state.blockListSettings ]\n);\n\n/**\n * Returns the title of a given reusable block\n *\n * @param {Object} state Global application state.\n * @param {number|string} ref The shared block's ID.\n *\n * @return {string} The reusable block saved title.\n */\nexport const __experimentalGetReusableBlockTitle = createRegistrySelector(\n\t( select ) =>\n\t\tcreateSelector(\n\t\t\t( state, ref ) => {\n\t\t\t\tdeprecated(\n\t\t\t\t\t\"wp.data.select( 'core/block-editor' ).__experimentalGetReusableBlockTitle\",\n\t\t\t\t\t{\n\t\t\t\t\t\tsince: '6.6',\n\t\t\t\t\t\tversion: '6.8',\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tconst reusableBlock = unlock( select( STORE_NAME ) )\n\t\t\t\t\t.getReusableBlocks()\n\t\t\t\t\t.find( ( block ) => block.id === ref );\n\t\t\t\tif ( ! reusableBlock ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn reusableBlock.title?.raw;\n\t\t\t},\n\t\t\t() => [ unlock( select( STORE_NAME ) ).getReusableBlocks() ]\n\t\t)\n);\n\n/**\n * Returns true if the most recent block change is be considered ignored, or\n * false otherwise. An ignored change is one not to be committed by\n * BlockEditorProvider, neither via `onChange` nor `onInput`.\n *\n * @param {Object} state Block editor state.\n *\n * @return {boolean} Whether the most recent block change was ignored.\n */\nexport function __unstableIsLastBlockChangeIgnored( state ) {\n\t// TODO: Removal Plan: Changes incurred by RECEIVE_BLOCKS should not be\n\t// ignored if in-fact they result in a change in blocks state. The current\n\t// need to ignore changes not a result of user interaction should be\n\t// accounted for in the refactoring of reusable blocks as occurring within\n\t// their own separate block editor / state (#7119).\n\treturn state.blocks.isIgnoredChange;\n}\n\n/**\n * Returns the block attributes changed as a result of the last dispatched\n * action.\n *\n * @param {Object} state Block editor state.\n *\n * @return {Object<string,Object>} Subsets of block attributes changed, keyed\n * by block client ID.\n */\nexport function __experimentalGetLastBlockAttributeChanges( state ) {\n\treturn state.lastBlockAttributesChange;\n}\n\n/**\n * Returns whether the navigation mode is enabled.\n *\n * @param {Object} state Editor state.\n *\n * @return {boolean} Is navigation mode enabled.\n */\nexport function isNavigationMode( state ) {\n\treturn __unstableGetEditorMode( state ) === 'navigation';\n}\n\n/**\n * Returns the current editor mode.\n *\n * @param {Object} state Editor state.\n *\n * @return {string} the editor mode.\n */\nexport const __unstableGetEditorMode = createRegistrySelector(\n\t( select ) => ( state ) => {\n\t\tif ( ! window?.__experimentalEditorWriteMode ) {\n\t\t\treturn 'edit';\n\t\t}\n\t\treturn (\n\t\t\tstate.settings.editorTool ??\n\t\t\tselect( preferencesStore ).get( 'core', 'editorTool' )\n\t\t);\n\t}\n);\n\n/**\n * Returns whether block moving mode is enabled.\n *\n * @deprecated\n */\nexport function hasBlockMovingClientId() {\n\tdeprecated(\n\t\t'wp.data.select( \"core/block-editor\" ).hasBlockMovingClientId',\n\t\t{\n\t\t\tsince: '6.7',\n\t\t\thint: 'Block moving mode feature has been removed',\n\t\t}\n\t);\n\treturn false;\n}\n\n/**\n * Returns true if the last change was an automatic change, false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the last change was automatic.\n */\nexport function didAutomaticChange( state ) {\n\treturn !! state.automaticChangeStatus;\n}\n\n/**\n * Returns true if the current highlighted block matches the block clientId.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block to check.\n *\n * @return {boolean} Whether the block is currently highlighted.\n */\nexport function isBlockHighlighted( state, clientId ) {\n\treturn state.highlightedBlock === clientId;\n}\n\n/**\n * Checks if a given block has controlled inner blocks.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block to check.\n *\n * @return {boolean} True if the block has controlled inner blocks.\n */\nexport function areInnerBlocksControlled( state, clientId ) {\n\treturn !! state.blocks.controlledInnerBlocks[ clientId ];\n}\n\n/**\n * Returns the clientId for the first 'active' block of a given array of block names.\n * A block is 'active' if it (or a child) is the selected block.\n * Returns the first match moving up the DOM from the selected block.\n *\n * @param {Object} state Global application state.\n * @param {string[]} validBlocksNames The names of block types to check for.\n *\n * @return {string} The matching block's clientId.\n */\nexport const __experimentalGetActiveBlockIdByBlockNames = createSelector(\n\t( state, validBlockNames ) => {\n\t\tif ( ! validBlockNames.length ) {\n\t\t\treturn null;\n\t\t}\n\t\t// Check if selected block is a valid entity area.\n\t\tconst selectedBlockClientId = getSelectedBlockClientId( state );\n\t\tif (\n\t\t\tvalidBlockNames.includes(\n\t\t\t\tgetBlockName( state, selectedBlockClientId )\n\t\t\t)\n\t\t) {\n\t\t\treturn selectedBlockClientId;\n\t\t}\n\t\t// Check if first selected block is a child of a valid entity area.\n\t\tconst multiSelectedBlockClientIds =\n\t\t\tgetMultiSelectedBlockClientIds( state );\n\t\tconst entityAreaParents = getBlockParentsByBlockName(\n\t\t\tstate,\n\t\t\tselectedBlockClientId || multiSelectedBlockClientIds[ 0 ],\n\t\t\tvalidBlockNames\n\t\t);\n\t\tif ( entityAreaParents ) {\n\t\t\t// Last parent closest/most interior.\n\t\t\treturn entityAreaParents[ entityAreaParents.length - 1 ];\n\t\t}\n\t\treturn null;\n\t},\n\t( state, validBlockNames ) => [\n\t\tstate.selection.selectionStart.clientId,\n\t\tstate.selection.selectionEnd.clientId,\n\t\tvalidBlockNames,\n\t]\n);\n\n/**\n * Tells if the block with the passed clientId was just inserted.\n *\n * @param {Object} state Global application state.\n * @param {Object} clientId Client Id of the block.\n * @param {?string} source Optional insertion source of the block.\n * @return {boolean} True if the block matches the last block inserted from the specified source.\n */\nexport function wasBlockJustInserted( state, clientId, source ) {\n\tconst { lastBlockInserted } = state;\n\treturn (\n\t\tlastBlockInserted.clientIds?.includes( clientId ) &&\n\t\tlastBlockInserted.source === source\n\t);\n}\n\n/**\n * Tells if the block is visible on the canvas or not.\n *\n * @param {Object} state Global application state.\n * @param {Object} clientId Client Id of the block.\n * @return {boolean} True if the block is visible.\n */\nexport function isBlockVisible( state, clientId ) {\n\treturn state.blockVisibility?.[ clientId ] ?? true;\n}\n\n/**\n * Returns the currently hovered block.\n *\n * @deprecated\n */\nexport function getHoveredBlockClientId() {\n\tdeprecated(\n\t\t\"wp.data.select( 'core/block-editor' ).getHoveredBlockClientId\",\n\t\t{\n\t\t\tsince: '6.9',\n\t\t\tversion: '7.1',\n\t\t}\n\t);\n\treturn undefined;\n}\n\n/**\n * Returns the list of all hidden blocks.\n *\n * @param {Object} state Global application state.\n * @return {[string]} List of hidden blocks.\n */\nexport const __unstableGetVisibleBlocks = createSelector(\n\t( state ) => {\n\t\tconst visibleBlocks = new Set(\n\t\t\tObject.keys( state.blockVisibility ).filter(\n\t\t\t\t( key ) => state.blockVisibility[ key ]\n\t\t\t)\n\t\t);\n\t\tif ( visibleBlocks.size === 0 ) {\n\t\t\treturn EMPTY_SET;\n\t\t}\n\t\treturn visibleBlocks;\n\t},\n\t( state ) => [ state.blockVisibility ]\n);\n\nexport function __unstableHasActiveBlockOverlayActive( state, clientId ) {\n\t// Prevent overlay on blocks with a non-default editing mode. If the mode is\n\t// 'disabled' then the overlay is redundant since the block can't be\n\t// selected. If the mode is 'contentOnly' then the overlay is redundant\n\t// since there will be no controls to interact with once selected.\n\tif ( getBlockEditingMode( state, clientId ) !== 'default' ) {\n\t\treturn false;\n\t}\n\n\t// If the block editing is locked, the block overlay is always active.\n\tif ( ! canEditBlock( state, clientId ) ) {\n\t\treturn true;\n\t}\n\n\t// In zoom-out mode, the block overlay is always active for section level blocks.\n\tif ( isZoomOut( state ) ) {\n\t\tconst sectionRootClientId = getSectionRootClientId( state );\n\t\tif ( sectionRootClientId ) {\n\t\t\tconst sectionClientIds = getBlockOrder(\n\t\t\t\tstate,\n\t\t\t\tsectionRootClientId\n\t\t\t);\n\t\t\tif ( sectionClientIds?.includes( clientId ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if ( clientId && ! getBlockRootClientId( state, clientId ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// In navigation mode, the block overlay is active when the block is not\n\t// selected (and doesn't contain a selected child). The same behavior is\n\t// also enabled in all modes for blocks that have controlled children\n\t// (reusable block, template part, navigation), unless explicitly disabled\n\t// with `supports.__experimentalDisableBlockOverlay`.\n\tconst blockSupportDisable = hasBlockSupport(\n\t\tgetBlockName( state, clientId ),\n\t\t'__experimentalDisableBlockOverlay',\n\t\tfalse\n\t);\n\tconst shouldEnableIfUnselected = blockSupportDisable\n\t\t? false\n\t\t: areInnerBlocksControlled( state, clientId );\n\n\treturn (\n\t\tshouldEnableIfUnselected &&\n\t\t! isBlockSelected( state, clientId ) &&\n\t\t! hasSelectedInnerBlock( state, clientId, true )\n\t);\n}\n\nexport function __unstableIsWithinBlockOverlay( state, clientId ) {\n\tlet parent = state.blocks.parents.get( clientId );\n\twhile ( !! parent ) {\n\t\tif ( __unstableHasActiveBlockOverlayActive( state, parent ) ) {\n\t\t\treturn true;\n\t\t}\n\t\tparent = state.blocks.parents.get( parent );\n\t}\n\treturn false;\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\t// Some selectors that call this provide `null` as the default\n\t// rootClientId, but the default rootClientId is actually `''`.\n\tif ( clientId === null ) {\n\t\tclientId = '';\n\t}\n\n\tconst isNavMode = isNavigationMode( state );\n\n\t// If the editor is currently not in navigation mode, check if the clientId\n\t// has an editing mode set in the regular derived map.\n\t// There may be an editing mode set here for synced patterns or in zoomed out\n\t// mode.\n\tif ( ! isNavMode && state.derivedBlockEditingModes?.has( clientId ) ) {\n\t\treturn state.derivedBlockEditingModes.get( clientId );\n\t}\n\n\t// If the editor *is* in navigation mode, the block editing mode states\n\t// are stored in the derivedNavModeBlockEditingModes map.\n\tif ( isNavMode && state.derivedNavModeBlockEditingModes?.has( clientId ) ) {\n\t\treturn state.derivedNavModeBlockEditingModes.get( clientId );\n\t}\n\n\t// In normal mode, consider that an explicitly set editing mode takes over.\n\tif ( state.blockEditingModes.has( clientId ) ) {\n\t\treturn state.blockEditingModes.get( clientId );\n\t}\n\n\treturn 'default';\n}\n\n/**\n * Indicates if a block is ungroupable.\n * A block is ungroupable if it is a single grouping block with inner blocks.\n * If a block has an `ungroup` transform, it is also ungroupable, without the\n * requirement of being the default grouping block.\n * Additionally a block can only be ungrouped if it has inner blocks and can\n * be removed.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client Id of the block. If not passed the selected block's client id will be used.\n * @return {boolean} True if the block is ungroupable.\n */\nexport const isUngroupable = createRegistrySelector(\n\t( select ) =>\n\t\t( state, clientId = '' ) => {\n\t\t\tconst _clientId = clientId || getSelectedBlockClientId( state );\n\t\t\tif ( ! _clientId ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst { getGroupingBlockName } = select( blocksStore );\n\t\t\tconst block = getBlock( state, _clientId );\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\t\t\tconst _isUngroupable =\n\t\t\t\tblock &&\n\t\t\t\t( block.name === groupingBlockName ||\n\t\t\t\t\tgetBlockType( block.name )?.transforms?.ungroup ) &&\n\t\t\t\t!! block.innerBlocks.length;\n\n\t\t\treturn _isUngroupable && canRemoveBlock( state, _clientId );\n\t\t}\n);\n\n/**\n * Indicates if the provided blocks(by client ids) are groupable.\n * We need to have at least one block, have a grouping block name set and\n * be able to remove these blocks.\n *\n * @param {Object} state Global application state.\n * @param {string[]} clientIds Block client ids. If not passed the selected blocks client ids will be used.\n * @return {boolean} True if the blocks are groupable.\n */\nexport const isGroupable = createRegistrySelector(\n\t( select ) =>\n\t\t( state, clientIds = EMPTY_ARRAY ) => {\n\t\t\tconst { getGroupingBlockName } = select( blocksStore );\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\t\t\tconst _clientIds = clientIds?.length\n\t\t\t\t? clientIds\n\t\t\t\t: getSelectedBlockClientIds( state );\n\t\t\tconst rootClientId = _clientIds?.length\n\t\t\t\t? getBlockRootClientId( state, _clientIds[ 0 ] )\n\t\t\t\t: undefined;\n\t\t\tconst groupingBlockAvailable = canInsertBlockType(\n\t\t\t\tstate,\n\t\t\t\tgroupingBlockName,\n\t\t\t\trootClientId\n\t\t\t);\n\t\t\tconst _isGroupable = groupingBlockAvailable && _clientIds.length;\n\t\t\treturn _isGroupable && canRemoveBlocks( state, _clientIds );\n\t\t}\n);\n\n/**\n * DO-NOT-USE in production.\n * This selector is created for internal/experimental only usage and may be\n * removed anytime without any warning, causing breakage on any plugin or theme invoking it.\n *\n * @deprecated\n *\n * @param {Object} state Global application state.\n * @param {Object} clientId Client Id of the block.\n *\n * @return {?string} Client ID of the ancestor block that is content locking the block.\n */\nexport const __unstableGetContentLockingParent = ( state, clientId ) => {\n\tdeprecated(\n\t\t\"wp.data.select( 'core/block-editor' ).__unstableGetContentLockingParent\",\n\t\t{\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.7',\n\t\t}\n\t);\n\treturn getContentLockingParent( state, clientId );\n};\n\n/**\n * DO-NOT-USE in production.\n * This selector is created for internal/experimental only usage and may be\n * removed anytime without any warning, causing breakage on any plugin or theme invoking it.\n *\n * @deprecated\n *\n * @param {Object} state Global application state.\n */\nexport function __unstableGetTemporarilyEditingAsBlocks( state ) {\n\tdeprecated(\n\t\t\"wp.data.select( 'core/block-editor' ).__unstableGetTemporarilyEditingAsBlocks\",\n\t\t{\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.7',\n\t\t}\n\t);\n\treturn getTemporarilyEditingAsBlocks( state );\n}\n\n/**\n * DO-NOT-USE in production.\n * This selector is created for internal/experimental only usage and may be\n * removed anytime without any warning, causing breakage on any plugin or theme invoking it.\n *\n * @deprecated\n *\n * @param {Object} state Global application state.\n */\nexport function __unstableGetTemporarilyEditingFocusModeToRevert( state ) {\n\tdeprecated(\n\t\t\"wp.data.select( 'core/block-editor' ).__unstableGetTemporarilyEditingFocusModeToRevert\",\n\t\t{\n\t\t\tsince: '6.5',\n\t\t\tversion: '6.7',\n\t\t}\n\t);\n\treturn getTemporarilyEditingFocusModeToRevert( state );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/store/selectors.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockType,\n\tgetBlockTypes,\n\tgetBlockVariations,\n\thasBlockSupport,\n\tgetPossibleBlockTransformations,\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tprivateApis as blocksPrivateApis,\n} from '@wordpress/blocks';\nimport { Platform } from '@wordpress/element';\nimport { applyFilters } from '@wordpress/hooks';\nimport { symbol } from '@wordpress/icons';\nimport { create, remove, toHTMLString } from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { createSelector, createRegistrySelector } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tisFiltered,\n\tcheckAllowListRecursive,\n\tcheckAllowList,\n\tgetAllPatternsDependants,\n\tgetInsertBlockTypeDependants,\n\tgetParsedPattern,\n\tgetGrammar,\n\tmapUserPattern,\n} from './utils';\nimport { orderBy } from '../utils/sorting';\nimport { STORE_NAME } from './constants';\nimport { unlock } from '../lock-unlock';\n\nimport {\n\tgetContentLockingParent,\n\tgetTemporarilyEditingAsBlocks,\n\tgetTemporarilyEditingFocusModeToRevert,\n\tgetSectionRootClientId,\n\tisSectionBlock,\n\tgetParentSectionBlock,\n\tisZoomOut,\n\tisContainerInsertableToInWriteMode,\n} from './private-selectors';\n\nconst { isContentBlock } = unlock( blocksPrivateApis );\n\n/**\n * A block selection object.\n *\n * @typedef {Object} WPBlockSelection\n *\n * @property {string} clientId A block client ID.\n * @property {string} attributeKey A block attribute key.\n * @property {number} offset An attribute value offset, based on the rich\n * text value. See `wp.richText.create`.\n */\n\n// Module constants.\nconst MILLISECONDS_PER_HOUR = 3600 * 1000;\nconst MILLISECONDS_PER_DAY = 24 * 3600 * 1000;\nconst MILLISECONDS_PER_WEEK = 7 * 24 * 3600 * 1000;\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation, as in a connected or\n * other pure component which performs `shouldComponentUpdate` check on props.\n * This should be used as a last resort, since the normalized data should be\n * maintained by the reducer result in state.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\n/**\n * Shared reference to an empty Set for cases where it is important to avoid\n * returning a new Set reference on every invocation, as in a connected or\n * other pure component which performs `shouldComponentUpdate` check on props.\n * This should be used as a last resort, since the normalized data should be\n * maintained by the reducer result in state.\n *\n * @type {Set}\n */\nconst EMPTY_SET = new Set();\n\nconst DEFAULT_INSERTER_OPTIONS = {\n\t[ isFiltered ]: true,\n};\n\n/**\n * Returns a block's name given its client ID, or null if no block exists with\n * the client ID.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {string} Block name.\n */\nexport function getBlockName( state, clientId ) {\n\tconst block = state.blocks.byClientId.get( clientId );\n\tconst socialLinkName = 'core/social-link';\n\n\tif ( Platform.OS !== 'web' && block?.name === socialLinkName ) {\n\t\tconst attributes = state.blocks.attributes.get( clientId );\n\t\tconst { service } = attributes ?? {};\n\n\t\treturn service ? `${ socialLinkName }-${ service }` : socialLinkName;\n\t}\n\treturn block ? block.name : null;\n}\n\n/**\n * Returns whether a block is valid or not.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Is Valid.\n */\nexport function isBlockValid( state, clientId ) {\n\tconst block = state.blocks.byClientId.get( clientId );\n\treturn !! block && block.isValid;\n}\n\n/**\n * Returns a block's attributes given its client ID, or null if no block exists with\n * the client ID.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {?Object} Block attributes.\n */\nexport function getBlockAttributes( state, clientId ) {\n\tconst block = state.blocks.byClientId.get( clientId );\n\tif ( ! block ) {\n\t\treturn null;\n\t}\n\n\treturn state.blocks.attributes.get( clientId );\n}\n\n/**\n * Returns a block given its client ID. This is a parsed copy of the block,\n * containing its `blockName`, `clientId`, and current `attributes` state. This\n * is not the block's registration settings, which must be retrieved from the\n * blocks module registration store.\n *\n * getBlock recurses through its inner blocks until all its children blocks have\n * been retrieved. Note that getBlock will not return the child inner blocks of\n * an inner block controller. This is because an inner block controller syncs\n * itself with its own entity, and should therefore not be included with the\n * blocks of a different entity. For example, say you call `getBlocks( TP )` to\n * get the blocks of a template part. If another template part is a child of TP,\n * then the nested template part's child blocks will not be returned. This way,\n * the template block itself is considered part of the parent, but the children\n * are not.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {Object} Parsed block object.\n */\nexport function getBlock( state, clientId ) {\n\tif ( ! state.blocks.byClientId.has( clientId ) ) {\n\t\treturn null;\n\t}\n\n\treturn state.blocks.tree.get( clientId );\n}\n\nexport const __unstableGetBlockWithoutInnerBlocks = createSelector(\n\t( state, clientId ) => {\n\t\tconst block = state.blocks.byClientId.get( clientId );\n\t\tif ( ! block ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\t...block,\n\t\t\tattributes: getBlockAttributes( state, clientId ),\n\t\t};\n\t},\n\t( state, clientId ) => [\n\t\tstate.blocks.byClientId.get( clientId ),\n\t\tstate.blocks.attributes.get( clientId ),\n\t]\n);\n\n/**\n * Returns all block objects for the current post being edited as an array in\n * the order they appear in the post. Note that this will exclude child blocks\n * of nested inner block controllers.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Object[]} Post blocks.\n */\nexport function getBlocks( state, rootClientId ) {\n\tconst treeKey =\n\t\t! rootClientId || ! areInnerBlocksControlled( state, rootClientId )\n\t\t\t? rootClientId || ''\n\t\t\t: 'controlled||' + rootClientId;\n\treturn state.blocks.tree.get( treeKey )?.innerBlocks || EMPTY_ARRAY;\n}\n\n/**\n * Returns a stripped down block object containing only its client ID,\n * and its inner blocks' client IDs.\n *\n * @deprecated\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Client ID of the block to get.\n *\n * @return {Object} Client IDs of the post blocks.\n */\nexport const __unstableGetClientIdWithClientIdsTree = createSelector(\n\t( state, clientId ) => {\n\t\tdeprecated(\n\t\t\t\"wp.data.select( 'core/block-editor' ).__unstableGetClientIdWithClientIdsTree\",\n\t\t\t{\n\t\t\t\tsince: '6.3',\n\t\t\t\tversion: '6.5',\n\t\t\t}\n\t\t);\n\t\treturn {\n\t\t\tclientId,\n\t\t\tinnerBlocks: __unstableGetClientIdsTree( state, clientId ),\n\t\t};\n\t},\n\t( state ) => [ state.blocks.order ]\n);\n\n/**\n * Returns the block tree represented in the block-editor store from the\n * given root, consisting of stripped down block objects containing only\n * their client IDs, and their inner blocks' client IDs.\n *\n * @deprecated\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Object[]} Client IDs of the post blocks.\n */\nexport const __unstableGetClientIdsTree = createSelector(\n\t( state, rootClientId = '' ) => {\n\t\tdeprecated(\n\t\t\t\"wp.data.select( 'core/block-editor' ).__unstableGetClientIdsTree\",\n\t\t\t{\n\t\t\t\tsince: '6.3',\n\t\t\t\tversion: '6.5',\n\t\t\t}\n\t\t);\n\t\treturn getBlockOrder( state, rootClientId ).map( ( clientId ) =>\n\t\t\t__unstableGetClientIdWithClientIdsTree( state, clientId )\n\t\t);\n\t},\n\t( state ) => [ state.blocks.order ]\n);\n\n/**\n * Returns an array containing the clientIds of all descendants of the blocks\n * given. Returned ids are ordered first by the order of the ids given, then\n * by the order that they appear in the editor.\n *\n * @param {Object} state Global application state.\n * @param {string|string[]} rootIds Client ID(s) for which descendant blocks are to be returned.\n *\n * @return {Array} Client IDs of descendants.\n */\nexport const getClientIdsOfDescendants = createSelector(\n\t( state, rootIds ) => {\n\t\trootIds = Array.isArray( rootIds ) ? [ ...rootIds ] : [ rootIds ];\n\t\tconst ids = [];\n\n\t\t// Add the descendants of the root blocks first.\n\t\tfor ( const rootId of rootIds ) {\n\t\t\tconst order = state.blocks.order.get( rootId );\n\t\t\tif ( order ) {\n\t\t\t\tids.push( ...order );\n\t\t\t}\n\t\t}\n\n\t\tlet index = 0;\n\n\t\t// Add the descendants of the descendants, recursively.\n\t\twhile ( index < ids.length ) {\n\t\t\tconst id = ids[ index ];\n\t\t\tconst order = state.blocks.order.get( id );\n\t\t\tif ( order ) {\n\t\t\t\tids.splice( index + 1, 0, ...order );\n\t\t\t}\n\t\t\tindex++;\n\t\t}\n\n\t\treturn ids;\n\t},\n\t( state ) => [ state.blocks.order ]\n);\n\n/**\n * Returns an array containing the clientIds of the top-level blocks and\n * their descendants of any depth (for nested blocks). Ids are returned\n * in the same order that they appear in the editor.\n *\n * @param {Object} state Global application state.\n *\n * @return {Array} ids of top-level and descendant blocks.\n */\nexport const getClientIdsWithDescendants = ( state ) =>\n\tgetClientIdsOfDescendants( state, '' );\n\n/**\n * Returns the total number of blocks, or the total number of blocks with a specific name in a post.\n * The number returned includes nested blocks.\n *\n * @param {Object} state Global application state.\n * @param {?string} blockName Optional block name, if specified only blocks of that type will be counted.\n *\n * @return {number} Number of blocks in the post, or number of blocks with name equal to blockName.\n */\nexport const getGlobalBlockCount = createSelector(\n\t( state, blockName ) => {\n\t\tconst clientIds = getClientIdsWithDescendants( state );\n\t\tif ( ! blockName ) {\n\t\t\treturn clientIds.length;\n\t\t}\n\t\tlet count = 0;\n\t\tfor ( const clientId of clientIds ) {\n\t\t\tconst block = state.blocks.byClientId.get( clientId );\n\t\t\tif ( block.name === blockName ) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t},\n\t( state ) => [ state.blocks.order, state.blocks.byClientId ]\n);\n\n/**\n * Returns all blocks that match a blockName. Results include nested blocks.\n *\n * @param {Object} state Global application state.\n * @param {string[]} blockName Block name(s) for which clientIds are to be returned.\n *\n * @return {Array} Array of clientIds of blocks with name equal to blockName.\n */\nexport const getBlocksByName = createSelector(\n\t( state, blockName ) => {\n\t\tif ( ! blockName ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\tconst blockNames = Array.isArray( blockName )\n\t\t\t? blockName\n\t\t\t: [ blockName ];\n\t\tconst clientIds = getClientIdsWithDescendants( state );\n\t\tconst foundBlocks = clientIds.filter( ( clientId ) => {\n\t\t\tconst block = state.blocks.byClientId.get( clientId );\n\t\t\treturn blockNames.includes( block.name );\n\t\t} );\n\t\treturn foundBlocks.length > 0 ? foundBlocks : EMPTY_ARRAY;\n\t},\n\t( state ) => [ state.blocks.order, state.blocks.byClientId ]\n);\n\n/**\n * Returns all global blocks that match a blockName. Results include nested blocks.\n *\n * @deprecated\n *\n * @param {Object} state Global application state.\n * @param {string[]} blockName Block name(s) for which clientIds are to be returned.\n *\n * @return {Array} Array of clientIds of blocks with name equal to blockName.\n */\nexport function __experimentalGetGlobalBlocksByName( state, blockName ) {\n\tdeprecated(\n\t\t\"wp.data.select( 'core/block-editor' ).__experimentalGetGlobalBlocksByName\",\n\t\t{\n\t\t\tsince: '6.5',\n\t\t\talternative: `wp.data.select( 'core/block-editor' ).getBlocksByName`,\n\t\t}\n\t);\n\treturn getBlocksByName( state, blockName );\n}\n\n/**\n * Given an array of block client IDs, returns the corresponding array of block\n * objects.\n *\n * @param {Object} state Editor state.\n * @param {string[]} clientIds Client IDs for which blocks are to be returned.\n *\n * @return {WPBlock[]} Block objects.\n */\nexport const getBlocksByClientId = createSelector(\n\t( state, clientIds ) =>\n\t\t( Array.isArray( clientIds ) ? clientIds : [ clientIds ] ).map(\n\t\t\t( clientId ) => getBlock( state, clientId )\n\t\t),\n\t( state, clientIds ) =>\n\t\t( Array.isArray( clientIds ) ? clientIds : [ clientIds ] ).map(\n\t\t\t( clientId ) => state.blocks.tree.get( clientId )\n\t\t)\n);\n\n/**\n * Given an array of block client IDs, returns the corresponding array of block\n * names.\n *\n * @param {Object} state Editor state.\n * @param {string[]} clientIds Client IDs for which block names are to be returned.\n *\n * @return {string[]} Block names.\n */\nexport const getBlockNamesByClientId = createSelector(\n\t( state, clientIds ) =>\n\t\tgetBlocksByClientId( state, clientIds )\n\t\t\t.filter( Boolean )\n\t\t\t.map( ( block ) => block.name ),\n\t( state, clientIds ) => getBlocksByClientId( state, clientIds )\n);\n\n/**\n * Returns the number of blocks currently present in the post.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {number} Number of blocks in the post.\n */\nexport function getBlockCount( state, rootClientId ) {\n\treturn getBlockOrder( state, rootClientId ).length;\n}\n\n/**\n * Returns the current selection start block client ID, attribute key and text\n * offset.\n *\n * @param {Object} state Block editor state.\n *\n * @return {WPBlockSelection} Selection start information.\n */\nexport function getSelectionStart( state ) {\n\treturn state.selection.selectionStart;\n}\n\n/**\n * Returns the current selection end block client ID, attribute key and text\n * offset.\n *\n * @param {Object} state Block editor state.\n *\n * @return {WPBlockSelection} Selection end information.\n */\nexport function getSelectionEnd( state ) {\n\treturn state.selection.selectionEnd;\n}\n\n/**\n * Returns the current block selection start. This value may be null, and it\n * may represent either a singular block selection or multi-selection start.\n * A selection is singular if its start and end match.\n *\n * @param {Object} state Global application state.\n *\n * @return {?string} Client ID of block selection start.\n */\nexport function getBlockSelectionStart( state ) {\n\treturn state.selection.selectionStart.clientId;\n}\n\n/**\n * Returns the current block selection end. This value may be null, and it\n * may represent either a singular block selection or multi-selection end.\n * A selection is singular if its start and end match.\n *\n * @param {Object} state Global application state.\n *\n * @return {?string} Client ID of block selection end.\n */\nexport function getBlockSelectionEnd( state ) {\n\treturn state.selection.selectionEnd.clientId;\n}\n\n/**\n * Returns the number of blocks currently selected in the post.\n *\n * @param {Object} state Global application state.\n *\n * @return {number} Number of blocks selected in the post.\n */\nexport function getSelectedBlockCount( state ) {\n\tconst multiSelectedBlockCount =\n\t\tgetMultiSelectedBlockClientIds( state ).length;\n\n\tif ( multiSelectedBlockCount ) {\n\t\treturn multiSelectedBlockCount;\n\t}\n\n\treturn state.selection.selectionStart.clientId ? 1 : 0;\n}\n\n/**\n * Returns true if there is a single selected block, or false otherwise.\n *\n * @param {Object} state Editor state.\n *\n * @return {boolean} Whether a single block is selected.\n */\nexport function hasSelectedBlock( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\treturn (\n\t\t!! selectionStart.clientId &&\n\t\tselectionStart.clientId === selectionEnd.clientId\n\t);\n}\n\n/**\n * Returns the currently selected block client ID, or null if there is no\n * selected block.\n *\n * @param {Object} state Editor state.\n *\n * @return {?string} Selected block client ID.\n */\nexport function getSelectedBlockClientId( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\tconst { clientId } = selectionStart;\n\n\tif ( ! clientId || clientId !== selectionEnd.clientId ) {\n\t\treturn null;\n\t}\n\n\treturn clientId;\n}\n\n/**\n * Returns the currently selected block, or null if there is no selected block.\n *\n * @param {Object} state Global application state.\n *\n * @example\n *\n *```js\n * import { select } from '@wordpress/data'\n * import { store as blockEditorStore } from '@wordpress/block-editor'\n *\n * // Set initial active block client ID\n * let activeBlockClientId = null\n *\n * const getActiveBlockData = () => {\n * \tconst activeBlock = select(blockEditorStore).getSelectedBlock()\n *\n * \tif (activeBlock && activeBlock.clientId !== activeBlockClientId) {\n * \t\tactiveBlockClientId = activeBlock.clientId\n *\n * \t\t// Get active block name and attributes\n * \t\tconst activeBlockName = activeBlock.name\n * \t\tconst activeBlockAttributes = activeBlock.attributes\n *\n * \t\t// Log active block name and attributes\n * \t\tconsole.log(activeBlockName, activeBlockAttributes)\n * \t\t}\n * \t}\n *\n * \t// Subscribe to changes in the editor\n * \t// wp.data.subscribe(() => {\n * \t\t// getActiveBlockData()\n * \t// })\n *\n * \t// Update active block data on click\n * \t// onclick=\"getActiveBlockData()\"\n *```\n *\n * @return {?Object} Selected block.\n */\nexport function getSelectedBlock( state ) {\n\tconst clientId = getSelectedBlockClientId( state );\n\treturn clientId ? getBlock( state, clientId ) : null;\n}\n\n/**\n * Given a block client ID, returns the root block from which the block is\n * nested, an empty string for top-level blocks, or null if the block does not\n * exist.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block from which to find root client ID.\n *\n * @return {?string} Root client ID, if exists\n */\nexport function getBlockRootClientId( state, clientId ) {\n\treturn state.blocks.parents.get( clientId ) ?? null;\n}\n\n/**\n * Given a block client ID, returns the list of all its parents from top to bottom.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block from which to find root client ID.\n * @param {boolean} ascending Order results from bottom to top (true) or top to bottom (false).\n *\n * @return {Array} ClientIDs of the parent blocks.\n */\nexport const getBlockParents = createSelector(\n\t( state, clientId, ascending = false ) => {\n\t\tconst parents = [];\n\t\tlet current = clientId;\n\t\twhile ( ( current = state.blocks.parents.get( current ) ) ) {\n\t\t\tparents.push( current );\n\t\t}\n\n\t\tif ( ! parents.length ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\treturn ascending ? parents : parents.reverse();\n\t},\n\t( state ) => [ state.blocks.parents ]\n);\n\n/**\n * Given a block client ID and a block name, returns the list of all its parents\n * from top to bottom, filtered by the given name(s). For example, if passed\n * 'core/group' as the blockName, it will only return parents which are group\n * blocks. If passed `[ 'core/group', 'core/cover']`, as the blockName, it will\n * return parents which are group blocks and parents which are cover blocks.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block from which to find root client ID.\n * @param {string|string[]} blockName Block name(s) to filter.\n * @param {boolean} ascending Order results from bottom to top (true) or top to bottom (false).\n *\n * @return {Array} ClientIDs of the parent blocks.\n */\nexport const getBlockParentsByBlockName = createSelector(\n\t( state, clientId, blockName, ascending = false ) => {\n\t\tconst parents = getBlockParents( state, clientId, ascending );\n\t\tconst hasName = Array.isArray( blockName )\n\t\t\t? ( name ) => blockName.includes( name )\n\t\t\t: ( name ) => blockName === name;\n\t\treturn parents.filter( ( id ) => hasName( getBlockName( state, id ) ) );\n\t},\n\t( state ) => [ state.blocks.parents ]\n);\n/**\n * Given a block client ID, returns the root of the hierarchy from which the block is nested, return the block itself for root level blocks.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block from which to find root client ID.\n *\n * @return {string} Root client ID\n */\nexport function getBlockHierarchyRootClientId( state, clientId ) {\n\tlet current = clientId;\n\tlet parent;\n\tdo {\n\t\tparent = current;\n\t\tcurrent = state.blocks.parents.get( current );\n\t} while ( current );\n\treturn parent;\n}\n\n/**\n * Given a block client ID, returns the lowest common ancestor with selected client ID.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block from which to find common ancestor client ID.\n *\n * @return {string} Common ancestor client ID or undefined\n */\nexport function getLowestCommonAncestorWithSelectedBlock( state, clientId ) {\n\tconst selectedId = getSelectedBlockClientId( state );\n\tconst clientParents = [ ...getBlockParents( state, clientId ), clientId ];\n\tconst selectedParents = [\n\t\t...getBlockParents( state, selectedId ),\n\t\tselectedId,\n\t];\n\n\tlet lowestCommonAncestor;\n\n\tconst maxDepth = Math.min( clientParents.length, selectedParents.length );\n\tfor ( let index = 0; index < maxDepth; index++ ) {\n\t\tif ( clientParents[ index ] === selectedParents[ index ] ) {\n\t\t\tlowestCommonAncestor = clientParents[ index ];\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn lowestCommonAncestor;\n}\n\n/**\n * Returns the client ID of the block adjacent one at the given reference\n * startClientId and modifier directionality. Defaults start startClientId to\n * the selected block, and direction as next block. Returns null if there is no\n * adjacent block.\n *\n * @param {Object} state Editor state.\n * @param {?string} startClientId Optional client ID of block from which to\n * search.\n * @param {?number} modifier Directionality multiplier (1 next, -1\n * previous).\n *\n * @return {?string} Return the client ID of the block, or null if none exists.\n */\nexport function getAdjacentBlockClientId( state, startClientId, modifier = 1 ) {\n\t// Default to selected block.\n\tif ( startClientId === undefined ) {\n\t\tstartClientId = getSelectedBlockClientId( state );\n\t}\n\n\t// Try multi-selection starting at extent based on modifier.\n\tif ( startClientId === undefined ) {\n\t\tif ( modifier < 0 ) {\n\t\t\tstartClientId = getFirstMultiSelectedBlockClientId( state );\n\t\t} else {\n\t\t\tstartClientId = getLastMultiSelectedBlockClientId( state );\n\t\t}\n\t}\n\n\t// Validate working start client ID.\n\tif ( ! startClientId ) {\n\t\treturn null;\n\t}\n\n\t// Retrieve start block root client ID, being careful to allow the falsey\n\t// empty string top-level root by explicitly testing against null.\n\tconst rootClientId = getBlockRootClientId( state, startClientId );\n\tif ( rootClientId === null ) {\n\t\treturn null;\n\t}\n\n\tconst { order } = state.blocks;\n\tconst orderSet = order.get( rootClientId );\n\tconst index = orderSet.indexOf( startClientId );\n\tconst nextIndex = index + 1 * modifier;\n\n\t// Block was first in set and we're attempting to get previous.\n\tif ( nextIndex < 0 ) {\n\t\treturn null;\n\t}\n\n\t// Block was last in set and we're attempting to get next.\n\tif ( nextIndex === orderSet.length ) {\n\t\treturn null;\n\t}\n\n\t// Assume incremented index is within the set.\n\treturn orderSet[ nextIndex ];\n}\n\n/**\n * Returns the previous block's client ID from the given reference start ID.\n * Defaults start to the selected block. Returns null if there is no previous\n * block.\n *\n * @param {Object} state Editor state.\n * @param {?string} startClientId Optional client ID of block from which to\n * search.\n *\n * @return {?string} Adjacent block's client ID, or null if none exists.\n */\nexport function getPreviousBlockClientId( state, startClientId ) {\n\treturn getAdjacentBlockClientId( state, startClientId, -1 );\n}\n\n/**\n * Returns the next block's client ID from the given reference start ID.\n * Defaults start to the selected block. Returns null if there is no next\n * block.\n *\n * @param {Object} state Editor state.\n * @param {?string} startClientId Optional client ID of block from which to\n * search.\n *\n * @return {?string} Adjacent block's client ID, or null if none exists.\n */\nexport function getNextBlockClientId( state, startClientId ) {\n\treturn getAdjacentBlockClientId( state, startClientId, 1 );\n}\n\n/* eslint-disable jsdoc/valid-types */\n/**\n * Returns the initial caret position for the selected block.\n * This position is to used to position the caret properly when the selected block changes.\n * If the current block is not a RichText, having initial position set to 0 means \"focus block\"\n *\n * @param {Object} state Global application state.\n *\n * @return {0|-1|null} Initial position.\n */\nexport function getSelectedBlocksInitialCaretPosition( state ) {\n\t/* eslint-enable jsdoc/valid-types */\n\treturn state.initialPosition;\n}\n\n/**\n * Returns the current selection set of block client IDs (multiselection or single selection).\n *\n * @param {Object} state Editor state.\n *\n * @return {Array} Multi-selected block client IDs.\n */\nexport const getSelectedBlockClientIds = createSelector(\n\t( state ) => {\n\t\tconst { selectionStart, selectionEnd } = state.selection;\n\n\t\tif ( ! selectionStart.clientId || ! selectionEnd.clientId ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\tif ( selectionStart.clientId === selectionEnd.clientId ) {\n\t\t\treturn [ selectionStart.clientId ];\n\t\t}\n\n\t\t// Retrieve root client ID to aid in retrieving relevant nested block\n\t\t// order, being careful to allow the falsey empty string top-level root\n\t\t// by explicitly testing against null.\n\t\tconst rootClientId = getBlockRootClientId(\n\t\t\tstate,\n\t\t\tselectionStart.clientId\n\t\t);\n\n\t\tif ( rootClientId === null ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\tconst blockOrder = getBlockOrder( state, rootClientId );\n\t\tconst startIndex = blockOrder.indexOf( selectionStart.clientId );\n\t\tconst endIndex = blockOrder.indexOf( selectionEnd.clientId );\n\n\t\tif ( startIndex > endIndex ) {\n\t\t\treturn blockOrder.slice( endIndex, startIndex + 1 );\n\t\t}\n\n\t\treturn blockOrder.slice( startIndex, endIndex + 1 );\n\t},\n\t( state ) => [\n\t\tstate.blocks.order,\n\t\tstate.selection.selectionStart.clientId,\n\t\tstate.selection.selectionEnd.clientId,\n\t]\n);\n\n/**\n * Returns the current multi-selection set of block client IDs, or an empty\n * array if there is no multi-selection.\n *\n * @param {Object} state Editor state.\n *\n * @return {Array} Multi-selected block client IDs.\n */\nexport function getMultiSelectedBlockClientIds( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\n\tif ( selectionStart.clientId === selectionEnd.clientId ) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\treturn getSelectedBlockClientIds( state );\n}\n\n/**\n * Returns the current multi-selection set of blocks, or an empty array if\n * there is no multi-selection.\n *\n * @param {Object} state Editor state.\n *\n * @return {Array} Multi-selected block objects.\n */\nexport const getMultiSelectedBlocks = createSelector(\n\t( state ) => {\n\t\tconst multiSelectedBlockClientIds =\n\t\t\tgetMultiSelectedBlockClientIds( state );\n\t\tif ( ! multiSelectedBlockClientIds.length ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\treturn multiSelectedBlockClientIds.map( ( clientId ) =>\n\t\t\tgetBlock( state, clientId )\n\t\t);\n\t},\n\t( state ) => [\n\t\t...getSelectedBlockClientIds.getDependants( state ),\n\t\tstate.blocks.byClientId,\n\t\tstate.blocks.order,\n\t\tstate.blocks.attributes,\n\t]\n);\n\n/**\n * Returns the client ID of the first block in the multi-selection set, or null\n * if there is no multi-selection.\n *\n * @param {Object} state Editor state.\n *\n * @return {?string} First block client ID in the multi-selection set.\n */\nexport function getFirstMultiSelectedBlockClientId( state ) {\n\treturn getMultiSelectedBlockClientIds( state )[ 0 ] || null;\n}\n\n/**\n * Returns the client ID of the last block in the multi-selection set, or null\n * if there is no multi-selection.\n *\n * @param {Object} state Editor state.\n *\n * @return {?string} Last block client ID in the multi-selection set.\n */\nexport function getLastMultiSelectedBlockClientId( state ) {\n\tconst selectedClientIds = getMultiSelectedBlockClientIds( state );\n\treturn selectedClientIds[ selectedClientIds.length - 1 ] || null;\n}\n\n/**\n * Returns true if a multi-selection exists, and the block corresponding to the\n * specified client ID is the first block of the multi-selection set, or false\n * otherwise.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Whether block is first in multi-selection.\n */\nexport function isFirstMultiSelectedBlock( state, clientId ) {\n\treturn getFirstMultiSelectedBlockClientId( state ) === clientId;\n}\n\n/**\n * Returns true if the client ID occurs within the block multi-selection, or\n * false otherwise.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Whether block is in multi-selection set.\n */\nexport function isBlockMultiSelected( state, clientId ) {\n\treturn getMultiSelectedBlockClientIds( state ).indexOf( clientId ) !== -1;\n}\n\n/**\n * Returns true if an ancestor of the block is multi-selected, or false\n * otherwise.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Whether an ancestor of the block is in multi-selection\n * set.\n */\nexport const isAncestorMultiSelected = createSelector(\n\t( state, clientId ) => {\n\t\tlet ancestorClientId = clientId;\n\t\tlet isMultiSelected = false;\n\t\twhile ( ancestorClientId && ! isMultiSelected ) {\n\t\t\tancestorClientId = getBlockRootClientId( state, ancestorClientId );\n\t\t\tisMultiSelected = isBlockMultiSelected( state, ancestorClientId );\n\t\t}\n\t\treturn isMultiSelected;\n\t},\n\t( state ) => [\n\t\tstate.blocks.order,\n\t\tstate.selection.selectionStart.clientId,\n\t\tstate.selection.selectionEnd.clientId,\n\t]\n);\n\n/**\n * Returns the client ID of the block which begins the multi-selection set, or\n * null if there is no multi-selection.\n *\n * This is not necessarily the first client ID in the selection.\n *\n * @see getFirstMultiSelectedBlockClientId\n *\n * @param {Object} state Editor state.\n *\n * @return {?string} Client ID of block beginning multi-selection.\n */\nexport function getMultiSelectedBlocksStartClientId( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\n\tif ( selectionStart.clientId === selectionEnd.clientId ) {\n\t\treturn null;\n\t}\n\n\treturn selectionStart.clientId || null;\n}\n\n/**\n * Returns the client ID of the block which ends the multi-selection set, or\n * null if there is no multi-selection.\n *\n * This is not necessarily the last client ID in the selection.\n *\n * @see getLastMultiSelectedBlockClientId\n *\n * @param {Object} state Editor state.\n *\n * @return {?string} Client ID of block ending multi-selection.\n */\nexport function getMultiSelectedBlocksEndClientId( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\n\tif ( selectionStart.clientId === selectionEnd.clientId ) {\n\t\treturn null;\n\t}\n\n\treturn selectionEnd.clientId || null;\n}\n\n/**\n * Returns true if the selection is not partial.\n *\n * @param {Object} state Editor state.\n *\n * @return {boolean} Whether the selection is mergeable.\n */\nexport function __unstableIsFullySelected( state ) {\n\tconst selectionAnchor = getSelectionStart( state );\n\tconst selectionFocus = getSelectionEnd( state );\n\treturn (\n\t\t! selectionAnchor.attributeKey &&\n\t\t! selectionFocus.attributeKey &&\n\t\ttypeof selectionAnchor.offset === 'undefined' &&\n\t\ttypeof selectionFocus.offset === 'undefined'\n\t);\n}\n\n/**\n * Returns true if the selection is collapsed.\n *\n * @param {Object} state Editor state.\n *\n * @return {boolean} Whether the selection is collapsed.\n */\nexport function __unstableIsSelectionCollapsed( state ) {\n\tconst selectionAnchor = getSelectionStart( state );\n\tconst selectionFocus = getSelectionEnd( state );\n\treturn (\n\t\t!! selectionAnchor &&\n\t\t!! selectionFocus &&\n\t\tselectionAnchor.clientId === selectionFocus.clientId &&\n\t\tselectionAnchor.attributeKey === selectionFocus.attributeKey &&\n\t\tselectionAnchor.offset === selectionFocus.offset\n\t);\n}\n\nexport function __unstableSelectionHasUnmergeableBlock( state ) {\n\treturn getSelectedBlockClientIds( state ).some( ( clientId ) => {\n\t\tconst blockName = getBlockName( state, clientId );\n\t\tconst blockType = getBlockType( blockName );\n\t\treturn ! blockType.merge;\n\t} );\n}\n\n/**\n * Check whether the selection is mergeable.\n *\n * @param {Object} state Editor state.\n * @param {boolean} isForward Whether to merge forwards.\n *\n * @return {boolean} Whether the selection is mergeable.\n */\nexport function __unstableIsSelectionMergeable( state, isForward ) {\n\tconst selectionAnchor = getSelectionStart( state );\n\tconst selectionFocus = getSelectionEnd( state );\n\n\t// It's not mergeable if the start and end are within the same block.\n\tif ( selectionAnchor.clientId === selectionFocus.clientId ) {\n\t\treturn false;\n\t}\n\n\t// It's not mergeable if there's no rich text selection.\n\tif (\n\t\t! selectionAnchor.attributeKey ||\n\t\t! selectionFocus.attributeKey ||\n\t\ttypeof selectionAnchor.offset === 'undefined' ||\n\t\ttypeof selectionFocus.offset === 'undefined'\n\t) {\n\t\treturn false;\n\t}\n\n\tconst anchorRootClientId = getBlockRootClientId(\n\t\tstate,\n\t\tselectionAnchor.clientId\n\t);\n\tconst focusRootClientId = getBlockRootClientId(\n\t\tstate,\n\t\tselectionFocus.clientId\n\t);\n\n\t// It's not mergeable if the selection doesn't start and end in the same\n\t// block list. Maybe in the future it should be allowed.\n\tif ( anchorRootClientId !== focusRootClientId ) {\n\t\treturn false;\n\t}\n\n\tconst blockOrder = getBlockOrder( state, anchorRootClientId );\n\tconst anchorIndex = blockOrder.indexOf( selectionAnchor.clientId );\n\tconst focusIndex = blockOrder.indexOf( selectionFocus.clientId );\n\n\t// Reassign selection start and end based on order.\n\tlet selectionStart, selectionEnd;\n\n\tif ( anchorIndex > focusIndex ) {\n\t\tselectionStart = selectionFocus;\n\t\tselectionEnd = selectionAnchor;\n\t} else {\n\t\tselectionStart = selectionAnchor;\n\t\tselectionEnd = selectionFocus;\n\t}\n\n\tconst targetBlockClientId = isForward\n\t\t? selectionEnd.clientId\n\t\t: selectionStart.clientId;\n\tconst blockToMergeClientId = isForward\n\t\t? selectionStart.clientId\n\t\t: selectionEnd.clientId;\n\n\tconst targetBlockName = getBlockName( state, targetBlockClientId );\n\tconst targetBlockType = getBlockType( targetBlockName );\n\n\tif ( ! targetBlockType.merge ) {\n\t\treturn false;\n\t}\n\n\tconst blockToMerge = getBlock( state, blockToMergeClientId );\n\n\t// It's mergeable if the blocks are of the same type.\n\tif ( blockToMerge.name === targetBlockName ) {\n\t\treturn true;\n\t}\n\n\t// If the blocks are of a different type, try to transform the block being\n\t// merged into the same type of block.\n\tconst blocksToMerge = switchToBlockType( blockToMerge, targetBlockName );\n\n\treturn blocksToMerge && blocksToMerge.length;\n}\n\n/**\n * Get partial selected blocks with their content updated\n * based on the selection.\n *\n * @param {Object} state Editor state.\n *\n * @return {Object[]} Updated partial selected blocks.\n */\nexport const __unstableGetSelectedBlocksWithPartialSelection = ( state ) => {\n\tconst selectionAnchor = getSelectionStart( state );\n\tconst selectionFocus = getSelectionEnd( state );\n\n\tif ( selectionAnchor.clientId === selectionFocus.clientId ) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\t// Can't split if the selection is not set.\n\tif (\n\t\t! selectionAnchor.attributeKey ||\n\t\t! selectionFocus.attributeKey ||\n\t\ttypeof selectionAnchor.offset === 'undefined' ||\n\t\ttypeof selectionFocus.offset === 'undefined'\n\t) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\tconst anchorRootClientId = getBlockRootClientId(\n\t\tstate,\n\t\tselectionAnchor.clientId\n\t);\n\tconst focusRootClientId = getBlockRootClientId(\n\t\tstate,\n\t\tselectionFocus.clientId\n\t);\n\n\t// It's not splittable if the selection doesn't start and end in the same\n\t// block list. Maybe in the future it should be allowed.\n\tif ( anchorRootClientId !== focusRootClientId ) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\n\tconst blockOrder = getBlockOrder( state, anchorRootClientId );\n\tconst anchorIndex = blockOrder.indexOf( selectionAnchor.clientId );\n\tconst focusIndex = blockOrder.indexOf( selectionFocus.clientId );\n\n\t// Reassign selection start and end based on order.\n\tconst [ selectionStart, selectionEnd ] =\n\t\tanchorIndex > focusIndex\n\t\t\t? [ selectionFocus, selectionAnchor ]\n\t\t\t: [ selectionAnchor, selectionFocus ];\n\n\tconst blockA = getBlock( state, selectionStart.clientId );\n\tconst blockB = getBlock( state, selectionEnd.clientId );\n\n\tconst htmlA = blockA.attributes[ selectionStart.attributeKey ];\n\tconst htmlB = blockB.attributes[ selectionEnd.attributeKey ];\n\n\tlet valueA = create( { html: htmlA } );\n\tlet valueB = create( { html: htmlB } );\n\n\tvalueA = remove( valueA, 0, selectionStart.offset );\n\tvalueB = remove( valueB, selectionEnd.offset, valueB.text.length );\n\n\treturn [\n\t\t{\n\t\t\t...blockA,\n\t\t\tattributes: {\n\t\t\t\t...blockA.attributes,\n\t\t\t\t[ selectionStart.attributeKey ]: toHTMLString( {\n\t\t\t\t\tvalue: valueA,\n\t\t\t\t} ),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t...blockB,\n\t\t\tattributes: {\n\t\t\t\t...blockB.attributes,\n\t\t\t\t[ selectionEnd.attributeKey ]: toHTMLString( {\n\t\t\t\t\tvalue: valueB,\n\t\t\t\t} ),\n\t\t\t},\n\t\t},\n\t];\n};\n\n/**\n * Returns an array containing all block client IDs in the editor in the order\n * they appear. Optionally accepts a root client ID of the block list for which\n * the order should be returned, defaulting to the top-level block order.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Array} Ordered client IDs of editor blocks.\n */\nexport function getBlockOrder( state, rootClientId ) {\n\treturn state.blocks.order.get( rootClientId || '' ) || EMPTY_ARRAY;\n}\n\n/**\n * Returns the index at which the block corresponding to the specified client\n * ID occurs within the block order, or `-1` if the block does not exist.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {number} Index at which block exists in order.\n */\nexport function getBlockIndex( state, clientId ) {\n\tconst rootClientId = getBlockRootClientId( state, clientId );\n\treturn getBlockOrder( state, rootClientId ).indexOf( clientId );\n}\n\n/**\n * Returns true if the block corresponding to the specified client ID is\n * currently selected and no multi-selection exists, or false otherwise.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Whether block is selected and multi-selection exists.\n */\nexport function isBlockSelected( state, clientId ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\n\tif ( selectionStart.clientId !== selectionEnd.clientId ) {\n\t\treturn false;\n\t}\n\n\treturn selectionStart.clientId === clientId;\n}\n\n/**\n * Returns true if one of the block's inner blocks is selected.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n * @param {boolean} deep Perform a deep check.\n *\n * @return {boolean} Whether the block has an inner block selected\n */\nexport function hasSelectedInnerBlock( state, clientId, deep = false ) {\n\tconst selectedBlockClientIds = getSelectedBlockClientIds( state );\n\n\tif ( ! selectedBlockClientIds.length ) {\n\t\treturn false;\n\t}\n\n\tif ( deep ) {\n\t\treturn selectedBlockClientIds.some( ( id ) =>\n\t\t\t// Pass true because we don't care about order and it's more\n\t\t\t// performant.\n\t\t\tgetBlockParents( state, id, true ).includes( clientId )\n\t\t);\n\t}\n\n\treturn selectedBlockClientIds.some(\n\t\t( id ) => getBlockRootClientId( state, id ) === clientId\n\t);\n}\n\n/**\n * Returns true if one of the block's inner blocks is dragged.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n * @param {boolean} deep Perform a deep check.\n *\n * @return {boolean} Whether the block has an inner block dragged\n */\nexport function hasDraggedInnerBlock( state, clientId, deep = false ) {\n\treturn getBlockOrder( state, clientId ).some(\n\t\t( innerClientId ) =>\n\t\t\tisBlockBeingDragged( state, innerClientId ) ||\n\t\t\t( deep && hasDraggedInnerBlock( state, innerClientId, deep ) )\n\t);\n}\n\n/**\n * Returns true if the block corresponding to the specified client ID is\n * currently selected but isn't the last of the selected blocks. Here \"last\"\n * refers to the block sequence in the document, _not_ the sequence of\n * multi-selection, which is why `state.selectionEnd` isn't used.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {boolean} Whether block is selected and not the last in the\n * selection.\n */\nexport function isBlockWithinSelection( state, clientId ) {\n\tif ( ! clientId ) {\n\t\treturn false;\n\t}\n\n\tconst clientIds = getMultiSelectedBlockClientIds( state );\n\tconst index = clientIds.indexOf( clientId );\n\treturn index > -1 && index < clientIds.length - 1;\n}\n\n/**\n * Returns true if a multi-selection has been made, or false otherwise.\n *\n * @param {Object} state Editor state.\n *\n * @return {boolean} Whether multi-selection has been made.\n */\nexport function hasMultiSelection( state ) {\n\tconst { selectionStart, selectionEnd } = state.selection;\n\treturn selectionStart.clientId !== selectionEnd.clientId;\n}\n\n/**\n * Whether in the process of multi-selecting or not. This flag is only true\n * while the multi-selection is being selected (by mouse move), and is false\n * once the multi-selection has been settled.\n *\n * @see hasMultiSelection\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} True if multi-selecting, false if not.\n */\nexport function isMultiSelecting( state ) {\n\treturn state.isMultiSelecting;\n}\n\n/**\n * Selector that returns if multi-selection is enabled or not.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} True if it should be possible to multi-select blocks, false if multi-selection is disabled.\n */\nexport function isSelectionEnabled( state ) {\n\treturn state.isSelectionEnabled;\n}\n\n/**\n * Returns the block's editing mode, defaulting to \"visual\" if not explicitly\n * assigned.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId Block client ID.\n *\n * @return {Object} Block editing mode.\n */\nexport function getBlockMode( state, clientId ) {\n\treturn state.blocksMode[ clientId ] || 'visual';\n}\n\n/**\n * Returns true if the user is typing, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether user is typing.\n */\nexport function isTyping( state ) {\n\treturn state.isTyping;\n}\n\n/**\n * Returns true if the user is dragging blocks, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether user is dragging blocks.\n */\nexport function isDraggingBlocks( state ) {\n\treturn !! state.draggedBlocks.length;\n}\n\n/**\n * Returns the client ids of any blocks being directly dragged.\n *\n * This does not include children of a parent being dragged.\n *\n * @param {Object} state Global application state.\n *\n * @return {string[]} Array of dragged block client ids.\n */\nexport function getDraggedBlockClientIds( state ) {\n\treturn state.draggedBlocks;\n}\n\n/**\n * Returns whether the block is being dragged.\n *\n * Only returns true if the block is being directly dragged,\n * not if the block is a child of a parent being dragged.\n * See `isAncestorBeingDragged` for child blocks.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client id for block to check.\n *\n * @return {boolean} Whether the block is being dragged.\n */\nexport function isBlockBeingDragged( state, clientId ) {\n\treturn state.draggedBlocks.includes( clientId );\n}\n\n/**\n * Returns whether a parent/ancestor of the block is being dragged.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client id for block to check.\n *\n * @return {boolean} Whether the block's ancestor is being dragged.\n */\nexport function isAncestorBeingDragged( state, clientId ) {\n\t// Return early if no blocks are being dragged rather than\n\t// the more expensive check for parents.\n\tif ( ! isDraggingBlocks( state ) ) {\n\t\treturn false;\n\t}\n\n\tconst parents = getBlockParents( state, clientId );\n\treturn parents.some( ( parentClientId ) =>\n\t\tisBlockBeingDragged( state, parentClientId )\n\t);\n}\n\n/**\n * Returns true if the caret is within formatted text, or false otherwise.\n *\n * @deprecated\n *\n * @return {boolean} Whether the caret is within formatted text.\n */\nexport function isCaretWithinFormattedText() {\n\tdeprecated(\n\t\t'wp.data.select( \"core/block-editor\" ).isCaretWithinFormattedText',\n\t\t{\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t}\n\t);\n\n\treturn false;\n}\n\n/**\n * Returns the location of the insertion cue. Defaults to the last index.\n *\n * @param {Object} state Editor state.\n *\n * @return {Object} Insertion point object with `rootClientId`, `index`.\n */\nexport const getBlockInsertionPoint = createSelector(\n\t( state ) => {\n\t\tlet rootClientId, index;\n\n\t\tconst {\n\t\t\tinsertionCue,\n\t\t\tselection: { selectionEnd },\n\t\t} = state;\n\t\tif ( insertionCue !== null ) {\n\t\t\treturn insertionCue;\n\t\t}\n\n\t\tconst { clientId } = selectionEnd;\n\n\t\tif ( clientId ) {\n\t\t\trootClientId = getBlockRootClientId( state, clientId ) || undefined;\n\t\t\tindex = getBlockIndex( state, selectionEnd.clientId ) + 1;\n\t\t} else {\n\t\t\tindex = getBlockOrder( state ).length;\n\t\t}\n\n\t\treturn { rootClientId, index };\n\t},\n\t( state ) => [\n\t\tstate.insertionCue,\n\t\tstate.selection.selectionEnd.clientId,\n\t\tstate.blocks.parents,\n\t\tstate.blocks.order,\n\t]\n);\n\n/**\n * Returns true if the block insertion point is visible.\n *\n * @param {Object} state Global application state.\n *\n * @return {?boolean} Whether the insertion point is visible or not.\n */\nexport function isBlockInsertionPointVisible( state ) {\n\treturn state.insertionCue !== null;\n}\n\n/**\n * Returns whether the blocks matches the template or not.\n *\n * @param {boolean} state\n * @return {?boolean} Whether the template is valid or not.\n */\nexport function isValidTemplate( state ) {\n\treturn state.template.isValid;\n}\n\n/**\n * Returns the defined block template\n *\n * @param {boolean} state\n *\n * @return {?Array} Block Template.\n */\nexport function getTemplate( state ) {\n\treturn state.settings.template;\n}\n\n/**\n * Returns the defined block template lock. Optionally accepts a root block\n * client ID as context, otherwise defaulting to the global context.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional block root client ID.\n *\n * @return {string|false} Block Template Lock\n */\nexport function getTemplateLock( state, rootClientId ) {\n\tif ( ! rootClientId ) {\n\t\treturn state.settings.templateLock ?? false;\n\t}\n\n\treturn getBlockListSettings( state, rootClientId )?.templateLock ?? false;\n}\n\n/**\n * Determines if the given block type is visible in the inserter.\n * Note that this is different than whether a block is allowed to be inserted.\n * In some cases, the block is not allowed in a given position but\n * it should still be visible in the inserter to be able to add it\n * to a different position.\n *\n * @param {Object} state Editor state.\n * @param {string|Object} blockNameOrType The block type object, e.g., the response\n * from the block directory; or a string name of\n * an installed block type, e.g.' core/paragraph'.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Whether the given block type is allowed to be inserted.\n */\nconst isBlockVisibleInTheInserter = (\n\tstate,\n\tblockNameOrType,\n\trootClientId = null\n) => {\n\tlet blockType;\n\tlet blockName;\n\n\tif ( blockNameOrType && 'object' === typeof blockNameOrType ) {\n\t\tblockType = blockNameOrType;\n\t\tblockName = blockNameOrType.name;\n\t} else {\n\t\tblockType = getBlockType( blockNameOrType );\n\t\tblockName = blockNameOrType;\n\t}\n\n\tif ( ! blockType ) {\n\t\treturn false;\n\t}\n\n\tconst { allowedBlockTypes } = getSettings( state );\n\n\tconst isBlockAllowedInEditor = checkAllowList(\n\t\tallowedBlockTypes,\n\t\tblockName,\n\t\ttrue\n\t);\n\tif ( ! isBlockAllowedInEditor ) {\n\t\treturn false;\n\t}\n\n\t// If parent blocks are not visible, child blocks should be hidden too.\n\tconst parents = (\n\t\tArray.isArray( blockType.parent ) ? blockType.parent : []\n\t).concat( Array.isArray( blockType.ancestor ) ? blockType.ancestor : [] );\n\tif ( parents.length > 0 ) {\n\t\t// This is an exception to the rule that says that all blocks are visible in the inserter.\n\t\t// Blocks that require a given parent or ancestor are only visible if we're within that parent.\n\t\tif ( parents.includes( 'core/post-content' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet current = rootClientId;\n\t\tlet hasParent = false;\n\t\tdo {\n\t\t\tif ( parents.includes( getBlockName( state, current ) ) ) {\n\t\t\t\thasParent = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrent = state.blocks.parents.get( current );\n\t\t} while ( current );\n\n\t\treturn hasParent;\n\t}\n\n\treturn true;\n};\n\n/**\n * Determines if the given block type is allowed to be inserted into the block list.\n * This function is not exported and not memoized because using a memoized selector\n * inside another memoized selector is just a waste of time.\n *\n * @param {Object} state Editor state.\n * @param {string|Object} blockName The block type object, e.g., the response\n * from the block directory; or a string name of\n * an installed block type, e.g.' core/paragraph'.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Whether the given block type is allowed to be inserted.\n */\nconst canInsertBlockTypeUnmemoized = (\n\tstate,\n\tblockName,\n\trootClientId = null\n) => {\n\tif ( ! isBlockVisibleInTheInserter( state, blockName, rootClientId ) ) {\n\t\treturn false;\n\t}\n\n\tlet blockType;\n\tif ( blockName && 'object' === typeof blockName ) {\n\t\tblockType = blockName;\n\t\tblockName = blockType.name;\n\t} else {\n\t\tblockType = getBlockType( blockName );\n\t}\n\n\tconst isLocked = !! getTemplateLock( state, rootClientId );\n\tif ( isLocked ) {\n\t\treturn false;\n\t}\n\tconst isContentRoleBlock = isContentBlock( blockName );\n\tconst isParentSectionBlock = !! isSectionBlock( state, rootClientId );\n\t// It shouldn't be possible to insert inside a section block unless in\n\t// some cases when the block is a content block.\n\tif ( isParentSectionBlock && ! isContentRoleBlock ) {\n\t\treturn false;\n\t}\n\n\tconst blockEditingMode = getBlockEditingMode( state, rootClientId ?? '' );\n\tif ( blockEditingMode === 'disabled' ) {\n\t\treturn false;\n\t}\n\n\tconst parentBlockListSettings = getBlockListSettings( state, rootClientId );\n\n\t// The parent block doesn't have settings indicating it doesn't support\n\t// inner blocks, return false.\n\tif ( rootClientId && parentBlockListSettings === undefined ) {\n\t\treturn false;\n\t}\n\n\t// In write mode, check if this container allows insertion.\n\tif (\n\t\tblockEditingMode === 'contentOnly' &&\n\t\t! isContainerInsertableToInWriteMode( state, blockName, rootClientId )\n\t) {\n\t\treturn false;\n\t}\n\n\tconst parentName = getBlockName( state, rootClientId );\n\n\tconst parentBlockType = getBlockType( parentName );\n\n\t// Look at the `blockType.allowedBlocks` field to determine whether this is an allowed child block.\n\tconst parentAllowedChildBlocks = parentBlockType?.allowedBlocks;\n\n\tlet hasParentAllowedBlock = checkAllowList(\n\t\tparentAllowedChildBlocks,\n\t\tblockName\n\t);\n\n\t// The `allowedBlocks` block list setting can further limit which blocks are allowed children.\n\tif ( hasParentAllowedBlock !== false ) {\n\t\tconst parentAllowedBlocks = parentBlockListSettings?.allowedBlocks;\n\t\tconst hasParentListAllowedBlock = checkAllowList(\n\t\t\tparentAllowedBlocks,\n\t\t\tblockName\n\t\t);\n\t\t// Never downgrade the result from `true` to `null`\n\t\tif ( hasParentListAllowedBlock !== null ) {\n\t\t\thasParentAllowedBlock = hasParentListAllowedBlock;\n\t\t}\n\t}\n\n\tconst blockAllowedParentBlocks = blockType.parent;\n\tconst hasBlockAllowedParent = checkAllowList(\n\t\tblockAllowedParentBlocks,\n\t\tparentName\n\t);\n\n\tlet hasBlockAllowedAncestor = true;\n\tconst blockAllowedAncestorBlocks = blockType.ancestor;\n\tif ( blockAllowedAncestorBlocks ) {\n\t\tconst ancestors = [\n\t\t\trootClientId,\n\t\t\t...getBlockParents( state, rootClientId ),\n\t\t];\n\n\t\thasBlockAllowedAncestor = ancestors.some( ( ancestorClientId ) =>\n\t\t\tcheckAllowList(\n\t\t\t\tblockAllowedAncestorBlocks,\n\t\t\t\tgetBlockName( state, ancestorClientId )\n\t\t\t)\n\t\t);\n\t}\n\n\tconst canInsert =\n\t\thasBlockAllowedAncestor &&\n\t\t( ( hasParentAllowedBlock === null &&\n\t\t\thasBlockAllowedParent === null ) ||\n\t\t\thasParentAllowedBlock === true ||\n\t\t\thasBlockAllowedParent === true );\n\n\tif ( ! canInsert ) {\n\t\treturn canInsert;\n\t}\n\n\t/**\n\t * This filter is an ad-hoc solution to prevent adding template parts inside post content.\n\t * Conceptually, having a filter inside a selector is bad pattern so this code will be\n\t * replaced by a declarative API that doesn't the following drawbacks:\n\t *\n\t * Filters are not reactive: Upon switching between \"template mode\" and non \"template mode\",\n\t * the filter and selector won't necessarily be executed again. For now, it doesn't matter much\n\t * because you can't switch between the two modes while the inserter stays open.\n\t *\n\t * Filters are global: Once they're defined, they will affect all editor instances and all registries.\n\t * An ideal API would only affect specific editor instances.\n\t */\n\treturn applyFilters(\n\t\t'blockEditor.__unstableCanInsertBlockType',\n\t\tcanInsert,\n\t\tblockType,\n\t\trootClientId,\n\t\t{\n\t\t\t// Pass bound selectors of the current registry. If we're in a nested\n\t\t\t// context, the data will differ from the one selected from the root\n\t\t\t// registry.\n\t\t\tgetBlock: getBlock.bind( null, state ),\n\t\t\tgetBlockParentsByBlockName: getBlockParentsByBlockName.bind(\n\t\t\t\tnull,\n\t\t\t\tstate\n\t\t\t),\n\t\t}\n\t);\n};\n\n/**\n * Determines if the given block type is allowed to be inserted into the block list.\n *\n * @param {Object} state Editor state.\n * @param {string} blockName The name of the block type, e.g.' core/paragraph'.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Whether the given block type is allowed to be inserted.\n */\nexport const canInsertBlockType = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\tcanInsertBlockTypeUnmemoized,\n\t\t( state, blockName, rootClientId ) =>\n\t\t\tgetInsertBlockTypeDependants( select )( state, rootClientId )\n\t)\n);\n\n/**\n * Determines if the given blocks are allowed to be inserted into the block\n * list.\n *\n * @param {Object} state Editor state.\n * @param {string[]} clientIds The block client IDs to be inserted.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Whether the given blocks are allowed to be inserted.\n */\nexport function canInsertBlocks( state, clientIds, rootClientId = null ) {\n\treturn clientIds.every( ( id ) =>\n\t\tcanInsertBlockType( state, getBlockName( state, id ), rootClientId )\n\t);\n}\n\n/**\n * Determines if the given block is allowed to be deleted.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId The block client Id.\n *\n * @return {boolean} Whether the given block is allowed to be removed.\n */\nexport function canRemoveBlock( state, clientId ) {\n\tconst attributes = getBlockAttributes( state, clientId );\n\tif ( attributes === null ) {\n\t\treturn true;\n\t}\n\tif ( attributes.lock?.remove !== undefined ) {\n\t\treturn ! attributes.lock.remove;\n\t}\n\n\tconst rootClientId = getBlockRootClientId( state, clientId );\n\tif ( getTemplateLock( state, rootClientId ) ) {\n\t\treturn false;\n\t}\n\n\tconst isBlockWithinSection = !! getParentSectionBlock( state, clientId );\n\tconst isContentRoleBlock = isContentBlock(\n\t\tgetBlockName( state, clientId )\n\t);\n\tif ( isBlockWithinSection && ! isContentRoleBlock ) {\n\t\treturn false;\n\t}\n\n\tconst blockEditingMode = getBlockEditingMode( state, rootClientId );\n\n\t// Check if the parent container allows insertion/removal in write mode\n\tif (\n\t\tblockEditingMode === 'contentOnly' &&\n\t\t! isContainerInsertableToInWriteMode(\n\t\t\tstate,\n\t\t\tgetBlockName( state, rootClientId ),\n\t\t\trootClientId\n\t\t)\n\t) {\n\t\treturn false;\n\t}\n\n\treturn blockEditingMode !== 'disabled';\n}\n\n/**\n * Determines if the given blocks are allowed to be removed.\n *\n * @param {Object} state Editor state.\n * @param {string} clientIds The block client IDs to be removed.\n *\n * @return {boolean} Whether the given blocks are allowed to be removed.\n */\nexport function canRemoveBlocks( state, clientIds ) {\n\treturn clientIds.every( ( clientId ) => canRemoveBlock( state, clientId ) );\n}\n\n/**\n * Determines if the given block is allowed to be moved.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId The block client Id.\n *\n * @return {boolean} Whether the given block is allowed to be moved.\n */\nexport function canMoveBlock( state, clientId ) {\n\tconst attributes = getBlockAttributes( state, clientId );\n\tif ( attributes === null ) {\n\t\treturn true;\n\t}\n\tif ( attributes.lock?.move !== undefined ) {\n\t\treturn ! attributes.lock.move;\n\t}\n\n\tconst rootClientId = getBlockRootClientId( state, clientId );\n\tif ( getTemplateLock( state, rootClientId ) === 'all' ) {\n\t\treturn false;\n\t}\n\treturn getBlockEditingMode( state, rootClientId ) !== 'disabled';\n}\n\n/**\n * Determines if the given blocks are allowed to be moved.\n *\n * @param {Object} state Editor state.\n * @param {string} clientIds The block client IDs to be moved.\n *\n * @return {boolean} Whether the given blocks are allowed to be moved.\n */\nexport function canMoveBlocks( state, clientIds ) {\n\treturn clientIds.every( ( clientId ) => canMoveBlock( state, clientId ) );\n}\n\n/**\n * Determines if the given block is allowed to be edited.\n *\n * @param {Object} state Editor state.\n * @param {string} clientId The block client Id.\n *\n * @return {boolean} Whether the given block is allowed to be edited.\n */\nexport function canEditBlock( state, clientId ) {\n\tconst attributes = getBlockAttributes( state, clientId );\n\tif ( attributes === null ) {\n\t\treturn true;\n\t}\n\n\tconst { lock } = attributes;\n\n\t// When the edit is true, we cannot edit the block.\n\treturn ! lock?.edit;\n}\n\n/**\n * Determines if the given block type can be locked/unlocked by a user.\n *\n * @param {Object} state Editor state.\n * @param {(string|Object)} nameOrType Block name or type object.\n *\n * @return {boolean} Whether a given block type can be locked/unlocked.\n */\nexport function canLockBlockType( state, nameOrType ) {\n\tif ( ! hasBlockSupport( nameOrType, 'lock', true ) ) {\n\t\treturn false;\n\t}\n\n\t// Use block editor settings as the default value.\n\treturn !! state.settings?.canLockBlocks;\n}\n\n/**\n * Returns information about how recently and frequently a block has been inserted.\n *\n * @param {Object} state Global application state.\n * @param {string} id A string which identifies the insert, e.g. 'core/block/12'\n *\n * @return {?{ time: number, count: number }} An object containing `time` which is when the last\n * insert occurred as a UNIX epoch, and `count` which is\n * the number of inserts that have occurred.\n */\nfunction getInsertUsage( state, id ) {\n\treturn state.preferences.insertUsage?.[ id ] ?? null;\n}\n\n/**\n * Returns whether we can show a block type in the inserter\n *\n * @param {Object} state Global State\n * @param {Object} blockType BlockType\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Whether the given block type is allowed to be shown in the inserter.\n */\nconst canIncludeBlockTypeInInserter = ( state, blockType, rootClientId ) => {\n\tif ( ! hasBlockSupport( blockType, 'inserter', true ) ) {\n\t\treturn false;\n\t}\n\n\treturn canInsertBlockTypeUnmemoized( state, blockType.name, rootClientId );\n};\n\n/**\n * Return a function to be used to transform a block variation to an inserter item\n *\n * @param {Object} state Global State\n * @param {Object} item Denormalized inserter item\n * @return {Function} Function to transform a block variation to inserter item\n */\nconst getItemFromVariation = ( state, item ) => ( variation ) => {\n\tconst variationId = `${ item.id }/${ variation.name }`;\n\tconst { time, count = 0 } = getInsertUsage( state, variationId ) || {};\n\treturn {\n\t\t...item,\n\t\tid: variationId,\n\t\ticon: variation.icon || item.icon,\n\t\ttitle: variation.title || item.title,\n\t\tdescription: variation.description || item.description,\n\t\tcategory: variation.category || item.category,\n\t\t// If `example` is explicitly undefined for the variation, the preview will not be shown.\n\t\texample: variation.hasOwnProperty( 'example' )\n\t\t\t? variation.example\n\t\t\t: item.example,\n\t\tinitialAttributes: {\n\t\t\t...item.initialAttributes,\n\t\t\t...variation.attributes,\n\t\t},\n\t\tinnerBlocks: variation.innerBlocks,\n\t\tkeywords: variation.keywords || item.keywords,\n\t\tfrecency: calculateFrecency( time, count ),\n\t};\n};\n\n/**\n * Returns the calculated frecency.\n *\n * 'frecency' is a heuristic (https://en.wikipedia.org/wiki/Frecency)\n * that combines block usage frequency and recency.\n *\n * @param {number} time When the last insert occurred as a UNIX epoch\n * @param {number} count The number of inserts that have occurred.\n *\n * @return {number} The calculated frecency.\n */\nconst calculateFrecency = ( time, count ) => {\n\tif ( ! time ) {\n\t\treturn count;\n\t}\n\t// The selector is cached, which means Date.now() is the last time that the\n\t// relevant state changed. This suits our needs.\n\tconst duration = Date.now() - time;\n\tswitch ( true ) {\n\t\tcase duration < MILLISECONDS_PER_HOUR:\n\t\t\treturn count * 4;\n\t\tcase duration < MILLISECONDS_PER_DAY:\n\t\t\treturn count * 2;\n\t\tcase duration < MILLISECONDS_PER_WEEK:\n\t\t\treturn count / 2;\n\t\tdefault:\n\t\t\treturn count / 4;\n\t}\n};\n\n/**\n * Returns a function that accepts a block type and builds an item to be shown\n * in a specific context. It's used for building items for Inserter and available\n * block Transforms list.\n *\n * @param {Object} state Editor state.\n * @param {Object} options Options object for handling the building of a block type.\n * @param {string} options.buildScope The scope for which the item is going to be used.\n * @return {Function} Function returns an item to be shown in a specific context (Inserter|Transforms list).\n */\nconst buildBlockTypeItem =\n\t( state, { buildScope = 'inserter' } ) =>\n\t( blockType ) => {\n\t\tconst id = blockType.name;\n\n\t\tlet isDisabled = false;\n\t\tif ( ! hasBlockSupport( blockType.name, 'multiple', true ) ) {\n\t\t\tisDisabled = getBlocksByClientId(\n\t\t\t\tstate,\n\t\t\t\tgetClientIdsWithDescendants( state )\n\t\t\t).some( ( { name } ) => name === blockType.name );\n\t\t}\n\n\t\tconst { time, count = 0 } = getInsertUsage( state, id ) || {};\n\t\tconst blockItemBase = {\n\t\t\tid,\n\t\t\tname: blockType.name,\n\t\t\ttitle: blockType.title,\n\t\t\ticon: blockType.icon,\n\t\t\tisDisabled,\n\t\t\tfrecency: calculateFrecency( time, count ),\n\t\t};\n\t\tif ( buildScope === 'transform' ) {\n\t\t\treturn blockItemBase;\n\t\t}\n\n\t\tconst inserterVariations = getBlockVariations(\n\t\t\tblockType.name,\n\t\t\t'inserter'\n\t\t);\n\t\treturn {\n\t\t\t...blockItemBase,\n\t\t\tinitialAttributes: {},\n\t\t\tdescription: blockType.description,\n\t\t\tcategory: blockType.category,\n\t\t\tkeywords: blockType.keywords,\n\t\t\tparent: blockType.parent,\n\t\t\tancestor: blockType.ancestor,\n\t\t\tvariations: inserterVariations,\n\t\t\texample: blockType.example,\n\t\t\tutility: 1, // Deprecated.\n\t\t};\n\t};\n\n/**\n * Determines the items that appear in the inserter. Includes both static\n * items (e.g. a regular block type) and dynamic items (e.g. a reusable block).\n *\n * Each item object contains what's necessary to display a button in the\n * inserter and handle its selection.\n *\n * The 'frecency' property is a heuristic (https://en.wikipedia.org/wiki/Frecency)\n * that combines block usage frequency and recency.\n *\n * Items are returned ordered descendingly by their 'utility' and 'frecency'.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {WPEditorInserterItem[]} Items that appear in inserter.\n *\n * @typedef {Object} WPEditorInserterItem\n * @property {string} id Unique identifier for the item.\n * @property {string} name The type of block to create.\n * @property {Object} initialAttributes Attributes to pass to the newly created block.\n * @property {string} title Title of the item, as it appears in the inserter.\n * @property {string} icon Dashicon for the item, as it appears in the inserter.\n * @property {string} category Block category that the item is associated with.\n * @property {string[]} keywords Keywords that can be searched to find this item.\n * @property {boolean} isDisabled Whether or not the user should be prevented from inserting\n * this item.\n * @property {number} frecency Heuristic that combines frequency and recency.\n */\nexport const getInserterItems = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, rootClientId = null, options = DEFAULT_INSERTER_OPTIONS ) => {\n\t\t\tconst buildReusableBlockInserterItem = ( reusableBlock ) => {\n\t\t\t\tconst icon = ! reusableBlock.wp_pattern_sync_status\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tsrc: symbol,\n\t\t\t\t\t\t\tforeground: 'var(--wp-block-synced-color)',\n\t\t\t\t\t }\n\t\t\t\t\t: symbol;\n\t\t\t\tconst userPattern = mapUserPattern( reusableBlock );\n\t\t\t\tconst { time, count = 0 } =\n\t\t\t\t\tgetInsertUsage( state, userPattern.name ) || {};\n\t\t\t\tconst frecency = calculateFrecency( time, count );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: userPattern.name,\n\t\t\t\t\tname: 'core/block',\n\t\t\t\t\tinitialAttributes: { ref: reusableBlock.id },\n\t\t\t\t\ttitle: userPattern.title,\n\t\t\t\t\ticon,\n\t\t\t\t\tcategory: 'reusable',\n\t\t\t\t\tkeywords: [ 'reusable' ],\n\t\t\t\t\tisDisabled: false,\n\t\t\t\t\tutility: 1, // Deprecated.\n\t\t\t\t\tfrecency,\n\t\t\t\t\tcontent: userPattern.content,\n\t\t\t\t\tget blocks() {\n\t\t\t\t\t\treturn getParsedPattern( userPattern ).blocks;\n\t\t\t\t\t},\n\t\t\t\t\tsyncStatus: userPattern.syncStatus,\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tconst patternInserterItems = canInsertBlockTypeUnmemoized(\n\t\t\t\tstate,\n\t\t\t\t'core/block',\n\t\t\t\trootClientId\n\t\t\t)\n\t\t\t\t? unlock( select( STORE_NAME ) )\n\t\t\t\t\t\t.getReusableBlocks()\n\t\t\t\t\t\t.map( buildReusableBlockInserterItem )\n\t\t\t\t: [];\n\n\t\t\tconst buildBlockTypeInserterItem = buildBlockTypeItem( state, {\n\t\t\t\tbuildScope: 'inserter',\n\t\t\t} );\n\n\t\t\tlet blockTypeInserterItems = getBlockTypes()\n\t\t\t\t.filter( ( blockType ) =>\n\t\t\t\t\thasBlockSupport( blockType, 'inserter', true )\n\t\t\t\t)\n\t\t\t\t.map( buildBlockTypeInserterItem );\n\n\t\t\tif ( options[ isFiltered ] !== false ) {\n\t\t\t\tblockTypeInserterItems = blockTypeInserterItems.filter(\n\t\t\t\t\t( blockType ) =>\n\t\t\t\t\t\tcanIncludeBlockTypeInInserter(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tblockType,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tblockTypeInserterItems = blockTypeInserterItems\n\t\t\t\t\t.filter( ( blockType ) =>\n\t\t\t\t\t\tisBlockVisibleInTheInserter(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tblockType,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.map( ( blockType ) => ( {\n\t\t\t\t\t\t...blockType,\n\t\t\t\t\t\tisAllowedInCurrentRoot: canIncludeBlockTypeInInserter(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tblockType,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t),\n\t\t\t\t\t} ) );\n\t\t\t}\n\n\t\t\tconst items = blockTypeInserterItems.reduce(\n\t\t\t\t( accumulator, item ) => {\n\t\t\t\t\tconst { variations = [] } = item;\n\t\t\t\t\t// Exclude any block type item that is to be replaced by a default variation.\n\t\t\t\t\tif ( ! variations.some( ( { isDefault } ) => isDefault ) ) {\n\t\t\t\t\t\taccumulator.push( item );\n\t\t\t\t\t}\n\t\t\t\t\tif ( variations.length ) {\n\t\t\t\t\t\tconst variationMapper = getItemFromVariation(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\titem\n\t\t\t\t\t\t);\n\t\t\t\t\t\taccumulator.push(\n\t\t\t\t\t\t\t...variations.map( variationMapper )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t[]\n\t\t\t);\n\n\t\t\t// Ensure core blocks are prioritized in the returned results,\n\t\t\t// because third party blocks can be registered earlier than\n\t\t\t// the core blocks (usually by using the `init` action),\n\t\t\t// thus affecting the display order.\n\t\t\t// We don't sort reusable blocks as they are handled differently.\n\t\t\tconst groupByType = ( blocks, block ) => {\n\t\t\t\tconst { core, noncore } = blocks;\n\t\t\t\tconst type = block.name.startsWith( 'core/' ) ? core : noncore;\n\n\t\t\t\ttype.push( block );\n\t\t\t\treturn blocks;\n\t\t\t};\n\t\t\tconst { core: coreItems, noncore: nonCoreItems } = items.reduce(\n\t\t\t\tgroupByType,\n\t\t\t\t{ core: [], noncore: [] }\n\t\t\t);\n\t\t\tconst sortedBlockTypes = [ ...coreItems, ...nonCoreItems ];\n\t\t\treturn [ ...sortedBlockTypes, ...patternInserterItems ];\n\t\t},\n\t\t( state, rootClientId ) => [\n\t\t\tgetBlockTypes(),\n\t\t\tunlock( select( STORE_NAME ) ).getReusableBlocks(),\n\t\t\tstate.blocks.order,\n\t\t\tstate.preferences.insertUsage,\n\t\t\t...getInsertBlockTypeDependants( select )( state, rootClientId ),\n\t\t]\n\t)\n);\n\n/**\n * Determines the items that appear in the available block transforms list.\n *\n * Each item object contains what's necessary to display a menu item in the\n * transform list and handle its selection.\n *\n * The 'frecency' property is a heuristic (https://en.wikipedia.org/wiki/Frecency)\n * that combines block usage frequency and recency.\n *\n * Items are returned ordered descendingly by their 'frecency'.\n *\n * @param {Object} state Editor state.\n * @param {Object|Object[]} blocks Block object or array objects.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {WPEditorTransformItem[]} Items that appear in inserter.\n *\n * @typedef {Object} WPEditorTransformItem\n * @property {string} id Unique identifier for the item.\n * @property {string} name The type of block to create.\n * @property {string} title Title of the item, as it appears in the inserter.\n * @property {string} icon Dashicon for the item, as it appears in the inserter.\n * @property {boolean} isDisabled Whether or not the user should be prevented from inserting\n * this item.\n * @property {number} frecency Heuristic that combines frequency and recency.\n */\nexport const getBlockTransformItems = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, blocks, rootClientId = null ) => {\n\t\t\tconst normalizedBlocks = Array.isArray( blocks )\n\t\t\t\t? blocks\n\t\t\t\t: [ blocks ];\n\t\t\tconst buildBlockTypeTransformItem = buildBlockTypeItem( state, {\n\t\t\t\tbuildScope: 'transform',\n\t\t\t} );\n\t\t\tconst blockTypeTransformItems = getBlockTypes()\n\t\t\t\t.filter( ( blockType ) =>\n\t\t\t\t\tcanIncludeBlockTypeInInserter(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tblockType,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.map( buildBlockTypeTransformItem );\n\n\t\t\tconst itemsByName = Object.fromEntries(\n\t\t\t\tObject.entries( blockTypeTransformItems ).map(\n\t\t\t\t\t( [ , value ] ) => [ value.name, value ]\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tconst possibleTransforms = getPossibleBlockTransformations(\n\t\t\t\tnormalizedBlocks\n\t\t\t).reduce( ( accumulator, block ) => {\n\t\t\t\tif ( itemsByName[ block?.name ] ) {\n\t\t\t\t\taccumulator.push( itemsByName[ block.name ] );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t}, [] );\n\t\t\treturn orderBy(\n\t\t\t\tpossibleTransforms,\n\t\t\t\t( block ) => itemsByName[ block.name ].frecency,\n\t\t\t\t'desc'\n\t\t\t);\n\t\t},\n\t\t( state, blocks, rootClientId ) => [\n\t\t\tgetBlockTypes(),\n\t\t\tstate.preferences.insertUsage,\n\t\t\t...getInsertBlockTypeDependants( select )( state, rootClientId ),\n\t\t]\n\t)\n);\n\n/**\n * Determines whether there are items to show in the inserter.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {boolean} Items that appear in inserter.\n */\nexport const hasInserterItems = ( state, rootClientId = null ) => {\n\tconst hasBlockType = getBlockTypes().some( ( blockType ) =>\n\t\tcanIncludeBlockTypeInInserter( state, blockType, rootClientId )\n\t);\n\tif ( hasBlockType ) {\n\t\treturn true;\n\t}\n\tconst hasReusableBlock = canInsertBlockTypeUnmemoized(\n\t\tstate,\n\t\t'core/block',\n\t\trootClientId\n\t);\n\n\treturn hasReusableBlock;\n};\n\n/**\n * Returns the list of allowed inserter blocks for inner blocks children.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Array?} The list of allowed block types.\n */\nexport const getAllowedBlocks = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, rootClientId = null ) => {\n\t\t\tif ( ! rootClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blockTypes = getBlockTypes().filter( ( blockType ) =>\n\t\t\t\tcanIncludeBlockTypeInInserter( state, blockType, rootClientId )\n\t\t\t);\n\n\t\t\tconst hasReusableBlock = canInsertBlockTypeUnmemoized(\n\t\t\t\tstate,\n\t\t\t\t'core/block',\n\t\t\t\trootClientId\n\t\t\t);\n\n\t\t\tif ( hasReusableBlock ) {\n\t\t\t\tblockTypes.push( 'core/block' );\n\t\t\t}\n\n\t\t\treturn blockTypes;\n\t\t},\n\t\t( state, rootClientId ) => [\n\t\t\tgetBlockTypes(),\n\t\t\t...getInsertBlockTypeDependants( select )( state, rootClientId ),\n\t\t]\n\t)\n);\n\nexport const __experimentalGetAllowedBlocks = createSelector(\n\t( state, rootClientId = null ) => {\n\t\tdeprecated(\n\t\t\t'wp.data.select( \"core/block-editor\" ).__experimentalGetAllowedBlocks',\n\t\t\t{\n\t\t\t\talternative:\n\t\t\t\t\t'wp.data.select( \"core/block-editor\" ).getAllowedBlocks',\n\t\t\t\tsince: '6.2',\n\t\t\t\tversion: '6.4',\n\t\t\t}\n\t\t);\n\t\treturn getAllowedBlocks( state, rootClientId );\n\t},\n\t( state, rootClientId ) =>\n\t\tgetAllowedBlocks.getDependants( state, rootClientId )\n);\n\n/**\n * Returns the block to be directly inserted by the block appender.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {WPDirectInsertBlock|undefined} The block type to be directly inserted.\n *\n * @typedef {Object} WPDirectInsertBlock\n * @property {string} name The type of block.\n * @property {?Object} attributes Attributes to pass to the newly created block.\n * @property {?Array<string>} attributesToCopy Attributes to be copied from adjacent blocks when inserted.\n */\nexport function getDirectInsertBlock( state, rootClientId = null ) {\n\tif ( ! rootClientId ) {\n\t\treturn;\n\t}\n\tconst { defaultBlock, directInsert } =\n\t\tstate.blockListSettings[ rootClientId ] ?? {};\n\tif ( ! defaultBlock || ! directInsert ) {\n\t\treturn;\n\t}\n\n\treturn defaultBlock;\n}\n\nexport function __experimentalGetDirectInsertBlock(\n\tstate,\n\trootClientId = null\n) {\n\tdeprecated(\n\t\t'wp.data.select( \"core/block-editor\" ).__experimentalGetDirectInsertBlock',\n\t\t{\n\t\t\talternative:\n\t\t\t\t'wp.data.select( \"core/block-editor\" ).getDirectInsertBlock',\n\t\t\tsince: '6.3',\n\t\t\tversion: '6.4',\n\t\t}\n\t);\n\treturn getDirectInsertBlock( state, rootClientId );\n}\n\nexport const __experimentalGetParsedPattern = createRegistrySelector(\n\t( select ) => ( state, patternName ) => {\n\t\tconst pattern = unlock( select( STORE_NAME ) ).getPatternBySlug(\n\t\t\tpatternName\n\t\t);\n\t\treturn pattern ? getParsedPattern( pattern ) : null;\n\t}\n);\n\nconst getAllowedPatternsDependants = ( select ) => ( state, rootClientId ) => [\n\t...getAllPatternsDependants( select )( state ),\n\t...getInsertBlockTypeDependants( select )( state, rootClientId ),\n];\n\nconst patternsWithParsedBlocks = new WeakMap();\nfunction enhancePatternWithParsedBlocks( pattern ) {\n\tlet enhancedPattern = patternsWithParsedBlocks.get( pattern );\n\tif ( ! enhancedPattern ) {\n\t\tenhancedPattern = {\n\t\t\t...pattern,\n\t\t\tget blocks() {\n\t\t\t\treturn getParsedPattern( pattern ).blocks;\n\t\t\t},\n\t\t};\n\t\tpatternsWithParsedBlocks.set( pattern, enhancedPattern );\n\t}\n\treturn enhancedPattern;\n}\n\n/**\n * Returns the list of allowed patterns for inner blocks children.\n *\n * @param {Object} state Editor state.\n * @param {?string} rootClientId Optional target root client ID.\n *\n * @return {Array?} The list of allowed patterns.\n */\nexport const __experimentalGetAllowedPatterns = createRegistrySelector(\n\t( select ) => {\n\t\treturn createSelector(\n\t\t\t(\n\t\t\t\tstate,\n\t\t\t\trootClientId = null,\n\t\t\t\toptions = DEFAULT_INSERTER_OPTIONS\n\t\t\t) => {\n\t\t\t\tconst { getAllPatterns } = unlock( select( STORE_NAME ) );\n\t\t\t\tconst patterns = getAllPatterns();\n\t\t\t\tconst { allowedBlockTypes } = getSettings( state );\n\t\t\t\tconst parsedPatterns = patterns\n\t\t\t\t\t.filter( ( { inserter = true } ) => !! inserter )\n\t\t\t\t\t.map( enhancePatternWithParsedBlocks );\n\n\t\t\t\tconst availableParsedPatterns = parsedPatterns.filter(\n\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\tcheckAllowListRecursive(\n\t\t\t\t\t\t\tgetGrammar( pattern ),\n\t\t\t\t\t\t\tallowedBlockTypes\n\t\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconst patternsAllowed = availableParsedPatterns.filter(\n\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\tgetGrammar( pattern ).every( ( { blockName: name } ) =>\n\t\t\t\t\t\t\toptions[ isFiltered ] !== false\n\t\t\t\t\t\t\t\t? canInsertBlockType(\n\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: isBlockVisibleInTheInserter(\n\t\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\treturn patternsAllowed;\n\t\t\t},\n\t\t\tgetAllowedPatternsDependants( select )\n\t\t);\n\t}\n);\n\n/**\n * Returns the list of patterns based on their declared `blockTypes`\n * and a block's name.\n * Patterns can use `blockTypes` to integrate in work flows like\n * suggesting appropriate patterns in a Placeholder state(during insertion)\n * or blocks transformations.\n *\n * @param {Object} state Editor state.\n * @param {string|string[]} blockNames Block's name or array of block names to find matching patterns.\n * @param {?string} rootClientId Optional target root client ID.\n *\n * @return {Array} The list of matched block patterns based on declared `blockTypes` and block name.\n */\nexport const getPatternsByBlockTypes = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, blockNames, rootClientId = null ) => {\n\t\t\tif ( ! blockNames ) {\n\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t}\n\t\t\tconst patterns =\n\t\t\t\tselect( STORE_NAME ).__experimentalGetAllowedPatterns(\n\t\t\t\t\trootClientId\n\t\t\t\t);\n\t\t\tconst normalizedBlockNames = Array.isArray( blockNames )\n\t\t\t\t? blockNames\n\t\t\t\t: [ blockNames ];\n\t\t\tconst filteredPatterns = patterns.filter( ( pattern ) =>\n\t\t\t\tpattern?.blockTypes?.some?.( ( blockName ) =>\n\t\t\t\t\tnormalizedBlockNames.includes( blockName )\n\t\t\t\t)\n\t\t\t);\n\t\t\tif ( filteredPatterns.length === 0 ) {\n\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t}\n\t\t\treturn filteredPatterns;\n\t\t},\n\t\t( state, blockNames, rootClientId ) =>\n\t\t\tgetAllowedPatternsDependants( select )( state, rootClientId )\n\t)\n);\n\nexport const __experimentalGetPatternsByBlockTypes = createRegistrySelector(\n\t( select ) => {\n\t\tdeprecated(\n\t\t\t'wp.data.select( \"core/block-editor\" ).__experimentalGetPatternsByBlockTypes',\n\t\t\t{\n\t\t\t\talternative:\n\t\t\t\t\t'wp.data.select( \"core/block-editor\" ).getPatternsByBlockTypes',\n\t\t\t\tsince: '6.2',\n\t\t\t\tversion: '6.4',\n\t\t\t}\n\t\t);\n\t\treturn select( STORE_NAME ).getPatternsByBlockTypes;\n\t}\n);\n\n/**\n * Determines the items that appear in the available pattern transforms list.\n *\n * For now we only handle blocks without InnerBlocks and take into account\n * the `role` property of blocks' attributes for the transformation.\n *\n * We return the first set of possible eligible block patterns,\n * by checking the `blockTypes` property. We still have to recurse through\n * block pattern's blocks and try to find matches from the selected blocks.\n * Now this happens in the consumer to avoid heavy operations in the selector.\n *\n * @param {Object} state Editor state.\n * @param {Object[]} blocks The selected blocks.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {WPBlockPattern[]} Items that are eligible for a pattern transformation.\n */\nexport const __experimentalGetPatternTransformItems = createRegistrySelector(\n\t( select ) =>\n\t\tcreateSelector(\n\t\t\t( state, blocks, rootClientId = null ) => {\n\t\t\t\tif ( ! blocks ) {\n\t\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * For now we only handle blocks without InnerBlocks and take into account\n\t\t\t\t * the `role` property of blocks' attributes for the transformation.\n\t\t\t\t * Note that the blocks have been retrieved through `getBlock`, which doesn't\n\t\t\t\t * return the inner blocks of an inner block controller, so we still need\n\t\t\t\t * to check for this case too.\n\t\t\t\t */\n\t\t\t\tif (\n\t\t\t\t\tblocks.some(\n\t\t\t\t\t\t( { clientId, innerBlocks } ) =>\n\t\t\t\t\t\t\tinnerBlocks.length ||\n\t\t\t\t\t\t\tareInnerBlocksControlled( state, clientId )\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t\t}\n\n\t\t\t\t// Create a Set of the selected block names that is used in patterns filtering.\n\t\t\t\tconst selectedBlockNames = Array.from(\n\t\t\t\t\tnew Set( blocks.map( ( { name } ) => name ) )\n\t\t\t\t);\n\t\t\t\t/**\n\t\t\t\t * Here we will return first set of possible eligible block patterns,\n\t\t\t\t * by checking the `blockTypes` property. We still have to recurse through\n\t\t\t\t * block pattern's blocks and try to find matches from the selected blocks.\n\t\t\t\t * Now this happens in the consumer to avoid heavy operations in the selector.\n\t\t\t\t */\n\t\t\t\treturn select( STORE_NAME ).getPatternsByBlockTypes(\n\t\t\t\t\tselectedBlockNames,\n\t\t\t\t\trootClientId\n\t\t\t\t);\n\t\t\t},\n\t\t\t( state, blocks, rootClientId ) =>\n\t\t\t\tgetAllowedPatternsDependants( select )( state, rootClientId )\n\t\t)\n);\n\n/**\n * Returns the Block List settings of a block, if any exist.\n *\n * @param {Object} state Editor state.\n * @param {?string} clientId Block client ID.\n *\n * @return {?Object} Block settings of the block if set.\n */\nexport function getBlockListSettings( state, clientId ) {\n\treturn state.blockListSettings[ clientId ];\n}\n\n/**\n * Returns the editor settings.\n *\n * @param {Object} state Editor state.\n *\n * @return {Object} The editor settings object.\n */\nexport function getSettings( state ) {\n\treturn state.settings;\n}\n\n/**\n * Returns true if the most recent block change is be considered persistent, or\n * false otherwise. A persistent change is one committed by BlockEditorProvider\n * via its `onChange` callback, in addition to `onInput`.\n *\n * @param {Object} state Block editor state.\n *\n * @return {boolean} Whether the most recent block change was persistent.\n */\nexport function isLastBlockChangePersistent( state ) {\n\treturn state.blocks.isPersistentChange;\n}\n\n/**\n * Returns the block list settings for an array of blocks, if any exist.\n *\n * @param {Object} state Editor state.\n * @param {Array} clientIds Block client IDs.\n *\n * @return {Object} An object where the keys are client ids and the values are\n * a block list setting object.\n */\nexport const __experimentalGetBlockListSettingsForBlocks = createSelector(\n\t( state, clientIds = [] ) => {\n\t\treturn clientIds.reduce( ( blockListSettingsForBlocks, clientId ) => {\n\t\t\tif ( ! state.blockListSettings[ clientId ] ) {\n\t\t\t\treturn blockListSettingsForBlocks;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...blockListSettingsForBlocks,\n\t\t\t\t[ clientId ]: state.blockListSettings[ clientId ],\n\t\t\t};\n\t\t}, {} );\n\t},\n\t( state ) => [ state.blockListSettings ]\n);\n\n/**\n * Returns the title of a given reusable block\n *\n * @param {Object} state Global application state.\n * @param {number|string} ref The shared block's ID.\n *\n * @return {string} The reusable block saved title.\n */\nexport const __experimentalGetReusableBlockTitle = createRegistrySelector(\n\t( select ) =>\n\t\tcreateSelector(\n\t\t\t( state, ref ) => {\n\t\t\t\tdeprecated(\n\t\t\t\t\t\"wp.data.select( 'core/block-editor' ).__experimentalGetReusableBlockTitle\",\n\t\t\t\t\t{\n\t\t\t\t\t\tsince: '6.6',\n\t\t\t\t\t\tversion: '6.8',\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tconst reusableBlock = unlock( select( STORE_NAME ) )\n\t\t\t\t\t.getReusableBlocks()\n\t\t\t\t\t.find( ( block ) => block.id === ref );\n\t\t\t\tif ( ! reusableBlock ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn reusableBlock.title?.raw;\n\t\t\t},\n\t\t\t() => [ unlock( select( STORE_NAME ) ).getReusableBlocks() ]\n\t\t)\n);\n\n/**\n * Returns true if the most recent block change is be considered ignored, or\n * false otherwise. An ignored change is one not to be committed by\n * BlockEditorProvider, neither via `onChange` nor `onInput`.\n *\n * @param {Object} state Block editor state.\n *\n * @return {boolean} Whether the most recent block change was ignored.\n */\nexport function __unstableIsLastBlockChangeIgnored( state ) {\n\t// TODO: Removal Plan: Changes incurred by RECEIVE_BLOCKS should not be\n\t// ignored if in-fact they result in a change in blocks state. The current\n\t// need to ignore changes not a result of user interaction should be\n\t// accounted for in the refactoring of reusable blocks as occurring within\n\t// their own separate block editor / state (#7119).\n\treturn state.blocks.isIgnoredChange;\n}\n\n/**\n * Returns the block attributes changed as a result of the last dispatched\n * action.\n *\n * @param {Object} state Block editor state.\n *\n * @return {Object<string,Object>} Subsets of block attributes changed, keyed\n * by block client ID.\n */\nexport function __experimentalGetLastBlockAttributeChanges( state ) {\n\treturn state.lastBlockAttributesChange;\n}\n\n/**\n * Returns whether block moving mode is enabled.\n *\n * @deprecated\n */\nexport function hasBlockMovingClientId() {\n\tdeprecated(\n\t\t'wp.data.select( \"core/block-editor\" ).hasBlockMovingClientId',\n\t\t{\n\t\t\tsince: '6.7',\n\t\t\thint: 'Block moving mode feature has been removed',\n\t\t}\n\t);\n\treturn false;\n}\n\n/**\n * Returns true if the last change was an automatic change, false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the last change was automatic.\n */\nexport function didAutomaticChange( state ) {\n\treturn !! state.automaticChangeStatus;\n}\n\n/**\n * Returns true if the current highlighted block matches the block clientId.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block to check.\n *\n * @return {boolean} Whether the block is currently highlighted.\n */\nexport function isBlockHighlighted( state, clientId ) {\n\treturn state.highlightedBlock === clientId;\n}\n\n/**\n * Checks if a given block has controlled inner blocks.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block to check.\n *\n * @return {boolean} True if the block has controlled inner blocks.\n */\nexport function areInnerBlocksControlled( state, clientId ) {\n\treturn !! state.blocks.controlledInnerBlocks[ clientId ];\n}\n\n/**\n * Returns the clientId for the first 'active' block of a given array of block names.\n * A block is 'active' if it (or a child) is the selected block.\n * Returns the first match moving up the DOM from the selected block.\n *\n * @param {Object} state Global application state.\n * @param {string[]} validBlocksNames The names of block types to check for.\n *\n * @return {string} The matching block's clientId.\n */\nexport const __experimentalGetActiveBlockIdByBlockNames = createSelector(\n\t( state, validBlockNames ) => {\n\t\tif ( ! validBlockNames.length ) {\n\t\t\treturn null;\n\t\t}\n\t\t// Check if selected block is a valid entity area.\n\t\tconst selectedBlockClientId = getSelectedBlockClientId( state );\n\t\tif (\n\t\t\tvalidBlockNames.includes(\n\t\t\t\tgetBlockName( state, selectedBlockClientId )\n\t\t\t)\n\t\t) {\n\t\t\treturn selectedBlockClientId;\n\t\t}\n\t\t// Check if first selected block is a child of a valid entity area.\n\t\tconst multiSelectedBlockClientIds =\n\t\t\tgetMultiSelectedBlockClientIds( state );\n\t\tconst entityAreaParents = getBlockParentsByBlockName(\n\t\t\tstate,\n\t\t\tselectedBlockClientId || multiSelectedBlockClientIds[ 0 ],\n\t\t\tvalidBlockNames\n\t\t);\n\t\tif ( entityAreaParents ) {\n\t\t\t// Last parent closest/most interior.\n\t\t\treturn entityAreaParents[ entityAreaParents.length - 1 ];\n\t\t}\n\t\treturn null;\n\t},\n\t( state, validBlockNames ) => [\n\t\tstate.selection.selectionStart.clientId,\n\t\tstate.selection.selectionEnd.clientId,\n\t\tvalidBlockNames,\n\t]\n);\n\n/**\n * Tells if the block with the passed clientId was just inserted.\n *\n * @param {Object} state Global application state.\n * @param {Object} clientId Client Id of the block.\n * @param {?string} source Optional insertion source of the block.\n * @return {boolean} True if the block matches the last block inserted from the specified source.\n */\nexport function wasBlockJustInserted( state, clientId, source ) {\n\tconst { lastBlockInserted } = state;\n\treturn (\n\t\tlastBlockInserted.clientIds?.includes( clientId ) &&\n\t\tlastBlockInserted.source === source\n\t);\n}\n\n/**\n * Tells if the block is visible on the canvas or not.\n *\n * @param {Object} state Global application state.\n * @param {Object} clientId Client Id of the block.\n * @return {boolean} True if the block is visible.\n */\nexport function isBlockVisible( state, clientId ) {\n\treturn state.blockVisibility?.[ clientId ] ?? true;\n}\n\n/**\n * Returns the currently hovered block.\n *\n * @deprecated\n */\nexport function getHoveredBlockClientId() {\n\tdeprecated(\n\t\t\"wp.data.select( 'core/block-editor' ).getHoveredBlockClientId\",\n\t\t{\n\t\t\tsince: '6.9',\n\t\t\tversion: '7.1',\n\t\t}\n\t);\n\treturn undefined;\n}\n\n/**\n * Returns the list of all hidden blocks.\n *\n * @param {Object} state Global application state.\n * @return {[string]} List of hidden blocks.\n */\nexport const __unstableGetVisibleBlocks = createSelector(\n\t( state ) => {\n\t\tconst visibleBlocks = new Set(\n\t\t\tObject.keys( state.blockVisibility ).filter(\n\t\t\t\t( key ) => state.blockVisibility[ key ]\n\t\t\t)\n\t\t);\n\t\tif ( visibleBlocks.size === 0 ) {\n\t\t\treturn EMPTY_SET;\n\t\t}\n\t\treturn visibleBlocks;\n\t},\n\t( state ) => [ state.blockVisibility ]\n);\n\nexport function __unstableHasActiveBlockOverlayActive( state, clientId ) {\n\t// Prevent overlay on blocks with a non-default editing mode. If the mode is\n\t// 'disabled' then the overlay is redundant since the block can't be\n\t// selected. If the mode is 'contentOnly' then the overlay is redundant\n\t// since there will be no controls to interact with once selected.\n\tif ( getBlockEditingMode( state, clientId ) !== 'default' ) {\n\t\treturn false;\n\t}\n\n\t// If the block editing is locked, the block overlay is always active.\n\tif ( ! canEditBlock( state, clientId ) ) {\n\t\treturn true;\n\t}\n\n\t// In zoom-out mode, the block overlay is always active for section level blocks.\n\tif ( isZoomOut( state ) ) {\n\t\tconst sectionRootClientId = getSectionRootClientId( state );\n\t\tif ( sectionRootClientId ) {\n\t\t\tconst sectionClientIds = getBlockOrder(\n\t\t\t\tstate,\n\t\t\t\tsectionRootClientId\n\t\t\t);\n\t\t\tif ( sectionClientIds?.includes( clientId ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if ( clientId && ! getBlockRootClientId( state, clientId ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// In navigation mode, the block overlay is active when the block is not\n\t// selected (and doesn't contain a selected child). The same behavior is\n\t// also enabled in all modes for blocks that have controlled children\n\t// (reusable block, template part, navigation), unless explicitly disabled\n\t// with `supports.__experimentalDisableBlockOverlay`.\n\tconst blockSupportDisable = hasBlockSupport(\n\t\tgetBlockName( state, clientId ),\n\t\t'__experimentalDisableBlockOverlay',\n\t\tfalse\n\t);\n\tconst shouldEnableIfUnselected = blockSupportDisable\n\t\t? false\n\t\t: areInnerBlocksControlled( state, clientId );\n\n\treturn (\n\t\tshouldEnableIfUnselected &&\n\t\t! isBlockSelected( state, clientId ) &&\n\t\t! hasSelectedInnerBlock( state, clientId, true )\n\t);\n}\n\nexport function __unstableIsWithinBlockOverlay( state, clientId ) {\n\tlet parent = state.blocks.parents.get( clientId );\n\twhile ( !! parent ) {\n\t\tif ( __unstableHasActiveBlockOverlayActive( state, parent ) ) {\n\t\t\treturn true;\n\t\t}\n\t\tparent = state.blocks.parents.get( parent );\n\t}\n\treturn false;\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\t// Some selectors that call this provide `null` as the default\n\t// rootClientId, but the default rootClientId is actually `''`.\n\tif ( clientId === null ) {\n\t\tclientId = '';\n\t}\n\n\t// Check if the clientId has an editing mode set in the regular derived map.\n\t// There may be an editing mode set here for synced patterns or in zoomed out\n\t// mode.\n\tif ( state.derivedBlockEditingModes?.has( clientId ) ) {\n\t\treturn state.derivedBlockEditingModes.get( clientId );\n\t}\n\n\t// In normal mode, consider that an explicitly set editing mode takes over.\n\tif ( state.blockEditingModes.has( clientId ) ) {\n\t\treturn state.blockEditingModes.get( clientId );\n\t}\n\n\treturn 'default';\n}\n\n/**\n * Indicates if a block is ungroupable.\n * A block is ungroupable if it is a single grouping block with inner blocks.\n * If a block has an `ungroup` transform, it is also ungroupable, without the\n * requirement of being the default grouping block.\n * Additionally a block can only be ungrouped if it has inner blocks and can\n * be removed.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client Id of the block. If not passed the selected block's client id will be used.\n * @return {boolean} True if the block is ungroupable.\n */\nexport const isUngroupable = createRegistrySelector(\n\t( select ) =>\n\t\t( state, clientId = '' ) => {\n\t\t\tconst _clientId = clientId || getSelectedBlockClientId( state );\n\t\t\tif ( ! _clientId ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst { getGroupingBlockName } = select( blocksStore );\n\t\t\tconst block = getBlock( state, _clientId );\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\t\t\tconst _isUngroupable =\n\t\t\t\tblock &&\n\t\t\t\t( block.name === groupingBlockName ||\n\t\t\t\t\tgetBlockType( block.name )?.transforms?.ungroup ) &&\n\t\t\t\t!! block.innerBlocks.length;\n\n\t\t\treturn _isUngroupable && canRemoveBlock( state, _clientId );\n\t\t}\n);\n\n/**\n * Indicates if the provided blocks(by client ids) are groupable.\n * We need to have at least one block, have a grouping block name set and\n * be able to remove these blocks.\n *\n * @param {Object} state Global application state.\n * @param {string[]} clientIds Block client ids. If not passed the selected blocks client ids will be used.\n * @return {boolean} True if the blocks are groupable.\n */\nexport const isGroupable = createRegistrySelector(\n\t( select ) =>\n\t\t( state, clientIds = EMPTY_ARRAY ) => {\n\t\t\tconst { getGroupingBlockName } = select( blocksStore );\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\t\t\tconst _clientIds = clientIds?.length\n\t\t\t\t? clientIds\n\t\t\t\t: getSelectedBlockClientIds( state );\n\t\t\tconst rootClientId = _clientIds?.length\n\t\t\t\t? getBlockRootClientId( state, _clientIds[ 0 ] )\n\t\t\t\t: undefined;\n\t\t\tconst groupingBlockAvailable = canInsertBlockType(\n\t\t\t\tstate,\n\t\t\t\tgroupingBlockName,\n\t\t\t\trootClientId\n\t\t\t);\n\t\t\tconst _isGroupable = groupingBlockAvailable && _clientIds.length;\n\t\t\treturn _isGroupable && canRemoveBlocks( state, _clientIds );\n\t\t}\n);\n\n/**\n * DO-NOT-USE in production.\n * This selector is created for internal/experimental only usage and may be\n * removed anytime without any warning, causing breakage on any plugin or theme invoking it.\n *\n * @deprecated\n *\n * @param {Object} state Global application state.\n * @param {Object} clientId Client Id of the block.\n *\n * @return {?string} Client ID of the ancestor block that is content locking the block.\n */\nexport const __unstableGetContentLockingParent = ( state, clientId ) => {\n\tdeprecated(\n\t\t\"wp.data.select( 'core/block-editor' ).__unstableGetContentLockingParent\",\n\t\t{\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.7',\n\t\t}\n\t);\n\treturn getContentLockingParent( state, clientId );\n};\n\n/**\n * DO-NOT-USE in production.\n * This selector is created for internal/experimental only usage and may be\n * removed anytime without any warning, causing breakage on any plugin or theme invoking it.\n *\n * @deprecated\n *\n * @param {Object} state Global application state.\n */\nexport function __unstableGetTemporarilyEditingAsBlocks( state ) {\n\tdeprecated(\n\t\t\"wp.data.select( 'core/block-editor' ).__unstableGetTemporarilyEditingAsBlocks\",\n\t\t{\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.7',\n\t\t}\n\t);\n\treturn getTemporarilyEditingAsBlocks( state );\n}\n\n/**\n * DO-NOT-USE in production.\n * This selector is created for internal/experimental only usage and may be\n * removed anytime without any warning, causing breakage on any plugin or theme invoking it.\n *\n * @deprecated\n *\n * @param {Object} state Global application state.\n */\nexport function __unstableGetTemporarilyEditingFocusModeToRevert( state ) {\n\tdeprecated(\n\t\t\"wp.data.select( 'core/block-editor' ).__unstableGetTemporarilyEditingFocusModeToRevert\",\n\t\t{\n\t\t\tsince: '6.5',\n\t\t\tversion: '6.7',\n\t\t}\n\t);\n\treturn getTemporarilyEditingFocusModeToRevert( state );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["blocksPrivateApis", "deprecated", "blocksStore"]
7
+ }