@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":["_es","_interopRequireDefault","require","_compose","_data","_deprecated","_blocks","_defaults","_array","_privateKeys","_lockUnlock","isContentBlock","unlock","blocksPrivateApis","identity","x","mapBlockOrder","blocks","rootClientId","result","Map","current","set","forEach","block","clientId","innerBlocks","push","order","subClientId","mapBlockParents","stack","length","parent","currentBlocks","shift","flattenBlocks","transform","getFlattenedClientIds","getFlattenedBlocksWithoutAttributes","attributes","restBlock","getFlattenedBlockAttributes","hasSameKeys","a","b","fastDeepEqual","Object","keys","isUpdatingSameBlockAttribute","action","lastAction","type","undefined","clientIds","updateBlockTreeForBlocks","state","treeToUpdate","tree","flattenedBlocks","assign","get","byClientId","map","subBlock","updateParentInnerBlocksInTree","updatedClientIds","updateChildrenOfUpdatedClientIds","uncontrolledParents","Set","controlledParents","parents","controlledInnerBlocks","add","withBlockTree","reducer","newState","inserterClientIds","replacedClientIds","delete","parentsOfRemovedBlocks","parentId","removedClientIds","updatedBlockUids","fromRootClientId","toRootClientId","name","ref","updatedId","withPersistentBlockChange","markNextChangeAsNotPersistent","explicitPersistent","nextState","nextIsPersistentChange","_state$isPersistentCh","isPersistentChange","isExplicitPersistentChange","_state$isPersistentCh2","withIgnoredBlockChange","IGNORED_ACTION_TYPES","isIgnoredChange","has","withInnerBlocksRemoveCascade","getAllChildren","i","keepControlledInnerBlocks","withBlockReset","withReplaceInnerBlocks","nestedControllers","stateAfterBlocksRemoval","stateAfterInsert","index","stateAfterInsertOrder","key","_key","withSaveReusableBlock","id","withResetControlledBlocks","tempState","exports","pipe","combineReducers","value","changes","updates","values","every","hasChange","_action$attributes","updatedAttributeEntries","entries","options","uniqueByBlock","hasUpdatedAttributes","existingAttributes","newAttributes","_state$get","blockOrder","concat","subState","mappedBlocks","insertAt","_state$get$filter","fromIndex","indexOf","moveTo","filter","includes","firstClientId","firstIndex","lastClientId","newSubOrder","reduce","_order$filter","hasControlledInnerBlocks","isBlockInterfaceHidden","isTyping","isDragging","draggedBlocks","blockVisibility","selectionHelper","updateSelection","blockToSelect","indexToSelect","selection","selectionStart","attributeKey","offset","startOffset","selectionEnd","endOffset","start","end","startClientId","endClientId","some","isMultiSelecting","isSelectionEnabled","removalPromptData","selectPrevious","message","blockRemovalRules","rules","initialPosition","blocksMode","insertionCue","__unstableWithInserter","operation","nearestSide","template","isValid","settings","SETTINGS_DEFAULTS","updatedSettings","reset","defineProperty","deprecated","since","alternative","isPreviewMode","preferences","PREFERENCES_DEFAULTS","nextInsertUsage","prevUsage","blockName","match","select","blocksStore","getActiveBlockVariation","time","count","insertUsage","blockListSettings","fromEntries","merged","lastBlockAttributesChange","accumulator","highlightedBlock","isHighlighted","expandedBlock","lastBlockInserted","source","meta","temporarilyEditingAsBlocks","temporarilyEditingFocusModeRevert","focusModeToRevert","blockEditingModes","mode","openedBlockSettingsMenu","_action$clientId","styleOverrides","style","registeredInserterMediaCategories","category","lastFocus","zoomLevel","zoom","insertionPoint","combinedReducers","getBlockTreeBlock","rootBlock","controlledTree","regularTree","traverseBlockTree","callback","innerBlock","findParentInClientIdsList","hasBindings","metadata","bindings","getDerivedBlockEditingModesForTree","isNavMode","treeClientId","isZoomedOut","derivedBlockEditingModes","sectionRootClientId","sectionRootClientIdKey","sectionClientIds","hasDisabledBlocks","Array","from","templatePartClientIds","syncedPatternClientIds","contentOnlyTemplateLockedClientIds","templateLock","unsyncedPatternClientIds","window","__experimentalContentOnlyPatternInsertion","patternName","contentOnlyParents","ancestorBlockEditingMode","isInSection","isInTemplatePart","parentPatternClientId","hasContentOnlyParent","getDerivedBlockEditingModesUpdates","prevState","addedBlocks","prevDerivedBlockEditingModes","derivedNavModeBlockEditingModes","nextDerivedBlockEditingModes","addedBlock","size","withDerivedBlockEditingModes","_state$derivedBlockEd","_state$derivedNavMode","nextDerivedNavModeBlockEditingModes","isNewContentOnlyBlock","wasContentOnlyBlock","updatedBlock","withAutomaticChangeReset","automaticChangeStatus","_default","default"],"sources":["@wordpress/block-editor/src/store/reducer.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { pipe } from '@wordpress/compose';\nimport { combineReducers, select } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport {\n\tstore as blocksStore,\n\tprivateApis as blocksPrivateApis,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { PREFERENCES_DEFAULTS, SETTINGS_DEFAULTS } from './defaults';\nimport { insertAt, moveTo } from './array';\nimport { sectionRootClientIdKey } from './private-keys';\nimport { unlock } from '../lock-unlock';\n\nconst { isContentBlock } = unlock( blocksPrivateApis );\n\nconst identity = ( x ) => x;\n\n/**\n * Given an array of blocks, returns an object where each key is a nesting\n * context, the value of which is an array of block client IDs existing within\n * that nesting context.\n *\n * @param {Array} blocks Blocks to map.\n * @param {?string} rootClientId Assumed root client ID.\n *\n * @return {Object} Block order map object.\n */\nfunction mapBlockOrder( blocks, rootClientId = '' ) {\n\tconst result = new Map();\n\tconst current = [];\n\tresult.set( rootClientId, current );\n\tblocks.forEach( ( block ) => {\n\t\tconst { clientId, innerBlocks } = block;\n\t\tcurrent.push( clientId );\n\t\tmapBlockOrder( innerBlocks, clientId ).forEach(\n\t\t\t( order, subClientId ) => {\n\t\t\t\tresult.set( subClientId, order );\n\t\t\t}\n\t\t);\n\t} );\n\treturn result;\n}\n\n/**\n * Given an array of blocks, returns an object where each key contains\n * the clientId of the block and the value is the parent of the block.\n *\n * @param {Array} blocks Blocks to map.\n * @param {?string} rootClientId Assumed root client ID.\n *\n * @return {Object} Block order map object.\n */\nfunction mapBlockParents( blocks, rootClientId = '' ) {\n\tconst result = [];\n\tconst stack = [ [ rootClientId, blocks ] ];\n\twhile ( stack.length ) {\n\t\tconst [ parent, currentBlocks ] = stack.shift();\n\t\tcurrentBlocks.forEach( ( { innerBlocks, ...block } ) => {\n\t\t\tresult.push( [ block.clientId, parent ] );\n\t\t\tif ( innerBlocks?.length ) {\n\t\t\t\tstack.push( [ block.clientId, innerBlocks ] );\n\t\t\t}\n\t\t} );\n\t}\n\treturn result;\n}\n\n/**\n * Helper method to iterate through all blocks, recursing into inner blocks,\n * applying a transformation function to each one.\n * Returns a flattened object with the transformed blocks.\n *\n * @param {Array} blocks Blocks to flatten.\n * @param {Function} transform Transforming function to be applied to each block.\n *\n * @return {Array} Flattened object.\n */\nfunction flattenBlocks( blocks, transform = identity ) {\n\tconst result = [];\n\n\tconst stack = [ ...blocks ];\n\twhile ( stack.length ) {\n\t\tconst { innerBlocks, ...block } = stack.shift();\n\t\tstack.push( ...innerBlocks );\n\t\tresult.push( [ block.clientId, transform( block ) ] );\n\t}\n\n\treturn result;\n}\n\nfunction getFlattenedClientIds( blocks ) {\n\tconst result = {};\n\tconst stack = [ ...blocks ];\n\twhile ( stack.length ) {\n\t\tconst { innerBlocks, ...block } = stack.shift();\n\t\tstack.push( ...innerBlocks );\n\t\tresult[ block.clientId ] = true;\n\t}\n\n\treturn result;\n}\n\n/**\n * Given an array of blocks, returns an object containing all blocks, without\n * attributes, recursing into inner blocks. Keys correspond to the block client\n * ID, the value of which is the attributes object.\n *\n * @param {Array} blocks Blocks to flatten.\n *\n * @return {Array} Flattened block attributes object.\n */\nfunction getFlattenedBlocksWithoutAttributes( blocks ) {\n\treturn flattenBlocks( blocks, ( block ) => {\n\t\tconst { attributes, ...restBlock } = block;\n\t\treturn restBlock;\n\t} );\n}\n\n/**\n * Given an array of blocks, returns an object containing all block attributes,\n * recursing into inner blocks. Keys correspond to the block client ID, the\n * value of which is the attributes object.\n *\n * @param {Array} blocks Blocks to flatten.\n *\n * @return {Array} Flattened block attributes object.\n */\nfunction getFlattenedBlockAttributes( blocks ) {\n\treturn flattenBlocks( blocks, ( block ) => block.attributes );\n}\n\n/**\n * Returns true if the two object arguments have the same keys, or false\n * otherwise.\n *\n * @param {Object} a First object.\n * @param {Object} b Second object.\n *\n * @return {boolean} Whether the two objects have the same keys.\n */\nexport function hasSameKeys( a, b ) {\n\treturn fastDeepEqual( Object.keys( a ), Object.keys( b ) );\n}\n\n/**\n * Returns true if, given the currently dispatching action and the previously\n * dispatched action, the two actions are updating the same block attribute, or\n * false otherwise.\n *\n * @param {Object} action Currently dispatching action.\n * @param {Object} lastAction Previously dispatched action.\n *\n * @return {boolean} Whether actions are updating the same block attribute.\n */\nexport function isUpdatingSameBlockAttribute( action, lastAction ) {\n\treturn (\n\t\taction.type === 'UPDATE_BLOCK_ATTRIBUTES' &&\n\t\tlastAction !== undefined &&\n\t\tlastAction.type === 'UPDATE_BLOCK_ATTRIBUTES' &&\n\t\tfastDeepEqual( action.clientIds, lastAction.clientIds ) &&\n\t\thasSameKeys( action.attributes, lastAction.attributes )\n\t);\n}\n\nfunction updateBlockTreeForBlocks( state, blocks ) {\n\tconst treeToUpdate = state.tree;\n\tconst stack = [ ...blocks ];\n\tconst flattenedBlocks = [ ...blocks ];\n\twhile ( stack.length ) {\n\t\tconst block = stack.shift();\n\t\tstack.push( ...block.innerBlocks );\n\t\tflattenedBlocks.push( ...block.innerBlocks );\n\t}\n\t// Create objects before mutating them, that way it's always defined.\n\tfor ( const block of flattenedBlocks ) {\n\t\ttreeToUpdate.set( block.clientId, {} );\n\t}\n\tfor ( const block of flattenedBlocks ) {\n\t\ttreeToUpdate.set(\n\t\t\tblock.clientId,\n\t\t\tObject.assign( treeToUpdate.get( block.clientId ), {\n\t\t\t\t...state.byClientId.get( block.clientId ),\n\t\t\t\tattributes: state.attributes.get( block.clientId ),\n\t\t\t\tinnerBlocks: block.innerBlocks.map( ( subBlock ) =>\n\t\t\t\t\ttreeToUpdate.get( subBlock.clientId )\n\t\t\t\t),\n\t\t\t} )\n\t\t);\n\t}\n}\n\nfunction updateParentInnerBlocksInTree(\n\tstate,\n\tupdatedClientIds,\n\tupdateChildrenOfUpdatedClientIds = false\n) {\n\tconst treeToUpdate = state.tree;\n\tconst uncontrolledParents = new Set( [] );\n\tconst controlledParents = new Set();\n\tfor ( const clientId of updatedClientIds ) {\n\t\tlet current = updateChildrenOfUpdatedClientIds\n\t\t\t? clientId\n\t\t\t: state.parents.get( clientId );\n\t\tdo {\n\t\t\tif ( state.controlledInnerBlocks[ current ] ) {\n\t\t\t\t// Should stop on controlled blocks.\n\t\t\t\t// If we reach a controlled parent, break out of the loop.\n\t\t\t\tcontrolledParents.add( current );\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\t// Else continue traversing up through parents.\n\t\t\t\tuncontrolledParents.add( current );\n\t\t\t\tcurrent = state.parents.get( current );\n\t\t\t}\n\t\t} while ( current !== undefined );\n\t}\n\n\t// To make sure the order of assignments doesn't matter,\n\t// we first create empty objects and mutates the inner blocks later.\n\tfor ( const clientId of uncontrolledParents ) {\n\t\ttreeToUpdate.set( clientId, { ...treeToUpdate.get( clientId ) } );\n\t}\n\tfor ( const clientId of uncontrolledParents ) {\n\t\ttreeToUpdate.get( clientId ).innerBlocks = (\n\t\t\tstate.order.get( clientId ) || []\n\t\t).map( ( subClientId ) => treeToUpdate.get( subClientId ) );\n\t}\n\n\t// Controlled parent blocks, need a dedicated key for their inner blocks\n\t// to be used when doing getBlocks( controlledBlockClientId ).\n\tfor ( const clientId of controlledParents ) {\n\t\ttreeToUpdate.set( 'controlled||' + clientId, {\n\t\t\tinnerBlocks: ( state.order.get( clientId ) || [] ).map(\n\t\t\t\t( subClientId ) => treeToUpdate.get( subClientId )\n\t\t\t),\n\t\t} );\n\t}\n}\n\n/**\n * Higher-order reducer intended to compute full block objects key for each block in the post.\n * This is a denormalization to optimize the performance of the getBlock selectors and avoid\n * recomputing the block objects and avoid heavy memoization.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withBlockTree =\n\t( reducer ) =>\n\t( state = {}, action ) => {\n\t\tconst newState = reducer( state, action );\n\n\t\tif ( newState === state ) {\n\t\t\treturn state;\n\t\t}\n\n\t\tnewState.tree = state.tree ? state.tree : new Map();\n\t\tswitch ( action.type ) {\n\t\t\tcase 'RECEIVE_BLOCKS':\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\tupdateBlockTreeForBlocks( newState, action.blocks );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\taction.rootClientId ? [ action.rootClientId ] : [ '' ],\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'UPDATE_BLOCK':\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\tnewState.tree.set( action.clientId, {\n\t\t\t\t\t...newState.tree.get( action.clientId ),\n\t\t\t\t\t...newState.byClientId.get( action.clientId ),\n\t\t\t\t\tattributes: newState.attributes.get( action.clientId ),\n\t\t\t\t} );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\t[ action.clientId ],\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'SYNC_DERIVED_BLOCK_ATTRIBUTES':\n\t\t\tcase 'UPDATE_BLOCK_ATTRIBUTES': {\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\taction.clientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.tree.set( clientId, {\n\t\t\t\t\t\t...newState.tree.get( clientId ),\n\t\t\t\t\t\tattributes: newState.attributes.get( clientId ),\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\taction.clientIds,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst inserterClientIds = getFlattenedClientIds(\n\t\t\t\t\taction.blocks\n\t\t\t\t);\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\taction.replacedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.tree.delete( clientId );\n\t\t\t\t\t// Controlled inner blocks are only removed\n\t\t\t\t\t// if the block doesn't move to another position\n\t\t\t\t\t// otherwise their content will be lost.\n\t\t\t\t\tif ( ! inserterClientIds[ clientId ] ) {\n\t\t\t\t\t\tnewState.tree.delete( 'controlled||' + clientId );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tupdateBlockTreeForBlocks( newState, action.blocks );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\taction.blocks.map( ( b ) => b.clientId ),\n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t\t// If there are no replaced blocks, it means we're removing blocks so we need to update their parent.\n\t\t\t\tconst parentsOfRemovedBlocks = [];\n\t\t\t\tfor ( const clientId of action.clientIds ) {\n\t\t\t\t\tconst parentId = state.parents.get( clientId );\n\t\t\t\t\tif (\n\t\t\t\t\t\tparentId !== undefined &&\n\t\t\t\t\t\t( parentId === '' ||\n\t\t\t\t\t\t\tnewState.byClientId.get( parentId ) )\n\t\t\t\t\t) {\n\t\t\t\t\t\tparentsOfRemovedBlocks.push( parentId );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\tparentsOfRemovedBlocks,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':\n\t\t\t\tconst parentsOfRemovedBlocks = [];\n\t\t\t\tfor ( const clientId of action.clientIds ) {\n\t\t\t\t\tconst parentId = state.parents.get( clientId );\n\t\t\t\t\tif (\n\t\t\t\t\t\tparentId !== undefined &&\n\t\t\t\t\t\t( parentId === '' ||\n\t\t\t\t\t\t\tnewState.byClientId.get( parentId ) )\n\t\t\t\t\t) {\n\t\t\t\t\t\tparentsOfRemovedBlocks.push( parentId );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\taction.removedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.tree.delete( clientId );\n\t\t\t\t\tnewState.tree.delete( 'controlled||' + clientId );\n\t\t\t\t} );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\tparentsOfRemovedBlocks,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'MOVE_BLOCKS_TO_POSITION': {\n\t\t\t\tconst updatedBlockUids = [];\n\t\t\t\tif ( action.fromRootClientId ) {\n\t\t\t\t\tupdatedBlockUids.push( action.fromRootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tupdatedBlockUids.push( '' );\n\t\t\t\t}\n\t\t\t\tif ( action.toRootClientId ) {\n\t\t\t\t\tupdatedBlockUids.push( action.toRootClientId );\n\t\t\t\t}\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\tupdatedBlockUids,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'MOVE_BLOCKS_UP':\n\t\t\tcase 'MOVE_BLOCKS_DOWN': {\n\t\t\t\tconst updatedBlockUids = [\n\t\t\t\t\taction.rootClientId ? action.rootClientId : '',\n\t\t\t\t];\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\tupdatedBlockUids,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'SAVE_REUSABLE_BLOCK_SUCCESS': {\n\t\t\t\tconst updatedBlockUids = [];\n\t\t\t\tnewState.attributes.forEach( ( attributes, clientId ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnewState.byClientId.get( clientId ).name ===\n\t\t\t\t\t\t\t'core/block' &&\n\t\t\t\t\t\tattributes.ref === action.updatedId\n\t\t\t\t\t) {\n\t\t\t\t\t\tupdatedBlockUids.push( clientId );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\tupdatedBlockUids.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.tree.set( clientId, {\n\t\t\t\t\t\t...newState.byClientId.get( clientId ),\n\t\t\t\t\t\tattributes: newState.attributes.get( clientId ),\n\t\t\t\t\t\tinnerBlocks: newState.tree.get( clientId ).innerBlocks,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\tupdatedBlockUids,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn newState;\n\t};\n\n/**\n * Higher-order reducer intended to augment the blocks reducer, assigning an\n * `isPersistentChange` property value corresponding to whether a change in\n * state can be considered as persistent. All changes are considered persistent\n * except when updating the same block attribute as in the previous action.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nfunction withPersistentBlockChange( reducer ) {\n\tlet lastAction;\n\tlet markNextChangeAsNotPersistent = false;\n\tlet explicitPersistent;\n\n\treturn ( state, action ) => {\n\t\tlet nextState = reducer( state, action );\n\n\t\tlet nextIsPersistentChange;\n\t\tif ( action.type === 'SET_EXPLICIT_PERSISTENT' ) {\n\t\t\texplicitPersistent = action.isPersistentChange;\n\t\t\tnextIsPersistentChange = state.isPersistentChange ?? true;\n\t\t}\n\n\t\tif ( explicitPersistent !== undefined ) {\n\t\t\tnextIsPersistentChange = explicitPersistent;\n\t\t\treturn nextIsPersistentChange === nextState.isPersistentChange\n\t\t\t\t? nextState\n\t\t\t\t: {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tisPersistentChange: nextIsPersistentChange,\n\t\t\t\t };\n\t\t}\n\n\t\tconst isExplicitPersistentChange =\n\t\t\taction.type === 'MARK_LAST_CHANGE_AS_PERSISTENT' ||\n\t\t\tmarkNextChangeAsNotPersistent;\n\n\t\t// Defer to previous state value (or default) unless changing or\n\t\t// explicitly marking as persistent.\n\t\tif ( state === nextState && ! isExplicitPersistentChange ) {\n\t\t\tmarkNextChangeAsNotPersistent =\n\t\t\t\taction.type === 'MARK_NEXT_CHANGE_AS_NOT_PERSISTENT';\n\n\t\t\tnextIsPersistentChange = state?.isPersistentChange ?? true;\n\t\t\tif ( state.isPersistentChange === nextIsPersistentChange ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...nextState,\n\t\t\t\tisPersistentChange: nextIsPersistentChange,\n\t\t\t};\n\t\t}\n\n\t\tnextState = {\n\t\t\t...nextState,\n\t\t\tisPersistentChange: isExplicitPersistentChange\n\t\t\t\t? ! markNextChangeAsNotPersistent\n\t\t\t\t: ! isUpdatingSameBlockAttribute( action, lastAction ),\n\t\t};\n\n\t\t// In comparing against the previous action, consider only those which\n\t\t// would have qualified as one which would have been ignored or not\n\t\t// have resulted in a changed state.\n\t\tlastAction = action;\n\t\tmarkNextChangeAsNotPersistent =\n\t\t\taction.type === 'MARK_NEXT_CHANGE_AS_NOT_PERSISTENT';\n\n\t\treturn nextState;\n\t};\n}\n\n/**\n * Higher-order reducer intended to augment the blocks reducer, assigning an\n * `isIgnoredChange` property value corresponding to whether a change in state\n * can be considered as ignored. A change is considered ignored when the result\n * of an action not incurred by direct user interaction.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nfunction withIgnoredBlockChange( reducer ) {\n\t/**\n\t * Set of action types for which a blocks state change should be ignored.\n\t *\n\t * @type {Set}\n\t */\n\tconst IGNORED_ACTION_TYPES = new Set( [ 'RECEIVE_BLOCKS' ] );\n\n\treturn ( state, action ) => {\n\t\tconst nextState = reducer( state, action );\n\n\t\tif ( nextState !== state ) {\n\t\t\tnextState.isIgnoredChange = IGNORED_ACTION_TYPES.has( action.type );\n\t\t}\n\n\t\treturn nextState;\n\t};\n}\n\n/**\n * Higher-order reducer targeting the combined blocks reducer, augmenting\n * block client IDs in remove action to include cascade of inner blocks.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withInnerBlocksRemoveCascade = ( reducer ) => ( state, action ) => {\n\t// Gets all children which need to be removed.\n\tconst getAllChildren = ( clientIds ) => {\n\t\tlet result = clientIds;\n\t\tfor ( let i = 0; i < result.length; i++ ) {\n\t\t\tif (\n\t\t\t\t! state.order.get( result[ i ] ) ||\n\t\t\t\t( action.keepControlledInnerBlocks &&\n\t\t\t\t\taction.keepControlledInnerBlocks[ result[ i ] ] )\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( result === clientIds ) {\n\t\t\t\tresult = [ ...result ];\n\t\t\t}\n\n\t\t\tresult.push( ...state.order.get( result[ i ] ) );\n\t\t}\n\t\treturn result;\n\t};\n\n\tif ( state ) {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'REMOVE_BLOCKS':\n\t\t\t\taction = {\n\t\t\t\t\t...action,\n\t\t\t\t\ttype: 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN',\n\t\t\t\t\tremovedClientIds: getAllChildren( action.clientIds ),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'REPLACE_BLOCKS':\n\t\t\t\taction = {\n\t\t\t\t\t...action,\n\t\t\t\t\ttype: 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN',\n\t\t\t\t\treplacedClientIds: getAllChildren( action.clientIds ),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn reducer( state, action );\n};\n\n/**\n * Higher-order reducer which targets the combined blocks reducer and handles\n * the `RESET_BLOCKS` action. When dispatched, this action will replace all\n * blocks that exist in the post, leaving blocks that exist only in state (e.g.\n * reusable blocks and blocks controlled by inner blocks controllers) alone.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withBlockReset = ( reducer ) => ( state, action ) => {\n\tif ( action.type === 'RESET_BLOCKS' ) {\n\t\tconst newState = {\n\t\t\t...state,\n\t\t\tbyClientId: new Map(\n\t\t\t\tgetFlattenedBlocksWithoutAttributes( action.blocks )\n\t\t\t),\n\t\t\tattributes: new Map( getFlattenedBlockAttributes( action.blocks ) ),\n\t\t\torder: mapBlockOrder( action.blocks ),\n\t\t\tparents: new Map( mapBlockParents( action.blocks ) ),\n\t\t\tcontrolledInnerBlocks: {},\n\t\t};\n\n\t\tnewState.tree = new Map( state?.tree );\n\t\tupdateBlockTreeForBlocks( newState, action.blocks );\n\t\tnewState.tree.set( '', {\n\t\t\tinnerBlocks: action.blocks.map( ( subBlock ) =>\n\t\t\t\tnewState.tree.get( subBlock.clientId )\n\t\t\t),\n\t\t} );\n\n\t\treturn newState;\n\t}\n\n\treturn reducer( state, action );\n};\n\n/**\n * Higher-order reducer which targets the combined blocks reducer and handles\n * the `REPLACE_INNER_BLOCKS` action. When dispatched, this action the state\n * should become equivalent to the execution of a `REMOVE_BLOCKS` action\n * containing all the child's of the root block followed by the execution of\n * `INSERT_BLOCKS` with the new blocks.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withReplaceInnerBlocks = ( reducer ) => ( state, action ) => {\n\tif ( action.type !== 'REPLACE_INNER_BLOCKS' ) {\n\t\treturn reducer( state, action );\n\t}\n\n\t// Finds every nested inner block controller. We must check the action blocks\n\t// and not just the block parent state because some inner block controllers\n\t// should be deleted if specified, whereas others should not be deleted. If\n\t// a controlled should not be deleted, then we need to avoid deleting its\n\t// inner blocks from the block state because its inner blocks will not be\n\t// attached to the block in the action.\n\tconst nestedControllers = {};\n\tif ( Object.keys( state.controlledInnerBlocks ).length ) {\n\t\tconst stack = [ ...action.blocks ];\n\t\twhile ( stack.length ) {\n\t\t\tconst { innerBlocks, ...block } = stack.shift();\n\t\t\tstack.push( ...innerBlocks );\n\t\t\tif ( !! state.controlledInnerBlocks[ block.clientId ] ) {\n\t\t\t\tnestedControllers[ block.clientId ] = true;\n\t\t\t}\n\t\t}\n\t}\n\n\t// The `keepControlledInnerBlocks` prop will keep the inner blocks of the\n\t// marked block in the block state so that they can be reattached to the\n\t// marked block when we re-insert everything a few lines below.\n\tlet stateAfterBlocksRemoval = state;\n\tif ( state.order.get( action.rootClientId ) ) {\n\t\tstateAfterBlocksRemoval = reducer( stateAfterBlocksRemoval, {\n\t\t\ttype: 'REMOVE_BLOCKS',\n\t\t\tkeepControlledInnerBlocks: nestedControllers,\n\t\t\tclientIds: state.order.get( action.rootClientId ),\n\t\t} );\n\t}\n\tlet stateAfterInsert = stateAfterBlocksRemoval;\n\tif ( action.blocks.length ) {\n\t\tstateAfterInsert = reducer( stateAfterInsert, {\n\t\t\t...action,\n\t\t\ttype: 'INSERT_BLOCKS',\n\t\t\tindex: 0,\n\t\t} );\n\n\t\t// We need to re-attach the controlled inner blocks to the blocks tree and\n\t\t// preserve their block order. Otherwise, an inner block controller's blocks\n\t\t// will be deleted entirely from its entity.\n\t\tconst stateAfterInsertOrder = new Map( stateAfterInsert.order );\n\t\tObject.keys( nestedControllers ).forEach( ( key ) => {\n\t\t\tif ( state.order.get( key ) ) {\n\t\t\t\tstateAfterInsertOrder.set( key, state.order.get( key ) );\n\t\t\t}\n\t\t} );\n\t\tstateAfterInsert.order = stateAfterInsertOrder;\n\t\tstateAfterInsert.tree = new Map( stateAfterInsert.tree );\n\t\tObject.keys( nestedControllers ).forEach( ( _key ) => {\n\t\t\tconst key = `controlled||${ _key }`;\n\t\t\tif ( state.tree.has( key ) ) {\n\t\t\t\tstateAfterInsert.tree.set( key, state.tree.get( key ) );\n\t\t\t}\n\t\t} );\n\t}\n\treturn stateAfterInsert;\n};\n\n/**\n * Higher-order reducer which targets the combined blocks reducer and handles\n * the `SAVE_REUSABLE_BLOCK_SUCCESS` action. This action can't be handled by\n * regular reducers and needs a higher-order reducer since it needs access to\n * both `byClientId` and `attributes` simultaneously.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withSaveReusableBlock = ( reducer ) => ( state, action ) => {\n\tif ( state && action.type === 'SAVE_REUSABLE_BLOCK_SUCCESS' ) {\n\t\tconst { id, updatedId } = action;\n\n\t\t// If a temporary reusable block is saved, we swap the temporary id with the final one.\n\t\tif ( id === updatedId ) {\n\t\t\treturn state;\n\t\t}\n\n\t\tstate = { ...state };\n\t\tstate.attributes = new Map( state.attributes );\n\t\tstate.attributes.forEach( ( attributes, clientId ) => {\n\t\t\tconst { name } = state.byClientId.get( clientId );\n\t\t\tif ( name === 'core/block' && attributes.ref === id ) {\n\t\t\t\tstate.attributes.set( clientId, {\n\t\t\t\t\t...attributes,\n\t\t\t\t\tref: updatedId,\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn reducer( state, action );\n};\n/**\n * Higher-order reducer which removes blocks from state when switching parent block controlled state.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withResetControlledBlocks = ( reducer ) => ( state, action ) => {\n\tif ( action.type === 'SET_HAS_CONTROLLED_INNER_BLOCKS' ) {\n\t\t// when switching a block from controlled to uncontrolled or inverse,\n\t\t// we need to remove its content first.\n\t\tconst tempState = reducer( state, {\n\t\t\ttype: 'REPLACE_INNER_BLOCKS',\n\t\t\trootClientId: action.clientId,\n\t\t\tblocks: [],\n\t\t} );\n\t\treturn reducer( tempState, action );\n\t}\n\n\treturn reducer( state, action );\n};\n\n/**\n * Reducer returning the blocks state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const blocks = pipe(\n\tcombineReducers,\n\twithSaveReusableBlock, // Needs to be before withBlockCache.\n\twithBlockTree, // Needs to be before withInnerBlocksRemoveCascade.\n\twithInnerBlocksRemoveCascade,\n\twithReplaceInnerBlocks, // Needs to be after withInnerBlocksRemoveCascade.\n\twithBlockReset,\n\twithPersistentBlockChange,\n\twithIgnoredBlockChange,\n\twithResetControlledBlocks\n)( {\n\t// The state is using a Map instead of a plain object for performance reasons.\n\t// You can run the \"./test/performance.js\" unit test to check the impact\n\t// code changes can have on this reducer.\n\tbyClientId( state = new Map(), action ) {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'RECEIVE_BLOCKS':\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tgetFlattenedBlocksWithoutAttributes( action.blocks ).forEach(\n\t\t\t\t\t( [ key, value ] ) => {\n\t\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t\tcase 'UPDATE_BLOCK': {\n\t\t\t\t// Ignore updates if block isn't known.\n\t\t\t\tif ( ! state.has( action.clientId ) ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\t// Do nothing if only attributes change.\n\t\t\t\tconst { attributes, ...changes } = action.updates;\n\t\t\t\tif ( Object.values( changes ).length === 0 ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tnewState.set( action.clientId, {\n\t\t\t\t\t...state.get( action.clientId ),\n\t\t\t\t\t...changes,\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tif ( ! action.blocks ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.replacedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\n\t\t\t\tgetFlattenedBlocksWithoutAttributes( action.blocks ).forEach(\n\t\t\t\t\t( [ key, value ] ) => {\n\t\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.removedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t},\n\n\t// The state is using a Map instead of a plain object for performance reasons.\n\t// You can run the \"./test/performance.js\" unit test to check the impact\n\t// code changes can have on this reducer.\n\tattributes( state = new Map(), action ) {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'RECEIVE_BLOCKS':\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tgetFlattenedBlockAttributes( action.blocks ).forEach(\n\t\t\t\t\t( [ key, value ] ) => {\n\t\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'UPDATE_BLOCK': {\n\t\t\t\t// Ignore updates if block isn't known or there are no attribute changes.\n\t\t\t\tif (\n\t\t\t\t\t! state.get( action.clientId ) ||\n\t\t\t\t\t! action.updates.attributes\n\t\t\t\t) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tnewState.set( action.clientId, {\n\t\t\t\t\t...state.get( action.clientId ),\n\t\t\t\t\t...action.updates.attributes,\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'SYNC_DERIVED_BLOCK_ATTRIBUTES':\n\t\t\tcase 'UPDATE_BLOCK_ATTRIBUTES': {\n\t\t\t\t// Avoid a state change if none of the block IDs are known.\n\t\t\t\tif ( action.clientIds.every( ( id ) => ! state.get( id ) ) ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tlet hasChange = false;\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tfor ( const clientId of action.clientIds ) {\n\t\t\t\t\tconst updatedAttributeEntries = Object.entries(\n\t\t\t\t\t\t!! action.options?.uniqueByBlock\n\t\t\t\t\t\t\t? action.attributes[ clientId ]\n\t\t\t\t\t\t\t: action.attributes ?? {}\n\t\t\t\t\t);\n\t\t\t\t\tif ( updatedAttributeEntries.length === 0 ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tlet hasUpdatedAttributes = false;\n\t\t\t\t\tconst existingAttributes = state.get( clientId );\n\t\t\t\t\tconst newAttributes = {};\n\t\t\t\t\tupdatedAttributeEntries.forEach( ( [ key, value ] ) => {\n\t\t\t\t\t\tif ( existingAttributes[ key ] !== value ) {\n\t\t\t\t\t\t\thasUpdatedAttributes = true;\n\t\t\t\t\t\t\tnewAttributes[ key ] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\thasChange = hasChange || hasUpdatedAttributes;\n\t\t\t\t\tif ( hasUpdatedAttributes ) {\n\t\t\t\t\t\tnewState.set( clientId, {\n\t\t\t\t\t\t\t...existingAttributes,\n\t\t\t\t\t\t\t...newAttributes,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn hasChange ? newState : state;\n\t\t\t}\n\n\t\t\tcase 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tif ( ! action.blocks ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.replacedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\tgetFlattenedBlockAttributes( action.blocks ).forEach(\n\t\t\t\t\t( [ key, value ] ) => {\n\t\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.removedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t},\n\n\t// The state is using a Map instead of a plain object for performance reasons.\n\t// You can run the \"./test/performance.js\" unit test to check the impact\n\t// code changes can have on this reducer.\n\torder( state = new Map(), action ) {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'RECEIVE_BLOCKS': {\n\t\t\t\tconst blockOrder = mapBlockOrder( action.blocks );\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tblockOrder.forEach( ( order, clientId ) => {\n\t\t\t\t\tif ( clientId !== '' ) {\n\t\t\t\t\t\tnewState.set( clientId, order );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tnewState.set(\n\t\t\t\t\t'',\n\t\t\t\t\t( state.get( '' ) ?? [] ).concat( blockOrder[ '' ] )\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tconst { rootClientId = '' } = action;\n\t\t\t\tconst subState = state.get( rootClientId ) || [];\n\t\t\t\tconst mappedBlocks = mapBlockOrder(\n\t\t\t\t\taction.blocks,\n\t\t\t\t\trootClientId\n\t\t\t\t);\n\t\t\t\tconst { index = subState.length } = action;\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tmappedBlocks.forEach( ( order, clientId ) => {\n\t\t\t\t\tnewState.set( clientId, order );\n\t\t\t\t} );\n\t\t\t\tnewState.set(\n\t\t\t\t\trootClientId,\n\t\t\t\t\tinsertAt(\n\t\t\t\t\t\tsubState,\n\t\t\t\t\t\tmappedBlocks.get( rootClientId ),\n\t\t\t\t\t\tindex\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'MOVE_BLOCKS_TO_POSITION': {\n\t\t\t\tconst {\n\t\t\t\t\tfromRootClientId = '',\n\t\t\t\t\ttoRootClientId = '',\n\t\t\t\t\tclientIds,\n\t\t\t\t} = action;\n\t\t\t\tconst { index = state.get( toRootClientId ).length } = action;\n\n\t\t\t\t// Moving inside the same parent block.\n\t\t\t\tif ( fromRootClientId === toRootClientId ) {\n\t\t\t\t\tconst subState = state.get( toRootClientId );\n\t\t\t\t\tconst fromIndex = subState.indexOf( clientIds[ 0 ] );\n\t\t\t\t\tconst newState = new Map( state );\n\t\t\t\t\tnewState.set(\n\t\t\t\t\t\ttoRootClientId,\n\t\t\t\t\t\tmoveTo(\n\t\t\t\t\t\t\tstate.get( toRootClientId ),\n\t\t\t\t\t\t\tfromIndex,\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\tclientIds.length\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t\treturn newState;\n\t\t\t\t}\n\n\t\t\t\t// Moving from a parent block to another.\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tnewState.set(\n\t\t\t\t\tfromRootClientId,\n\t\t\t\t\tstate\n\t\t\t\t\t\t.get( fromRootClientId )\n\t\t\t\t\t\t?.filter( ( id ) => ! clientIds.includes( id ) ) ?? []\n\t\t\t\t);\n\t\t\t\tnewState.set(\n\t\t\t\t\ttoRootClientId,\n\t\t\t\t\tinsertAt( state.get( toRootClientId ), clientIds, index )\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'MOVE_BLOCKS_UP': {\n\t\t\t\tconst { clientIds, rootClientId = '' } = action;\n\t\t\t\tconst firstClientId = clientIds[ 0 ];\n\t\t\t\tconst subState = state.get( rootClientId );\n\n\t\t\t\tif ( ! subState.length || firstClientId === subState[ 0 ] ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst firstIndex = subState.indexOf( firstClientId );\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tnewState.set(\n\t\t\t\t\trootClientId,\n\t\t\t\t\tmoveTo(\n\t\t\t\t\t\tsubState,\n\t\t\t\t\t\tfirstIndex,\n\t\t\t\t\t\tfirstIndex - 1,\n\t\t\t\t\t\tclientIds.length\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'MOVE_BLOCKS_DOWN': {\n\t\t\t\tconst { clientIds, rootClientId = '' } = action;\n\t\t\t\tconst firstClientId = clientIds[ 0 ];\n\t\t\t\tconst lastClientId = clientIds[ clientIds.length - 1 ];\n\t\t\t\tconst subState = state.get( rootClientId );\n\n\t\t\t\tif (\n\t\t\t\t\t! subState.length ||\n\t\t\t\t\tlastClientId === subState[ subState.length - 1 ]\n\t\t\t\t) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst firstIndex = subState.indexOf( firstClientId );\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tnewState.set(\n\t\t\t\t\trootClientId,\n\t\t\t\t\tmoveTo(\n\t\t\t\t\t\tsubState,\n\t\t\t\t\t\tfirstIndex,\n\t\t\t\t\t\tfirstIndex + 1,\n\t\t\t\t\t\tclientIds.length\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst { clientIds } = action;\n\t\t\t\tif ( ! action.blocks ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst mappedBlocks = mapBlockOrder( action.blocks );\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.replacedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\tmappedBlocks.forEach( ( order, clientId ) => {\n\t\t\t\t\tif ( clientId !== '' ) {\n\t\t\t\t\t\tnewState.set( clientId, order );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tnewState.forEach( ( order, clientId ) => {\n\t\t\t\t\tconst newSubOrder = Object.values( order ).reduce(\n\t\t\t\t\t\t( result, subClientId ) => {\n\t\t\t\t\t\t\tif ( subClientId === clientIds[ 0 ] ) {\n\t\t\t\t\t\t\t\treturn [ ...result, ...mappedBlocks.get( '' ) ];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( clientIds.indexOf( subClientId ) === -1 ) {\n\t\t\t\t\t\t\t\tresult.push( subClientId );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[]\n\t\t\t\t\t);\n\t\t\t\t\tnewState.set( clientId, newSubOrder );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\t// Remove inner block ordering for removed blocks.\n\t\t\t\taction.removedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\tnewState.forEach( ( order, clientId ) => {\n\t\t\t\t\tconst newSubOrder =\n\t\t\t\t\t\torder?.filter(\n\t\t\t\t\t\t\t( id ) => ! action.removedClientIds.includes( id )\n\t\t\t\t\t\t) ?? [];\n\t\t\t\t\tif ( newSubOrder.length !== order.length ) {\n\t\t\t\t\t\tnewState.set( clientId, newSubOrder );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t},\n\n\t// While technically redundant data as the inverse of `order`, it serves as\n\t// an optimization for the selectors which derive the ancestry of a block.\n\tparents( state = new Map(), action ) {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'RECEIVE_BLOCKS': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tmapBlockParents( action.blocks ).forEach(\n\t\t\t\t\t( [ key, value ] ) => {\n\t\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tmapBlockParents(\n\t\t\t\t\taction.blocks,\n\t\t\t\t\taction.rootClientId || ''\n\t\t\t\t).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t\tcase 'MOVE_BLOCKS_TO_POSITION': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.clientIds.forEach( ( id ) => {\n\t\t\t\t\tnewState.set( id, action.toRootClientId || '' );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.replacedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\tmapBlockParents(\n\t\t\t\t\taction.blocks,\n\t\t\t\t\tstate.get( action.clientIds[ 0 ] )\n\t\t\t\t).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t\tcase 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.removedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t},\n\n\tcontrolledInnerBlocks(\n\t\tstate = {},\n\t\t{ type, clientId, hasControlledInnerBlocks }\n\t) {\n\t\tif ( type === 'SET_HAS_CONTROLLED_INNER_BLOCKS' ) {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ clientId ]: hasControlledInnerBlocks,\n\t\t\t};\n\t\t}\n\t\treturn state;\n\t},\n} );\n\n/**\n * Reducer returning visibility status of block interface.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function isBlockInterfaceHidden( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'HIDE_BLOCK_INTERFACE':\n\t\t\treturn true;\n\n\t\tcase 'SHOW_BLOCK_INTERFACE':\n\t\t\treturn false;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning typing state.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function isTyping( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'START_TYPING':\n\t\t\treturn true;\n\n\t\tcase 'STOP_TYPING':\n\t\t\treturn false;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning dragging state. It is possible for a user to be dragging\n * data from outside of the editor, so this state is separate from `draggedBlocks`.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function isDragging( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'START_DRAGGING':\n\t\t\treturn true;\n\n\t\tcase 'STOP_DRAGGING':\n\t\t\treturn false;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning dragged block client id.\n *\n * @param {string[]} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string[]} Updated state.\n */\nexport function draggedBlocks( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'START_DRAGGING_BLOCKS':\n\t\t\treturn action.clientIds;\n\n\t\tcase 'STOP_DRAGGING_BLOCKS':\n\t\t\treturn [];\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer tracking the visible blocks.\n *\n * @param {Record<string,boolean>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string,boolean>} Block visibility.\n */\nexport function blockVisibility( state = {}, action ) {\n\tif ( action.type === 'SET_BLOCK_VISIBILITY' ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.updates,\n\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Internal helper reducer for selectionStart and selectionEnd. Can hold a block\n * selection, represented by an object with property clientId.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nfunction selectionHelper( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'CLEAR_SELECTED_BLOCK': {\n\t\t\tif ( state.clientId ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\treturn state;\n\t\t}\n\t\tcase 'SELECT_BLOCK':\n\t\t\tif ( action.clientId === state.clientId ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn { clientId: action.clientId };\n\t\tcase 'REPLACE_INNER_BLOCKS':\n\t\tcase 'INSERT_BLOCKS': {\n\t\t\tif ( ! action.updateSelection || ! action.blocks.length ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn { clientId: action.blocks[ 0 ].clientId };\n\t\t}\n\t\tcase 'REMOVE_BLOCKS':\n\t\t\tif (\n\t\t\t\t! action.clientIds ||\n\t\t\t\t! action.clientIds.length ||\n\t\t\t\taction.clientIds.indexOf( state.clientId ) === -1\n\t\t\t) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn {};\n\t\tcase 'REPLACE_BLOCKS': {\n\t\t\tif ( action.clientIds.indexOf( state.clientId ) === -1 ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\tconst blockToSelect =\n\t\t\t\taction.blocks[ action.indexToSelect ] ||\n\t\t\t\taction.blocks[ action.blocks.length - 1 ];\n\n\t\t\tif ( ! blockToSelect ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tif ( blockToSelect.clientId === state.clientId ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn { clientId: blockToSelect.clientId };\n\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the selection state.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function selection( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SELECTION_CHANGE':\n\t\t\tif ( action.clientId ) {\n\t\t\t\treturn {\n\t\t\t\t\tselectionStart: {\n\t\t\t\t\t\tclientId: action.clientId,\n\t\t\t\t\t\tattributeKey: action.attributeKey,\n\t\t\t\t\t\toffset: action.startOffset,\n\t\t\t\t\t},\n\t\t\t\t\tselectionEnd: {\n\t\t\t\t\t\tclientId: action.clientId,\n\t\t\t\t\t\tattributeKey: action.attributeKey,\n\t\t\t\t\t\toffset: action.endOffset,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tselectionStart: action.start || state.selectionStart,\n\t\t\t\tselectionEnd: action.end || state.selectionEnd,\n\t\t\t};\n\t\tcase 'RESET_SELECTION':\n\t\t\tconst { selectionStart, selectionEnd } = action;\n\t\t\treturn {\n\t\t\t\tselectionStart,\n\t\t\t\tselectionEnd,\n\t\t\t};\n\t\tcase 'MULTI_SELECT':\n\t\t\tconst { start, end } = action;\n\n\t\t\tif (\n\t\t\t\tstart === state.selectionStart?.clientId &&\n\t\t\t\tend === state.selectionEnd?.clientId\n\t\t\t) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tselectionStart: { clientId: start },\n\t\t\t\tselectionEnd: { clientId: end },\n\t\t\t};\n\t\tcase 'RESET_BLOCKS':\n\t\t\tconst startClientId = state?.selectionStart?.clientId;\n\t\t\tconst endClientId = state?.selectionEnd?.clientId;\n\n\t\t\t// Do nothing if there's no selected block.\n\t\t\tif ( ! startClientId && ! endClientId ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\t// If the start of the selection won't exist after reset, remove selection.\n\t\t\tif (\n\t\t\t\t! action.blocks.some(\n\t\t\t\t\t( block ) => block.clientId === startClientId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\tselectionStart: {},\n\t\t\t\t\tselectionEnd: {},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If the end of the selection won't exist after reset, collapse selection.\n\t\t\tif (\n\t\t\t\t! action.blocks.some(\n\t\t\t\t\t( block ) => block.clientId === endClientId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tselectionEnd: state.selectionStart,\n\t\t\t\t};\n\t\t\t}\n\t}\n\n\tconst selectionStart = selectionHelper( state.selectionStart, action );\n\tconst selectionEnd = selectionHelper( state.selectionEnd, action );\n\n\tif (\n\t\tselectionStart === state.selectionStart &&\n\t\tselectionEnd === state.selectionEnd\n\t) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\tselectionStart,\n\t\tselectionEnd,\n\t};\n}\n\n/**\n * Reducer returning whether the user is multi-selecting.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function isMultiSelecting( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'START_MULTI_SELECT':\n\t\t\treturn true;\n\n\t\tcase 'STOP_MULTI_SELECT':\n\t\t\treturn false;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning whether selection is enabled.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function isSelectionEnabled( state = true, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'TOGGLE_SELECTION':\n\t\t\treturn action.isSelectionEnabled;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the data needed to display a prompt when certain blocks\n * are removed, or `false` if no such prompt is requested.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object|false} Data for removal prompt display, if any.\n */\nfunction removalPromptData( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'DISPLAY_BLOCK_REMOVAL_PROMPT':\n\t\t\tconst { clientIds, selectPrevious, message } = action;\n\t\t\treturn {\n\t\t\t\tclientIds,\n\t\t\t\tselectPrevious,\n\t\t\t\tmessage,\n\t\t\t};\n\t\tcase 'CLEAR_BLOCK_REMOVAL_PROMPT':\n\t\t\treturn false;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning any rules that a block editor may provide in order to\n * prevent a user from accidentally removing certain blocks. These rules are\n * then used to display a confirmation prompt to the user. For instance, in the\n * Site Editor, the Query Loop block is important enough to warrant such\n * confirmation.\n *\n * The data is a record whose keys are block types (e.g. 'core/query') and\n * whose values are the explanation to be shown to users (e.g. 'Query Loop\n * displays a list of posts or pages.').\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string,string>} Updated state.\n */\nfunction blockRemovalRules( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_BLOCK_REMOVAL_RULES':\n\t\t\treturn action.rules;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the initial block selection.\n *\n * Currently this in only used to restore the selection after block deletion and\n * pasting new content.This reducer should eventually be removed in favour of setting\n * selection directly.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {number|null} Initial position: 0, -1 or null.\n */\nexport function initialPosition( state = null, action ) {\n\tif (\n\t\taction.type === 'REPLACE_BLOCKS' &&\n\t\taction.initialPosition !== undefined\n\t) {\n\t\treturn action.initialPosition;\n\t} else if (\n\t\t[\n\t\t\t'MULTI_SELECT',\n\t\t\t'SELECT_BLOCK',\n\t\t\t'RESET_SELECTION',\n\t\t\t'INSERT_BLOCKS',\n\t\t\t'REPLACE_INNER_BLOCKS',\n\t\t].includes( action.type )\n\t) {\n\t\treturn action.initialPosition;\n\t}\n\n\treturn state;\n}\n\nexport function blocksMode( state = {}, action ) {\n\tif ( action.type === 'TOGGLE_BLOCK_MODE' ) {\n\t\tconst { clientId } = action;\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ clientId ]:\n\t\t\t\tstate[ clientId ] && state[ clientId ] === 'html'\n\t\t\t\t\t? 'visual'\n\t\t\t\t\t: 'html',\n\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the block insertion point visibility, either null if there\n * is not an explicit insertion point assigned, or an object of its `index` and\n * `rootClientId`.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function insertionCue( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SHOW_INSERTION_POINT': {\n\t\t\tconst {\n\t\t\t\trootClientId,\n\t\t\t\tindex,\n\t\t\t\t__unstableWithInserter,\n\t\t\t\toperation,\n\t\t\t\tnearestSide,\n\t\t\t} = action;\n\t\t\tconst nextState = {\n\t\t\t\trootClientId,\n\t\t\t\tindex,\n\t\t\t\t__unstableWithInserter,\n\t\t\t\toperation,\n\t\t\t\tnearestSide,\n\t\t\t};\n\n\t\t\t// Bail out updates if the states are the same.\n\t\t\treturn fastDeepEqual( state, nextState ) ? state : nextState;\n\t\t}\n\n\t\tcase 'HIDE_INSERTION_POINT':\n\t\t\treturn null;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning whether the post blocks match the defined template or not.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function template( state = { isValid: true }, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_TEMPLATE_VALIDITY':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisValid: action.isValid,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the editor setting.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function settings( state = SETTINGS_DEFAULTS, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'UPDATE_SETTINGS': {\n\t\t\tconst updatedSettings = action.reset\n\t\t\t\t? {\n\t\t\t\t\t\t...SETTINGS_DEFAULTS,\n\t\t\t\t\t\t...action.settings,\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\t...action.settings,\n\t\t\t\t };\n\n\t\t\tObject.defineProperty( updatedSettings, '__unstableIsPreviewMode', {\n\t\t\t\tget() {\n\t\t\t\t\tdeprecated( '__unstableIsPreviewMode', {\n\t\t\t\t\t\tsince: '6.8',\n\t\t\t\t\t\talternative: 'isPreviewMode',\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn this.isPreviewMode;\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\treturn updatedSettings;\n\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the user preferences.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function preferences( state = PREFERENCES_DEFAULTS, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'INSERT_BLOCKS':\n\t\tcase 'REPLACE_BLOCKS': {\n\t\t\tconst nextInsertUsage = action.blocks.reduce(\n\t\t\t\t( prevUsage, block ) => {\n\t\t\t\t\tconst { attributes, name: blockName } = block;\n\t\t\t\t\tlet id = blockName;\n\t\t\t\t\t// If a block variation match is found change the name to be the same with the\n\t\t\t\t\t// one that is used for block variations in the Inserter (`getItemFromVariation`).\n\t\t\t\t\tconst match = select( blocksStore ).getActiveBlockVariation(\n\t\t\t\t\t\tblockName,\n\t\t\t\t\t\tattributes\n\t\t\t\t\t);\n\t\t\t\t\tif ( match?.name ) {\n\t\t\t\t\t\tid += '/' + match.name;\n\t\t\t\t\t}\n\t\t\t\t\tif ( blockName === 'core/block' ) {\n\t\t\t\t\t\tid += '/' + attributes.ref;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...prevUsage,\n\t\t\t\t\t\t[ id ]: {\n\t\t\t\t\t\t\ttime: action.time,\n\t\t\t\t\t\t\tcount: prevUsage[ id ]\n\t\t\t\t\t\t\t\t? prevUsage[ id ].count + 1\n\t\t\t\t\t\t\t\t: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tstate.insertUsage\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tinsertUsage: nextInsertUsage,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning an object where each key is a block client ID, its value\n * representing the settings for its nested blocks.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const blockListSettings = ( state = {}, action ) => {\n\tswitch ( action.type ) {\n\t\t// Even if the replaced blocks have the same client ID, our logic\n\t\t// should correct the state.\n\t\tcase 'REPLACE_BLOCKS':\n\t\tcase 'REMOVE_BLOCKS': {\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).filter(\n\t\t\t\t\t( [ id ] ) => ! action.clientIds.includes( id )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tcase 'UPDATE_BLOCK_LIST_SETTINGS': {\n\t\t\tconst updates =\n\t\t\t\ttypeof action.clientId === 'string'\n\t\t\t\t\t? { [ action.clientId ]: action.settings }\n\t\t\t\t\t: action.clientId;\n\n\t\t\t// Remove settings that are the same as the current state.\n\t\t\tfor ( const clientId in updates ) {\n\t\t\t\tif ( ! updates[ clientId ] ) {\n\t\t\t\t\tif ( ! state[ clientId ] ) {\n\t\t\t\t\t\tdelete updates[ clientId ];\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\tfastDeepEqual( state[ clientId ], updates[ clientId ] )\n\t\t\t\t) {\n\t\t\t\t\tdelete updates[ clientId ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( Object.keys( updates ).length === 0 ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\tconst merged = { ...state, ...updates };\n\n\t\t\tfor ( const clientId in updates ) {\n\t\t\t\tif ( ! updates[ clientId ] ) {\n\t\t\t\t\tdelete merged[ clientId ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn merged;\n\t\t}\n\t}\n\treturn state;\n};\n\n/**\n * Reducer return an updated state representing the most recent block attribute\n * update. The state is structured as an object where the keys represent the\n * client IDs of blocks, the values a subset of attributes from the most recent\n * block update. The state is always reset to null if the last action is\n * anything other than an attributes update.\n *\n * @param {Object<string,Object>} state Current state.\n * @param {Object} action Action object.\n *\n * @return {[string,Object]} Updated state.\n */\nexport function lastBlockAttributesChange( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'UPDATE_BLOCK':\n\t\t\tif ( ! action.updates.attributes ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn { [ action.clientId ]: action.updates.attributes };\n\n\t\tcase 'UPDATE_BLOCK_ATTRIBUTES':\n\t\t\treturn action.clientIds.reduce(\n\t\t\t\t( accumulator, id ) => ( {\n\t\t\t\t\t...accumulator,\n\t\t\t\t\t[ id ]: !! action.options?.uniqueByBlock\n\t\t\t\t\t\t? action.attributes[ id ]\n\t\t\t\t\t\t: action.attributes,\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t);\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning current highlighted block.\n *\n * @param {boolean} state Current highlighted block.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function highlightedBlock( state, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'TOGGLE_BLOCK_HIGHLIGHT':\n\t\t\tconst { clientId, isHighlighted } = action;\n\n\t\t\tif ( isHighlighted ) {\n\t\t\t\treturn clientId;\n\t\t\t} else if ( state === clientId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn state;\n\t\tcase 'SELECT_BLOCK':\n\t\t\tif ( action.clientId !== state ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning current expanded block in the list view.\n *\n * @param {string|null} state Current expanded block.\n * @param {Object} action Dispatched action.\n *\n * @return {string|null} Updated state.\n */\nexport function expandedBlock( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_BLOCK_EXPANDED_IN_LIST_VIEW':\n\t\t\treturn action.clientId;\n\t\tcase 'SELECT_BLOCK':\n\t\t\tif ( action.clientId !== state ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the block insertion event list state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function lastBlockInserted( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'INSERT_BLOCKS':\n\t\tcase 'REPLACE_BLOCKS':\n\t\t\tif ( ! action.blocks.length ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\tconst clientIds = action.blocks.map( ( block ) => {\n\t\t\t\treturn block.clientId;\n\t\t\t} );\n\n\t\t\tconst source = action.meta?.source;\n\n\t\t\treturn { clientIds, source };\n\t\tcase 'RESET_BLOCKS':\n\t\t\treturn {};\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning the block that is eding temporarily edited as blocks.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function temporarilyEditingAsBlocks( state = '', action ) {\n\tif ( action.type === 'SET_TEMPORARILY_EDITING_AS_BLOCKS' ) {\n\t\treturn action.temporarilyEditingAsBlocks;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning the focus mode that should be used when temporarily edit as blocks finishes.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function temporarilyEditingFocusModeRevert( state = '', action ) {\n\tif ( action.type === 'SET_TEMPORARILY_EDITING_AS_BLOCKS' ) {\n\t\treturn action.focusModeToRevert;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning a map of block client IDs to block editing modes.\n *\n * @param {Map} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Map} Updated state.\n */\nexport function blockEditingModes( state = new Map(), action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_BLOCK_EDITING_MODE':\n\t\t\tif ( state.get( action.clientId ) === action.mode ) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t\treturn new Map( state ).set( action.clientId, action.mode );\n\t\tcase 'UNSET_BLOCK_EDITING_MODE': {\n\t\t\tif ( ! state.has( action.clientId ) ) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t\tconst newState = new Map( state );\n\t\t\tnewState.delete( action.clientId );\n\t\t\treturn newState;\n\t\t}\n\t\tcase 'RESET_BLOCKS': {\n\t\t\treturn state.has( '' )\n\t\t\t\t? new Map().set( '', state.get( '' ) )\n\t\t\t\t: state;\n\t\t}\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning the clientId of the block settings menu that is currently open.\n *\n * @param {string|null} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string|null} Updated state.\n */\nexport function openedBlockSettingsMenu( state = null, action ) {\n\tif ( 'SET_OPENED_BLOCK_SETTINGS_MENU' === action.type ) {\n\t\treturn action?.clientId ?? null;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning a map of style IDs to style overrides.\n *\n * @param {Map} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Map} Updated state.\n */\nexport function styleOverrides( state = new Map(), action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_STYLE_OVERRIDE':\n\t\t\treturn new Map( state ).set( action.id, action.style );\n\t\tcase 'DELETE_STYLE_OVERRIDE': {\n\t\t\tconst newState = new Map( state );\n\t\t\tnewState.delete( action.id );\n\t\t\treturn newState;\n\t\t}\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning a map of the registered inserter media categories.\n *\n * @param {Array} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Array} Updated state.\n */\nexport function registeredInserterMediaCategories( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'REGISTER_INSERTER_MEDIA_CATEGORY':\n\t\t\treturn [ ...state, action.category ];\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer setting last focused element\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function lastFocus( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'LAST_FOCUS':\n\t\t\treturn action.lastFocus;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer setting zoom out state.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {number} Updated state.\n */\nexport function zoomLevel( state = 100, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_ZOOM_LEVEL':\n\t\t\treturn action.zoom;\n\t\tcase 'RESET_ZOOM_LEVEL':\n\t\t\treturn 100;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer setting the insertion point\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function insertionPoint( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_INSERTION_POINT':\n\t\t\treturn action.value;\n\t\tcase 'SELECT_BLOCK':\n\t\t\treturn null;\n\t}\n\n\treturn state;\n}\n\nconst combinedReducers = combineReducers( {\n\tblocks,\n\tisDragging,\n\tisTyping,\n\tisBlockInterfaceHidden,\n\tdraggedBlocks,\n\tselection,\n\tisMultiSelecting,\n\tisSelectionEnabled,\n\tinitialPosition,\n\tblocksMode,\n\tblockListSettings,\n\tinsertionPoint,\n\tinsertionCue,\n\ttemplate,\n\tsettings,\n\tpreferences,\n\tlastBlockAttributesChange,\n\tlastFocus,\n\texpandedBlock,\n\thighlightedBlock,\n\tlastBlockInserted,\n\ttemporarilyEditingAsBlocks,\n\ttemporarilyEditingFocusModeRevert,\n\tblockVisibility,\n\tblockEditingModes,\n\tstyleOverrides,\n\tremovalPromptData,\n\tblockRemovalRules,\n\topenedBlockSettingsMenu,\n\tregisteredInserterMediaCategories,\n\tzoomLevel,\n} );\n\n/**\n * Retrieves a block's tree structure, handling both controlled and uncontrolled inner blocks.\n *\n * @param {Object} state The current state object.\n * @param {string} clientId The client ID of the block to retrieve.\n *\n * @return {Object|undefined} The block tree object, or undefined if not found. For controlled blocks,\n * returns a merged tree with controlled inner blocks.\n */\nfunction getBlockTreeBlock( state, clientId ) {\n\tif ( clientId === '' ) {\n\t\tconst rootBlock = state.blocks.tree.get( clientId );\n\n\t\tif ( ! rootBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Patch the root block to have a clientId property.\n\t\t// TODO - consider updating the blocks reducer so that the root block has this property.\n\t\treturn {\n\t\t\tclientId: '',\n\t\t\t...rootBlock,\n\t\t};\n\t}\n\n\tif ( ! state.blocks.controlledInnerBlocks[ clientId ] ) {\n\t\treturn state.blocks.tree.get( clientId );\n\t}\n\n\tconst controlledTree = state.blocks.tree.get( `controlled||${ clientId }` );\n\tconst regularTree = state.blocks.tree.get( clientId );\n\n\treturn {\n\t\t...regularTree,\n\t\tinnerBlocks: controlledTree?.innerBlocks,\n\t};\n}\n\n/**\n * Recursively traverses through a block tree of a given block and executes a callback for each block.\n *\n * @param {Object} state The store state.\n * @param {string} clientId The clientId of the block to start traversing from.\n * @param {Function} callback Function to execute for each block encountered during traversal.\n * The callback receives the current block as its argument.\n */\nfunction traverseBlockTree( state, clientId, callback ) {\n\tconst tree = getBlockTreeBlock( state, clientId );\n\tif ( ! tree ) {\n\t\treturn;\n\t}\n\n\tcallback( tree );\n\n\tif ( ! tree?.innerBlocks?.length ) {\n\t\treturn;\n\t}\n\n\tfor ( const innerBlock of tree?.innerBlocks ) {\n\t\ttraverseBlockTree( state, innerBlock.clientId, callback );\n\t}\n}\n\n/**\n * Checks if a block has a parent in a list of client IDs, and if so returns the client ID of the parent.\n *\n * @param {Object} state The current state object.\n * @param {string} clientId The client ID of the block to search the parents of.\n * @param {Array} clientIds The client IDs of the blocks to check.\n *\n * @return {string|undefined} The client ID of the parent block if found, undefined otherwise.\n */\nfunction findParentInClientIdsList( state, clientId, clientIds ) {\n\tif ( ! clientIds.length ) {\n\t\treturn;\n\t}\n\n\tlet parent = state.blocks.parents.get( clientId );\n\twhile ( parent !== undefined ) {\n\t\tif ( clientIds.includes( parent ) ) {\n\t\t\treturn parent;\n\t\t}\n\t\tparent = state.blocks.parents.get( parent );\n\t}\n}\n\n/**\n * Checks if a block has any bindings in its metadata attributes.\n *\n * @param {Object} block The block object to check for bindings.\n * @return {boolean} True if the block has bindings, false otherwise.\n */\nfunction hasBindings( block ) {\n\treturn (\n\t\tblock?.attributes?.metadata?.bindings &&\n\t\tObject.keys( block?.attributes?.metadata?.bindings ).length\n\t);\n}\n\n/**\n * Computes and returns derived block editing modes for a given block tree.\n *\n * This function calculates the editing modes for each block in the tree, taking into account\n * various factors such as zoom level, navigation mode, sections, and synced patterns.\n *\n * @param {Object} state The current state object.\n * @param {boolean} isNavMode Whether the navigation mode is active.\n * @param {string} treeClientId The client ID of the root block for the tree. Defaults to an empty string.\n * @return {Map} A Map containing the derived block editing modes, keyed by block client ID.\n */\nfunction getDerivedBlockEditingModesForTree(\n\tstate,\n\tisNavMode = false,\n\ttreeClientId = ''\n) {\n\tconst isZoomedOut =\n\t\tstate?.zoomLevel < 100 || state?.zoomLevel === 'auto-scaled';\n\tconst derivedBlockEditingModes = new Map();\n\n\t// When there are sections, the majority of blocks are disabled,\n\t// so the default block editing mode is set to disabled.\n\tconst sectionRootClientId = state.settings?.[ sectionRootClientIdKey ];\n\tconst sectionClientIds = state.blocks.order.get( sectionRootClientId );\n\tconst hasDisabledBlocks = Array.from( state.blockEditingModes ).some(\n\t\t( [ , mode ] ) => mode === 'disabled'\n\t);\n\tconst templatePartClientIds = [];\n\tconst syncedPatternClientIds = [];\n\n\tObject.keys( state.blocks.controlledInnerBlocks ).forEach( ( clientId ) => {\n\t\tconst block = state.blocks.byClientId?.get( clientId );\n\n\t\tif ( block?.name === 'core/template-part' ) {\n\t\t\ttemplatePartClientIds.push( clientId );\n\t\t}\n\n\t\tif ( block?.name === 'core/block' ) {\n\t\t\tsyncedPatternClientIds.push( clientId );\n\t\t}\n\t} );\n\tconst contentOnlyTemplateLockedClientIds = Object.keys(\n\t\tstate.blockListSettings\n\t).filter(\n\t\t( clientId ) =>\n\t\t\tstate.blockListSettings[ clientId ]?.templateLock === 'contentOnly'\n\t);\n\t// Use array.from for better back compat. Older versions of the iterator returned\n\t// from `keys()` didn't have the `filter` method.\n\tconst unsyncedPatternClientIds =\n\t\t!! window?.__experimentalContentOnlyPatternInsertion\n\t\t\t? Array.from( state.blocks.attributes.keys() ).filter(\n\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\tstate.blocks.attributes.get( clientId )?.metadata\n\t\t\t\t\t\t\t?.patternName\n\t\t\t )\n\t\t\t: [];\n\tconst contentOnlyParents = [\n\t\t...contentOnlyTemplateLockedClientIds,\n\t\t...unsyncedPatternClientIds,\n\t\t...( window?.__experimentalContentOnlyPatternInsertion\n\t\t\t? templatePartClientIds\n\t\t\t: [] ),\n\t];\n\n\ttraverseBlockTree( state, treeClientId, ( block ) => {\n\t\tconst { clientId, name: blockName } = block;\n\n\t\t// If the block already has an explicit block editing mode set,\n\t\t// don't override it.\n\t\tif ( state.blockEditingModes.has( clientId ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Disabled explicit block editing modes are inherited by children.\n\t\t// It's an expensive calculation, so only do it if there are disabled blocks.\n\t\tif ( hasDisabledBlocks ) {\n\t\t\t// Look through parents to find one with an explicit block editing mode.\n\t\t\tlet ancestorBlockEditingMode;\n\t\t\tlet parent = state.blocks.parents.get( clientId );\n\t\t\twhile ( parent !== undefined ) {\n\t\t\t\t// There's a chance we only just calculated this for the parent,\n\t\t\t\t// if so we can return that value for a faster lookup.\n\t\t\t\tif ( derivedBlockEditingModes.has( parent ) ) {\n\t\t\t\t\tancestorBlockEditingMode =\n\t\t\t\t\t\tderivedBlockEditingModes.get( parent );\n\t\t\t\t} else if ( state.blockEditingModes.has( parent ) ) {\n\t\t\t\t\t// Checking the explicit block editing mode will be slower,\n\t\t\t\t\t// as the block editing mode is more likely to be set on a\n\t\t\t\t\t// distant ancestor.\n\t\t\t\t\tancestorBlockEditingMode =\n\t\t\t\t\t\tstate.blockEditingModes.get( parent );\n\t\t\t\t}\n\t\t\t\tif ( ancestorBlockEditingMode ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tparent = state.blocks.parents.get( parent );\n\t\t\t}\n\n\t\t\t// If the ancestor block editing mode is disabled, it's inherited by the child.\n\t\t\tif ( ancestorBlockEditingMode === 'disabled' ) {\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif ( isZoomedOut || isNavMode ) {\n\t\t\t// If the root block is the section root set its editing mode to contentOnly.\n\t\t\tif ( clientId === sectionRootClientId ) {\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'contentOnly' );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// There are no sections, so everything else is disabled.\n\t\t\tif ( ! sectionClientIds?.length ) {\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( sectionClientIds.includes( clientId ) ) {\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'contentOnly' );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If zoomed out, all blocks that aren't sections or the section root are\n\t\t\t// disabled.\n\t\t\tif ( isZoomedOut ) {\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isInSection = !! findParentInClientIdsList(\n\t\t\t\tstate,\n\t\t\t\tclientId,\n\t\t\t\tsectionClientIds\n\t\t\t);\n\t\t\tif ( ! isInSection ) {\n\t\t\t\tif ( clientId === '' ) {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Allow selection of template parts outside of sections.\n\t\t\t\tif ( blockName === 'core/template-part' ) {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'contentOnly' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isInTemplatePart = !! findParentInClientIdsList(\n\t\t\t\t\tstate,\n\t\t\t\t\tclientId,\n\t\t\t\t\ttemplatePartClientIds\n\t\t\t\t);\n\t\t\t\t// Allow contentOnly blocks in template parts outside of sections\n\t\t\t\t// to be editable. Only disable blocks that don't fit this criteria.\n\t\t\t\tif ( ! isInTemplatePart && ! isContentBlock( blockName ) ) {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle synced pattern content so the inner blocks of a synced pattern are\n\t\t\t// properly disabled.\n\t\t\tif ( syncedPatternClientIds.length ) {\n\t\t\t\tconst parentPatternClientId = findParentInClientIdsList(\n\t\t\t\t\tstate,\n\t\t\t\t\tclientId,\n\t\t\t\t\tsyncedPatternClientIds\n\t\t\t\t);\n\n\t\t\t\tif ( parentPatternClientId ) {\n\t\t\t\t\t// This is a pattern nested in another pattern, it should be disabled.\n\t\t\t\t\tif (\n\t\t\t\t\t\tfindParentInClientIdsList(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tparentPatternClientId,\n\t\t\t\t\t\t\tsyncedPatternClientIds\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasBindings( block ) ) {\n\t\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'contentOnly' );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Synced pattern content without a binding isn't editable\n\t\t\t\t\t// from the instance, the user has to edit the pattern source,\n\t\t\t\t\t// so return 'disabled'.\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( blockName && isContentBlock( blockName ) ) {\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'contentOnly' );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( syncedPatternClientIds.length ) {\n\t\t\t// Synced pattern blocks (core/block).\n\t\t\tif ( syncedPatternClientIds.includes( clientId ) ) {\n\t\t\t\t// This is a pattern nested in another pattern, it should be disabled.\n\t\t\t\tif (\n\t\t\t\t\tfindParentInClientIdsList(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tsyncedPatternClientIds\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Else do nothing, use the default block editing mode.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Inner blocks of synced patterns.\n\t\t\tconst parentPatternClientId = findParentInClientIdsList(\n\t\t\t\tstate,\n\t\t\t\tclientId,\n\t\t\t\tsyncedPatternClientIds\n\t\t\t);\n\t\t\tif ( parentPatternClientId ) {\n\t\t\t\t// This is a pattern nested in another pattern, it should be disabled.\n\t\t\t\tif (\n\t\t\t\t\tfindParentInClientIdsList(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tparentPatternClientId,\n\t\t\t\t\t\tsyncedPatternClientIds\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( hasBindings( block ) ) {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'contentOnly' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Synced pattern content without a binding isn't editable\n\t\t\t\t// from the instance, the user has to edit the pattern source,\n\t\t\t\t// so return 'disabled'.\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t}\n\t\t}\n\n\t\t// Handle `templateLock=contentOnly` blocks and unsynced patterns.\n\t\tif ( contentOnlyParents.length ) {\n\t\t\tconst hasContentOnlyParent = !! findParentInClientIdsList(\n\t\t\t\tstate,\n\t\t\t\tclientId,\n\t\t\t\tcontentOnlyParents\n\t\t\t);\n\t\t\tif ( hasContentOnlyParent ) {\n\t\t\t\tif ( isContentBlock( blockName ) ) {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'contentOnly' );\n\t\t\t\t} else {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\n\treturn derivedBlockEditingModes;\n}\n\n/**\n * Updates the derived block editing modes based on added and removed blocks.\n *\n * This function handles the updating of block editing modes when blocks are added,\n * removed, or moved within the editor.\n *\n * It only returns a value when modifications are made to the block editing modes.\n *\n * @param {Object} options The options for updating derived block editing modes.\n * @param {Object} options.prevState The previous state object.\n * @param {Object} options.nextState The next state object.\n * @param {Array} [options.addedBlocks] An array of blocks that were added.\n * @param {Array} [options.removedClientIds] An array of client IDs of blocks that were removed.\n * @param {boolean} [options.isNavMode] Whether the navigation mode is active.\n * @return {Map|undefined} The updated derived block editing modes, or undefined if no changes were made.\n */\nfunction getDerivedBlockEditingModesUpdates( {\n\tprevState,\n\tnextState,\n\taddedBlocks,\n\tremovedClientIds,\n\tisNavMode = false,\n} ) {\n\tconst prevDerivedBlockEditingModes = isNavMode\n\t\t? prevState.derivedNavModeBlockEditingModes\n\t\t: prevState.derivedBlockEditingModes;\n\tlet nextDerivedBlockEditingModes;\n\n\t// Perform removals before additions to handle cases like the `MOVE_BLOCKS_TO_POSITION` action.\n\t// That action removes a set of clientIds, but adds the same blocks back in a different location.\n\t// If removals were performed after additions, those moved clientIds would be removed incorrectly.\n\tremovedClientIds?.forEach( ( clientId ) => {\n\t\t// The actions only receive parent block IDs for removal.\n\t\t// Recurse through the block tree to ensure all blocks are removed.\n\t\t// Specifically use the previous state, before the blocks were removed.\n\t\ttraverseBlockTree( prevState, clientId, ( block ) => {\n\t\t\tif ( prevDerivedBlockEditingModes.has( block.clientId ) ) {\n\t\t\t\tif ( ! nextDerivedBlockEditingModes ) {\n\t\t\t\t\tnextDerivedBlockEditingModes = new Map(\n\t\t\t\t\t\tprevDerivedBlockEditingModes\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tnextDerivedBlockEditingModes.delete( block.clientId );\n\t\t\t}\n\t\t} );\n\t} );\n\n\taddedBlocks?.forEach( ( addedBlock ) => {\n\t\ttraverseBlockTree( nextState, addedBlock.clientId, ( block ) => {\n\t\t\tconst updates = getDerivedBlockEditingModesForTree(\n\t\t\t\tnextState,\n\t\t\t\tisNavMode,\n\t\t\t\tblock.clientId\n\t\t\t);\n\n\t\t\tif ( updates.size ) {\n\t\t\t\tif ( ! nextDerivedBlockEditingModes ) {\n\t\t\t\t\tnextDerivedBlockEditingModes = new Map( [\n\t\t\t\t\t\t...( prevDerivedBlockEditingModes?.size\n\t\t\t\t\t\t\t? prevDerivedBlockEditingModes\n\t\t\t\t\t\t\t: [] ),\n\t\t\t\t\t\t...updates,\n\t\t\t\t\t] );\n\t\t\t\t} else {\n\t\t\t\t\tnextDerivedBlockEditingModes = new Map( [\n\t\t\t\t\t\t...( nextDerivedBlockEditingModes?.size\n\t\t\t\t\t\t\t? nextDerivedBlockEditingModes\n\t\t\t\t\t\t\t: [] ),\n\t\t\t\t\t\t...updates,\n\t\t\t\t\t] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n\n\treturn nextDerivedBlockEditingModes;\n}\n\n/**\n * Higher-order reducer that adds derived block editing modes to the state.\n *\n * This function wraps a reducer and enhances it to handle actions that affect\n * block editing modes. It updates the derivedBlockEditingModes in the state\n * based on various actions such as adding, removing, or moving blocks, or changing\n * the editor mode.\n *\n * @param {Function} reducer The original reducer function to be wrapped.\n * @return {Function} A new reducer function that includes derived block editing modes handling.\n */\nexport function withDerivedBlockEditingModes( reducer ) {\n\treturn ( state, action ) => {\n\t\tconst nextState = reducer( state, action );\n\n\t\t// An exception is needed here to still recompute the block editing modes when\n\t\t// the editor mode changes since the editor mode isn't stored within the\n\t\t// block editor state and changing it won't trigger an altered new state.\n\t\tif ( action.type !== 'SET_EDITOR_MODE' && nextState === state ) {\n\t\t\treturn state;\n\t\t}\n\n\t\tswitch ( action.type ) {\n\t\t\tcase 'REMOVE_BLOCKS': {\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\tremovedClientIds: action.clientIds,\n\t\t\t\t\t\tisNavMode: false,\n\t\t\t\t\t} );\n\t\t\t\tconst nextDerivedNavModeBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\tremovedClientIds: action.clientIds,\n\t\t\t\t\t\tisNavMode: true,\n\t\t\t\t\t} );\n\n\t\t\t\tif (\n\t\t\t\t\tnextDerivedBlockEditingModes ||\n\t\t\t\t\tnextDerivedNavModeBlockEditingModes\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t\tderivedNavModeBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedNavModeBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedNavModeBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'RECEIVE_BLOCKS':\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks: action.blocks,\n\t\t\t\t\t\tisNavMode: false,\n\t\t\t\t\t} );\n\t\t\t\tconst nextDerivedNavModeBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks: action.blocks,\n\t\t\t\t\t\tisNavMode: true,\n\t\t\t\t\t} );\n\n\t\t\t\tif (\n\t\t\t\t\tnextDerivedBlockEditingModes ||\n\t\t\t\t\tnextDerivedNavModeBlockEditingModes\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t\tderivedNavModeBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedNavModeBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedNavModeBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'UPDATE_BLOCK_ATTRIBUTES': {\n\t\t\t\t// Handle unsynced patterns which indicate their contentOnly-ness via\n\t\t\t\t// the `attributes.metadata.patternName` property.\n\t\t\t\t// Check when this is added or removed and update blockEditingModes.\n\t\t\t\tconst addedBlocks = [];\n\t\t\t\tconst removedClientIds = [];\n\n\t\t\t\tfor ( const clientId of action?.clientIds ) {\n\t\t\t\t\tconst attributes = action.options?.uniqueByBlock\n\t\t\t\t\t\t? action.attributes[ clientId ]\n\t\t\t\t\t\t: action.attributes;\n\n\t\t\t\t\tif ( ! attributes ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t// patternName is switching from falsy to truthy, indicating\n\t\t\t\t\t\t// this block is becoming an unsynced pattern.\n\t\t\t\t\t\tattributes.metadata?.patternName &&\n\t\t\t\t\t\t! state.blocks.attributes.get( clientId )?.metadata\n\t\t\t\t\t\t\t?.patternName\n\t\t\t\t\t) {\n\t\t\t\t\t\taddedBlocks.push(\n\t\t\t\t\t\t\tnextState.blocks.tree.get( clientId )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\t// patternName is switching from truthy to falsy, this block is becoming\n\t\t\t\t\t\t// a regular block but was an unsynced pattern.\n\t\t\t\t\t\t// Check that `metadata` is part of the included attributes, as\n\t\t\t\t\t\t// `updateBlockAttributes` merges attributes, if it isn't present\n\t\t\t\t\t\t// the previous `metadata` would be retained.\n\t\t\t\t\t\tattributes.metadata &&\n\t\t\t\t\t\t! attributes.metadata?.patternName &&\n\t\t\t\t\t\tstate.blocks.attributes.get( clientId )?.metadata\n\t\t\t\t\t\t\t?.patternName\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Include it in 'removedClientIds'.\n\t\t\t\t\t\tremovedClientIds.push( clientId );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( ! addedBlocks?.length && ! removedClientIds?.length ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks,\n\t\t\t\t\t\tremovedClientIds,\n\t\t\t\t\t\tisNavMode: false,\n\t\t\t\t\t} );\n\t\t\t\tconst nextDerivedNavModeBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks,\n\t\t\t\t\t\tremovedClientIds,\n\t\t\t\t\t\tisNavMode: true,\n\t\t\t\t\t} );\n\n\t\t\t\tif (\n\t\t\t\t\tnextDerivedBlockEditingModes ||\n\t\t\t\t\tnextDerivedNavModeBlockEditingModes\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t\tderivedNavModeBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedNavModeBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedNavModeBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'UPDATE_BLOCK_LIST_SETTINGS': {\n\t\t\t\t// Handle the addition and removal of contentOnly template locked blocks.\n\t\t\t\tconst addedBlocks = [];\n\t\t\t\tconst removedClientIds = [];\n\n\t\t\t\tconst updates =\n\t\t\t\t\ttypeof action.clientId === 'string'\n\t\t\t\t\t\t? { [ action.clientId ]: action.settings }\n\t\t\t\t\t\t: action.clientId;\n\n\t\t\t\tfor ( const clientId in updates ) {\n\t\t\t\t\tconst isNewContentOnlyBlock =\n\t\t\t\t\t\tstate.blockListSettings[ clientId ]?.templateLock !==\n\t\t\t\t\t\t\t'contentOnly' &&\n\t\t\t\t\t\tnextState.blockListSettings[ clientId ]\n\t\t\t\t\t\t\t?.templateLock === 'contentOnly';\n\n\t\t\t\t\tconst wasContentOnlyBlock =\n\t\t\t\t\t\tstate.blockListSettings[ clientId ]?.templateLock ===\n\t\t\t\t\t\t\t'contentOnly' &&\n\t\t\t\t\t\tnextState.blockListSettings[ clientId ]\n\t\t\t\t\t\t\t?.templateLock !== 'contentOnly';\n\n\t\t\t\t\tif ( isNewContentOnlyBlock ) {\n\t\t\t\t\t\taddedBlocks.push(\n\t\t\t\t\t\t\tnextState.blocks.tree.get( clientId )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( wasContentOnlyBlock ) {\n\t\t\t\t\t\tremovedClientIds.push( clientId );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( ! addedBlocks.length && ! removedClientIds.length ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks,\n\t\t\t\t\t\tremovedClientIds,\n\t\t\t\t\t\tisNavMode: false,\n\t\t\t\t\t} );\n\t\t\t\tconst nextDerivedNavModeBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks,\n\t\t\t\t\t\tremovedClientIds,\n\t\t\t\t\t\tisNavMode: true,\n\t\t\t\t\t} );\n\n\t\t\t\tif (\n\t\t\t\t\tnextDerivedBlockEditingModes ||\n\t\t\t\t\tnextDerivedNavModeBlockEditingModes\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t\tderivedNavModeBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedNavModeBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedNavModeBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'SET_BLOCK_EDITING_MODE':\n\t\t\tcase 'UNSET_BLOCK_EDITING_MODE':\n\t\t\tcase 'SET_HAS_CONTROLLED_INNER_BLOCKS': {\n\t\t\t\tconst updatedBlock = getBlockTreeBlock(\n\t\t\t\t\tnextState,\n\t\t\t\t\taction.clientId\n\t\t\t\t);\n\n\t\t\t\t// The block might have been removed in which case it'll be\n\t\t\t\t// handled by the `REMOVE_BLOCKS` action.\n\t\t\t\tif ( ! updatedBlock ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\tremovedClientIds: [ action.clientId ],\n\t\t\t\t\t\taddedBlocks: [ updatedBlock ],\n\t\t\t\t\t\tisNavMode: false,\n\t\t\t\t\t} );\n\t\t\t\tconst nextDerivedNavModeBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\tremovedClientIds: [ action.clientId ],\n\t\t\t\t\t\taddedBlocks: [ updatedBlock ],\n\t\t\t\t\t\tisNavMode: true,\n\t\t\t\t\t} );\n\n\t\t\t\tif (\n\t\t\t\t\tnextDerivedBlockEditingModes ||\n\t\t\t\t\tnextDerivedNavModeBlockEditingModes\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t\tderivedNavModeBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedNavModeBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedNavModeBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'REPLACE_BLOCKS': {\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks: action.blocks,\n\t\t\t\t\t\tremovedClientIds: action.clientIds,\n\t\t\t\t\t\tisNavMode: false,\n\t\t\t\t\t} );\n\t\t\t\tconst nextDerivedNavModeBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks: action.blocks,\n\t\t\t\t\t\tremovedClientIds: action.clientIds,\n\t\t\t\t\t\tisNavMode: true,\n\t\t\t\t\t} );\n\n\t\t\t\tif (\n\t\t\t\t\tnextDerivedBlockEditingModes ||\n\t\t\t\t\tnextDerivedNavModeBlockEditingModes\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t\tderivedNavModeBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedNavModeBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedNavModeBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'REPLACE_INNER_BLOCKS': {\n\t\t\t\t// Get the clientIds of the blocks that are being replaced\n\t\t\t\t// from the old state, before they were removed.\n\t\t\t\tconst removedClientIds = state.blocks.order.get(\n\t\t\t\t\taction.rootClientId\n\t\t\t\t);\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks: action.blocks,\n\t\t\t\t\t\tremovedClientIds,\n\t\t\t\t\t\tisNavMode: false,\n\t\t\t\t\t} );\n\t\t\t\tconst nextDerivedNavModeBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks: action.blocks,\n\t\t\t\t\t\tremovedClientIds,\n\t\t\t\t\t\tisNavMode: true,\n\t\t\t\t\t} );\n\n\t\t\t\tif (\n\t\t\t\t\tnextDerivedBlockEditingModes ||\n\t\t\t\t\tnextDerivedNavModeBlockEditingModes\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t\tderivedNavModeBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedNavModeBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedNavModeBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'MOVE_BLOCKS_TO_POSITION': {\n\t\t\t\tconst addedBlocks = action.clientIds.map( ( clientId ) => {\n\t\t\t\t\treturn nextState.blocks.byClientId.get( clientId );\n\t\t\t\t} );\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks,\n\t\t\t\t\t\tremovedClientIds: action.clientIds,\n\t\t\t\t\t\tisNavMode: false,\n\t\t\t\t\t} );\n\t\t\t\tconst nextDerivedNavModeBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks,\n\t\t\t\t\t\tremovedClientIds: action.clientIds,\n\t\t\t\t\t\tisNavMode: true,\n\t\t\t\t\t} );\n\n\t\t\t\tif (\n\t\t\t\t\tnextDerivedBlockEditingModes ||\n\t\t\t\t\tnextDerivedNavModeBlockEditingModes\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t\tderivedNavModeBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedNavModeBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedNavModeBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'UPDATE_SETTINGS': {\n\t\t\t\t// Recompute the entire tree if the section root changes.\n\t\t\t\tif (\n\t\t\t\t\tstate?.settings?.[ sectionRootClientIdKey ] !==\n\t\t\t\t\tnextState?.settings?.[ sectionRootClientIdKey ]\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tgetDerivedBlockEditingModesForTree(\n\t\t\t\t\t\t\t\tnextState,\n\t\t\t\t\t\t\t\tfalse /* Nav mode off */\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\tderivedNavModeBlockEditingModes:\n\t\t\t\t\t\t\tgetDerivedBlockEditingModesForTree(\n\t\t\t\t\t\t\t\tnextState,\n\t\t\t\t\t\t\t\ttrue /* Nav mode on */\n\t\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'RESET_BLOCKS':\n\t\t\tcase 'SET_EDITOR_MODE':\n\t\t\tcase 'RESET_ZOOM_LEVEL':\n\t\t\tcase 'SET_ZOOM_LEVEL': {\n\t\t\t\t// Recompute the entire tree if the editor mode or zoom level changes,\n\t\t\t\t// or if all the blocks are reset.\n\t\t\t\treturn {\n\t\t\t\t\t...nextState,\n\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\tgetDerivedBlockEditingModesForTree(\n\t\t\t\t\t\t\tnextState,\n\t\t\t\t\t\t\tfalse /* Nav mode off */\n\t\t\t\t\t\t),\n\t\t\t\t\tderivedNavModeBlockEditingModes:\n\t\t\t\t\t\tgetDerivedBlockEditingModesForTree(\n\t\t\t\t\t\t\tnextState,\n\t\t\t\t\t\t\ttrue /* Nav mode on */\n\t\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// If there's no change, the derivedBlockEditingModes from the previous\n\t\t// state need to be preserved.\n\t\tnextState.derivedBlockEditingModes =\n\t\t\tstate?.derivedBlockEditingModes ?? new Map();\n\t\tnextState.derivedNavModeBlockEditingModes =\n\t\t\tstate?.derivedNavModeBlockEditingModes ?? new Map();\n\n\t\treturn nextState;\n\t};\n}\n\nfunction withAutomaticChangeReset( reducer ) {\n\treturn ( state, action ) => {\n\t\tconst nextState = reducer( state, action );\n\n\t\tif ( ! state ) {\n\t\t\treturn nextState;\n\t\t}\n\n\t\t// Take over the last value without creating a new reference.\n\t\tnextState.automaticChangeStatus = state.automaticChangeStatus;\n\n\t\tif ( action.type === 'MARK_AUTOMATIC_CHANGE' ) {\n\t\t\treturn {\n\t\t\t\t...nextState,\n\t\t\t\tautomaticChangeStatus: 'pending',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\taction.type === 'MARK_AUTOMATIC_CHANGE_FINAL' &&\n\t\t\tstate.automaticChangeStatus === 'pending'\n\t\t) {\n\t\t\treturn {\n\t\t\t\t...nextState,\n\t\t\t\tautomaticChangeStatus: 'final',\n\t\t\t};\n\t\t}\n\n\t\t// If there's a change that doesn't affect blocks or selection, maintain\n\t\t// the current status.\n\t\tif (\n\t\t\tnextState.blocks === state.blocks &&\n\t\t\tnextState.selection === state.selection\n\t\t) {\n\t\t\treturn nextState;\n\t\t}\n\n\t\t// As long as the state is not final, ignore any selection changes.\n\t\tif (\n\t\t\tnextState.automaticChangeStatus !== 'final' &&\n\t\t\tnextState.selection !== state.selection\n\t\t) {\n\t\t\treturn nextState;\n\t\t}\n\n\t\t// Reset the status if blocks change or selection changes (when status is final).\n\t\treturn {\n\t\t\t...nextState,\n\t\t\tautomaticChangeStatus: undefined,\n\t\t};\n\t};\n}\n\nexport default pipe(\n\twithDerivedBlockEditingModes,\n\twithAutomaticChangeReset\n)( combinedReducers );\n"],"mappings":"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","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/store/reducer.js"],
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { pipe } from '@wordpress/compose';\nimport { combineReducers, select } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport {\n\tstore as blocksStore,\n\tprivateApis as blocksPrivateApis,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { PREFERENCES_DEFAULTS, SETTINGS_DEFAULTS } from './defaults';\nimport { insertAt, moveTo } from './array';\nimport { sectionRootClientIdKey } from './private-keys';\nimport { unlock } from '../lock-unlock';\n\nconst { isContentBlock } = unlock( blocksPrivateApis );\n\nconst identity = ( x ) => x;\n\n/**\n * Given an array of blocks, returns an object where each key is a nesting\n * context, the value of which is an array of block client IDs existing within\n * that nesting context.\n *\n * @param {Array} blocks Blocks to map.\n * @param {?string} rootClientId Assumed root client ID.\n *\n * @return {Object} Block order map object.\n */\nfunction mapBlockOrder( blocks, rootClientId = '' ) {\n\tconst result = new Map();\n\tconst current = [];\n\tresult.set( rootClientId, current );\n\tblocks.forEach( ( block ) => {\n\t\tconst { clientId, innerBlocks } = block;\n\t\tcurrent.push( clientId );\n\t\tmapBlockOrder( innerBlocks, clientId ).forEach(\n\t\t\t( order, subClientId ) => {\n\t\t\t\tresult.set( subClientId, order );\n\t\t\t}\n\t\t);\n\t} );\n\treturn result;\n}\n\n/**\n * Given an array of blocks, returns an object where each key contains\n * the clientId of the block and the value is the parent of the block.\n *\n * @param {Array} blocks Blocks to map.\n * @param {?string} rootClientId Assumed root client ID.\n *\n * @return {Object} Block order map object.\n */\nfunction mapBlockParents( blocks, rootClientId = '' ) {\n\tconst result = [];\n\tconst stack = [ [ rootClientId, blocks ] ];\n\twhile ( stack.length ) {\n\t\tconst [ parent, currentBlocks ] = stack.shift();\n\t\tcurrentBlocks.forEach( ( { innerBlocks, ...block } ) => {\n\t\t\tresult.push( [ block.clientId, parent ] );\n\t\t\tif ( innerBlocks?.length ) {\n\t\t\t\tstack.push( [ block.clientId, innerBlocks ] );\n\t\t\t}\n\t\t} );\n\t}\n\treturn result;\n}\n\n/**\n * Helper method to iterate through all blocks, recursing into inner blocks,\n * applying a transformation function to each one.\n * Returns a flattened object with the transformed blocks.\n *\n * @param {Array} blocks Blocks to flatten.\n * @param {Function} transform Transforming function to be applied to each block.\n *\n * @return {Array} Flattened object.\n */\nfunction flattenBlocks( blocks, transform = identity ) {\n\tconst result = [];\n\n\tconst stack = [ ...blocks ];\n\twhile ( stack.length ) {\n\t\tconst { innerBlocks, ...block } = stack.shift();\n\t\tstack.push( ...innerBlocks );\n\t\tresult.push( [ block.clientId, transform( block ) ] );\n\t}\n\n\treturn result;\n}\n\nfunction getFlattenedClientIds( blocks ) {\n\tconst result = {};\n\tconst stack = [ ...blocks ];\n\twhile ( stack.length ) {\n\t\tconst { innerBlocks, ...block } = stack.shift();\n\t\tstack.push( ...innerBlocks );\n\t\tresult[ block.clientId ] = true;\n\t}\n\n\treturn result;\n}\n\n/**\n * Given an array of blocks, returns an object containing all blocks, without\n * attributes, recursing into inner blocks. Keys correspond to the block client\n * ID, the value of which is the attributes object.\n *\n * @param {Array} blocks Blocks to flatten.\n *\n * @return {Array} Flattened block attributes object.\n */\nfunction getFlattenedBlocksWithoutAttributes( blocks ) {\n\treturn flattenBlocks( blocks, ( block ) => {\n\t\tconst { attributes, ...restBlock } = block;\n\t\treturn restBlock;\n\t} );\n}\n\n/**\n * Given an array of blocks, returns an object containing all block attributes,\n * recursing into inner blocks. Keys correspond to the block client ID, the\n * value of which is the attributes object.\n *\n * @param {Array} blocks Blocks to flatten.\n *\n * @return {Array} Flattened block attributes object.\n */\nfunction getFlattenedBlockAttributes( blocks ) {\n\treturn flattenBlocks( blocks, ( block ) => block.attributes );\n}\n\n/**\n * Returns true if the two object arguments have the same keys, or false\n * otherwise.\n *\n * @param {Object} a First object.\n * @param {Object} b Second object.\n *\n * @return {boolean} Whether the two objects have the same keys.\n */\nexport function hasSameKeys( a, b ) {\n\treturn fastDeepEqual( Object.keys( a ), Object.keys( b ) );\n}\n\n/**\n * Returns true if, given the currently dispatching action and the previously\n * dispatched action, the two actions are updating the same block attribute, or\n * false otherwise.\n *\n * @param {Object} action Currently dispatching action.\n * @param {Object} lastAction Previously dispatched action.\n *\n * @return {boolean} Whether actions are updating the same block attribute.\n */\nexport function isUpdatingSameBlockAttribute( action, lastAction ) {\n\treturn (\n\t\taction.type === 'UPDATE_BLOCK_ATTRIBUTES' &&\n\t\tlastAction !== undefined &&\n\t\tlastAction.type === 'UPDATE_BLOCK_ATTRIBUTES' &&\n\t\tfastDeepEqual( action.clientIds, lastAction.clientIds ) &&\n\t\thasSameKeys( action.attributes, lastAction.attributes )\n\t);\n}\n\nfunction updateBlockTreeForBlocks( state, blocks ) {\n\tconst treeToUpdate = state.tree;\n\tconst stack = [ ...blocks ];\n\tconst flattenedBlocks = [ ...blocks ];\n\twhile ( stack.length ) {\n\t\tconst block = stack.shift();\n\t\tstack.push( ...block.innerBlocks );\n\t\tflattenedBlocks.push( ...block.innerBlocks );\n\t}\n\t// Create objects before mutating them, that way it's always defined.\n\tfor ( const block of flattenedBlocks ) {\n\t\ttreeToUpdate.set( block.clientId, {} );\n\t}\n\tfor ( const block of flattenedBlocks ) {\n\t\ttreeToUpdate.set(\n\t\t\tblock.clientId,\n\t\t\tObject.assign( treeToUpdate.get( block.clientId ), {\n\t\t\t\t...state.byClientId.get( block.clientId ),\n\t\t\t\tattributes: state.attributes.get( block.clientId ),\n\t\t\t\tinnerBlocks: block.innerBlocks.map( ( subBlock ) =>\n\t\t\t\t\ttreeToUpdate.get( subBlock.clientId )\n\t\t\t\t),\n\t\t\t} )\n\t\t);\n\t}\n}\n\nfunction updateParentInnerBlocksInTree(\n\tstate,\n\tupdatedClientIds,\n\tupdateChildrenOfUpdatedClientIds = false\n) {\n\tconst treeToUpdate = state.tree;\n\tconst uncontrolledParents = new Set( [] );\n\tconst controlledParents = new Set();\n\tfor ( const clientId of updatedClientIds ) {\n\t\tlet current = updateChildrenOfUpdatedClientIds\n\t\t\t? clientId\n\t\t\t: state.parents.get( clientId );\n\t\tdo {\n\t\t\tif ( state.controlledInnerBlocks[ current ] ) {\n\t\t\t\t// Should stop on controlled blocks.\n\t\t\t\t// If we reach a controlled parent, break out of the loop.\n\t\t\t\tcontrolledParents.add( current );\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\t// Else continue traversing up through parents.\n\t\t\t\tuncontrolledParents.add( current );\n\t\t\t\tcurrent = state.parents.get( current );\n\t\t\t}\n\t\t} while ( current !== undefined );\n\t}\n\n\t// To make sure the order of assignments doesn't matter,\n\t// we first create empty objects and mutates the inner blocks later.\n\tfor ( const clientId of uncontrolledParents ) {\n\t\ttreeToUpdate.set( clientId, { ...treeToUpdate.get( clientId ) } );\n\t}\n\tfor ( const clientId of uncontrolledParents ) {\n\t\ttreeToUpdate.get( clientId ).innerBlocks = (\n\t\t\tstate.order.get( clientId ) || []\n\t\t).map( ( subClientId ) => treeToUpdate.get( subClientId ) );\n\t}\n\n\t// Controlled parent blocks, need a dedicated key for their inner blocks\n\t// to be used when doing getBlocks( controlledBlockClientId ).\n\tfor ( const clientId of controlledParents ) {\n\t\ttreeToUpdate.set( 'controlled||' + clientId, {\n\t\t\tinnerBlocks: ( state.order.get( clientId ) || [] ).map(\n\t\t\t\t( subClientId ) => treeToUpdate.get( subClientId )\n\t\t\t),\n\t\t} );\n\t}\n}\n\n/**\n * Higher-order reducer intended to compute full block objects key for each block in the post.\n * This is a denormalization to optimize the performance of the getBlock selectors and avoid\n * recomputing the block objects and avoid heavy memoization.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withBlockTree =\n\t( reducer ) =>\n\t( state = {}, action ) => {\n\t\tconst newState = reducer( state, action );\n\n\t\tif ( newState === state ) {\n\t\t\treturn state;\n\t\t}\n\n\t\tnewState.tree = state.tree ? state.tree : new Map();\n\t\tswitch ( action.type ) {\n\t\t\tcase 'RECEIVE_BLOCKS':\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\tupdateBlockTreeForBlocks( newState, action.blocks );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\taction.rootClientId ? [ action.rootClientId ] : [ '' ],\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'UPDATE_BLOCK':\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\tnewState.tree.set( action.clientId, {\n\t\t\t\t\t...newState.tree.get( action.clientId ),\n\t\t\t\t\t...newState.byClientId.get( action.clientId ),\n\t\t\t\t\tattributes: newState.attributes.get( action.clientId ),\n\t\t\t\t} );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\t[ action.clientId ],\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'SYNC_DERIVED_BLOCK_ATTRIBUTES':\n\t\t\tcase 'UPDATE_BLOCK_ATTRIBUTES': {\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\taction.clientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.tree.set( clientId, {\n\t\t\t\t\t\t...newState.tree.get( clientId ),\n\t\t\t\t\t\tattributes: newState.attributes.get( clientId ),\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\taction.clientIds,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst inserterClientIds = getFlattenedClientIds(\n\t\t\t\t\taction.blocks\n\t\t\t\t);\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\taction.replacedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.tree.delete( clientId );\n\t\t\t\t\t// Controlled inner blocks are only removed\n\t\t\t\t\t// if the block doesn't move to another position\n\t\t\t\t\t// otherwise their content will be lost.\n\t\t\t\t\tif ( ! inserterClientIds[ clientId ] ) {\n\t\t\t\t\t\tnewState.tree.delete( 'controlled||' + clientId );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tupdateBlockTreeForBlocks( newState, action.blocks );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\taction.blocks.map( ( b ) => b.clientId ),\n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t\t// If there are no replaced blocks, it means we're removing blocks so we need to update their parent.\n\t\t\t\tconst parentsOfRemovedBlocks = [];\n\t\t\t\tfor ( const clientId of action.clientIds ) {\n\t\t\t\t\tconst parentId = state.parents.get( clientId );\n\t\t\t\t\tif (\n\t\t\t\t\t\tparentId !== undefined &&\n\t\t\t\t\t\t( parentId === '' ||\n\t\t\t\t\t\t\tnewState.byClientId.get( parentId ) )\n\t\t\t\t\t) {\n\t\t\t\t\t\tparentsOfRemovedBlocks.push( parentId );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\tparentsOfRemovedBlocks,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':\n\t\t\t\tconst parentsOfRemovedBlocks = [];\n\t\t\t\tfor ( const clientId of action.clientIds ) {\n\t\t\t\t\tconst parentId = state.parents.get( clientId );\n\t\t\t\t\tif (\n\t\t\t\t\t\tparentId !== undefined &&\n\t\t\t\t\t\t( parentId === '' ||\n\t\t\t\t\t\t\tnewState.byClientId.get( parentId ) )\n\t\t\t\t\t) {\n\t\t\t\t\t\tparentsOfRemovedBlocks.push( parentId );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\taction.removedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.tree.delete( clientId );\n\t\t\t\t\tnewState.tree.delete( 'controlled||' + clientId );\n\t\t\t\t} );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\tparentsOfRemovedBlocks,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'MOVE_BLOCKS_TO_POSITION': {\n\t\t\t\tconst updatedBlockUids = [];\n\t\t\t\tif ( action.fromRootClientId ) {\n\t\t\t\t\tupdatedBlockUids.push( action.fromRootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tupdatedBlockUids.push( '' );\n\t\t\t\t}\n\t\t\t\tif ( action.toRootClientId ) {\n\t\t\t\t\tupdatedBlockUids.push( action.toRootClientId );\n\t\t\t\t}\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\tupdatedBlockUids,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'MOVE_BLOCKS_UP':\n\t\t\tcase 'MOVE_BLOCKS_DOWN': {\n\t\t\t\tconst updatedBlockUids = [\n\t\t\t\t\taction.rootClientId ? action.rootClientId : '',\n\t\t\t\t];\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\tupdatedBlockUids,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'SAVE_REUSABLE_BLOCK_SUCCESS': {\n\t\t\t\tconst updatedBlockUids = [];\n\t\t\t\tnewState.attributes.forEach( ( attributes, clientId ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnewState.byClientId.get( clientId ).name ===\n\t\t\t\t\t\t\t'core/block' &&\n\t\t\t\t\t\tattributes.ref === action.updatedId\n\t\t\t\t\t) {\n\t\t\t\t\t\tupdatedBlockUids.push( clientId );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tnewState.tree = new Map( newState.tree );\n\t\t\t\tupdatedBlockUids.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.tree.set( clientId, {\n\t\t\t\t\t\t...newState.byClientId.get( clientId ),\n\t\t\t\t\t\tattributes: newState.attributes.get( clientId ),\n\t\t\t\t\t\tinnerBlocks: newState.tree.get( clientId ).innerBlocks,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t\tupdateParentInnerBlocksInTree(\n\t\t\t\t\tnewState,\n\t\t\t\t\tupdatedBlockUids,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn newState;\n\t};\n\n/**\n * Higher-order reducer intended to augment the blocks reducer, assigning an\n * `isPersistentChange` property value corresponding to whether a change in\n * state can be considered as persistent. All changes are considered persistent\n * except when updating the same block attribute as in the previous action.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nfunction withPersistentBlockChange( reducer ) {\n\tlet lastAction;\n\tlet markNextChangeAsNotPersistent = false;\n\tlet explicitPersistent;\n\n\treturn ( state, action ) => {\n\t\tlet nextState = reducer( state, action );\n\n\t\tlet nextIsPersistentChange;\n\t\tif ( action.type === 'SET_EXPLICIT_PERSISTENT' ) {\n\t\t\texplicitPersistent = action.isPersistentChange;\n\t\t\tnextIsPersistentChange = state.isPersistentChange ?? true;\n\t\t}\n\n\t\tif ( explicitPersistent !== undefined ) {\n\t\t\tnextIsPersistentChange = explicitPersistent;\n\t\t\treturn nextIsPersistentChange === nextState.isPersistentChange\n\t\t\t\t? nextState\n\t\t\t\t: {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tisPersistentChange: nextIsPersistentChange,\n\t\t\t\t };\n\t\t}\n\n\t\tconst isExplicitPersistentChange =\n\t\t\taction.type === 'MARK_LAST_CHANGE_AS_PERSISTENT' ||\n\t\t\tmarkNextChangeAsNotPersistent;\n\n\t\t// Defer to previous state value (or default) unless changing or\n\t\t// explicitly marking as persistent.\n\t\tif ( state === nextState && ! isExplicitPersistentChange ) {\n\t\t\tmarkNextChangeAsNotPersistent =\n\t\t\t\taction.type === 'MARK_NEXT_CHANGE_AS_NOT_PERSISTENT';\n\n\t\t\tnextIsPersistentChange = state?.isPersistentChange ?? true;\n\t\t\tif ( state.isPersistentChange === nextIsPersistentChange ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...nextState,\n\t\t\t\tisPersistentChange: nextIsPersistentChange,\n\t\t\t};\n\t\t}\n\n\t\tnextState = {\n\t\t\t...nextState,\n\t\t\tisPersistentChange: isExplicitPersistentChange\n\t\t\t\t? ! markNextChangeAsNotPersistent\n\t\t\t\t: ! isUpdatingSameBlockAttribute( action, lastAction ),\n\t\t};\n\n\t\t// In comparing against the previous action, consider only those which\n\t\t// would have qualified as one which would have been ignored or not\n\t\t// have resulted in a changed state.\n\t\tlastAction = action;\n\t\tmarkNextChangeAsNotPersistent =\n\t\t\taction.type === 'MARK_NEXT_CHANGE_AS_NOT_PERSISTENT';\n\n\t\treturn nextState;\n\t};\n}\n\n/**\n * Higher-order reducer intended to augment the blocks reducer, assigning an\n * `isIgnoredChange` property value corresponding to whether a change in state\n * can be considered as ignored. A change is considered ignored when the result\n * of an action not incurred by direct user interaction.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nfunction withIgnoredBlockChange( reducer ) {\n\t/**\n\t * Set of action types for which a blocks state change should be ignored.\n\t *\n\t * @type {Set}\n\t */\n\tconst IGNORED_ACTION_TYPES = new Set( [ 'RECEIVE_BLOCKS' ] );\n\n\treturn ( state, action ) => {\n\t\tconst nextState = reducer( state, action );\n\n\t\tif ( nextState !== state ) {\n\t\t\tnextState.isIgnoredChange = IGNORED_ACTION_TYPES.has( action.type );\n\t\t}\n\n\t\treturn nextState;\n\t};\n}\n\n/**\n * Higher-order reducer targeting the combined blocks reducer, augmenting\n * block client IDs in remove action to include cascade of inner blocks.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withInnerBlocksRemoveCascade = ( reducer ) => ( state, action ) => {\n\t// Gets all children which need to be removed.\n\tconst getAllChildren = ( clientIds ) => {\n\t\tlet result = clientIds;\n\t\tfor ( let i = 0; i < result.length; i++ ) {\n\t\t\tif (\n\t\t\t\t! state.order.get( result[ i ] ) ||\n\t\t\t\t( action.keepControlledInnerBlocks &&\n\t\t\t\t\taction.keepControlledInnerBlocks[ result[ i ] ] )\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( result === clientIds ) {\n\t\t\t\tresult = [ ...result ];\n\t\t\t}\n\n\t\t\tresult.push( ...state.order.get( result[ i ] ) );\n\t\t}\n\t\treturn result;\n\t};\n\n\tif ( state ) {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'REMOVE_BLOCKS':\n\t\t\t\taction = {\n\t\t\t\t\t...action,\n\t\t\t\t\ttype: 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN',\n\t\t\t\t\tremovedClientIds: getAllChildren( action.clientIds ),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'REPLACE_BLOCKS':\n\t\t\t\taction = {\n\t\t\t\t\t...action,\n\t\t\t\t\ttype: 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN',\n\t\t\t\t\treplacedClientIds: getAllChildren( action.clientIds ),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn reducer( state, action );\n};\n\n/**\n * Higher-order reducer which targets the combined blocks reducer and handles\n * the `RESET_BLOCKS` action. When dispatched, this action will replace all\n * blocks that exist in the post, leaving blocks that exist only in state (e.g.\n * reusable blocks and blocks controlled by inner blocks controllers) alone.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withBlockReset = ( reducer ) => ( state, action ) => {\n\tif ( action.type === 'RESET_BLOCKS' ) {\n\t\tconst newState = {\n\t\t\t...state,\n\t\t\tbyClientId: new Map(\n\t\t\t\tgetFlattenedBlocksWithoutAttributes( action.blocks )\n\t\t\t),\n\t\t\tattributes: new Map( getFlattenedBlockAttributes( action.blocks ) ),\n\t\t\torder: mapBlockOrder( action.blocks ),\n\t\t\tparents: new Map( mapBlockParents( action.blocks ) ),\n\t\t\tcontrolledInnerBlocks: {},\n\t\t};\n\n\t\tnewState.tree = new Map( state?.tree );\n\t\tupdateBlockTreeForBlocks( newState, action.blocks );\n\t\tnewState.tree.set( '', {\n\t\t\tinnerBlocks: action.blocks.map( ( subBlock ) =>\n\t\t\t\tnewState.tree.get( subBlock.clientId )\n\t\t\t),\n\t\t} );\n\n\t\treturn newState;\n\t}\n\n\treturn reducer( state, action );\n};\n\n/**\n * Higher-order reducer which targets the combined blocks reducer and handles\n * the `REPLACE_INNER_BLOCKS` action. When dispatched, this action the state\n * should become equivalent to the execution of a `REMOVE_BLOCKS` action\n * containing all the child's of the root block followed by the execution of\n * `INSERT_BLOCKS` with the new blocks.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withReplaceInnerBlocks = ( reducer ) => ( state, action ) => {\n\tif ( action.type !== 'REPLACE_INNER_BLOCKS' ) {\n\t\treturn reducer( state, action );\n\t}\n\n\t// Finds every nested inner block controller. We must check the action blocks\n\t// and not just the block parent state because some inner block controllers\n\t// should be deleted if specified, whereas others should not be deleted. If\n\t// a controlled should not be deleted, then we need to avoid deleting its\n\t// inner blocks from the block state because its inner blocks will not be\n\t// attached to the block in the action.\n\tconst nestedControllers = {};\n\tif ( Object.keys( state.controlledInnerBlocks ).length ) {\n\t\tconst stack = [ ...action.blocks ];\n\t\twhile ( stack.length ) {\n\t\t\tconst { innerBlocks, ...block } = stack.shift();\n\t\t\tstack.push( ...innerBlocks );\n\t\t\tif ( !! state.controlledInnerBlocks[ block.clientId ] ) {\n\t\t\t\tnestedControllers[ block.clientId ] = true;\n\t\t\t}\n\t\t}\n\t}\n\n\t// The `keepControlledInnerBlocks` prop will keep the inner blocks of the\n\t// marked block in the block state so that they can be reattached to the\n\t// marked block when we re-insert everything a few lines below.\n\tlet stateAfterBlocksRemoval = state;\n\tif ( state.order.get( action.rootClientId ) ) {\n\t\tstateAfterBlocksRemoval = reducer( stateAfterBlocksRemoval, {\n\t\t\ttype: 'REMOVE_BLOCKS',\n\t\t\tkeepControlledInnerBlocks: nestedControllers,\n\t\t\tclientIds: state.order.get( action.rootClientId ),\n\t\t} );\n\t}\n\tlet stateAfterInsert = stateAfterBlocksRemoval;\n\tif ( action.blocks.length ) {\n\t\tstateAfterInsert = reducer( stateAfterInsert, {\n\t\t\t...action,\n\t\t\ttype: 'INSERT_BLOCKS',\n\t\t\tindex: 0,\n\t\t} );\n\n\t\t// We need to re-attach the controlled inner blocks to the blocks tree and\n\t\t// preserve their block order. Otherwise, an inner block controller's blocks\n\t\t// will be deleted entirely from its entity.\n\t\tconst stateAfterInsertOrder = new Map( stateAfterInsert.order );\n\t\tObject.keys( nestedControllers ).forEach( ( key ) => {\n\t\t\tif ( state.order.get( key ) ) {\n\t\t\t\tstateAfterInsertOrder.set( key, state.order.get( key ) );\n\t\t\t}\n\t\t} );\n\t\tstateAfterInsert.order = stateAfterInsertOrder;\n\t\tstateAfterInsert.tree = new Map( stateAfterInsert.tree );\n\t\tObject.keys( nestedControllers ).forEach( ( _key ) => {\n\t\t\tconst key = `controlled||${ _key }`;\n\t\t\tif ( state.tree.has( key ) ) {\n\t\t\t\tstateAfterInsert.tree.set( key, state.tree.get( key ) );\n\t\t\t}\n\t\t} );\n\t}\n\treturn stateAfterInsert;\n};\n\n/**\n * Higher-order reducer which targets the combined blocks reducer and handles\n * the `SAVE_REUSABLE_BLOCK_SUCCESS` action. This action can't be handled by\n * regular reducers and needs a higher-order reducer since it needs access to\n * both `byClientId` and `attributes` simultaneously.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withSaveReusableBlock = ( reducer ) => ( state, action ) => {\n\tif ( state && action.type === 'SAVE_REUSABLE_BLOCK_SUCCESS' ) {\n\t\tconst { id, updatedId } = action;\n\n\t\t// If a temporary reusable block is saved, we swap the temporary id with the final one.\n\t\tif ( id === updatedId ) {\n\t\t\treturn state;\n\t\t}\n\n\t\tstate = { ...state };\n\t\tstate.attributes = new Map( state.attributes );\n\t\tstate.attributes.forEach( ( attributes, clientId ) => {\n\t\t\tconst { name } = state.byClientId.get( clientId );\n\t\t\tif ( name === 'core/block' && attributes.ref === id ) {\n\t\t\t\tstate.attributes.set( clientId, {\n\t\t\t\t\t...attributes,\n\t\t\t\t\tref: updatedId,\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn reducer( state, action );\n};\n/**\n * Higher-order reducer which removes blocks from state when switching parent block controlled state.\n *\n * @param {Function} reducer Original reducer function.\n *\n * @return {Function} Enhanced reducer function.\n */\nconst withResetControlledBlocks = ( reducer ) => ( state, action ) => {\n\tif ( action.type === 'SET_HAS_CONTROLLED_INNER_BLOCKS' ) {\n\t\t// when switching a block from controlled to uncontrolled or inverse,\n\t\t// we need to remove its content first.\n\t\tconst tempState = reducer( state, {\n\t\t\ttype: 'REPLACE_INNER_BLOCKS',\n\t\t\trootClientId: action.clientId,\n\t\t\tblocks: [],\n\t\t} );\n\t\treturn reducer( tempState, action );\n\t}\n\n\treturn reducer( state, action );\n};\n\n/**\n * Reducer returning the blocks state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const blocks = pipe(\n\tcombineReducers,\n\twithSaveReusableBlock, // Needs to be before withBlockCache.\n\twithBlockTree, // Needs to be before withInnerBlocksRemoveCascade.\n\twithInnerBlocksRemoveCascade,\n\twithReplaceInnerBlocks, // Needs to be after withInnerBlocksRemoveCascade.\n\twithBlockReset,\n\twithPersistentBlockChange,\n\twithIgnoredBlockChange,\n\twithResetControlledBlocks\n)( {\n\t// The state is using a Map instead of a plain object for performance reasons.\n\t// You can run the \"./test/performance.js\" unit test to check the impact\n\t// code changes can have on this reducer.\n\tbyClientId( state = new Map(), action ) {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'RECEIVE_BLOCKS':\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tgetFlattenedBlocksWithoutAttributes( action.blocks ).forEach(\n\t\t\t\t\t( [ key, value ] ) => {\n\t\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t\tcase 'UPDATE_BLOCK': {\n\t\t\t\t// Ignore updates if block isn't known.\n\t\t\t\tif ( ! state.has( action.clientId ) ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\t// Do nothing if only attributes change.\n\t\t\t\tconst { attributes, ...changes } = action.updates;\n\t\t\t\tif ( Object.values( changes ).length === 0 ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tnewState.set( action.clientId, {\n\t\t\t\t\t...state.get( action.clientId ),\n\t\t\t\t\t...changes,\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tif ( ! action.blocks ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.replacedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\n\t\t\t\tgetFlattenedBlocksWithoutAttributes( action.blocks ).forEach(\n\t\t\t\t\t( [ key, value ] ) => {\n\t\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.removedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t},\n\n\t// The state is using a Map instead of a plain object for performance reasons.\n\t// You can run the \"./test/performance.js\" unit test to check the impact\n\t// code changes can have on this reducer.\n\tattributes( state = new Map(), action ) {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'RECEIVE_BLOCKS':\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tgetFlattenedBlockAttributes( action.blocks ).forEach(\n\t\t\t\t\t( [ key, value ] ) => {\n\t\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'UPDATE_BLOCK': {\n\t\t\t\t// Ignore updates if block isn't known or there are no attribute changes.\n\t\t\t\tif (\n\t\t\t\t\t! state.get( action.clientId ) ||\n\t\t\t\t\t! action.updates.attributes\n\t\t\t\t) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tnewState.set( action.clientId, {\n\t\t\t\t\t...state.get( action.clientId ),\n\t\t\t\t\t...action.updates.attributes,\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'SYNC_DERIVED_BLOCK_ATTRIBUTES':\n\t\t\tcase 'UPDATE_BLOCK_ATTRIBUTES': {\n\t\t\t\t// Avoid a state change if none of the block IDs are known.\n\t\t\t\tif ( action.clientIds.every( ( id ) => ! state.get( id ) ) ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tlet hasChange = false;\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tfor ( const clientId of action.clientIds ) {\n\t\t\t\t\tconst updatedAttributeEntries = Object.entries(\n\t\t\t\t\t\t!! action.options?.uniqueByBlock\n\t\t\t\t\t\t\t? action.attributes[ clientId ]\n\t\t\t\t\t\t\t: action.attributes ?? {}\n\t\t\t\t\t);\n\t\t\t\t\tif ( updatedAttributeEntries.length === 0 ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tlet hasUpdatedAttributes = false;\n\t\t\t\t\tconst existingAttributes = state.get( clientId );\n\t\t\t\t\tconst newAttributes = {};\n\t\t\t\t\tupdatedAttributeEntries.forEach( ( [ key, value ] ) => {\n\t\t\t\t\t\tif ( existingAttributes[ key ] !== value ) {\n\t\t\t\t\t\t\thasUpdatedAttributes = true;\n\t\t\t\t\t\t\tnewAttributes[ key ] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\thasChange = hasChange || hasUpdatedAttributes;\n\t\t\t\t\tif ( hasUpdatedAttributes ) {\n\t\t\t\t\t\tnewState.set( clientId, {\n\t\t\t\t\t\t\t...existingAttributes,\n\t\t\t\t\t\t\t...newAttributes,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn hasChange ? newState : state;\n\t\t\t}\n\n\t\t\tcase 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tif ( ! action.blocks ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.replacedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\tgetFlattenedBlockAttributes( action.blocks ).forEach(\n\t\t\t\t\t( [ key, value ] ) => {\n\t\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.removedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t},\n\n\t// The state is using a Map instead of a plain object for performance reasons.\n\t// You can run the \"./test/performance.js\" unit test to check the impact\n\t// code changes can have on this reducer.\n\torder( state = new Map(), action ) {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'RECEIVE_BLOCKS': {\n\t\t\t\tconst blockOrder = mapBlockOrder( action.blocks );\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tblockOrder.forEach( ( order, clientId ) => {\n\t\t\t\t\tif ( clientId !== '' ) {\n\t\t\t\t\t\tnewState.set( clientId, order );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tnewState.set(\n\t\t\t\t\t'',\n\t\t\t\t\t( state.get( '' ) ?? [] ).concat( blockOrder[ '' ] )\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tconst { rootClientId = '' } = action;\n\t\t\t\tconst subState = state.get( rootClientId ) || [];\n\t\t\t\tconst mappedBlocks = mapBlockOrder(\n\t\t\t\t\taction.blocks,\n\t\t\t\t\trootClientId\n\t\t\t\t);\n\t\t\t\tconst { index = subState.length } = action;\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tmappedBlocks.forEach( ( order, clientId ) => {\n\t\t\t\t\tnewState.set( clientId, order );\n\t\t\t\t} );\n\t\t\t\tnewState.set(\n\t\t\t\t\trootClientId,\n\t\t\t\t\tinsertAt(\n\t\t\t\t\t\tsubState,\n\t\t\t\t\t\tmappedBlocks.get( rootClientId ),\n\t\t\t\t\t\tindex\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'MOVE_BLOCKS_TO_POSITION': {\n\t\t\t\tconst {\n\t\t\t\t\tfromRootClientId = '',\n\t\t\t\t\ttoRootClientId = '',\n\t\t\t\t\tclientIds,\n\t\t\t\t} = action;\n\t\t\t\tconst { index = state.get( toRootClientId ).length } = action;\n\n\t\t\t\t// Moving inside the same parent block.\n\t\t\t\tif ( fromRootClientId === toRootClientId ) {\n\t\t\t\t\tconst subState = state.get( toRootClientId );\n\t\t\t\t\tconst fromIndex = subState.indexOf( clientIds[ 0 ] );\n\t\t\t\t\tconst newState = new Map( state );\n\t\t\t\t\tnewState.set(\n\t\t\t\t\t\ttoRootClientId,\n\t\t\t\t\t\tmoveTo(\n\t\t\t\t\t\t\tstate.get( toRootClientId ),\n\t\t\t\t\t\t\tfromIndex,\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\tclientIds.length\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t\treturn newState;\n\t\t\t\t}\n\n\t\t\t\t// Moving from a parent block to another.\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tnewState.set(\n\t\t\t\t\tfromRootClientId,\n\t\t\t\t\tstate\n\t\t\t\t\t\t.get( fromRootClientId )\n\t\t\t\t\t\t?.filter( ( id ) => ! clientIds.includes( id ) ) ?? []\n\t\t\t\t);\n\t\t\t\tnewState.set(\n\t\t\t\t\ttoRootClientId,\n\t\t\t\t\tinsertAt( state.get( toRootClientId ), clientIds, index )\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'MOVE_BLOCKS_UP': {\n\t\t\t\tconst { clientIds, rootClientId = '' } = action;\n\t\t\t\tconst firstClientId = clientIds[ 0 ];\n\t\t\t\tconst subState = state.get( rootClientId );\n\n\t\t\t\tif ( ! subState.length || firstClientId === subState[ 0 ] ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst firstIndex = subState.indexOf( firstClientId );\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tnewState.set(\n\t\t\t\t\trootClientId,\n\t\t\t\t\tmoveTo(\n\t\t\t\t\t\tsubState,\n\t\t\t\t\t\tfirstIndex,\n\t\t\t\t\t\tfirstIndex - 1,\n\t\t\t\t\t\tclientIds.length\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'MOVE_BLOCKS_DOWN': {\n\t\t\t\tconst { clientIds, rootClientId = '' } = action;\n\t\t\t\tconst firstClientId = clientIds[ 0 ];\n\t\t\t\tconst lastClientId = clientIds[ clientIds.length - 1 ];\n\t\t\t\tconst subState = state.get( rootClientId );\n\n\t\t\t\tif (\n\t\t\t\t\t! subState.length ||\n\t\t\t\t\tlastClientId === subState[ subState.length - 1 ]\n\t\t\t\t) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst firstIndex = subState.indexOf( firstClientId );\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tnewState.set(\n\t\t\t\t\trootClientId,\n\t\t\t\t\tmoveTo(\n\t\t\t\t\t\tsubState,\n\t\t\t\t\t\tfirstIndex,\n\t\t\t\t\t\tfirstIndex + 1,\n\t\t\t\t\t\tclientIds.length\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst { clientIds } = action;\n\t\t\t\tif ( ! action.blocks ) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\tconst mappedBlocks = mapBlockOrder( action.blocks );\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.replacedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\tmappedBlocks.forEach( ( order, clientId ) => {\n\t\t\t\t\tif ( clientId !== '' ) {\n\t\t\t\t\t\tnewState.set( clientId, order );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tnewState.forEach( ( order, clientId ) => {\n\t\t\t\t\tconst newSubOrder = Object.values( order ).reduce(\n\t\t\t\t\t\t( result, subClientId ) => {\n\t\t\t\t\t\t\tif ( subClientId === clientIds[ 0 ] ) {\n\t\t\t\t\t\t\t\treturn [ ...result, ...mappedBlocks.get( '' ) ];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( clientIds.indexOf( subClientId ) === -1 ) {\n\t\t\t\t\t\t\t\tresult.push( subClientId );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[]\n\t\t\t\t\t);\n\t\t\t\t\tnewState.set( clientId, newSubOrder );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\t// Remove inner block ordering for removed blocks.\n\t\t\t\taction.removedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\tnewState.forEach( ( order, clientId ) => {\n\t\t\t\t\tconst newSubOrder =\n\t\t\t\t\t\torder?.filter(\n\t\t\t\t\t\t\t( id ) => ! action.removedClientIds.includes( id )\n\t\t\t\t\t\t) ?? [];\n\t\t\t\t\tif ( newSubOrder.length !== order.length ) {\n\t\t\t\t\t\tnewState.set( clientId, newSubOrder );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t},\n\n\t// While technically redundant data as the inverse of `order`, it serves as\n\t// an optimization for the selectors which derive the ancestry of a block.\n\tparents( state = new Map(), action ) {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'RECEIVE_BLOCKS': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tmapBlockParents( action.blocks ).forEach(\n\t\t\t\t\t( [ key, value ] ) => {\n\t\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\tmapBlockParents(\n\t\t\t\t\taction.blocks,\n\t\t\t\t\taction.rootClientId || ''\n\t\t\t\t).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t\tcase 'MOVE_BLOCKS_TO_POSITION': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.clientIds.forEach( ( id ) => {\n\t\t\t\t\tnewState.set( id, action.toRootClientId || '' );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\tcase 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.replacedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\tmapBlockParents(\n\t\t\t\t\taction.blocks,\n\t\t\t\t\tstate.get( action.clientIds[ 0 ] )\n\t\t\t\t).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tnewState.set( key, value );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t\tcase 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN': {\n\t\t\t\tconst newState = new Map( state );\n\t\t\t\taction.removedClientIds.forEach( ( clientId ) => {\n\t\t\t\t\tnewState.delete( clientId );\n\t\t\t\t} );\n\t\t\t\treturn newState;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t},\n\n\tcontrolledInnerBlocks(\n\t\tstate = {},\n\t\t{ type, clientId, hasControlledInnerBlocks }\n\t) {\n\t\tif ( type === 'SET_HAS_CONTROLLED_INNER_BLOCKS' ) {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ clientId ]: hasControlledInnerBlocks,\n\t\t\t};\n\t\t}\n\t\treturn state;\n\t},\n} );\n\n/**\n * Reducer returning visibility status of block interface.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function isBlockInterfaceHidden( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'HIDE_BLOCK_INTERFACE':\n\t\t\treturn true;\n\n\t\tcase 'SHOW_BLOCK_INTERFACE':\n\t\t\treturn false;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning typing state.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function isTyping( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'START_TYPING':\n\t\t\treturn true;\n\n\t\tcase 'STOP_TYPING':\n\t\t\treturn false;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning dragging state. It is possible for a user to be dragging\n * data from outside of the editor, so this state is separate from `draggedBlocks`.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function isDragging( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'START_DRAGGING':\n\t\t\treturn true;\n\n\t\tcase 'STOP_DRAGGING':\n\t\t\treturn false;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning dragged block client id.\n *\n * @param {string[]} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string[]} Updated state.\n */\nexport function draggedBlocks( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'START_DRAGGING_BLOCKS':\n\t\t\treturn action.clientIds;\n\n\t\tcase 'STOP_DRAGGING_BLOCKS':\n\t\t\treturn [];\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer tracking the visible blocks.\n *\n * @param {Record<string,boolean>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string,boolean>} Block visibility.\n */\nexport function blockVisibility( state = {}, action ) {\n\tif ( action.type === 'SET_BLOCK_VISIBILITY' ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.updates,\n\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Internal helper reducer for selectionStart and selectionEnd. Can hold a block\n * selection, represented by an object with property clientId.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nfunction selectionHelper( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'CLEAR_SELECTED_BLOCK': {\n\t\t\tif ( state.clientId ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\treturn state;\n\t\t}\n\t\tcase 'SELECT_BLOCK':\n\t\t\tif ( action.clientId === state.clientId ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn { clientId: action.clientId };\n\t\tcase 'REPLACE_INNER_BLOCKS':\n\t\tcase 'INSERT_BLOCKS': {\n\t\t\tif ( ! action.updateSelection || ! action.blocks.length ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn { clientId: action.blocks[ 0 ].clientId };\n\t\t}\n\t\tcase 'REMOVE_BLOCKS':\n\t\t\tif (\n\t\t\t\t! action.clientIds ||\n\t\t\t\t! action.clientIds.length ||\n\t\t\t\taction.clientIds.indexOf( state.clientId ) === -1\n\t\t\t) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn {};\n\t\tcase 'REPLACE_BLOCKS': {\n\t\t\tif ( action.clientIds.indexOf( state.clientId ) === -1 ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\tconst blockToSelect =\n\t\t\t\taction.blocks[ action.indexToSelect ] ||\n\t\t\t\taction.blocks[ action.blocks.length - 1 ];\n\n\t\t\tif ( ! blockToSelect ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tif ( blockToSelect.clientId === state.clientId ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn { clientId: blockToSelect.clientId };\n\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the selection state.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function selection( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SELECTION_CHANGE':\n\t\t\tif ( action.clientId ) {\n\t\t\t\treturn {\n\t\t\t\t\tselectionStart: {\n\t\t\t\t\t\tclientId: action.clientId,\n\t\t\t\t\t\tattributeKey: action.attributeKey,\n\t\t\t\t\t\toffset: action.startOffset,\n\t\t\t\t\t},\n\t\t\t\t\tselectionEnd: {\n\t\t\t\t\t\tclientId: action.clientId,\n\t\t\t\t\t\tattributeKey: action.attributeKey,\n\t\t\t\t\t\toffset: action.endOffset,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tselectionStart: action.start || state.selectionStart,\n\t\t\t\tselectionEnd: action.end || state.selectionEnd,\n\t\t\t};\n\t\tcase 'RESET_SELECTION':\n\t\t\tconst { selectionStart, selectionEnd } = action;\n\t\t\treturn {\n\t\t\t\tselectionStart,\n\t\t\t\tselectionEnd,\n\t\t\t};\n\t\tcase 'MULTI_SELECT':\n\t\t\tconst { start, end } = action;\n\n\t\t\tif (\n\t\t\t\tstart === state.selectionStart?.clientId &&\n\t\t\t\tend === state.selectionEnd?.clientId\n\t\t\t) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tselectionStart: { clientId: start },\n\t\t\t\tselectionEnd: { clientId: end },\n\t\t\t};\n\t\tcase 'RESET_BLOCKS':\n\t\t\tconst startClientId = state?.selectionStart?.clientId;\n\t\t\tconst endClientId = state?.selectionEnd?.clientId;\n\n\t\t\t// Do nothing if there's no selected block.\n\t\t\tif ( ! startClientId && ! endClientId ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\t// If the start of the selection won't exist after reset, remove selection.\n\t\t\tif (\n\t\t\t\t! action.blocks.some(\n\t\t\t\t\t( block ) => block.clientId === startClientId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\tselectionStart: {},\n\t\t\t\t\tselectionEnd: {},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If the end of the selection won't exist after reset, collapse selection.\n\t\t\tif (\n\t\t\t\t! action.blocks.some(\n\t\t\t\t\t( block ) => block.clientId === endClientId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tselectionEnd: state.selectionStart,\n\t\t\t\t};\n\t\t\t}\n\t}\n\n\tconst selectionStart = selectionHelper( state.selectionStart, action );\n\tconst selectionEnd = selectionHelper( state.selectionEnd, action );\n\n\tif (\n\t\tselectionStart === state.selectionStart &&\n\t\tselectionEnd === state.selectionEnd\n\t) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\tselectionStart,\n\t\tselectionEnd,\n\t};\n}\n\n/**\n * Reducer returning whether the user is multi-selecting.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function isMultiSelecting( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'START_MULTI_SELECT':\n\t\t\treturn true;\n\n\t\tcase 'STOP_MULTI_SELECT':\n\t\t\treturn false;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning whether selection is enabled.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function isSelectionEnabled( state = true, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'TOGGLE_SELECTION':\n\t\t\treturn action.isSelectionEnabled;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the data needed to display a prompt when certain blocks\n * are removed, or `false` if no such prompt is requested.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object|false} Data for removal prompt display, if any.\n */\nfunction removalPromptData( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'DISPLAY_BLOCK_REMOVAL_PROMPT':\n\t\t\tconst { clientIds, selectPrevious, message } = action;\n\t\t\treturn {\n\t\t\t\tclientIds,\n\t\t\t\tselectPrevious,\n\t\t\t\tmessage,\n\t\t\t};\n\t\tcase 'CLEAR_BLOCK_REMOVAL_PROMPT':\n\t\t\treturn false;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning any rules that a block editor may provide in order to\n * prevent a user from accidentally removing certain blocks. These rules are\n * then used to display a confirmation prompt to the user. For instance, in the\n * Site Editor, the Query Loop block is important enough to warrant such\n * confirmation.\n *\n * The data is a record whose keys are block types (e.g. 'core/query') and\n * whose values are the explanation to be shown to users (e.g. 'Query Loop\n * displays a list of posts or pages.').\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string,string>} Updated state.\n */\nfunction blockRemovalRules( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_BLOCK_REMOVAL_RULES':\n\t\t\treturn action.rules;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the initial block selection.\n *\n * Currently this in only used to restore the selection after block deletion and\n * pasting new content.This reducer should eventually be removed in favour of setting\n * selection directly.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {number|null} Initial position: 0, -1 or null.\n */\nexport function initialPosition( state = null, action ) {\n\tif (\n\t\taction.type === 'REPLACE_BLOCKS' &&\n\t\taction.initialPosition !== undefined\n\t) {\n\t\treturn action.initialPosition;\n\t} else if (\n\t\t[\n\t\t\t'MULTI_SELECT',\n\t\t\t'SELECT_BLOCK',\n\t\t\t'RESET_SELECTION',\n\t\t\t'INSERT_BLOCKS',\n\t\t\t'REPLACE_INNER_BLOCKS',\n\t\t].includes( action.type )\n\t) {\n\t\treturn action.initialPosition;\n\t}\n\n\treturn state;\n}\n\nexport function blocksMode( state = {}, action ) {\n\tif ( action.type === 'TOGGLE_BLOCK_MODE' ) {\n\t\tconst { clientId } = action;\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ clientId ]:\n\t\t\t\tstate[ clientId ] && state[ clientId ] === 'html'\n\t\t\t\t\t? 'visual'\n\t\t\t\t\t: 'html',\n\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the block insertion point visibility, either null if there\n * is not an explicit insertion point assigned, or an object of its `index` and\n * `rootClientId`.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function insertionCue( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SHOW_INSERTION_POINT': {\n\t\t\tconst {\n\t\t\t\trootClientId,\n\t\t\t\tindex,\n\t\t\t\t__unstableWithInserter,\n\t\t\t\toperation,\n\t\t\t\tnearestSide,\n\t\t\t} = action;\n\t\t\tconst nextState = {\n\t\t\t\trootClientId,\n\t\t\t\tindex,\n\t\t\t\t__unstableWithInserter,\n\t\t\t\toperation,\n\t\t\t\tnearestSide,\n\t\t\t};\n\n\t\t\t// Bail out updates if the states are the same.\n\t\t\treturn fastDeepEqual( state, nextState ) ? state : nextState;\n\t\t}\n\n\t\tcase 'HIDE_INSERTION_POINT':\n\t\t\treturn null;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning whether the post blocks match the defined template or not.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function template( state = { isValid: true }, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_TEMPLATE_VALIDITY':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisValid: action.isValid,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the editor setting.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function settings( state = SETTINGS_DEFAULTS, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'UPDATE_SETTINGS': {\n\t\t\tconst updatedSettings = action.reset\n\t\t\t\t? {\n\t\t\t\t\t\t...SETTINGS_DEFAULTS,\n\t\t\t\t\t\t...action.settings,\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\t...action.settings,\n\t\t\t\t };\n\n\t\t\tObject.defineProperty( updatedSettings, '__unstableIsPreviewMode', {\n\t\t\t\tget() {\n\t\t\t\t\tdeprecated( '__unstableIsPreviewMode', {\n\t\t\t\t\t\tsince: '6.8',\n\t\t\t\t\t\talternative: 'isPreviewMode',\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn this.isPreviewMode;\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\treturn updatedSettings;\n\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the user preferences.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function preferences( state = PREFERENCES_DEFAULTS, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'INSERT_BLOCKS':\n\t\tcase 'REPLACE_BLOCKS': {\n\t\t\tconst nextInsertUsage = action.blocks.reduce(\n\t\t\t\t( prevUsage, block ) => {\n\t\t\t\t\tconst { attributes, name: blockName } = block;\n\t\t\t\t\tlet id = blockName;\n\t\t\t\t\t// If a block variation match is found change the name to be the same with the\n\t\t\t\t\t// one that is used for block variations in the Inserter (`getItemFromVariation`).\n\t\t\t\t\tconst match = select( blocksStore ).getActiveBlockVariation(\n\t\t\t\t\t\tblockName,\n\t\t\t\t\t\tattributes\n\t\t\t\t\t);\n\t\t\t\t\tif ( match?.name ) {\n\t\t\t\t\t\tid += '/' + match.name;\n\t\t\t\t\t}\n\t\t\t\t\tif ( blockName === 'core/block' ) {\n\t\t\t\t\t\tid += '/' + attributes.ref;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...prevUsage,\n\t\t\t\t\t\t[ id ]: {\n\t\t\t\t\t\t\ttime: action.time,\n\t\t\t\t\t\t\tcount: prevUsage[ id ]\n\t\t\t\t\t\t\t\t? prevUsage[ id ].count + 1\n\t\t\t\t\t\t\t\t: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tstate.insertUsage\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tinsertUsage: nextInsertUsage,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning an object where each key is a block client ID, its value\n * representing the settings for its nested blocks.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const blockListSettings = ( state = {}, action ) => {\n\tswitch ( action.type ) {\n\t\t// Even if the replaced blocks have the same client ID, our logic\n\t\t// should correct the state.\n\t\tcase 'REPLACE_BLOCKS':\n\t\tcase 'REMOVE_BLOCKS': {\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).filter(\n\t\t\t\t\t( [ id ] ) => ! action.clientIds.includes( id )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tcase 'UPDATE_BLOCK_LIST_SETTINGS': {\n\t\t\tconst updates =\n\t\t\t\ttypeof action.clientId === 'string'\n\t\t\t\t\t? { [ action.clientId ]: action.settings }\n\t\t\t\t\t: action.clientId;\n\n\t\t\t// Remove settings that are the same as the current state.\n\t\t\tfor ( const clientId in updates ) {\n\t\t\t\tif ( ! updates[ clientId ] ) {\n\t\t\t\t\tif ( ! state[ clientId ] ) {\n\t\t\t\t\t\tdelete updates[ clientId ];\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\tfastDeepEqual( state[ clientId ], updates[ clientId ] )\n\t\t\t\t) {\n\t\t\t\t\tdelete updates[ clientId ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( Object.keys( updates ).length === 0 ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\tconst merged = { ...state, ...updates };\n\n\t\t\tfor ( const clientId in updates ) {\n\t\t\t\tif ( ! updates[ clientId ] ) {\n\t\t\t\t\tdelete merged[ clientId ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn merged;\n\t\t}\n\t}\n\treturn state;\n};\n\n/**\n * Reducer return an updated state representing the most recent block attribute\n * update. The state is structured as an object where the keys represent the\n * client IDs of blocks, the values a subset of attributes from the most recent\n * block update. The state is always reset to null if the last action is\n * anything other than an attributes update.\n *\n * @param {Object<string,Object>} state Current state.\n * @param {Object} action Action object.\n *\n * @return {[string,Object]} Updated state.\n */\nexport function lastBlockAttributesChange( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'UPDATE_BLOCK':\n\t\t\tif ( ! action.updates.attributes ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn { [ action.clientId ]: action.updates.attributes };\n\n\t\tcase 'UPDATE_BLOCK_ATTRIBUTES':\n\t\t\treturn action.clientIds.reduce(\n\t\t\t\t( accumulator, id ) => ( {\n\t\t\t\t\t...accumulator,\n\t\t\t\t\t[ id ]: !! action.options?.uniqueByBlock\n\t\t\t\t\t\t? action.attributes[ id ]\n\t\t\t\t\t\t: action.attributes,\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t);\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning current highlighted block.\n *\n * @param {boolean} state Current highlighted block.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function highlightedBlock( state, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'TOGGLE_BLOCK_HIGHLIGHT':\n\t\t\tconst { clientId, isHighlighted } = action;\n\n\t\t\tif ( isHighlighted ) {\n\t\t\t\treturn clientId;\n\t\t\t} else if ( state === clientId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn state;\n\t\tcase 'SELECT_BLOCK':\n\t\t\tif ( action.clientId !== state ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning current spotlighted block.\n *\n * @param {string|null} state Current clientId or null.\n * @param {Object} action Dispatched action.\n *\n * @return {string|null} Updated state.\n */\nexport function hasBlockSpotlight( state, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'TOGGLE_BLOCK_SPOTLIGHT':\n\t\t\tconst { clientId, hasBlockSpotlight: _hasBlockSpotlight } = action;\n\n\t\t\tif ( _hasBlockSpotlight ) {\n\t\t\t\treturn clientId;\n\t\t\t} else if ( state === clientId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn state;\n\t\tcase 'SELECT_BLOCK':\n\t\t\tif ( action.clientId !== state ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn state;\n\t\tcase 'SELECTION_CHANGE':\n\t\t\tif (\n\t\t\t\taction.start?.clientId !== state ||\n\t\t\t\taction.end?.clientId !== state\n\t\t\t) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn state;\n\t\tcase 'CLEAR_SELECTED_BLOCK':\n\t\t\treturn null;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning current expanded block in the list view.\n *\n * @param {string|null} state Current expanded block.\n * @param {Object} action Dispatched action.\n *\n * @return {string|null} Updated state.\n */\nexport function expandedBlock( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_BLOCK_EXPANDED_IN_LIST_VIEW':\n\t\t\treturn action.clientId;\n\t\tcase 'SELECT_BLOCK':\n\t\t\tif ( action.clientId !== state ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning the block insertion event list state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function lastBlockInserted( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'INSERT_BLOCKS':\n\t\tcase 'REPLACE_BLOCKS':\n\t\t\tif ( ! action.blocks.length ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\tconst clientIds = action.blocks.map( ( block ) => {\n\t\t\t\treturn block.clientId;\n\t\t\t} );\n\n\t\t\tconst source = action.meta?.source;\n\n\t\t\treturn { clientIds, source };\n\t\tcase 'RESET_BLOCKS':\n\t\t\treturn {};\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning the block that is eding temporarily edited as blocks.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function temporarilyEditingAsBlocks( state = '', action ) {\n\tif ( action.type === 'SET_TEMPORARILY_EDITING_AS_BLOCKS' ) {\n\t\treturn action.temporarilyEditingAsBlocks;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning the focus mode that should be used when temporarily edit as blocks finishes.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function temporarilyEditingFocusModeRevert( state = '', action ) {\n\tif ( action.type === 'SET_TEMPORARILY_EDITING_AS_BLOCKS' ) {\n\t\treturn action.focusModeToRevert;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning a map of block client IDs to block editing modes.\n *\n * @param {Map} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Map} Updated state.\n */\nexport function blockEditingModes( state = new Map(), action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_BLOCK_EDITING_MODE':\n\t\t\tif ( state.get( action.clientId ) === action.mode ) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t\treturn new Map( state ).set( action.clientId, action.mode );\n\t\tcase 'UNSET_BLOCK_EDITING_MODE': {\n\t\t\tif ( ! state.has( action.clientId ) ) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t\tconst newState = new Map( state );\n\t\t\tnewState.delete( action.clientId );\n\t\t\treturn newState;\n\t\t}\n\t\tcase 'RESET_BLOCKS': {\n\t\t\treturn state.has( '' )\n\t\t\t\t? new Map().set( '', state.get( '' ) )\n\t\t\t\t: state;\n\t\t}\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning the clientId of the block settings menu that is currently open.\n *\n * @param {string|null} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string|null} Updated state.\n */\nexport function openedBlockSettingsMenu( state = null, action ) {\n\tif ( 'SET_OPENED_BLOCK_SETTINGS_MENU' === action.type ) {\n\t\treturn action?.clientId ?? null;\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning a map of style IDs to style overrides.\n *\n * @param {Map} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Map} Updated state.\n */\nexport function styleOverrides( state = new Map(), action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_STYLE_OVERRIDE':\n\t\t\treturn new Map( state ).set( action.id, action.style );\n\t\tcase 'DELETE_STYLE_OVERRIDE': {\n\t\t\tconst newState = new Map( state );\n\t\t\tnewState.delete( action.id );\n\t\t\treturn newState;\n\t\t}\n\t}\n\treturn state;\n}\n\n/**\n * Reducer returning a map of the registered inserter media categories.\n *\n * @param {Array} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Array} Updated state.\n */\nexport function registeredInserterMediaCategories( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'REGISTER_INSERTER_MEDIA_CATEGORY':\n\t\t\treturn [ ...state, action.category ];\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer setting last focused element\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {boolean} Updated state.\n */\nexport function lastFocus( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'LAST_FOCUS':\n\t\t\treturn action.lastFocus;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer setting zoom out state.\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {number} Updated state.\n */\nexport function zoomLevel( state = 100, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_ZOOM_LEVEL':\n\t\t\treturn action.zoom;\n\t\tcase 'RESET_ZOOM_LEVEL':\n\t\t\treturn 100;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer setting the insertion point\n *\n * @param {boolean} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function insertionPoint( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_INSERTION_POINT':\n\t\t\treturn action.value;\n\t\tcase 'SELECT_BLOCK':\n\t\t\treturn null;\n\t}\n\n\treturn state;\n}\n\nconst combinedReducers = combineReducers( {\n\tblocks,\n\tisDragging,\n\tisTyping,\n\tisBlockInterfaceHidden,\n\tdraggedBlocks,\n\tselection,\n\tisMultiSelecting,\n\tisSelectionEnabled,\n\tinitialPosition,\n\tblocksMode,\n\tblockListSettings,\n\tinsertionPoint,\n\tinsertionCue,\n\ttemplate,\n\tsettings,\n\tpreferences,\n\tlastBlockAttributesChange,\n\tlastFocus,\n\texpandedBlock,\n\thighlightedBlock,\n\tlastBlockInserted,\n\ttemporarilyEditingAsBlocks,\n\ttemporarilyEditingFocusModeRevert,\n\tblockVisibility,\n\tblockEditingModes,\n\tstyleOverrides,\n\tremovalPromptData,\n\tblockRemovalRules,\n\topenedBlockSettingsMenu,\n\tregisteredInserterMediaCategories,\n\tzoomLevel,\n\thasBlockSpotlight,\n} );\n\n/**\n * Retrieves a block's tree structure, handling both controlled and uncontrolled inner blocks.\n *\n * @param {Object} state The current state object.\n * @param {string} clientId The client ID of the block to retrieve.\n *\n * @return {Object|undefined} The block tree object, or undefined if not found. For controlled blocks,\n * returns a merged tree with controlled inner blocks.\n */\nfunction getBlockTreeBlock( state, clientId ) {\n\tif ( clientId === '' ) {\n\t\tconst rootBlock = state.blocks.tree.get( clientId );\n\n\t\tif ( ! rootBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Patch the root block to have a clientId property.\n\t\t// TODO - consider updating the blocks reducer so that the root block has this property.\n\t\treturn {\n\t\t\tclientId: '',\n\t\t\t...rootBlock,\n\t\t};\n\t}\n\n\tif ( ! state.blocks.controlledInnerBlocks[ clientId ] ) {\n\t\treturn state.blocks.tree.get( clientId );\n\t}\n\n\tconst controlledTree = state.blocks.tree.get( `controlled||${ clientId }` );\n\tconst regularTree = state.blocks.tree.get( clientId );\n\n\treturn {\n\t\t...regularTree,\n\t\tinnerBlocks: controlledTree?.innerBlocks,\n\t};\n}\n\n/**\n * Recursively traverses through a block tree of a given block and executes a callback for each block.\n *\n * @param {Object} state The store state.\n * @param {string} clientId The clientId of the block to start traversing from.\n * @param {Function} callback Function to execute for each block encountered during traversal.\n * The callback receives the current block as its argument.\n */\nfunction traverseBlockTree( state, clientId, callback ) {\n\tconst tree = getBlockTreeBlock( state, clientId );\n\tif ( ! tree ) {\n\t\treturn;\n\t}\n\n\tcallback( tree );\n\n\tif ( ! tree?.innerBlocks?.length ) {\n\t\treturn;\n\t}\n\n\tfor ( const innerBlock of tree?.innerBlocks ) {\n\t\ttraverseBlockTree( state, innerBlock.clientId, callback );\n\t}\n}\n\n/**\n * Checks if a block has a parent in a list of client IDs, and if so returns the client ID of the parent.\n *\n * @param {Object} state The current state object.\n * @param {string} clientId The client ID of the block to search the parents of.\n * @param {Array} clientIds The client IDs of the blocks to check.\n *\n * @return {string|undefined} The client ID of the parent block if found, undefined otherwise.\n */\nfunction findParentInClientIdsList( state, clientId, clientIds ) {\n\tif ( ! clientIds.length ) {\n\t\treturn;\n\t}\n\n\tlet parent = state.blocks.parents.get( clientId );\n\twhile ( parent !== undefined ) {\n\t\tif ( clientIds.includes( parent ) ) {\n\t\t\treturn parent;\n\t\t}\n\t\tparent = state.blocks.parents.get( parent );\n\t}\n}\n\n/**\n * Checks if a block has any bindings in its metadata attributes.\n *\n * @param {Object} block The block object to check for bindings.\n * @return {boolean} True if the block has bindings, false otherwise.\n */\nfunction hasBindings( block ) {\n\treturn (\n\t\tblock?.attributes?.metadata?.bindings &&\n\t\tObject.keys( block?.attributes?.metadata?.bindings ).length\n\t);\n}\n\n/**\n * Computes and returns derived block editing modes for a given block tree.\n *\n * This function calculates the editing modes for each block in the tree, taking into account\n * various factors such as zoom level, sections, and synced patterns.\n *\n * @param {Object} state The current state object.\n * @param {string} treeClientId The client ID of the root block for the tree. Defaults to an empty string.\n * @return {Map} A Map containing the derived block editing modes, keyed by block client ID.\n */\nfunction getDerivedBlockEditingModesForTree( state, treeClientId = '' ) {\n\tconst isZoomedOut =\n\t\tstate?.zoomLevel < 100 || state?.zoomLevel === 'auto-scaled';\n\tconst derivedBlockEditingModes = new Map();\n\n\t// When there are sections, the majority of blocks are disabled,\n\t// so the default block editing mode is set to disabled.\n\tconst sectionRootClientId = state.settings?.[ sectionRootClientIdKey ];\n\tconst sectionClientIds = state.blocks.order.get( sectionRootClientId );\n\tconst hasDisabledBlocks = Array.from( state.blockEditingModes ).some(\n\t\t( [ , mode ] ) => mode === 'disabled'\n\t);\n\tconst templatePartClientIds = [];\n\tconst syncedPatternClientIds = [];\n\n\tObject.keys( state.blocks.controlledInnerBlocks ).forEach( ( clientId ) => {\n\t\tconst block = state.blocks.byClientId?.get( clientId );\n\n\t\tif ( block?.name === 'core/template-part' ) {\n\t\t\ttemplatePartClientIds.push( clientId );\n\t\t}\n\n\t\tif ( block?.name === 'core/block' ) {\n\t\t\tsyncedPatternClientIds.push( clientId );\n\t\t}\n\t} );\n\tconst contentOnlyTemplateLockedClientIds = Object.keys(\n\t\tstate.blockListSettings\n\t).filter(\n\t\t( clientId ) =>\n\t\t\tstate.blockListSettings[ clientId ]?.templateLock === 'contentOnly'\n\t);\n\t// Use array.from for better back compat. Older versions of the iterator returned\n\t// from `keys()` didn't have the `filter` method.\n\tconst unsyncedPatternClientIds =\n\t\t!! window?.__experimentalContentOnlyPatternInsertion\n\t\t\t? Array.from( state.blocks.attributes.keys() ).filter(\n\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\tstate.blocks.attributes.get( clientId )?.metadata\n\t\t\t\t\t\t\t?.patternName\n\t\t\t )\n\t\t\t: [];\n\tconst contentOnlyParents = [\n\t\t...contentOnlyTemplateLockedClientIds,\n\t\t...unsyncedPatternClientIds,\n\t\t...( window?.__experimentalContentOnlyPatternInsertion\n\t\t\t? templatePartClientIds\n\t\t\t: [] ),\n\t];\n\n\ttraverseBlockTree( state, treeClientId, ( block ) => {\n\t\tconst { clientId, name: blockName } = block;\n\n\t\t// If the block already has an explicit block editing mode set,\n\t\t// don't override it.\n\t\tif ( state.blockEditingModes.has( clientId ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Disabled explicit block editing modes are inherited by children.\n\t\t// It's an expensive calculation, so only do it if there are disabled blocks.\n\t\tif ( hasDisabledBlocks ) {\n\t\t\t// Look through parents to find one with an explicit block editing mode.\n\t\t\tlet ancestorBlockEditingMode;\n\t\t\tlet parent = state.blocks.parents.get( clientId );\n\t\t\twhile ( parent !== undefined ) {\n\t\t\t\tif ( state.blockEditingModes.has( parent ) ) {\n\t\t\t\t\t// Checking the explicit block editing mode will be slower,\n\t\t\t\t\t// as the block editing mode is more likely to be set on a\n\t\t\t\t\t// distant ancestor.\n\t\t\t\t\tancestorBlockEditingMode =\n\t\t\t\t\t\tstate.blockEditingModes.get( parent );\n\t\t\t\t}\n\t\t\t\tif ( ancestorBlockEditingMode ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tparent = state.blocks.parents.get( parent );\n\t\t\t}\n\n\t\t\t// If the ancestor block editing mode is disabled, it's inherited by the child.\n\t\t\tif ( ancestorBlockEditingMode === 'disabled' ) {\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif ( isZoomedOut ) {\n\t\t\t// If the root block is the section root set its editing mode to contentOnly.\n\t\t\tif ( clientId === sectionRootClientId ) {\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'contentOnly' );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// There are no sections, so everything else is disabled.\n\t\t\tif ( ! sectionClientIds?.length ) {\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( sectionClientIds.includes( clientId ) ) {\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'contentOnly' );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If zoomed out, all blocks that aren't sections or the section root are\n\t\t\t// disabled.\n\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( syncedPatternClientIds.length ) {\n\t\t\t// Synced pattern blocks (core/block).\n\t\t\tif ( syncedPatternClientIds.includes( clientId ) ) {\n\t\t\t\t// This is a pattern nested in another pattern, it should be disabled.\n\t\t\t\tif (\n\t\t\t\t\tfindParentInClientIdsList(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tsyncedPatternClientIds\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Else do nothing, use the default block editing mode.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Inner blocks of synced patterns.\n\t\t\tconst parentPatternClientId = findParentInClientIdsList(\n\t\t\t\tstate,\n\t\t\t\tclientId,\n\t\t\t\tsyncedPatternClientIds\n\t\t\t);\n\t\t\tif ( parentPatternClientId ) {\n\t\t\t\t// This is a pattern nested in another pattern, it should be disabled.\n\t\t\t\tif (\n\t\t\t\t\tfindParentInClientIdsList(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tparentPatternClientId,\n\t\t\t\t\t\tsyncedPatternClientIds\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( hasBindings( block ) ) {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'contentOnly' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Synced pattern content without a binding isn't editable\n\t\t\t\t// from the instance, the user has to edit the pattern source,\n\t\t\t\t// so return 'disabled'.\n\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t}\n\t\t}\n\n\t\t// Handle `templateLock=contentOnly` blocks and unsynced patterns.\n\t\tif ( contentOnlyParents.length ) {\n\t\t\tconst hasContentOnlyParent = !! findParentInClientIdsList(\n\t\t\t\tstate,\n\t\t\t\tclientId,\n\t\t\t\tcontentOnlyParents\n\t\t\t);\n\t\t\tif ( hasContentOnlyParent ) {\n\t\t\t\tif ( isContentBlock( blockName ) ) {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'contentOnly' );\n\t\t\t\t} else {\n\t\t\t\t\tderivedBlockEditingModes.set( clientId, 'disabled' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\n\treturn derivedBlockEditingModes;\n}\n\n/**\n * Updates the derived block editing modes based on added and removed blocks.\n *\n * This function handles the updating of block editing modes when blocks are added,\n * removed, or moved within the editor.\n *\n * It only returns a value when modifications are made to the block editing modes.\n *\n * @param {Object} options The options for updating derived block editing modes.\n * @param {Object} options.prevState The previous state object.\n * @param {Object} options.nextState The next state object.\n * @param {Array} [options.addedBlocks] An array of blocks that were added.\n * @param {Array} [options.removedClientIds] An array of client IDs of blocks that were removed.\n * @return {Map|undefined} The updated derived block editing modes, or undefined if no changes were made.\n */\nfunction getDerivedBlockEditingModesUpdates( {\n\tprevState,\n\tnextState,\n\taddedBlocks,\n\tremovedClientIds,\n} ) {\n\tconst prevDerivedBlockEditingModes = prevState.derivedBlockEditingModes;\n\tlet nextDerivedBlockEditingModes;\n\n\t// Perform removals before additions to handle cases like the `MOVE_BLOCKS_TO_POSITION` action.\n\t// That action removes a set of clientIds, but adds the same blocks back in a different location.\n\t// If removals were performed after additions, those moved clientIds would be removed incorrectly.\n\tremovedClientIds?.forEach( ( clientId ) => {\n\t\t// The actions only receive parent block IDs for removal.\n\t\t// Recurse through the block tree to ensure all blocks are removed.\n\t\t// Specifically use the previous state, before the blocks were removed.\n\t\ttraverseBlockTree( prevState, clientId, ( block ) => {\n\t\t\tif ( prevDerivedBlockEditingModes.has( block.clientId ) ) {\n\t\t\t\tif ( ! nextDerivedBlockEditingModes ) {\n\t\t\t\t\tnextDerivedBlockEditingModes = new Map(\n\t\t\t\t\t\tprevDerivedBlockEditingModes\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tnextDerivedBlockEditingModes.delete( block.clientId );\n\t\t\t}\n\t\t} );\n\t} );\n\n\taddedBlocks?.forEach( ( addedBlock ) => {\n\t\tconst updates = getDerivedBlockEditingModesForTree(\n\t\t\tnextState,\n\t\t\taddedBlock.clientId\n\t\t);\n\n\t\tif ( updates.size ) {\n\t\t\tif ( ! nextDerivedBlockEditingModes ) {\n\t\t\t\tnextDerivedBlockEditingModes = new Map( [\n\t\t\t\t\t...( prevDerivedBlockEditingModes?.size\n\t\t\t\t\t\t? prevDerivedBlockEditingModes\n\t\t\t\t\t\t: [] ),\n\t\t\t\t\t...updates,\n\t\t\t\t] );\n\t\t\t} else {\n\t\t\t\tnextDerivedBlockEditingModes = new Map( [\n\t\t\t\t\t...( nextDerivedBlockEditingModes?.size\n\t\t\t\t\t\t? nextDerivedBlockEditingModes\n\t\t\t\t\t\t: [] ),\n\t\t\t\t\t...updates,\n\t\t\t\t] );\n\t\t\t}\n\t\t}\n\t} );\n\n\treturn nextDerivedBlockEditingModes;\n}\n\n/**\n * Higher-order reducer that adds derived block editing modes to the state.\n *\n * This function wraps a reducer and enhances it to handle actions that affect\n * block editing modes. It updates the derivedBlockEditingModes in the state\n * based on various actions such as adding, removing, or moving blocks, or changing\n * the editor mode.\n *\n * @param {Function} reducer The original reducer function to be wrapped.\n * @return {Function} A new reducer function that includes derived block editing modes handling.\n */\nexport function withDerivedBlockEditingModes( reducer ) {\n\treturn ( state, action ) => {\n\t\tconst nextState = reducer( state, action );\n\n\t\t// An exception is needed here to still recompute the block editing modes when\n\t\t// the editor mode changes since the editor mode isn't stored within the\n\t\t// block editor state and changing it won't trigger an altered new state.\n\t\tif ( action.type !== 'SET_EDITOR_MODE' && nextState === state ) {\n\t\t\treturn state;\n\t\t}\n\n\t\tswitch ( action.type ) {\n\t\t\tcase 'REMOVE_BLOCKS': {\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\tremovedClientIds: action.clientIds,\n\t\t\t\t\t} );\n\n\t\t\t\tif ( nextDerivedBlockEditingModes ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'RECEIVE_BLOCKS':\n\t\t\tcase 'INSERT_BLOCKS': {\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks: action.blocks,\n\t\t\t\t\t} );\n\n\t\t\t\tif ( nextDerivedBlockEditingModes ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'UPDATE_BLOCK_ATTRIBUTES': {\n\t\t\t\t// Handle unsynced patterns which indicate their contentOnly-ness via\n\t\t\t\t// the `attributes.metadata.patternName` property.\n\t\t\t\t// Check when this is added or removed and update blockEditingModes.\n\t\t\t\tconst addedBlocks = [];\n\t\t\t\tconst removedClientIds = [];\n\n\t\t\t\tfor ( const clientId of action?.clientIds ) {\n\t\t\t\t\tconst attributes = action.options?.uniqueByBlock\n\t\t\t\t\t\t? action.attributes[ clientId ]\n\t\t\t\t\t\t: action.attributes;\n\n\t\t\t\t\tif ( ! attributes ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t// patternName is switching from falsy to truthy, indicating\n\t\t\t\t\t\t// this block is becoming an unsynced pattern.\n\t\t\t\t\t\tattributes.metadata?.patternName &&\n\t\t\t\t\t\t! state.blocks.attributes.get( clientId )?.metadata\n\t\t\t\t\t\t\t?.patternName\n\t\t\t\t\t) {\n\t\t\t\t\t\taddedBlocks.push(\n\t\t\t\t\t\t\tnextState.blocks.tree.get( clientId )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\t// patternName is switching from truthy to falsy, this block is becoming\n\t\t\t\t\t\t// a regular block but was an unsynced pattern.\n\t\t\t\t\t\t// Check that `metadata` is part of the included attributes, as\n\t\t\t\t\t\t// `updateBlockAttributes` merges attributes, if it isn't present\n\t\t\t\t\t\t// the previous `metadata` would be retained.\n\t\t\t\t\t\tattributes.metadata &&\n\t\t\t\t\t\t! attributes.metadata?.patternName &&\n\t\t\t\t\t\tstate.blocks.attributes.get( clientId )?.metadata\n\t\t\t\t\t\t\t?.patternName\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Include it in 'removedClientIds'.\n\t\t\t\t\t\tremovedClientIds.push( clientId );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( ! addedBlocks?.length && ! removedClientIds?.length ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks,\n\t\t\t\t\t\tremovedClientIds,\n\t\t\t\t\t} );\n\n\t\t\t\tif ( nextDerivedBlockEditingModes ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'UPDATE_BLOCK_LIST_SETTINGS': {\n\t\t\t\t// Handle the addition and removal of contentOnly template locked blocks.\n\t\t\t\tconst addedBlocks = [];\n\t\t\t\tconst removedClientIds = [];\n\n\t\t\t\tconst updates =\n\t\t\t\t\ttypeof action.clientId === 'string'\n\t\t\t\t\t\t? { [ action.clientId ]: action.settings }\n\t\t\t\t\t\t: action.clientId;\n\n\t\t\t\tfor ( const clientId in updates ) {\n\t\t\t\t\tconst isNewContentOnlyBlock =\n\t\t\t\t\t\tstate.blockListSettings[ clientId ]?.templateLock !==\n\t\t\t\t\t\t\t'contentOnly' &&\n\t\t\t\t\t\tnextState.blockListSettings[ clientId ]\n\t\t\t\t\t\t\t?.templateLock === 'contentOnly';\n\n\t\t\t\t\tconst wasContentOnlyBlock =\n\t\t\t\t\t\tstate.blockListSettings[ clientId ]?.templateLock ===\n\t\t\t\t\t\t\t'contentOnly' &&\n\t\t\t\t\t\tnextState.blockListSettings[ clientId ]\n\t\t\t\t\t\t\t?.templateLock !== 'contentOnly';\n\n\t\t\t\t\tif ( isNewContentOnlyBlock ) {\n\t\t\t\t\t\taddedBlocks.push(\n\t\t\t\t\t\t\tnextState.blocks.tree.get( clientId )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( wasContentOnlyBlock ) {\n\t\t\t\t\t\tremovedClientIds.push( clientId );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( ! addedBlocks.length && ! removedClientIds.length ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks,\n\t\t\t\t\t\tremovedClientIds,\n\t\t\t\t\t} );\n\n\t\t\t\tif ( nextDerivedBlockEditingModes ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'SET_BLOCK_EDITING_MODE':\n\t\t\tcase 'UNSET_BLOCK_EDITING_MODE':\n\t\t\tcase 'SET_HAS_CONTROLLED_INNER_BLOCKS': {\n\t\t\t\tconst updatedBlock = getBlockTreeBlock(\n\t\t\t\t\tnextState,\n\t\t\t\t\taction.clientId\n\t\t\t\t);\n\n\t\t\t\t// The block might have been removed in which case it'll be\n\t\t\t\t// handled by the `REMOVE_BLOCKS` action.\n\t\t\t\tif ( ! updatedBlock ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\tremovedClientIds: [ action.clientId ],\n\t\t\t\t\t\taddedBlocks: [ updatedBlock ],\n\t\t\t\t\t} );\n\n\t\t\t\tif ( nextDerivedBlockEditingModes ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'REPLACE_BLOCKS': {\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks: action.blocks,\n\t\t\t\t\t\tremovedClientIds: action.clientIds,\n\t\t\t\t\t} );\n\n\t\t\t\tif ( nextDerivedBlockEditingModes ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'REPLACE_INNER_BLOCKS': {\n\t\t\t\t// Get the clientIds of the blocks that are being replaced\n\t\t\t\t// from the old state, before they were removed.\n\t\t\t\tconst removedClientIds = state.blocks.order.get(\n\t\t\t\t\taction.rootClientId\n\t\t\t\t);\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks: action.blocks,\n\t\t\t\t\t\tremovedClientIds,\n\t\t\t\t\t} );\n\t\t\t\tif ( nextDerivedBlockEditingModes ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'MOVE_BLOCKS_TO_POSITION': {\n\t\t\t\tconst addedBlocks = action.clientIds.map( ( clientId ) => {\n\t\t\t\t\treturn nextState.blocks.byClientId.get( clientId );\n\t\t\t\t} );\n\t\t\t\tconst nextDerivedBlockEditingModes =\n\t\t\t\t\tgetDerivedBlockEditingModesUpdates( {\n\t\t\t\t\t\tprevState: state,\n\t\t\t\t\t\tnextState,\n\t\t\t\t\t\taddedBlocks,\n\t\t\t\t\t\tremovedClientIds: action.clientIds,\n\t\t\t\t\t} );\n\n\t\t\t\tif ( nextDerivedBlockEditingModes ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tnextDerivedBlockEditingModes ??\n\t\t\t\t\t\t\tstate.derivedBlockEditingModes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'UPDATE_SETTINGS': {\n\t\t\t\t// Recompute the entire tree if the section root changes.\n\t\t\t\tif (\n\t\t\t\t\tstate?.settings?.[ sectionRootClientIdKey ] !==\n\t\t\t\t\tnextState?.settings?.[ sectionRootClientIdKey ]\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...nextState,\n\t\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\t\tgetDerivedBlockEditingModesForTree( nextState ),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'RESET_BLOCKS':\n\t\t\tcase 'SET_EDITOR_MODE':\n\t\t\tcase 'RESET_ZOOM_LEVEL':\n\t\t\tcase 'SET_ZOOM_LEVEL': {\n\t\t\t\t// Recompute the entire tree if the editor mode or zoom level changes,\n\t\t\t\t// or if all the blocks are reset.\n\t\t\t\treturn {\n\t\t\t\t\t...nextState,\n\t\t\t\t\tderivedBlockEditingModes:\n\t\t\t\t\t\tgetDerivedBlockEditingModesForTree( nextState ),\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// If there's no change, the derivedBlockEditingModes from the previous\n\t\t// state need to be preserved.\n\t\tnextState.derivedBlockEditingModes =\n\t\t\tstate?.derivedBlockEditingModes ?? new Map();\n\n\t\treturn nextState;\n\t};\n}\n\nfunction withAutomaticChangeReset( reducer ) {\n\treturn ( state, action ) => {\n\t\tconst nextState = reducer( state, action );\n\n\t\tif ( ! state ) {\n\t\t\treturn nextState;\n\t\t}\n\n\t\t// Take over the last value without creating a new reference.\n\t\tnextState.automaticChangeStatus = state.automaticChangeStatus;\n\n\t\tif ( action.type === 'MARK_AUTOMATIC_CHANGE' ) {\n\t\t\treturn {\n\t\t\t\t...nextState,\n\t\t\t\tautomaticChangeStatus: 'pending',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\taction.type === 'MARK_AUTOMATIC_CHANGE_FINAL' &&\n\t\t\tstate.automaticChangeStatus === 'pending'\n\t\t) {\n\t\t\treturn {\n\t\t\t\t...nextState,\n\t\t\t\tautomaticChangeStatus: 'final',\n\t\t\t};\n\t\t}\n\n\t\t// If there's a change that doesn't affect blocks or selection, maintain\n\t\t// the current status.\n\t\tif (\n\t\t\tnextState.blocks === state.blocks &&\n\t\t\tnextState.selection === state.selection\n\t\t) {\n\t\t\treturn nextState;\n\t\t}\n\n\t\t// As long as the state is not final, ignore any selection changes.\n\t\tif (\n\t\t\tnextState.automaticChangeStatus !== 'final' &&\n\t\t\tnextState.selection !== state.selection\n\t\t) {\n\t\t\treturn nextState;\n\t\t}\n\n\t\t// Reset the status if blocks change or selection changes (when status is final).\n\t\treturn {\n\t\t\t...nextState,\n\t\t\tautomaticChangeStatus: undefined,\n\t\t};\n\t};\n}\n\nexport default pipe(\n\twithDerivedBlockEditingModes,\n\twithAutomaticChangeReset\n)( combinedReducers );\n"],
5
+ "mappings": "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",
6
+ "names": ["blocksPrivateApis", "blocks", "fastDeepEqual", "parentsOfRemovedBlocks", "newState", "selectionStart", "selectionEnd", "deprecated", "blocksStore"]
7
+ }