@wordpress/block-editor 15.5.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 (2650) hide show
  1. package/README.md +0 -4
  2. package/build/autocompleters/block.js +117 -87
  3. package/build/autocompleters/block.js.map +7 -1
  4. package/build/autocompleters/link.js +58 -48
  5. package/build/autocompleters/link.js.map +7 -1
  6. package/build/components/alignment-control/index.js +44 -28
  7. package/build/components/alignment-control/index.js.map +7 -1
  8. package/build/components/alignment-control/ui.js +72 -54
  9. package/build/components/alignment-control/ui.js.map +7 -1
  10. package/build/components/autocomplete/index.js +64 -62
  11. package/build/components/autocomplete/index.js.map +7 -1
  12. package/build/components/background-image-control/index.js +494 -452
  13. package/build/components/background-image-control/index.js.map +7 -1
  14. package/build/components/block-actions/index.js +76 -62
  15. package/build/components/block-actions/index.js.map +7 -1
  16. package/build/components/block-alignment-control/constants.js +44 -25
  17. package/build/components/block-alignment-control/constants.js.map +7 -1
  18. package/build/components/block-alignment-control/index.js +44 -28
  19. package/build/components/block-alignment-control/index.js.map +7 -1
  20. package/build/components/block-alignment-control/ui.js +75 -71
  21. package/build/components/block-alignment-control/ui.js.map +7 -1
  22. package/build/components/block-alignment-control/use-available-alignments.js +60 -54
  23. package/build/components/block-alignment-control/use-available-alignments.js.map +7 -1
  24. package/build/components/block-alignment-matrix-control/index.js +66 -82
  25. package/build/components/block-alignment-matrix-control/index.js.map +7 -1
  26. package/build/components/block-allowed-blocks/allowed-blocks-control.js +99 -0
  27. package/build/components/block-allowed-blocks/allowed-blocks-control.js.map +7 -0
  28. package/build/components/block-allowed-blocks/index.js +42 -0
  29. package/build/components/block-allowed-blocks/index.js.map +7 -0
  30. package/build/components/block-allowed-blocks/modal.js +124 -0
  31. package/build/components/block-allowed-blocks/modal.js.map +7 -0
  32. package/build/components/block-breadcrumb/index.js +125 -103
  33. package/build/components/block-breadcrumb/index.js.map +7 -1
  34. package/build/components/block-canvas/index.js +121 -123
  35. package/build/components/block-canvas/index.js.map +7 -1
  36. package/build/components/block-card/index.js +92 -121
  37. package/build/components/block-card/index.js.map +7 -1
  38. package/build/components/block-compare/block-view.js +38 -35
  39. package/build/components/block-compare/block-view.js.map +7 -1
  40. package/build/components/block-compare/index.js +73 -60
  41. package/build/components/block-compare/index.js.map +7 -1
  42. package/build/components/block-content-overlay/index.js +31 -21
  43. package/build/components/block-content-overlay/index.js.map +7 -1
  44. package/build/components/block-context/index.js +39 -46
  45. package/build/components/block-context/index.js.map +7 -1
  46. package/build/components/block-controls/fill.js +51 -40
  47. package/build/components/block-controls/fill.js.map +7 -1
  48. package/build/components/block-controls/groups.js +29 -16
  49. package/build/components/block-controls/groups.js.map +7 -1
  50. package/build/components/block-controls/hook.js +39 -21
  51. package/build/components/block-controls/hook.js.map +7 -1
  52. package/build/components/block-controls/index.js +47 -29
  53. package/build/components/block-controls/index.js.map +7 -1
  54. package/build/components/block-controls/slot.js +58 -51
  55. package/build/components/block-controls/slot.js.map +7 -1
  56. package/build/components/block-draggable/draggable-chip.js +59 -44
  57. package/build/components/block-draggable/draggable-chip.js.map +7 -1
  58. package/build/components/block-draggable/index.js +165 -146
  59. package/build/components/block-draggable/index.js.map +7 -1
  60. package/build/components/block-draggable/use-scroll-when-dragging.js +58 -47
  61. package/build/components/block-draggable/use-scroll-when-dragging.js.map +7 -1
  62. package/build/components/block-edit/context.js +52 -30
  63. package/build/components/block-edit/context.js.map +7 -1
  64. package/build/components/block-edit/edit.js +236 -194
  65. package/build/components/block-edit/edit.js.map +7 -1
  66. package/build/components/block-edit/index.js +93 -72
  67. package/build/components/block-edit/index.js.map +7 -1
  68. package/build/components/block-edit/multiple-usage-warning.js +79 -41
  69. package/build/components/block-edit/multiple-usage-warning.js.map +7 -1
  70. package/build/components/block-edit-visually-button/index.js +40 -32
  71. package/build/components/block-edit-visually-button/index.js.map +7 -1
  72. package/build/components/block-editing-mode/index.js +42 -64
  73. package/build/components/block-editing-mode/index.js.map +7 -1
  74. package/build/components/block-full-height-alignment-control/index.js +38 -22
  75. package/build/components/block-full-height-alignment-control/index.js.map +7 -1
  76. package/build/components/block-heading-level-dropdown/heading-level-icon.js +35 -42
  77. package/build/components/block-heading-level-dropdown/heading-level-icon.js.map +7 -1
  78. package/build/components/block-heading-level-dropdown/index.js +64 -65
  79. package/build/components/block-heading-level-dropdown/index.js.map +7 -1
  80. package/build/components/block-icon/index.js +52 -43
  81. package/build/components/block-icon/index.js.map +7 -1
  82. package/build/components/block-inspector/edit-contents-button.js +53 -48
  83. package/build/components/block-inspector/edit-contents-button.js.map +7 -1
  84. package/build/components/block-inspector/index.js +237 -200
  85. package/build/components/block-inspector/index.js.map +7 -1
  86. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js +44 -38
  87. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js.map +7 -1
  88. package/build/components/block-list/block-crash-boundary.js +25 -12
  89. package/build/components/block-list/block-crash-boundary.js.map +7 -1
  90. package/build/components/block-list/block-crash-warning.js +37 -23
  91. package/build/components/block-list/block-crash-warning.js.map +7 -1
  92. package/build/components/block-list/block-html.js +65 -49
  93. package/build/components/block-list/block-html.js.map +7 -1
  94. package/build/components/block-list/block-invalid-warning.js +152 -106
  95. package/build/components/block-list/block-invalid-warning.js.map +7 -1
  96. package/build/components/block-list/block.js +356 -421
  97. package/build/components/block-list/block.js.map +7 -1
  98. package/build/components/block-list/index.js +210 -178
  99. package/build/components/block-list/index.js.map +7 -1
  100. package/build/components/block-list/layout.js +46 -48
  101. package/build/components/block-list/layout.js.map +7 -1
  102. package/build/components/block-list/private-block-context.js +29 -12
  103. package/build/components/block-list/private-block-context.js.map +7 -1
  104. package/build/components/block-list/subdirectory-icon.js +43 -26
  105. package/build/components/block-list/subdirectory-icon.js.map +7 -1
  106. package/build/components/block-list/use-block-props/index.js +118 -149
  107. package/build/components/block-list/use-block-props/index.js.map +7 -1
  108. package/build/components/block-list/use-block-props/use-block-refs.js +49 -59
  109. package/build/components/block-list/use-block-props/use-block-refs.js.map +7 -1
  110. package/build/components/block-list/use-block-props/use-firefox-draggable-compatibility.js +42 -47
  111. package/build/components/block-list/use-block-props/use-firefox-draggable-compatibility.js.map +7 -1
  112. package/build/components/block-list/use-block-props/use-focus-first-element.js +47 -62
  113. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +7 -1
  114. package/build/components/block-list/use-block-props/use-focus-handler.js +54 -65
  115. package/build/components/block-list/use-block-props/use-focus-handler.js.map +7 -1
  116. package/build/components/block-list/use-block-props/use-intersection-observer.js +41 -25
  117. package/build/components/block-list/use-block-props/use-intersection-observer.js.map +7 -1
  118. package/build/components/block-list/use-block-props/use-is-hovered.js +37 -24
  119. package/build/components/block-list/use-block-props/use-is-hovered.js.map +7 -1
  120. package/build/components/block-list/use-block-props/use-scroll-into-view.js +54 -40
  121. package/build/components/block-list/use-block-props/use-scroll-into-view.js.map +7 -1
  122. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +205 -173
  123. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +7 -1
  124. package/build/components/block-list/use-in-between-inserter.js +122 -113
  125. package/build/components/block-list/use-in-between-inserter.js.map +7 -1
  126. package/build/components/block-list/zoom-out-separator.js +85 -80
  127. package/build/components/block-list/zoom-out-separator.js.map +7 -1
  128. package/build/components/block-list-appender/index.js +79 -86
  129. package/build/components/block-list-appender/index.js.map +7 -1
  130. package/build/components/block-lock/index.js +44 -31
  131. package/build/components/block-lock/index.js.map +7 -1
  132. package/build/components/block-lock/menu-item.js +59 -42
  133. package/build/components/block-lock/menu-item.js.map +7 -1
  134. package/build/components/block-lock/modal.js +233 -183
  135. package/build/components/block-lock/modal.js.map +7 -1
  136. package/build/components/block-lock/toolbar.js +59 -51
  137. package/build/components/block-lock/toolbar.js.map +7 -1
  138. package/build/components/block-lock/use-block-lock.js +48 -43
  139. package/build/components/block-lock/use-block-lock.js.map +7 -1
  140. package/build/components/block-manager/category.js +111 -65
  141. package/build/components/block-manager/category.js.map +7 -1
  142. package/build/components/block-manager/checklist.js +55 -36
  143. package/build/components/block-manager/checklist.js.map +7 -1
  144. package/build/components/block-manager/index.js +123 -91
  145. package/build/components/block-manager/index.js.map +7 -1
  146. package/build/components/block-mover/button.js +155 -133
  147. package/build/components/block-mover/button.js.map +7 -1
  148. package/build/components/block-mover/index.js +111 -95
  149. package/build/components/block-mover/index.js.map +7 -1
  150. package/build/components/block-mover/mover-description.js +243 -169
  151. package/build/components/block-mover/mover-description.js.map +7 -1
  152. package/build/components/block-navigation/dropdown.js +86 -72
  153. package/build/components/block-navigation/dropdown.js.map +7 -1
  154. package/build/components/block-parent-selector/index.js +73 -59
  155. package/build/components/block-parent-selector/index.js.map +7 -1
  156. package/build/components/block-pattern-setup/constants.js +29 -8
  157. package/build/components/block-pattern-setup/constants.js.map +7 -1
  158. package/build/components/block-pattern-setup/index.js +175 -147
  159. package/build/components/block-pattern-setup/index.js.map +7 -1
  160. package/build/components/block-pattern-setup/setup-toolbar.js +94 -73
  161. package/build/components/block-pattern-setup/setup-toolbar.js.map +7 -1
  162. package/build/components/block-pattern-setup/use-patterns-setup.js +42 -28
  163. package/build/components/block-pattern-setup/use-patterns-setup.js.map +7 -1
  164. package/build/components/block-patterns-list/index.js +189 -164
  165. package/build/components/block-patterns-list/index.js.map +7 -1
  166. package/build/components/block-patterns-paging/index.js +119 -84
  167. package/build/components/block-patterns-paging/index.js.map +7 -1
  168. package/build/components/block-popover/cover.js +54 -45
  169. package/build/components/block-popover/cover.js.map +7 -1
  170. package/build/components/block-popover/drop-zone.js +64 -54
  171. package/build/components/block-popover/drop-zone.js.map +7 -1
  172. package/build/components/block-popover/inbetween.js +127 -133
  173. package/build/components/block-popover/inbetween.js.map +7 -1
  174. package/build/components/block-popover/index.js +113 -91
  175. package/build/components/block-popover/index.js.map +7 -1
  176. package/build/components/block-popover/use-popover-scroll.js +48 -53
  177. package/build/components/block-popover/use-popover-scroll.js.map +7 -1
  178. package/build/components/block-preview/async.js +33 -35
  179. package/build/components/block-preview/async.js.map +7 -1
  180. package/build/components/block-preview/auto.js +114 -103
  181. package/build/components/block-preview/auto.js.map +7 -1
  182. package/build/components/block-preview/index.js +136 -116
  183. package/build/components/block-preview/index.js.map +7 -1
  184. package/build/components/block-quick-navigation/index.js +82 -76
  185. package/build/components/block-quick-navigation/index.js.map +7 -1
  186. package/build/components/block-removal-warning-modal/index.js +76 -55
  187. package/build/components/block-removal-warning-modal/index.js.map +7 -1
  188. package/build/components/block-rename/index.js +41 -24
  189. package/build/components/block-rename/index.js.map +7 -1
  190. package/build/components/block-rename/is-empty-string.js +22 -5
  191. package/build/components/block-rename/is-empty-string.js.map +7 -1
  192. package/build/components/block-rename/modal.js +135 -103
  193. package/build/components/block-rename/modal.js.map +7 -1
  194. package/build/components/block-rename/rename-control.js +59 -36
  195. package/build/components/block-rename/rename-control.js.map +7 -1
  196. package/build/components/block-rename/use-block-rename.js +24 -11
  197. package/build/components/block-rename/use-block-rename.js.map +7 -1
  198. package/build/components/block-selection-clearer/index.js +53 -57
  199. package/build/components/block-selection-clearer/index.js.map +7 -1
  200. package/build/components/block-settings-menu/block-html-convert-button.js +46 -34
  201. package/build/components/block-settings-menu/block-html-convert-button.js.map +7 -1
  202. package/build/components/block-settings-menu/block-mode-toggle.js +56 -53
  203. package/build/components/block-settings-menu/block-mode-toggle.js.map +7 -1
  204. package/build/components/block-settings-menu/block-parent-selector-menu-item.js +59 -42
  205. package/build/components/block-settings-menu/block-parent-selector-menu-item.js.map +7 -1
  206. package/build/components/block-settings-menu/block-settings-dropdown.js +287 -233
  207. package/build/components/block-settings-menu/block-settings-dropdown.js.map +7 -1
  208. package/build/components/block-settings-menu/block-settings-menu-first-item.js +27 -15
  209. package/build/components/block-settings-menu/block-settings-menu-first-item.js.map +7 -1
  210. package/build/components/block-settings-menu/index.js +53 -32
  211. package/build/components/block-settings-menu/index.js.map +7 -1
  212. package/build/components/block-settings-menu-controls/index.js +129 -107
  213. package/build/components/block-settings-menu-controls/index.js.map +7 -1
  214. package/build/components/block-styles/index.js +99 -75
  215. package/build/components/block-styles/index.js.map +7 -1
  216. package/build/components/block-styles/menu-items.js +60 -43
  217. package/build/components/block-styles/menu-items.js.map +7 -1
  218. package/build/components/block-styles/preview-panel.js +42 -26
  219. package/build/components/block-styles/preview-panel.js.map +7 -1
  220. package/build/components/block-styles/use-styles-for-block.js +53 -70
  221. package/build/components/block-styles/use-styles-for-block.js.map +7 -1
  222. package/build/components/block-styles/utils.js +61 -66
  223. package/build/components/block-styles/utils.js.map +7 -1
  224. package/build/components/block-switcher/block-styles-menu.js +46 -33
  225. package/build/components/block-switcher/block-styles-menu.js.map +7 -1
  226. package/build/components/block-switcher/block-transformations-menu.js +137 -126
  227. package/build/components/block-switcher/block-transformations-menu.js.map +7 -1
  228. package/build/components/block-switcher/block-variation-transformations.js +113 -85
  229. package/build/components/block-switcher/block-variation-transformations.js.map +7 -1
  230. package/build/components/block-switcher/index.js +247 -208
  231. package/build/components/block-switcher/index.js.map +7 -1
  232. package/build/components/block-switcher/pattern-transformations-menu.js +129 -99
  233. package/build/components/block-switcher/pattern-transformations-menu.js.map +7 -1
  234. package/build/components/block-switcher/preview-block-popover.js +48 -38
  235. package/build/components/block-switcher/preview-block-popover.js.map +7 -1
  236. package/build/components/block-switcher/use-transformed-patterns.js +62 -80
  237. package/build/components/block-switcher/use-transformed-patterns.js.map +7 -1
  238. package/build/components/block-switcher/utils.js +37 -45
  239. package/build/components/block-switcher/utils.js.map +7 -1
  240. package/build/components/block-title/index.js +35 -38
  241. package/build/components/block-title/index.js.map +7 -1
  242. package/build/components/block-title/use-block-display-title.js +48 -60
  243. package/build/components/block-title/use-block-display-title.js.map +7 -1
  244. package/build/components/block-toolbar/block-name-context.js +26 -13
  245. package/build/components/block-toolbar/block-name-context.js.map +7 -1
  246. package/build/components/block-toolbar/block-toolbar-last-item.js +27 -15
  247. package/build/components/block-toolbar/block-toolbar-last-item.js.map +7 -1
  248. package/build/components/block-toolbar/change-design.js +104 -92
  249. package/build/components/block-toolbar/change-design.js.map +7 -1
  250. package/build/components/block-toolbar/index.js +203 -186
  251. package/build/components/block-toolbar/index.js.map +7 -1
  252. package/build/components/block-toolbar/switch-section-style.js +111 -88
  253. package/build/components/block-toolbar/switch-section-style.js.map +7 -1
  254. package/build/components/block-toolbar/use-has-block-toolbar.js +33 -33
  255. package/build/components/block-toolbar/use-has-block-toolbar.js.map +7 -1
  256. package/build/components/block-toolbar/utils.js +63 -79
  257. package/build/components/block-toolbar/utils.js.map +7 -1
  258. package/build/components/block-tools/block-toolbar-popover.js +75 -72
  259. package/build/components/block-tools/block-toolbar-popover.js.map +7 -1
  260. package/build/components/block-tools/empty-block-inserter.js +64 -40
  261. package/build/components/block-tools/empty-block-inserter.js.map +7 -1
  262. package/build/components/block-tools/index.js +168 -119
  263. package/build/components/block-tools/index.js.map +7 -1
  264. package/build/components/block-tools/insertion-point.js +174 -159
  265. package/build/components/block-tools/insertion-point.js.map +7 -1
  266. package/build/components/block-tools/use-block-toolbar-popover-props.js +74 -101
  267. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +7 -1
  268. package/build/components/block-tools/use-selected-block-tool-props.js +58 -51
  269. package/build/components/block-tools/use-selected-block-tool-props.js.map +7 -1
  270. package/build/components/block-tools/use-show-block-tools.js +34 -31
  271. package/build/components/block-tools/use-show-block-tools.js.map +7 -1
  272. package/build/components/block-tools/zoom-out-mode-inserter-button.js +56 -31
  273. package/build/components/block-tools/zoom-out-mode-inserter-button.js.map +7 -1
  274. package/build/components/block-tools/zoom-out-mode-inserters.js +71 -54
  275. package/build/components/block-tools/zoom-out-mode-inserters.js.map +7 -1
  276. package/build/components/block-types-list/index.js +57 -35
  277. package/build/components/block-types-list/index.js.map +7 -1
  278. package/build/components/block-variation-picker/index.js +86 -58
  279. package/build/components/block-variation-picker/index.js.map +7 -1
  280. package/build/components/block-variation-transforms/index.js +155 -140
  281. package/build/components/block-variation-transforms/index.js.map +7 -1
  282. package/build/components/block-vertical-alignment-control/index.js +44 -28
  283. package/build/components/block-vertical-alignment-control/index.js.map +7 -1
  284. package/build/components/block-vertical-alignment-control/ui.js +62 -49
  285. package/build/components/block-vertical-alignment-control/ui.js.map +7 -1
  286. package/build/components/block-visibility/index.js +38 -17
  287. package/build/components/block-visibility/index.js.map +7 -1
  288. package/build/components/block-visibility/menu-item.js +99 -44
  289. package/build/components/block-visibility/menu-item.js.map +7 -1
  290. package/build/components/block-visibility/toolbar.js +75 -73
  291. package/build/components/block-visibility/toolbar.js.map +7 -1
  292. package/build/components/border-radius-control/constants.js +61 -32
  293. package/build/components/border-radius-control/constants.js.map +7 -1
  294. package/build/components/border-radius-control/index.js +106 -97
  295. package/build/components/border-radius-control/index.js.map +7 -1
  296. package/build/components/border-radius-control/linked-button.js +39 -26
  297. package/build/components/border-radius-control/linked-button.js.map +7 -1
  298. package/build/components/border-radius-control/single-input-control.js +171 -139
  299. package/build/components/border-radius-control/single-input-control.js.map +7 -1
  300. package/build/components/border-radius-control/utils.js +87 -181
  301. package/build/components/border-radius-control/utils.js.map +7 -1
  302. package/build/components/button-block-appender/index.js +105 -90
  303. package/build/components/button-block-appender/index.js.map +7 -1
  304. package/build/components/child-layout-control/index.js +317 -272
  305. package/build/components/child-layout-control/index.js.map +7 -1
  306. package/build/components/collab/block-comment-icon-slot.js +25 -12
  307. package/build/components/collab/block-comment-icon-slot.js.map +7 -1
  308. package/build/components/collab/block-comment-icon-toolbar-slot.js +27 -12
  309. package/build/components/collab/block-comment-icon-toolbar-slot.js.map +7 -1
  310. package/build/components/color-palette/control.js +44 -19
  311. package/build/components/color-palette/control.js.map +7 -1
  312. package/build/components/color-palette/index.js +35 -15
  313. package/build/components/color-palette/index.js.map +7 -1
  314. package/build/components/color-palette/with-color-context.js +58 -30
  315. package/build/components/color-palette/with-color-context.js.map +7 -1
  316. package/build/components/color-style-selector/index.js +72 -90
  317. package/build/components/color-style-selector/index.js.map +7 -1
  318. package/build/components/colors/index.js +44 -36
  319. package/build/components/colors/index.js.map +7 -1
  320. package/build/components/colors/utils.js +57 -81
  321. package/build/components/colors/utils.js.map +7 -1
  322. package/build/components/colors/with-colors.js +155 -192
  323. package/build/components/colors/with-colors.js.map +7 -1
  324. package/build/components/colors-gradients/control.js +140 -117
  325. package/build/components/colors-gradients/control.js.map +7 -1
  326. package/build/components/colors-gradients/dropdown.js +153 -159
  327. package/build/components/colors-gradients/dropdown.js.map +7 -1
  328. package/build/components/colors-gradients/panel-color-gradient-settings.js +120 -83
  329. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +7 -1
  330. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +92 -41
  331. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +7 -1
  332. package/build/components/content-lock/index.js +26 -10
  333. package/build/components/content-lock/index.js.map +7 -1
  334. package/build/components/content-lock/modify-content-lock-menu-item.js +61 -57
  335. package/build/components/content-lock/modify-content-lock-menu-item.js.map +7 -1
  336. package/build/components/contrast-checker/index.js +87 -73
  337. package/build/components/contrast-checker/index.js.map +7 -1
  338. package/build/components/convert-to-group-buttons/index.js +86 -60
  339. package/build/components/convert-to-group-buttons/index.js.map +7 -1
  340. package/build/components/convert-to-group-buttons/toolbar.js +104 -102
  341. package/build/components/convert-to-group-buttons/toolbar.js.map +7 -1
  342. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +49 -61
  343. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +7 -1
  344. package/build/components/copy-handler/index.js +50 -40
  345. package/build/components/copy-handler/index.js.map +7 -1
  346. package/build/components/date-format-picker/index.js +136 -110
  347. package/build/components/date-format-picker/index.js.map +7 -1
  348. package/build/components/default-block-appender/index.js +110 -98
  349. package/build/components/default-block-appender/index.js.map +7 -1
  350. package/build/components/dimensions-tool/aspect-ratio-tool.js +76 -73
  351. package/build/components/dimensions-tool/aspect-ratio-tool.js.map +7 -1
  352. package/build/components/dimensions-tool/index.js +136 -190
  353. package/build/components/dimensions-tool/index.js.map +7 -1
  354. package/build/components/dimensions-tool/scale-tool.js +88 -93
  355. package/build/components/dimensions-tool/scale-tool.js.map +7 -1
  356. package/build/components/dimensions-tool/width-height-tool.js +93 -107
  357. package/build/components/dimensions-tool/width-height-tool.js.map +7 -1
  358. package/build/components/duotone/utils.js +40 -58
  359. package/build/components/duotone/utils.js.map +7 -1
  360. package/build/components/duotone-control/index.js +82 -69
  361. package/build/components/duotone-control/index.js.map +7 -1
  362. package/build/components/editable-text/index.js +40 -37
  363. package/build/components/editable-text/index.js.map +7 -1
  364. package/build/components/editor-styles/index.js +113 -100
  365. package/build/components/editor-styles/index.js.map +7 -1
  366. package/build/components/floating-toolbar/nav-up-icon.js +48 -29
  367. package/build/components/floating-toolbar/nav-up-icon.js.map +7 -1
  368. package/build/components/font-appearance-control/index.js +100 -118
  369. package/build/components/font-appearance-control/index.js.map +7 -1
  370. package/build/components/font-family/index.js +84 -66
  371. package/build/components/font-family/index.js.map +7 -1
  372. package/build/components/font-sizes/fluid-utils.js +81 -164
  373. package/build/components/font-sizes/fluid-utils.js.map +7 -1
  374. package/build/components/font-sizes/font-size-picker.js +38 -27
  375. package/build/components/font-sizes/font-size-picker.js.map +7 -1
  376. package/build/components/font-sizes/index.js +48 -43
  377. package/build/components/font-sizes/index.js.map +7 -1
  378. package/build/components/font-sizes/utils.js +37 -57
  379. package/build/components/font-sizes/utils.js.map +7 -1
  380. package/build/components/font-sizes/with-font-sizes.js +144 -119
  381. package/build/components/font-sizes/with-font-sizes.js.map +7 -1
  382. package/build/components/global-styles/advanced-panel.js +64 -51
  383. package/build/components/global-styles/advanced-panel.js.map +7 -1
  384. package/build/components/global-styles/background-panel.js +97 -88
  385. package/build/components/global-styles/background-panel.js.map +7 -1
  386. package/build/components/global-styles/border-panel.js +188 -156
  387. package/build/components/global-styles/border-panel.js.map +7 -1
  388. package/build/components/global-styles/color-panel.js +521 -401
  389. package/build/components/global-styles/color-panel.js.map +7 -1
  390. package/build/components/global-styles/context.js +36 -14
  391. package/build/components/global-styles/context.js.map +7 -1
  392. package/build/components/global-styles/dimensions-panel.js +427 -360
  393. package/build/components/global-styles/dimensions-panel.js.map +7 -1
  394. package/build/components/global-styles/filters-panel.js +153 -142
  395. package/build/components/global-styles/filters-panel.js.map +7 -1
  396. package/build/components/global-styles/get-block-css-selector.js +44 -79
  397. package/build/components/global-styles/get-block-css-selector.js.map +7 -1
  398. package/build/components/global-styles/get-global-styles-changes.js +152 -168
  399. package/build/components/global-styles/get-global-styles-changes.js.map +7 -1
  400. package/build/components/global-styles/hooks.js +259 -144
  401. package/build/components/global-styles/hooks.js.map +7 -1
  402. package/build/components/global-styles/image-settings-panel.js +62 -51
  403. package/build/components/global-styles/image-settings-panel.js.map +7 -1
  404. package/build/components/global-styles/index.js +107 -196
  405. package/build/components/global-styles/index.js.map +7 -1
  406. package/build/components/global-styles/shadow-panel-components.js +175 -164
  407. package/build/components/global-styles/shadow-panel-components.js.map +7 -1
  408. package/build/components/global-styles/typography-panel.js +421 -288
  409. package/build/components/global-styles/typography-panel.js.map +7 -1
  410. package/build/components/global-styles/typography-utils.js +92 -179
  411. package/build/components/global-styles/typography-utils.js.map +7 -1
  412. package/build/components/global-styles/use-global-styles-output.js +695 -761
  413. package/build/components/global-styles/use-global-styles-output.js.map +7 -1
  414. package/build/components/global-styles/utils.js +302 -358
  415. package/build/components/global-styles/utils.js.map +7 -1
  416. package/build/components/gradients/index.js +21 -15
  417. package/build/components/gradients/index.js.map +7 -1
  418. package/build/components/gradients/use-gradient.js +97 -83
  419. package/build/components/gradients/use-gradient.js.map +7 -1
  420. package/build/components/gradients/with-gradient.js +31 -20
  421. package/build/components/gradients/with-gradient.js.map +7 -1
  422. package/build/components/grid/grid-item-movers.js +160 -103
  423. package/build/components/grid/grid-item-movers.js.map +7 -1
  424. package/build/components/grid/grid-item-resizer.js +144 -108
  425. package/build/components/grid/grid-item-resizer.js.map +7 -1
  426. package/build/components/grid/grid-visualizer.js +279 -205
  427. package/build/components/grid/grid-visualizer.js.map +7 -1
  428. package/build/components/grid/index.js +34 -30
  429. package/build/components/grid/index.js.map +7 -1
  430. package/build/components/grid/use-get-number-of-blocks-before-cell.js +30 -24
  431. package/build/components/grid/use-get-number-of-blocks-before-cell.js.map +7 -1
  432. package/build/components/grid/use-grid-layout-sync.js +124 -118
  433. package/build/components/grid/use-grid-layout-sync.js.map +7 -1
  434. package/build/components/grid/utils.js +101 -80
  435. package/build/components/grid/utils.js.map +7 -1
  436. package/build/components/height-control/index.js +132 -196
  437. package/build/components/height-control/index.js.map +7 -1
  438. package/build/components/html-element-control/index.js +76 -91
  439. package/build/components/html-element-control/index.js.map +7 -1
  440. package/build/components/html-element-control/messages.js +58 -24
  441. package/build/components/html-element-control/messages.js.map +7 -1
  442. package/build/components/iframe/get-compatibility-styles.js +89 -87
  443. package/build/components/iframe/get-compatibility-styles.js.map +7 -1
  444. package/build/components/iframe/index.js +192 -214
  445. package/build/components/iframe/index.js.map +7 -1
  446. package/build/components/iframe/use-scale-canvas.js +164 -272
  447. package/build/components/iframe/use-scale-canvas.js.map +7 -1
  448. package/build/components/image-editor/aspect-ratio-dropdown.js +120 -106
  449. package/build/components/image-editor/aspect-ratio-dropdown.js.map +7 -1
  450. package/build/components/image-editor/constants.js +34 -9
  451. package/build/components/image-editor/constants.js.map +7 -1
  452. package/build/components/image-editor/context.js +54 -33
  453. package/build/components/image-editor/context.js.map +7 -1
  454. package/build/components/image-editor/cropper.js +85 -59
  455. package/build/components/image-editor/cropper.js.map +7 -1
  456. package/build/components/image-editor/form-controls.js +31 -32
  457. package/build/components/image-editor/form-controls.js.map +7 -1
  458. package/build/components/image-editor/index.js +73 -49
  459. package/build/components/image-editor/index.js.map +7 -1
  460. package/build/components/image-editor/rotation-button.js +37 -28
  461. package/build/components/image-editor/rotation-button.js.map +7 -1
  462. package/build/components/image-editor/use-save-image.js +98 -72
  463. package/build/components/image-editor/use-save-image.js.map +7 -1
  464. package/build/components/image-editor/use-transform-image.js +70 -45
  465. package/build/components/image-editor/use-transform-image.js.map +7 -1
  466. package/build/components/image-editor/zoom-dropdown.js +58 -50
  467. package/build/components/image-editor/zoom-dropdown.js.map +7 -1
  468. package/build/components/image-size-control/index.js +115 -102
  469. package/build/components/image-size-control/index.js.map +7 -1
  470. package/build/components/image-size-control/use-dimension-handler.js +40 -34
  471. package/build/components/image-size-control/use-dimension-handler.js.map +7 -1
  472. package/build/components/index.js +408 -1075
  473. package/build/components/index.js.map +7 -1
  474. package/build/components/inner-blocks/button-block-appender.js +49 -30
  475. package/build/components/inner-blocks/button-block-appender.js.map +7 -1
  476. package/build/components/inner-blocks/default-block-appender.js +37 -19
  477. package/build/components/inner-blocks/default-block-appender.js.map +7 -1
  478. package/build/components/inner-blocks/index.js +167 -190
  479. package/build/components/inner-blocks/index.js.map +7 -1
  480. package/build/components/inner-blocks/use-block-context.js +49 -37
  481. package/build/components/inner-blocks/use-block-context.js.map +7 -1
  482. package/build/components/inner-blocks/use-inner-block-template-sync.js +69 -73
  483. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +7 -1
  484. package/build/components/inner-blocks/use-nested-settings-update.js +82 -107
  485. package/build/components/inner-blocks/use-nested-settings-update.js.map +7 -1
  486. package/build/components/inserter/block-patterns-explorer/index.js +78 -59
  487. package/build/components/inserter/block-patterns-explorer/index.js.map +7 -1
  488. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +63 -49
  489. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +7 -1
  490. package/build/components/inserter/block-patterns-explorer/pattern-list.js +137 -85
  491. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +7 -1
  492. package/build/components/inserter/block-patterns-tab/index.js +89 -62
  493. package/build/components/inserter/block-patterns-tab/index.js.map +7 -1
  494. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +184 -114
  495. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +7 -1
  496. package/build/components/inserter/block-patterns-tab/patterns-filter.js +144 -104
  497. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +7 -1
  498. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +89 -38
  499. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +7 -1
  500. package/build/components/inserter/block-patterns-tab/utils.js +57 -42
  501. package/build/components/inserter/block-patterns-tab/utils.js.map +7 -1
  502. package/build/components/inserter/block-types-tab.js +173 -140
  503. package/build/components/inserter/block-types-tab.js.map +7 -1
  504. package/build/components/inserter/category-tabs/index.js +90 -71
  505. package/build/components/inserter/category-tabs/index.js.map +7 -1
  506. package/build/components/inserter/hooks/use-block-types-state.js +92 -68
  507. package/build/components/inserter/hooks/use-block-types-state.js.map +7 -1
  508. package/build/components/inserter/hooks/use-insertion-point.js +160 -127
  509. package/build/components/inserter/hooks/use-insertion-point.js.map +7 -1
  510. package/build/components/inserter/hooks/use-patterns-paging.js +47 -35
  511. package/build/components/inserter/hooks/use-patterns-paging.js.map +7 -1
  512. package/build/components/inserter/hooks/use-patterns-state.js +111 -84
  513. package/build/components/inserter/hooks/use-patterns-state.js.map +7 -1
  514. package/build/components/inserter/index.js +230 -237
  515. package/build/components/inserter/index.js.map +7 -1
  516. package/build/components/inserter/library.js +73 -53
  517. package/build/components/inserter/library.js.map +7 -1
  518. package/build/components/inserter/media-tab/hooks.js +88 -86
  519. package/build/components/inserter/media-tab/hooks.js.map +7 -1
  520. package/build/components/inserter/media-tab/index.js +41 -24
  521. package/build/components/inserter/media-tab/index.js.map +7 -1
  522. package/build/components/inserter/media-tab/media-list.js +45 -29
  523. package/build/components/inserter/media-tab/media-list.js.map +7 -1
  524. package/build/components/inserter/media-tab/media-panel.js +72 -52
  525. package/build/components/inserter/media-tab/media-panel.js.map +7 -1
  526. package/build/components/inserter/media-tab/media-preview.js +266 -238
  527. package/build/components/inserter/media-tab/media-preview.js.map +7 -1
  528. package/build/components/inserter/media-tab/media-tab.js +108 -84
  529. package/build/components/inserter/media-tab/media-tab.js.map +7 -1
  530. package/build/components/inserter/media-tab/utils.js +47 -45
  531. package/build/components/inserter/media-tab/utils.js.map +7 -1
  532. package/build/components/inserter/menu.js +317 -221
  533. package/build/components/inserter/menu.js.map +7 -1
  534. package/build/components/inserter/mobile-tab-navigation.js +82 -76
  535. package/build/components/inserter/mobile-tab-navigation.js.map +7 -1
  536. package/build/components/inserter/no-results.js +26 -18
  537. package/build/components/inserter/no-results.js.map +7 -1
  538. package/build/components/inserter/panel.js +33 -31
  539. package/build/components/inserter/panel.js.map +7 -1
  540. package/build/components/inserter/preview-panel.js +71 -64
  541. package/build/components/inserter/preview-panel.js.map +7 -1
  542. package/build/components/inserter/quick-inserter.js +114 -88
  543. package/build/components/inserter/quick-inserter.js.map +7 -1
  544. package/build/components/inserter/search-items.js +90 -114
  545. package/build/components/inserter/search-items.js.map +7 -1
  546. package/build/components/inserter/search-results.js +171 -115
  547. package/build/components/inserter/search-results.js.map +7 -1
  548. package/build/components/inserter/tips.js +55 -28
  549. package/build/components/inserter/tips.js.map +7 -1
  550. package/build/components/inserter-button/sparkles.js +30 -19
  551. package/build/components/inserter-button/sparkles.js.map +7 -1
  552. package/build/components/inserter-draggable-blocks/index.js +87 -75
  553. package/build/components/inserter-draggable-blocks/index.js.map +7 -1
  554. package/build/components/inserter-list-item/index.js +135 -100
  555. package/build/components/inserter-list-item/index.js.map +7 -1
  556. package/build/components/inserter-listbox/context.js +26 -13
  557. package/build/components/inserter-listbox/context.js.map +7 -1
  558. package/build/components/inserter-listbox/group.js +52 -32
  559. package/build/components/inserter-listbox/group.js.map +7 -1
  560. package/build/components/inserter-listbox/index.js +59 -52
  561. package/build/components/inserter-listbox/index.js.map +7 -1
  562. package/build/components/inserter-listbox/item.js +47 -47
  563. package/build/components/inserter-listbox/item.js.map +7 -1
  564. package/build/components/inserter-listbox/row.js +27 -18
  565. package/build/components/inserter-listbox/row.js.map +7 -1
  566. package/build/components/inserter-menu-extension/index.js +27 -15
  567. package/build/components/inserter-menu-extension/index.js.map +7 -1
  568. package/build/components/inspector-controls/block-support-slot-container.js +37 -28
  569. package/build/components/inspector-controls/block-support-slot-container.js.map +7 -1
  570. package/build/components/inspector-controls/block-support-tools-panel.js +74 -65
  571. package/build/components/inspector-controls/block-support-tools-panel.js.map +7 -1
  572. package/build/components/inspector-controls/fill.js +71 -74
  573. package/build/components/inspector-controls/fill.js.map +7 -1
  574. package/build/components/inspector-controls/groups.js +51 -24
  575. package/build/components/inspector-controls/groups.js.map +7 -1
  576. package/build/components/inspector-controls/index.js +48 -34
  577. package/build/components/inspector-controls/index.js.map +7 -1
  578. package/build/components/inspector-controls/slot.js +60 -46
  579. package/build/components/inspector-controls/slot.js.map +7 -1
  580. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +56 -30
  581. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +7 -1
  582. package/build/components/inspector-controls-tabs/content-tab.js +39 -28
  583. package/build/components/inspector-controls-tabs/content-tab.js.map +7 -1
  584. package/build/components/inspector-controls-tabs/index.js +86 -97
  585. package/build/components/inspector-controls-tabs/index.js.map +7 -1
  586. package/build/components/inspector-controls-tabs/position-controls-panel.js +90 -73
  587. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +7 -1
  588. package/build/components/inspector-controls-tabs/settings-tab.js +43 -24
  589. package/build/components/inspector-controls-tabs/settings-tab.js.map +7 -1
  590. package/build/components/inspector-controls-tabs/styles-tab.js +83 -56
  591. package/build/components/inspector-controls-tabs/styles-tab.js.map +7 -1
  592. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +67 -51
  593. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +7 -1
  594. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +30 -11
  595. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +7 -1
  596. package/build/components/inspector-controls-tabs/utils.js +54 -31
  597. package/build/components/inspector-controls-tabs/utils.js.map +7 -1
  598. package/build/components/inspector-popover-header/index.js +64 -46
  599. package/build/components/inspector-popover-header/index.js.map +7 -1
  600. package/build/components/justify-content-control/index.js +44 -28
  601. package/build/components/justify-content-control/index.js.map +7 -1
  602. package/build/components/justify-content-control/ui.js +86 -67
  603. package/build/components/justify-content-control/ui.js.map +7 -1
  604. package/build/components/keyboard-shortcuts/index.js +136 -107
  605. package/build/components/keyboard-shortcuts/index.js.map +7 -1
  606. package/build/components/letter-spacing-control/index.js +65 -55
  607. package/build/components/letter-spacing-control/index.js.map +7 -1
  608. package/build/components/line-height-control/index.js +75 -84
  609. package/build/components/line-height-control/index.js.map +7 -1
  610. package/build/components/line-height-control/utils.js +39 -33
  611. package/build/components/line-height-control/utils.js.map +7 -1
  612. package/build/components/link-control/constants.js +56 -23
  613. package/build/components/link-control/constants.js.map +7 -1
  614. package/build/components/link-control/index.js +336 -323
  615. package/build/components/link-control/index.js.map +7 -1
  616. package/build/components/link-control/is-url-like.js +31 -42
  617. package/build/components/link-control/is-url-like.js.map +7 -1
  618. package/build/components/link-control/link-preview.js +147 -140
  619. package/build/components/link-control/link-preview.js.map +7 -1
  620. package/build/components/link-control/search-create-button.js +53 -29
  621. package/build/components/link-control/search-create-button.js.map +7 -1
  622. package/build/components/link-control/search-input.js +154 -140
  623. package/build/components/link-control/search-input.js.map +7 -1
  624. package/build/components/link-control/search-item.js +108 -93
  625. package/build/components/link-control/search-item.js.map +7 -1
  626. package/build/components/link-control/search-results.js +100 -73
  627. package/build/components/link-control/search-results.js.map +7 -1
  628. package/build/components/link-control/settings-drawer.js +56 -51
  629. package/build/components/link-control/settings-drawer.js.map +7 -1
  630. package/build/components/link-control/settings.js +66 -35
  631. package/build/components/link-control/settings.js.map +7 -1
  632. package/build/components/link-control/use-create-page.js +44 -42
  633. package/build/components/link-control/use-create-page.js.map +7 -1
  634. package/build/components/link-control/use-internal-value.js +56 -35
  635. package/build/components/link-control/use-internal-value.js.map +7 -1
  636. package/build/components/link-control/use-rich-url-data.js +38 -38
  637. package/build/components/link-control/use-rich-url-data.js.map +7 -1
  638. package/build/components/link-control/use-search-handler.js +97 -87
  639. package/build/components/link-control/use-search-handler.js.map +7 -1
  640. package/build/components/link-control/viewer-slot.js +34 -17
  641. package/build/components/link-control/viewer-slot.js.map +7 -1
  642. package/build/components/list-view/appender.js +118 -98
  643. package/build/components/list-view/appender.js.map +7 -1
  644. package/build/components/list-view/aria-referenced-text.js +28 -32
  645. package/build/components/list-view/aria-referenced-text.js.map +7 -1
  646. package/build/components/list-view/block-contents.js +93 -78
  647. package/build/components/list-view/block-contents.js.map +7 -1
  648. package/build/components/list-view/block-select-button.js +146 -145
  649. package/build/components/list-view/block-select-button.js.map +7 -1
  650. package/build/components/list-view/block.js +386 -386
  651. package/build/components/list-view/block.js.map +7 -1
  652. package/build/components/list-view/branch.js +154 -147
  653. package/build/components/list-view/branch.js.map +7 -1
  654. package/build/components/list-view/context.js +32 -14
  655. package/build/components/list-view/context.js.map +7 -1
  656. package/build/components/list-view/drop-indicator.js +168 -172
  657. package/build/components/list-view/drop-indicator.js.map +7 -1
  658. package/build/components/list-view/expander.js +36 -27
  659. package/build/components/list-view/expander.js.map +7 -1
  660. package/build/components/list-view/index.js +279 -270
  661. package/build/components/list-view/index.js.map +7 -1
  662. package/build/components/list-view/leaf.js +74 -55
  663. package/build/components/list-view/leaf.js.map +7 -1
  664. package/build/components/list-view/use-block-selection.js +116 -108
  665. package/build/components/list-view/use-block-selection.js.map +7 -1
  666. package/build/components/list-view/use-clipboard-handler.js +71 -78
  667. package/build/components/list-view/use-clipboard-handler.js.map +7 -1
  668. package/build/components/list-view/use-list-view-block-indexes.js +26 -13
  669. package/build/components/list-view/use-list-view-block-indexes.js.map +7 -1
  670. package/build/components/list-view/use-list-view-client-ids.js +41 -32
  671. package/build/components/list-view/use-list-view-client-ids.js.map +7 -1
  672. package/build/components/list-view/use-list-view-collapse-items.js +32 -33
  673. package/build/components/list-view/use-list-view-collapse-items.js.map +7 -1
  674. package/build/components/list-view/use-list-view-drop-zone.js +189 -303
  675. package/build/components/list-view/use-list-view-drop-zone.js.map +7 -1
  676. package/build/components/list-view/use-list-view-expand-selected-item.js +46 -38
  677. package/build/components/list-view/use-list-view-expand-selected-item.js.map +7 -1
  678. package/build/components/list-view/use-list-view-images.js +44 -64
  679. package/build/components/list-view/use-list-view-images.js.map +7 -1
  680. package/build/components/list-view/use-list-view-scroll-into-view.js +27 -26
  681. package/build/components/list-view/use-list-view-scroll-into-view.js.map +7 -1
  682. package/build/components/list-view/utils.js +72 -120
  683. package/build/components/list-view/utils.js.map +7 -1
  684. package/build/components/media-placeholder/index.js +352 -298
  685. package/build/components/media-placeholder/index.js.map +7 -1
  686. package/build/components/media-replace-flow/index.js +181 -160
  687. package/build/components/media-replace-flow/index.js.map +7 -1
  688. package/build/components/media-upload/check.js +33 -29
  689. package/build/components/media-upload/check.js.map +7 -1
  690. package/build/components/media-upload/index.js +24 -22
  691. package/build/components/media-upload/index.js.map +7 -1
  692. package/build/components/media-upload-progress/constants.js +42 -11
  693. package/build/components/media-upload-progress/constants.js.map +7 -1
  694. package/build/components/multi-selection-inspector/index.js +59 -35
  695. package/build/components/multi-selection-inspector/index.js.map +7 -1
  696. package/build/components/navigable-toolbar/index.js +98 -103
  697. package/build/components/navigable-toolbar/index.js.map +7 -1
  698. package/build/components/observe-typing/index.js +142 -211
  699. package/build/components/observe-typing/index.js.map +7 -1
  700. package/build/components/panel-color-settings/index.js +47 -29
  701. package/build/components/panel-color-settings/index.js.map +7 -1
  702. package/build/components/plain-text/index.js +50 -79
  703. package/build/components/plain-text/index.js.map +7 -1
  704. package/build/components/preview-options/index.js +35 -13
  705. package/build/components/preview-options/index.js.map +7 -1
  706. package/build/components/provider/block-refs-provider.js +36 -27
  707. package/build/components/provider/block-refs-provider.js.map +7 -1
  708. package/build/components/provider/index.js +111 -97
  709. package/build/components/provider/index.js.map +7 -1
  710. package/build/components/provider/use-block-sync.js +57 -153
  711. package/build/components/provider/use-block-sync.js.map +7 -1
  712. package/build/components/provider/use-media-upload-settings.js +33 -24
  713. package/build/components/provider/use-media-upload-settings.js.map +7 -1
  714. package/build/components/provider/with-registry-provider.js +47 -43
  715. package/build/components/provider/with-registry-provider.js.map +7 -1
  716. package/build/components/publish-date-time-picker/index.js +76 -48
  717. package/build/components/publish-date-time-picker/index.js.map +7 -1
  718. package/build/components/recursion-provider/index.js +68 -93
  719. package/build/components/recursion-provider/index.js.map +7 -1
  720. package/build/components/resizable-box-popover/index.js +44 -25
  721. package/build/components/resizable-box-popover/index.js.map +7 -1
  722. package/build/components/resolution-tool/index.js +67 -43
  723. package/build/components/resolution-tool/index.js.map +7 -1
  724. package/build/components/responsive-block-control/index.js +114 -72
  725. package/build/components/responsive-block-control/index.js.map +7 -1
  726. package/build/components/responsive-block-control/label.js +40 -26
  727. package/build/components/responsive-block-control/label.js.map +7 -1
  728. package/build/components/rich-text/content.js +56 -48
  729. package/build/components/rich-text/content.js.map +7 -1
  730. package/build/components/rich-text/event-listeners/before-input-rules.js +45 -61
  731. package/build/components/rich-text/event-listeners/before-input-rules.js.map +7 -1
  732. package/build/components/rich-text/event-listeners/delete.js +34 -39
  733. package/build/components/rich-text/event-listeners/delete.js.map +7 -1
  734. package/build/components/rich-text/event-listeners/enter.js +43 -46
  735. package/build/components/rich-text/event-listeners/enter.js.map +7 -1
  736. package/build/components/rich-text/event-listeners/firefox-compat.js +31 -24
  737. package/build/components/rich-text/event-listeners/firefox-compat.js.map +7 -1
  738. package/build/components/rich-text/event-listeners/index.js +80 -40
  739. package/build/components/rich-text/event-listeners/index.js.map +7 -1
  740. package/build/components/rich-text/event-listeners/input-events.js +26 -12
  741. package/build/components/rich-text/event-listeners/input-events.js.map +7 -1
  742. package/build/components/rich-text/event-listeners/input-rules.js +68 -74
  743. package/build/components/rich-text/event-listeners/input-rules.js.map +7 -1
  744. package/build/components/rich-text/event-listeners/insert-replacement-text.js +29 -24
  745. package/build/components/rich-text/event-listeners/insert-replacement-text.js.map +7 -1
  746. package/build/components/rich-text/event-listeners/paste-handler.js +59 -72
  747. package/build/components/rich-text/event-listeners/paste-handler.js.map +7 -1
  748. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js +27 -18
  749. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +7 -1
  750. package/build/components/rich-text/event-listeners/shortcuts.js +26 -12
  751. package/build/components/rich-text/event-listeners/shortcuts.js.map +7 -1
  752. package/build/components/rich-text/event-listeners/undo-automatic-change.js +32 -31
  753. package/build/components/rich-text/event-listeners/undo-automatic-change.js.map +7 -1
  754. package/build/components/rich-text/format-edit.js +72 -57
  755. package/build/components/rich-text/format-edit.js.map +7 -1
  756. package/build/components/rich-text/format-toolbar/index.js +79 -61
  757. package/build/components/rich-text/format-toolbar/index.js.map +7 -1
  758. package/build/components/rich-text/format-toolbar-container.js +61 -52
  759. package/build/components/rich-text/format-toolbar-container.js.map +7 -1
  760. package/build/components/rich-text/get-rich-text-values.js +75 -54
  761. package/build/components/rich-text/get-rich-text-values.js.map +7 -1
  762. package/build/components/rich-text/index.js +340 -342
  763. package/build/components/rich-text/index.js.map +7 -1
  764. package/build/components/rich-text/input-event.js +32 -22
  765. package/build/components/rich-text/input-event.js.map +7 -1
  766. package/build/components/rich-text/multiline.js +104 -76
  767. package/build/components/rich-text/multiline.js.map +7 -1
  768. package/build/components/rich-text/native/format-edit.js +44 -30
  769. package/build/components/rich-text/native/format-edit.js.map +7 -1
  770. package/build/components/rich-text/native/index.js +24 -7
  771. package/build/components/rich-text/native/index.js.map +7 -1
  772. package/build/components/rich-text/native/use-format-types.js +89 -63
  773. package/build/components/rich-text/native/use-format-types.js.map +7 -1
  774. package/build/components/rich-text/prevent-event-discovery.js +31 -17
  775. package/build/components/rich-text/prevent-event-discovery.js.map +7 -1
  776. package/build/components/rich-text/shortcut.js +34 -25
  777. package/build/components/rich-text/shortcut.js.map +7 -1
  778. package/build/components/rich-text/toolbar-button.js +32 -21
  779. package/build/components/rich-text/toolbar-button.js.map +7 -1
  780. package/build/components/rich-text/use-format-types.js +127 -90
  781. package/build/components/rich-text/use-format-types.js.map +7 -1
  782. package/build/components/rich-text/use-mark-persistent.js +34 -32
  783. package/build/components/rich-text/use-mark-persistent.js.map +7 -1
  784. package/build/components/rich-text/utils.js +46 -45
  785. package/build/components/rich-text/utils.js.map +7 -1
  786. package/build/components/rich-text/with-deprecations.js +64 -37
  787. package/build/components/rich-text/with-deprecations.js.map +7 -1
  788. package/build/components/selection-scroll-into-view/index.js +40 -20
  789. package/build/components/selection-scroll-into-view/index.js.map +7 -1
  790. package/build/components/skip-to-selected-block/index.js +46 -33
  791. package/build/components/skip-to-selected-block/index.js.map +7 -1
  792. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +56 -39
  793. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +7 -1
  794. package/build/components/spacing-sizes-control/index.js +91 -113
  795. package/build/components/spacing-sizes-control/index.js.map +7 -1
  796. package/build/components/spacing-sizes-control/input-controls/axial.js +61 -38
  797. package/build/components/spacing-sizes-control/input-controls/axial.js.map +7 -1
  798. package/build/components/spacing-sizes-control/input-controls/separated.js +57 -32
  799. package/build/components/spacing-sizes-control/input-controls/separated.js.map +7 -1
  800. package/build/components/spacing-sizes-control/input-controls/single.js +56 -29
  801. package/build/components/spacing-sizes-control/input-controls/single.js.map +7 -1
  802. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +239 -276
  803. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +7 -1
  804. package/build/components/spacing-sizes-control/linked-button.js +38 -25
  805. package/build/components/spacing-sizes-control/linked-button.js.map +7 -1
  806. package/build/components/spacing-sizes-control/utils.js +112 -180
  807. package/build/components/spacing-sizes-control/utils.js.map +7 -1
  808. package/build/components/tabbed-sidebar/index.js +77 -99
  809. package/build/components/tabbed-sidebar/index.js.map +7 -1
  810. package/build/components/text-alignment-control/index.js +95 -69
  811. package/build/components/text-alignment-control/index.js.map +7 -1
  812. package/build/components/text-decoration-control/index.js +82 -61
  813. package/build/components/text-decoration-control/index.js.map +7 -1
  814. package/build/components/text-transform-control/index.js +88 -70
  815. package/build/components/text-transform-control/index.js.map +7 -1
  816. package/build/components/typewriter/index.js +173 -211
  817. package/build/components/typewriter/index.js.map +7 -1
  818. package/build/components/unit-control/index.js +30 -27
  819. package/build/components/unit-control/index.js.map +7 -1
  820. package/build/components/url-input/button.js +93 -74
  821. package/build/components/url-input/button.js.map +7 -1
  822. package/build/components/url-input/index.js +211 -247
  823. package/build/components/url-input/index.js.map +7 -1
  824. package/build/components/url-popover/image-url-input-ui.js +253 -202
  825. package/build/components/url-popover/image-url-input-ui.js.map +7 -1
  826. package/build/components/url-popover/index.js +113 -101
  827. package/build/components/url-popover/index.js.map +7 -1
  828. package/build/components/url-popover/link-editor.js +67 -38
  829. package/build/components/url-popover/link-editor.js.map +7 -1
  830. package/build/components/url-popover/link-viewer-url.js +43 -32
  831. package/build/components/url-popover/link-viewer-url.js.map +7 -1
  832. package/build/components/url-popover/link-viewer.js +67 -38
  833. package/build/components/url-popover/link-viewer.js.map +7 -1
  834. package/build/components/use-block-commands/index.js +181 -151
  835. package/build/components/use-block-commands/index.js.map +7 -1
  836. package/build/components/use-block-display-information/index.js +74 -105
  837. package/build/components/use-block-display-information/index.js.map +7 -1
  838. package/build/components/use-block-drop-zone/index.js +303 -313
  839. package/build/components/use-block-drop-zone/index.js.map +7 -1
  840. package/build/components/use-flash-editable-blocks/index.js +66 -52
  841. package/build/components/use-flash-editable-blocks/index.js.map +7 -1
  842. package/build/components/use-moving-animation/index.js +66 -111
  843. package/build/components/use-moving-animation/index.js.map +7 -1
  844. package/build/components/use-on-block-drop/index.js +201 -180
  845. package/build/components/use-on-block-drop/index.js.map +7 -1
  846. package/build/components/use-on-block-drop/types.js +16 -5
  847. package/build/components/use-on-block-drop/types.js.map +7 -1
  848. package/build/components/use-paste-styles/index.js +144 -142
  849. package/build/components/use-paste-styles/index.js.map +7 -1
  850. package/build/components/use-resize-canvas/index.js +38 -32
  851. package/build/components/use-resize-canvas/index.js.map +7 -1
  852. package/build/components/use-settings/index.js +55 -57
  853. package/build/components/use-settings/index.js.map +7 -1
  854. package/build/components/warning/index.js +73 -65
  855. package/build/components/warning/index.js.map +7 -1
  856. package/build/components/writing-flow/index.js +111 -72
  857. package/build/components/writing-flow/index.js.map +7 -1
  858. package/build/components/writing-flow/use-arrow-nav.js +115 -153
  859. package/build/components/writing-flow/use-arrow-nav.js.map +7 -1
  860. package/build/components/writing-flow/use-click-selection.js +55 -55
  861. package/build/components/writing-flow/use-click-selection.js.map +7 -1
  862. package/build/components/writing-flow/use-clipboard-handler.js +83 -87
  863. package/build/components/writing-flow/use-clipboard-handler.js.map +7 -1
  864. package/build/components/writing-flow/use-drag-selection.js +99 -149
  865. package/build/components/writing-flow/use-drag-selection.js.map +7 -1
  866. package/build/components/writing-flow/use-input.js +72 -62
  867. package/build/components/writing-flow/use-input.js.map +7 -1
  868. package/build/components/writing-flow/use-multi-selection.js +57 -61
  869. package/build/components/writing-flow/use-multi-selection.js.map +7 -1
  870. package/build/components/writing-flow/use-select-all.js +39 -37
  871. package/build/components/writing-flow/use-select-all.js.map +7 -1
  872. package/build/components/writing-flow/use-selection-observer.js +136 -188
  873. package/build/components/writing-flow/use-selection-observer.js.map +7 -1
  874. package/build/components/writing-flow/use-tab-nav.js +97 -147
  875. package/build/components/writing-flow/use-tab-nav.js.map +7 -1
  876. package/build/components/writing-flow/utils.js +59 -71
  877. package/build/components/writing-flow/utils.js.map +7 -1
  878. package/build/components/writing-mode-control/index.js +75 -62
  879. package/build/components/writing-mode-control/index.js.map +7 -1
  880. package/build/elements/index.js +30 -10
  881. package/build/elements/index.js.map +7 -1
  882. package/build/hooks/align.js +102 -133
  883. package/build/hooks/align.js.map +7 -1
  884. package/build/hooks/allowed-blocks.js +84 -0
  885. package/build/hooks/allowed-blocks.js.map +7 -0
  886. package/build/hooks/anchor.js +81 -88
  887. package/build/hooks/anchor.js.map +7 -1
  888. package/build/hooks/aria-label.js +43 -43
  889. package/build/hooks/aria-label.js.map +7 -1
  890. package/build/hooks/background.js +112 -112
  891. package/build/hooks/background.js.map +7 -1
  892. package/build/hooks/block-bindings.js +394 -253
  893. package/build/hooks/block-bindings.js.map +7 -1
  894. package/build/hooks/block-hooks.js +171 -163
  895. package/build/hooks/block-hooks.js.map +7 -1
  896. package/build/hooks/block-renaming.js +41 -32
  897. package/build/hooks/block-renaming.js.map +7 -1
  898. package/build/hooks/block-style-variation.js +152 -180
  899. package/build/hooks/block-style-variation.js.map +7 -1
  900. package/build/hooks/border.js +183 -254
  901. package/build/hooks/border.js.map +7 -1
  902. package/build/hooks/color.js +216 -195
  903. package/build/hooks/color.js.map +7 -1
  904. package/build/hooks/compat.js +10 -13
  905. package/build/hooks/compat.js.map +7 -1
  906. package/build/hooks/content-lock-ui.js +51 -58
  907. package/build/hooks/content-lock-ui.js.map +7 -1
  908. package/build/hooks/contrast-checker.js +67 -46
  909. package/build/hooks/contrast-checker.js.map +7 -1
  910. package/build/hooks/custom-class-name.js +84 -87
  911. package/build/hooks/custom-class-name.js.map +7 -1
  912. package/build/hooks/dimensions.js +153 -141
  913. package/build/hooks/dimensions.js.map +7 -1
  914. package/build/hooks/duotone.js +173 -194
  915. package/build/hooks/duotone.js.map +7 -1
  916. package/build/hooks/fit-text.js +206 -0
  917. package/build/hooks/fit-text.js.map +7 -0
  918. package/build/hooks/font-family.js +70 -78
  919. package/build/hooks/font-family.js.map +7 -1
  920. package/build/hooks/font-size.js +134 -127
  921. package/build/hooks/font-size.js.map +7 -1
  922. package/build/hooks/gap.js +33 -31
  923. package/build/hooks/gap.js.map +7 -1
  924. package/build/hooks/generated-class-name.js +42 -32
  925. package/build/hooks/generated-class-name.js.map +7 -1
  926. package/build/hooks/grid-visualizer.js +51 -60
  927. package/build/hooks/grid-visualizer.js.map +7 -1
  928. package/build/hooks/index.js +157 -147
  929. package/build/hooks/index.js.map +7 -1
  930. package/build/hooks/layout-child.js +128 -141
  931. package/build/hooks/layout-child.js.map +7 -1
  932. package/build/hooks/layout.js +260 -295
  933. package/build/hooks/layout.js.map +7 -1
  934. package/build/hooks/line-height.js +61 -55
  935. package/build/hooks/line-height.js.map +7 -1
  936. package/build/hooks/lock.js +30 -23
  937. package/build/hooks/lock.js.map +7 -1
  938. package/build/hooks/metadata.js +34 -23
  939. package/build/hooks/metadata.js.map +7 -1
  940. package/build/hooks/position.js +169 -240
  941. package/build/hooks/position.js.map +7 -1
  942. package/build/hooks/settings.js +10 -13
  943. package/build/hooks/settings.js.map +7 -1
  944. package/build/hooks/spacing-visualizer.js +108 -88
  945. package/build/hooks/spacing-visualizer.js.map +7 -1
  946. package/build/hooks/style.js +157 -281
  947. package/build/hooks/style.js.map +7 -1
  948. package/build/hooks/supports.js +145 -288
  949. package/build/hooks/supports.js.map +7 -1
  950. package/build/hooks/text-align.js +110 -101
  951. package/build/hooks/text-align.js.map +7 -1
  952. package/build/hooks/typography.js +139 -107
  953. package/build/hooks/typography.js.map +7 -1
  954. package/build/hooks/use-border-props.js +47 -52
  955. package/build/hooks/use-border-props.js.map +7 -1
  956. package/build/hooks/use-cached-truthy.js +29 -18
  957. package/build/hooks/use-cached-truthy.js.map +7 -1
  958. package/build/hooks/use-color-props.js +101 -89
  959. package/build/hooks/use-color-props.js.map +7 -1
  960. package/build/hooks/use-shadow-props.js +29 -25
  961. package/build/hooks/use-shadow-props.js.map +7 -1
  962. package/build/hooks/use-spacing-props.js +29 -30
  963. package/build/hooks/use-spacing-props.js.map +7 -1
  964. package/build/hooks/use-typography-props.js +55 -51
  965. package/build/hooks/use-typography-props.js.map +7 -1
  966. package/build/hooks/use-zoom-out.js +40 -56
  967. package/build/hooks/use-zoom-out.js.map +7 -1
  968. package/build/hooks/utils.js +421 -251
  969. package/build/hooks/utils.js.map +7 -1
  970. package/build/index.js +65 -150
  971. package/build/index.js.map +7 -1
  972. package/build/layouts/constrained.js +211 -211
  973. package/build/layouts/constrained.js.map +7 -1
  974. package/build/layouts/definitions.js +188 -144
  975. package/build/layouts/definitions.js.map +7 -1
  976. package/build/layouts/flex.js +250 -239
  977. package/build/layouts/flex.js.map +7 -1
  978. package/build/layouts/flow.js +59 -61
  979. package/build/layouts/flow.js.map +7 -1
  980. package/build/layouts/grid.js +247 -249
  981. package/build/layouts/grid.js.map +7 -1
  982. package/build/layouts/index.js +45 -31
  983. package/build/layouts/index.js.map +7 -1
  984. package/build/layouts/utils.js +51 -70
  985. package/build/layouts/utils.js.map +7 -1
  986. package/build/lock-unlock.js +31 -14
  987. package/build/lock-unlock.js.map +7 -1
  988. package/build/private-apis.js +119 -97
  989. package/build/private-apis.js.map +7 -1
  990. package/build/store/actions.js +620 -1283
  991. package/build/store/actions.js.map +7 -1
  992. package/build/store/array.js +38 -28
  993. package/build/store/array.js.map +7 -1
  994. package/build/store/constants.js +27 -6
  995. package/build/store/constants.js.map +7 -1
  996. package/build/store/defaults.js +191 -202
  997. package/build/store/defaults.js.map +7 -1
  998. package/build/store/get-block-settings.js +105 -96
  999. package/build/store/get-block-settings.js.map +7 -1
  1000. package/build/store/index.js +56 -56
  1001. package/build/store/index.js.map +7 -1
  1002. package/build/store/private-actions.js +158 -323
  1003. package/build/store/private-actions.js.map +7 -1
  1004. package/build/store/private-keys.js +45 -12
  1005. package/build/store/private-keys.js.map +7 -1
  1006. package/build/store/private-selectors.js +298 -468
  1007. package/build/store/private-selectors.js.map +7 -1
  1008. package/build/store/reducer.js +1142 -1819
  1009. package/build/store/reducer.js.map +7 -1
  1010. package/build/store/selectors.js +1191 -2198
  1011. package/build/store/selectors.js.map +7 -1
  1012. package/build/store/utils.js +87 -54
  1013. package/build/store/utils.js.map +7 -1
  1014. package/build/utils/block-bindings.js +46 -179
  1015. package/build/utils/block-bindings.js.map +7 -1
  1016. package/build/utils/dom.js +58 -105
  1017. package/build/utils/dom.js.map +7 -1
  1018. package/build/utils/fit-text-frontend.js +41 -0
  1019. package/build/utils/fit-text-frontend.js.map +7 -0
  1020. package/build/utils/fit-text-utils.js +63 -0
  1021. package/build/utils/fit-text-utils.js.map +7 -0
  1022. package/build/utils/format-font-style.js +35 -27
  1023. package/build/utils/format-font-style.js.map +7 -1
  1024. package/build/utils/format-font-weight.js +51 -43
  1025. package/build/utils/format-font-weight.js.map +7 -1
  1026. package/build/utils/get-editor-region.js +27 -25
  1027. package/build/utils/get-editor-region.js.map +7 -1
  1028. package/build/utils/get-font-styles-and-weights.js +113 -107
  1029. package/build/utils/get-font-styles-and-weights.js.map +7 -1
  1030. package/build/utils/get-px-from-css-unit.js +23 -14
  1031. package/build/utils/get-px-from-css-unit.js.map +7 -1
  1032. package/build/utils/index.js +41 -24
  1033. package/build/utils/index.js.map +7 -1
  1034. package/build/utils/math.js +40 -82
  1035. package/build/utils/math.js.map +7 -1
  1036. package/build/utils/object.js +37 -57
  1037. package/build/utils/object.js.map +7 -1
  1038. package/build/utils/order-inserter-block-items.js +27 -22
  1039. package/build/utils/order-inserter-block-items.js.map +7 -1
  1040. package/build/utils/pasting.js +41 -85
  1041. package/build/utils/pasting.js.map +7 -1
  1042. package/build/utils/selection.js +35 -29
  1043. package/build/utils/selection.js.map +7 -1
  1044. package/build/utils/sorting.js +32 -33
  1045. package/build/utils/sorting.js.map +7 -1
  1046. package/build/utils/transform-styles/index.js +101 -145
  1047. package/build/utils/transform-styles/index.js.map +7 -1
  1048. package/build/utils/use-notify-copy.js +81 -55
  1049. package/build/utils/use-notify-copy.js.map +7 -1
  1050. package/build-module/autocompleters/block.js +92 -79
  1051. package/build-module/autocompleters/block.js.map +7 -1
  1052. package/build-module/autocompleters/link.js +29 -41
  1053. package/build-module/autocompleters/link.js.map +7 -1
  1054. package/build-module/components/alignment-control/index.js +11 -21
  1055. package/build-module/components/alignment-control/index.js.map +7 -1
  1056. package/build-module/components/alignment-control/ui.js +52 -47
  1057. package/build-module/components/alignment-control/ui.js.map +7 -1
  1058. package/build-module/components/autocomplete/index.js +31 -53
  1059. package/build-module/components/autocomplete/index.js.map +7 -1
  1060. package/build-module/components/background-image-control/index.js +471 -432
  1061. package/build-module/components/background-image-control/index.js.map +7 -1
  1062. package/build-module/components/block-actions/index.js +51 -55
  1063. package/build-module/components/block-actions/index.js.map +7 -1
  1064. package/build-module/components/block-alignment-control/constants.js +22 -14
  1065. package/build-module/components/block-alignment-control/constants.js.map +7 -1
  1066. package/build-module/components/block-alignment-control/index.js +11 -21
  1067. package/build-module/components/block-alignment-control/index.js.map +7 -1
  1068. package/build-module/components/block-alignment-control/ui.js +47 -60
  1069. package/build-module/components/block-alignment-control/ui.js.map +7 -1
  1070. package/build-module/components/block-alignment-control/use-available-alignments.js +41 -48
  1071. package/build-module/components/block-alignment-control/use-available-alignments.js.map +7 -1
  1072. package/build-module/components/block-alignment-matrix-control/index.js +52 -77
  1073. package/build-module/components/block-alignment-matrix-control/index.js.map +7 -1
  1074. package/build-module/components/block-allowed-blocks/allowed-blocks-control.js +69 -0
  1075. package/build-module/components/block-allowed-blocks/allowed-blocks-control.js.map +7 -0
  1076. package/build-module/components/block-allowed-blocks/index.js +7 -0
  1077. package/build-module/components/block-allowed-blocks/index.js.map +7 -0
  1078. package/build-module/components/block-allowed-blocks/modal.js +101 -0
  1079. package/build-module/components/block-allowed-blocks/modal.js.map +7 -0
  1080. package/build-module/components/block-breadcrumb/index.js +94 -96
  1081. package/build-module/components/block-breadcrumb/index.js.map +7 -1
  1082. package/build-module/components/block-canvas/index.js +85 -113
  1083. package/build-module/components/block-canvas/index.js.map +7 -1
  1084. package/build-module/components/block-card/index.js +67 -115
  1085. package/build-module/components/block-card/index.js.map +7 -1
  1086. package/build-module/components/block-compare/block-view.js +21 -31
  1087. package/build-module/components/block-compare/block-view.js.map +7 -1
  1088. package/build-module/components/block-compare/index.js +44 -52
  1089. package/build-module/components/block-compare/index.js.map +7 -1
  1090. package/build-module/components/block-content-overlay/index.js +14 -17
  1091. package/build-module/components/block-content-overlay/index.js.map +7 -1
  1092. package/build-module/components/block-context/index.js +15 -40
  1093. package/build-module/components/block-context/index.js.map +7 -1
  1094. package/build-module/components/block-controls/fill.js +27 -35
  1095. package/build-module/components/block-controls/fill.js.map +7 -1
  1096. package/build-module/components/block-controls/groups.js +11 -11
  1097. package/build-module/components/block-controls/groups.js.map +7 -1
  1098. package/build-module/components/block-controls/hook.js +11 -11
  1099. package/build-module/components/block-controls/hook.js.map +7 -1
  1100. package/build-module/components/block-controls/index.js +13 -20
  1101. package/build-module/components/block-controls/index.js.map +7 -1
  1102. package/build-module/components/block-controls/slot.js +31 -41
  1103. package/build-module/components/block-controls/slot.js.map +7 -1
  1104. package/build-module/components/block-draggable/draggable-chip.js +32 -39
  1105. package/build-module/components/block-draggable/draggable-chip.js.map +7 -1
  1106. package/build-module/components/block-draggable/index.js +131 -134
  1107. package/build-module/components/block-draggable/index.js.map +7 -1
  1108. package/build-module/components/block-draggable/use-scroll-when-dragging.js +36 -38
  1109. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +7 -1
  1110. package/build-module/components/block-edit/context.js +22 -24
  1111. package/build-module/components/block-edit/context.js.map +7 -1
  1112. package/build-module/components/block-edit/edit.js +211 -185
  1113. package/build-module/components/block-edit/edit.js.map +7 -1
  1114. package/build-module/components/block-edit/index.js +70 -64
  1115. package/build-module/components/block-edit/index.js.map +7 -1
  1116. package/build-module/components/block-edit/multiple-usage-warning.js +47 -35
  1117. package/build-module/components/block-edit/multiple-usage-warning.js.map +7 -1
  1118. package/build-module/components/block-edit-visually-button/index.js +22 -27
  1119. package/build-module/components/block-edit-visually-button/index.js.map +7 -1
  1120. package/build-module/components/block-editing-mode/index.js +21 -58
  1121. package/build-module/components/block-editing-mode/index.js.map +7 -1
  1122. package/build-module/components/block-full-height-alignment-control/index.js +20 -17
  1123. package/build-module/components/block-full-height-alignment-control/index.js.map +7 -1
  1124. package/build-module/components/block-heading-level-dropdown/heading-level-icon.js +17 -31
  1125. package/build-module/components/block-heading-level-dropdown/heading-level-icon.js.map +7 -1
  1126. package/build-module/components/block-heading-level-dropdown/index.js +37 -60
  1127. package/build-module/components/block-heading-level-dropdown/index.js.map +7 -1
  1128. package/build-module/components/block-icon/index.js +23 -36
  1129. package/build-module/components/block-icon/index.js.map +7 -1
  1130. package/build-module/components/block-inspector/edit-contents-button.js +35 -43
  1131. package/build-module/components/block-inspector/edit-contents-button.js.map +7 -1
  1132. package/build-module/components/block-inspector/index.js +208 -189
  1133. package/build-module/components/block-inspector/index.js.map +7 -1
  1134. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js +27 -34
  1135. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js.map +7 -1
  1136. package/build-module/components/block-list/block-crash-boundary.js +6 -6
  1137. package/build-module/components/block-list/block-crash-boundary.js.map +7 -1
  1138. package/build-module/components/block-list/block-crash-warning.js +9 -16
  1139. package/build-module/components/block-list/block-crash-warning.js.map +7 -1
  1140. package/build-module/components/block-list/block-html.js +38 -38
  1141. package/build-module/components/block-list/block-html.js.map +7 -1
  1142. package/build-module/components/block-list/block-invalid-warning.js +123 -99
  1143. package/build-module/components/block-list/block-invalid-warning.js.map +7 -1
  1144. package/build-module/components/block-list/block.js +325 -401
  1145. package/build-module/components/block-list/block.js.map +7 -1
  1146. package/build-module/components/block-list/index.js +187 -167
  1147. package/build-module/components/block-list/index.js.map +7 -1
  1148. package/build-module/components/block-list/layout.js +19 -38
  1149. package/build-module/components/block-list/layout.js.map +7 -1
  1150. package/build-module/components/block-list/private-block-context.js +7 -7
  1151. package/build-module/components/block-list/private-block-context.js.map +7 -1
  1152. package/build-module/components/block-list/subdirectory-icon.js +25 -21
  1153. package/build-module/components/block-list/subdirectory-icon.js.map +7 -1
  1154. package/build-module/components/block-list/use-block-props/index.js +84 -139
  1155. package/build-module/components/block-list/use-block-props/index.js.map +7 -1
  1156. package/build-module/components/block-list/use-block-props/use-block-refs.js +26 -54
  1157. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +7 -1
  1158. package/build-module/components/block-list/use-block-props/use-firefox-draggable-compatibility.js +21 -43
  1159. package/build-module/components/block-list/use-block-props/use-firefox-draggable-compatibility.js.map +7 -1
  1160. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +23 -51
  1161. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +7 -1
  1162. package/build-module/components/block-list/use-block-props/use-focus-handler.js +33 -62
  1163. package/build-module/components/block-list/use-block-props/use-focus-handler.js.map +7 -1
  1164. package/build-module/components/block-list/use-block-props/use-intersection-observer.js +19 -20
  1165. package/build-module/components/block-list/use-block-props/use-intersection-observer.js.map +7 -1
  1166. package/build-module/components/block-list/use-block-props/use-is-hovered.js +16 -20
  1167. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +7 -1
  1168. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js +31 -34
  1169. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js.map +7 -1
  1170. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +182 -167
  1171. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +7 -1
  1172. package/build-module/components/block-list/use-in-between-inserter.js +99 -107
  1173. package/build-module/components/block-list/use-in-between-inserter.js.map +7 -1
  1174. package/build-module/components/block-list/zoom-out-separator.js +54 -72
  1175. package/build-module/components/block-list/zoom-out-separator.js.map +7 -1
  1176. package/build-module/components/block-list-appender/index.js +52 -81
  1177. package/build-module/components/block-list-appender/index.js.map +7 -1
  1178. package/build-module/components/block-lock/index.js +11 -5
  1179. package/build-module/components/block-lock/index.js.map +7 -1
  1180. package/build-module/components/block-lock/menu-item.js +31 -36
  1181. package/build-module/components/block-lock/menu-item.js.map +7 -1
  1182. package/build-module/components/block-lock/modal.js +211 -176
  1183. package/build-module/components/block-lock/modal.js.map +7 -1
  1184. package/build-module/components/block-lock/toolbar.js +28 -42
  1185. package/build-module/components/block-lock/toolbar.js.map +7 -1
  1186. package/build-module/components/block-lock/use-block-lock.js +31 -40
  1187. package/build-module/components/block-lock/use-block-lock.js.map +7 -1
  1188. package/build-module/components/block-manager/category.js +82 -58
  1189. package/build-module/components/block-manager/category.js.map +7 -1
  1190. package/build-module/components/block-manager/checklist.js +27 -30
  1191. package/build-module/components/block-manager/checklist.js.map +7 -1
  1192. package/build-module/components/block-manager/index.js +95 -83
  1193. package/build-module/components/block-manager/index.js.map +7 -1
  1194. package/build-module/components/block-mover/button.js +124 -124
  1195. package/build-module/components/block-mover/button.js.map +7 -1
  1196. package/build-module/components/block-mover/index.js +83 -90
  1197. package/build-module/components/block-mover/index.js.map +7 -1
  1198. package/build-module/components/block-mover/mover-description.js +191 -134
  1199. package/build-module/components/block-mover/mover-description.js.map +7 -1
  1200. package/build-module/components/block-navigation/dropdown.js +58 -66
  1201. package/build-module/components/block-navigation/dropdown.js.map +7 -1
  1202. package/build-module/components/block-parent-selector/index.js +41 -51
  1203. package/build-module/components/block-parent-selector/index.js.map +7 -1
  1204. package/build-module/components/block-pattern-setup/constants.js +7 -4
  1205. package/build-module/components/block-pattern-setup/constants.js.map +7 -1
  1206. package/build-module/components/block-pattern-setup/index.js +142 -136
  1207. package/build-module/components/block-pattern-setup/index.js.map +7 -1
  1208. package/build-module/components/block-pattern-setup/setup-toolbar.js +80 -67
  1209. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +7 -1
  1210. package/build-module/components/block-pattern-setup/use-patterns-setup.js +24 -23
  1211. package/build-module/components/block-pattern-setup/use-patterns-setup.js.map +7 -1
  1212. package/build-module/components/block-patterns-list/index.js +160 -152
  1213. package/build-module/components/block-patterns-list/index.js.map +7 -1
  1214. package/build-module/components/block-patterns-paging/index.js +107 -80
  1215. package/build-module/components/block-patterns-paging/index.js.map +7 -1
  1216. package/build-module/components/block-popover/cover.js +31 -35
  1217. package/build-module/components/block-popover/cover.js.map +7 -1
  1218. package/build-module/components/block-popover/drop-zone.js +35 -47
  1219. package/build-module/components/block-popover/drop-zone.js.map +7 -1
  1220. package/build-module/components/block-popover/inbetween.js +90 -118
  1221. package/build-module/components/block-popover/inbetween.js.map +7 -1
  1222. package/build-module/components/block-popover/index.js +84 -83
  1223. package/build-module/components/block-popover/index.js.map +7 -1
  1224. package/build-module/components/block-popover/use-popover-scroll.js +30 -48
  1225. package/build-module/components/block-popover/use-popover-scroll.js.map +7 -1
  1226. package/build-module/components/block-preview/async.js +7 -26
  1227. package/build-module/components/block-preview/async.js.map +7 -1
  1228. package/build-module/components/block-preview/auto.js +84 -96
  1229. package/build-module/components/block-preview/auto.js.map +7 -1
  1230. package/build-module/components/block-preview/index.js +100 -106
  1231. package/build-module/components/block-preview/index.js.map +7 -1
  1232. package/build-module/components/block-quick-navigation/index.js +59 -68
  1233. package/build-module/components/block-quick-navigation/index.js.map +7 -1
  1234. package/build-module/components/block-removal-warning-modal/index.js +56 -48
  1235. package/build-module/components/block-removal-warning-modal/index.js.map +7 -1
  1236. package/build-module/components/block-rename/index.js +9 -4
  1237. package/build-module/components/block-rename/index.js.map +7 -1
  1238. package/build-module/components/block-rename/is-empty-string.js +5 -2
  1239. package/build-module/components/block-rename/is-empty-string.js.map +7 -1
  1240. package/build-module/components/block-rename/modal.js +110 -94
  1241. package/build-module/components/block-rename/modal.js.map +7 -1
  1242. package/build-module/components/block-rename/rename-control.js +30 -29
  1243. package/build-module/components/block-rename/rename-control.js.map +7 -1
  1244. package/build-module/components/block-rename/use-block-rename.js +7 -7
  1245. package/build-module/components/block-rename/use-block-rename.js.map +7 -1
  1246. package/build-module/components/block-selection-clearer/index.js +33 -54
  1247. package/build-module/components/block-selection-clearer/index.js.map +7 -1
  1248. package/build-module/components/block-settings-menu/block-html-convert-button.js +28 -29
  1249. package/build-module/components/block-settings-menu/block-html-convert-button.js.map +7 -1
  1250. package/build-module/components/block-settings-menu/block-mode-toggle.js +38 -48
  1251. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +7 -1
  1252. package/build-module/components/block-settings-menu/block-parent-selector-menu-item.js +30 -35
  1253. package/build-module/components/block-settings-menu/block-parent-selector-menu-item.js.map +7 -1
  1254. package/build-module/components/block-settings-menu/block-settings-dropdown.js +259 -226
  1255. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +7 -1
  1256. package/build-module/components/block-settings-menu/block-settings-menu-first-item.js +9 -10
  1257. package/build-module/components/block-settings-menu/block-settings-menu-first-item.js.map +7 -1
  1258. package/build-module/components/block-settings-menu/index.js +21 -25
  1259. package/build-module/components/block-settings-menu/index.js.map +7 -1
  1260. package/build-module/components/block-settings-menu-controls/index.js +107 -100
  1261. package/build-module/components/block-settings-menu-controls/index.js.map +7 -1
  1262. package/build-module/components/block-styles/index.js +72 -66
  1263. package/build-module/components/block-styles/index.js.map +7 -1
  1264. package/build-module/components/block-styles/menu-items.js +31 -36
  1265. package/build-module/components/block-styles/menu-items.js.map +7 -1
  1266. package/build-module/components/block-styles/preview-panel.js +12 -18
  1267. package/build-module/components/block-styles/preview-panel.js.map +7 -1
  1268. package/build-module/components/block-styles/use-styles-for-block.js +35 -61
  1269. package/build-module/components/block-styles/use-styles-for-block.js.map +7 -1
  1270. package/build-module/components/block-styles/utils.js +28 -60
  1271. package/build-module/components/block-styles/utils.js.map +7 -1
  1272. package/build-module/components/block-switcher/block-styles-menu.js +18 -27
  1273. package/build-module/components/block-switcher/block-styles-menu.js.map +7 -1
  1274. package/build-module/components/block-switcher/block-transformations-menu.js +109 -119
  1275. package/build-module/components/block-switcher/block-transformations-menu.js.map +7 -1
  1276. package/build-module/components/block-switcher/block-variation-transformations.js +83 -76
  1277. package/build-module/components/block-switcher/block-variation-transformations.js.map +7 -1
  1278. package/build-module/components/block-switcher/index.js +223 -197
  1279. package/build-module/components/block-switcher/index.js.map +7 -1
  1280. package/build-module/components/block-switcher/pattern-transformations-menu.js +105 -91
  1281. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +7 -1
  1282. package/build-module/components/block-switcher/preview-block-popover.js +20 -32
  1283. package/build-module/components/block-switcher/preview-block-popover.js.map +7 -1
  1284. package/build-module/components/block-switcher/use-transformed-patterns.js +41 -76
  1285. package/build-module/components/block-switcher/use-transformed-patterns.js.map +7 -1
  1286. package/build-module/components/block-switcher/utils.js +15 -40
  1287. package/build-module/components/block-switcher/utils.js.map +7 -1
  1288. package/build-module/components/block-title/index.js +7 -34
  1289. package/build-module/components/block-title/index.js.map +7 -1
  1290. package/build-module/components/block-title/use-block-display-title.js +34 -57
  1291. package/build-module/components/block-title/use-block-display-title.js.map +7 -1
  1292. package/build-module/components/block-toolbar/block-name-context.js +8 -8
  1293. package/build-module/components/block-toolbar/block-name-context.js.map +7 -1
  1294. package/build-module/components/block-toolbar/block-toolbar-last-item.js +9 -10
  1295. package/build-module/components/block-toolbar/block-toolbar-last-item.js.map +7 -1
  1296. package/build-module/components/block-toolbar/change-design.js +79 -84
  1297. package/build-module/components/block-toolbar/change-design.js.map +7 -1
  1298. package/build-module/components/block-toolbar/index.js +169 -173
  1299. package/build-module/components/block-toolbar/index.js.map +7 -1
  1300. package/build-module/components/block-toolbar/switch-section-style.js +89 -82
  1301. package/build-module/components/block-toolbar/switch-section-style.js.map +7 -1
  1302. package/build-module/components/block-toolbar/use-has-block-toolbar.js +11 -28
  1303. package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +7 -1
  1304. package/build-module/components/block-toolbar/utils.js +38 -71
  1305. package/build-module/components/block-toolbar/utils.js.map +7 -1
  1306. package/build-module/components/block-tools/block-toolbar-popover.js +43 -60
  1307. package/build-module/components/block-tools/block-toolbar-popover.js.map +7 -1
  1308. package/build-module/components/block-tools/empty-block-inserter.js +35 -33
  1309. package/build-module/components/block-tools/empty-block-inserter.js.map +7 -1
  1310. package/build-module/components/block-tools/index.js +139 -103
  1311. package/build-module/components/block-tools/index.js.map +7 -1
  1312. package/build-module/components/block-tools/insertion-point.js +144 -149
  1313. package/build-module/components/block-tools/insertion-point.js.map +7 -1
  1314. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +55 -90
  1315. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +7 -1
  1316. package/build-module/components/block-tools/use-selected-block-tool-props.js +41 -48
  1317. package/build-module/components/block-tools/use-selected-block-tool-props.js.map +7 -1
  1318. package/build-module/components/block-tools/use-show-block-tools.js +12 -27
  1319. package/build-module/components/block-tools/use-show-block-tools.js.map +7 -1
  1320. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js +28 -25
  1321. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js.map +7 -1
  1322. package/build-module/components/block-tools/zoom-out-mode-inserters.js +40 -45
  1323. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +7 -1
  1324. package/build-module/components/block-types-list/index.js +28 -28
  1325. package/build-module/components/block-types-list/index.js.map +7 -1
  1326. package/build-module/components/block-variation-picker/index.js +57 -51
  1327. package/build-module/components/block-variation-picker/index.js.map +7 -1
  1328. package/build-module/components/block-variation-transforms/index.js +134 -133
  1329. package/build-module/components/block-variation-transforms/index.js.map +7 -1
  1330. package/build-module/components/block-vertical-alignment-control/index.js +11 -21
  1331. package/build-module/components/block-vertical-alignment-control/index.js.map +7 -1
  1332. package/build-module/components/block-vertical-alignment-control/ui.js +44 -38
  1333. package/build-module/components/block-vertical-alignment-control/ui.js.map +7 -1
  1334. package/build-module/components/block-visibility/index.js +7 -3
  1335. package/build-module/components/block-visibility/index.js.map +7 -1
  1336. package/build-module/components/block-visibility/menu-item.js +81 -39
  1337. package/build-module/components/block-visibility/menu-item.js.map +7 -1
  1338. package/build-module/components/block-visibility/toolbar.js +55 -66
  1339. package/build-module/components/block-visibility/toolbar.js.map +7 -1
  1340. package/build-module/components/border-radius-control/constants.js +34 -22
  1341. package/build-module/components/border-radius-control/constants.js.map +7 -1
  1342. package/build-module/components/border-radius-control/index.js +81 -84
  1343. package/build-module/components/border-radius-control/index.js.map +7 -1
  1344. package/build-module/components/border-radius-control/linked-button.js +21 -21
  1345. package/build-module/components/border-radius-control/linked-button.js.map +7 -1
  1346. package/build-module/components/border-radius-control/single-input-control.js +168 -126
  1347. package/build-module/components/border-radius-control/single-input-control.js.map +7 -1
  1348. package/build-module/components/border-radius-control/utils.js +66 -178
  1349. package/build-module/components/border-radius-control/utils.js.map +7 -1
  1350. package/build-module/components/button-block-appender/index.js +72 -83
  1351. package/build-module/components/button-block-appender/index.js.map +7 -1
  1352. package/build-module/components/child-layout-control/index.js +305 -266
  1353. package/build-module/components/child-layout-control/index.js.map +7 -1
  1354. package/build-module/components/collab/block-comment-icon-slot.js +7 -7
  1355. package/build-module/components/collab/block-comment-icon-slot.js.map +7 -1
  1356. package/build-module/components/collab/block-comment-icon-toolbar-slot.js +9 -7
  1357. package/build-module/components/collab/block-comment-icon-toolbar-slot.js.map +7 -1
  1358. package/build-module/components/color-palette/control.js +17 -14
  1359. package/build-module/components/color-palette/control.js.map +7 -1
  1360. package/build-module/components/color-palette/index.js +7 -11
  1361. package/build-module/components/color-palette/index.js.map +7 -1
  1362. package/build-module/components/color-palette/with-color-context.js +40 -27
  1363. package/build-module/components/color-palette/with-color-context.js.map +7 -1
  1364. package/build-module/components/color-style-selector/index.js +48 -82
  1365. package/build-module/components/color-style-selector/index.js.map +7 -1
  1366. package/build-module/components/colors/index.js +14 -3
  1367. package/build-module/components/colors/index.js.map +7 -1
  1368. package/build-module/components/colors/utils.js +24 -73
  1369. package/build-module/components/colors/utils.js.map +7 -1
  1370. package/build-module/components/colors/with-colors.js +140 -188
  1371. package/build-module/components/colors/with-colors.js.map +7 -1
  1372. package/build-module/components/colors-gradients/control.js +118 -111
  1373. package/build-module/components/colors-gradients/control.js.map +7 -1
  1374. package/build-module/components/colors-gradients/dropdown.js +134 -155
  1375. package/build-module/components/colors-gradients/dropdown.js.map +7 -1
  1376. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +90 -75
  1377. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +7 -1
  1378. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +73 -36
  1379. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +7 -1
  1380. package/build-module/components/content-lock/index.js +5 -2
  1381. package/build-module/components/content-lock/index.js.map +7 -1
  1382. package/build-module/components/content-lock/modify-content-lock-menu-item.js +38 -51
  1383. package/build-module/components/content-lock/modify-content-lock-menu-item.js.map +7 -1
  1384. package/build-module/components/contrast-checker/index.js +54 -62
  1385. package/build-module/components/contrast-checker/index.js.map +7 -1
  1386. package/build-module/components/convert-to-group-buttons/index.js +53 -44
  1387. package/build-module/components/convert-to-group-buttons/index.js.map +7 -1
  1388. package/build-module/components/convert-to-group-buttons/toolbar.js +86 -97
  1389. package/build-module/components/convert-to-group-buttons/toolbar.js.map +7 -1
  1390. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +32 -58
  1391. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +7 -1
  1392. package/build-module/components/copy-handler/index.js +19 -34
  1393. package/build-module/components/copy-handler/index.js.map +7 -1
  1394. package/build-module/components/date-format-picker/index.js +126 -107
  1395. package/build-module/components/date-format-picker/index.js.map +7 -1
  1396. package/build-module/components/default-block-appender/index.js +78 -92
  1397. package/build-module/components/default-block-appender/index.js.map +7 -1
  1398. package/build-module/components/dimensions-tool/aspect-ratio-tool.js +61 -69
  1399. package/build-module/components/dimensions-tool/aspect-ratio-tool.js.map +7 -1
  1400. package/build-module/components/dimensions-tool/index.js +105 -183
  1401. package/build-module/components/dimensions-tool/index.js.map +7 -1
  1402. package/build-module/components/dimensions-tool/scale-tool.js +74 -90
  1403. package/build-module/components/dimensions-tool/scale-tool.js.map +7 -1
  1404. package/build-module/components/dimensions-tool/width-height-tool.js +69 -106
  1405. package/build-module/components/dimensions-tool/width-height-tool.js.map +7 -1
  1406. package/build-module/components/duotone/utils.js +18 -54
  1407. package/build-module/components/duotone/utils.js.map +7 -1
  1408. package/build-module/components/duotone-control/index.js +71 -64
  1409. package/build-module/components/duotone-control/index.js.map +7 -1
  1410. package/build-module/components/editable-text/index.js +11 -30
  1411. package/build-module/components/editable-text/index.js.map +7 -1
  1412. package/build-module/components/editor-styles/index.js +83 -92
  1413. package/build-module/components/editor-styles/index.js.map +7 -1
  1414. package/build-module/components/floating-toolbar/nav-up-icon.js +30 -24
  1415. package/build-module/components/floating-toolbar/nav-up-icon.js.map +7 -1
  1416. package/build-module/components/font-appearance-control/index.js +68 -110
  1417. package/build-module/components/font-appearance-control/index.js.map +7 -1
  1418. package/build-module/components/font-family/index.js +57 -61
  1419. package/build-module/components/font-family/index.js.map +7 -1
  1420. package/build-module/components/font-sizes/fluid-utils.js +60 -161
  1421. package/build-module/components/font-sizes/fluid-utils.js.map +7 -1
  1422. package/build-module/components/font-sizes/font-size-picker.js +20 -22
  1423. package/build-module/components/font-sizes/font-size-picker.js.map +7 -1
  1424. package/build-module/components/font-sizes/index.js +17 -5
  1425. package/build-module/components/font-sizes/index.js.map +7 -1
  1426. package/build-module/components/font-sizes/utils.js +16 -52
  1427. package/build-module/components/font-sizes/utils.js.map +7 -1
  1428. package/build-module/components/font-sizes/with-font-sizes.js +126 -113
  1429. package/build-module/components/font-sizes/with-font-sizes.js.map +7 -1
  1430. package/build-module/components/global-styles/advanced-panel.js +40 -45
  1431. package/build-module/components/global-styles/advanced-panel.js.map +7 -1
  1432. package/build-module/components/global-styles/background-panel.js +69 -81
  1433. package/build-module/components/global-styles/background-panel.js.map +7 -1
  1434. package/build-module/components/global-styles/border-panel.js +157 -143
  1435. package/build-module/components/global-styles/border-panel.js.map +7 -1
  1436. package/build-module/components/global-styles/color-panel.js +491 -384
  1437. package/build-module/components/global-styles/color-panel.js.map +7 -1
  1438. package/build-module/components/global-styles/context.js +13 -9
  1439. package/build-module/components/global-styles/context.js.map +7 -1
  1440. package/build-module/components/global-styles/dimensions-panel.js +400 -351
  1441. package/build-module/components/global-styles/dimensions-panel.js.map +7 -1
  1442. package/build-module/components/global-styles/filters-panel.js +136 -136
  1443. package/build-module/components/global-styles/filters-panel.js.map +7 -1
  1444. package/build-module/components/global-styles/get-block-css-selector.js +20 -73
  1445. package/build-module/components/global-styles/get-block-css-selector.js.map +7 -1
  1446. package/build-module/components/global-styles/get-global-styles-changes.js +122 -163
  1447. package/build-module/components/global-styles/get-global-styles-changes.js.map +7 -1
  1448. package/build-module/components/global-styles/hooks.js +214 -124
  1449. package/build-module/components/global-styles/hooks.js.map +7 -1
  1450. package/build-module/components/global-styles/image-settings-panel.js +45 -46
  1451. package/build-module/components/global-styles/image-settings-panel.js.map +7 -1
  1452. package/build-module/components/global-styles/index.js +73 -15
  1453. package/build-module/components/global-styles/index.js.map +7 -1
  1454. package/build-module/components/global-styles/shadow-panel-components.js +147 -154
  1455. package/build-module/components/global-styles/shadow-panel-components.js.map +7 -1
  1456. package/build-module/components/global-styles/typography-panel.js +395 -279
  1457. package/build-module/components/global-styles/typography-panel.js.map +7 -1
  1458. package/build-module/components/global-styles/typography-utils.js +73 -175
  1459. package/build-module/components/global-styles/typography-utils.js.map +7 -1
  1460. package/build-module/components/global-styles/use-global-styles-output.js +667 -733
  1461. package/build-module/components/global-styles/use-global-styles-output.js.map +7 -1
  1462. package/build-module/components/global-styles/utils.js +264 -351
  1463. package/build-module/components/global-styles/utils.js.map +7 -1
  1464. package/build-module/components/gradients/index.js +2 -2
  1465. package/build-module/components/gradients/index.js.map +7 -1
  1466. package/build-module/components/gradients/use-gradient.js +76 -79
  1467. package/build-module/components/gradients/use-gradient.js.map +7 -1
  1468. package/build-module/components/gradients/with-gradient.js +9 -14
  1469. package/build-module/components/gradients/with-gradient.js.map +7 -1
  1470. package/build-module/components/grid/grid-item-movers.js +135 -95
  1471. package/build-module/components/grid/grid-item-movers.js.map +7 -1
  1472. package/build-module/components/grid/grid-item-resizer.js +109 -99
  1473. package/build-module/components/grid/grid-item-resizer.js.map +7 -1
  1474. package/build-module/components/grid/grid-visualizer.js +238 -190
  1475. package/build-module/components/grid/grid-visualizer.js.map +7 -1
  1476. package/build-module/components/grid/index.js +11 -5
  1477. package/build-module/components/grid/index.js.map +7 -1
  1478. package/build-module/components/grid/use-get-number-of-blocks-before-cell.js +9 -20
  1479. package/build-module/components/grid/use-get-number-of-blocks-before-cell.js.map +7 -1
  1480. package/build-module/components/grid/use-grid-layout-sync.js +98 -109
  1481. package/build-module/components/grid/use-grid-layout-sync.js.map +7 -1
  1482. package/build-module/components/grid/utils.js +79 -75
  1483. package/build-module/components/grid/utils.js.map +7 -1
  1484. package/build-module/components/height-control/index.js +122 -190
  1485. package/build-module/components/height-control/index.js.map +7 -1
  1486. package/build-module/components/html-element-control/index.js +62 -88
  1487. package/build-module/components/html-element-control/index.js.map +7 -1
  1488. package/build-module/components/html-element-control/messages.js +36 -20
  1489. package/build-module/components/html-element-control/messages.js.map +7 -1
  1490. package/build-module/components/iframe/get-compatibility-styles.js +68 -84
  1491. package/build-module/components/iframe/get-compatibility-styles.js.map +7 -1
  1492. package/build-module/components/iframe/index.js +161 -199
  1493. package/build-module/components/iframe/index.js.map +7 -1
  1494. package/build-module/components/iframe/use-scale-canvas.js +131 -257
  1495. package/build-module/components/iframe/use-scale-canvas.js.map +7 -1
  1496. package/build-module/components/image-editor/aspect-ratio-dropdown.js +99 -101
  1497. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +7 -1
  1498. package/build-module/components/image-editor/constants.js +10 -5
  1499. package/build-module/components/image-editor/constants.js.map +7 -1
  1500. package/build-module/components/image-editor/context.js +20 -23
  1501. package/build-module/components/image-editor/context.js.map +7 -1
  1502. package/build-module/components/image-editor/cropper.js +57 -53
  1503. package/build-module/components/image-editor/cropper.js.map +7 -1
  1504. package/build-module/components/image-editor/form-controls.js +14 -28
  1505. package/build-module/components/image-editor/form-controls.js.map +7 -1
  1506. package/build-module/components/image-editor/index.js +46 -44
  1507. package/build-module/components/image-editor/index.js.map +7 -1
  1508. package/build-module/components/image-editor/rotation-button.js +20 -25
  1509. package/build-module/components/image-editor/rotation-button.js.map +7 -1
  1510. package/build-module/components/image-editor/use-save-image.js +76 -63
  1511. package/build-module/components/image-editor/use-save-image.js.map +7 -1
  1512. package/build-module/components/image-editor/use-transform-image.js +47 -35
  1513. package/build-module/components/image-editor/use-transform-image.js.map +7 -1
  1514. package/build-module/components/image-editor/zoom-dropdown.js +46 -46
  1515. package/build-module/components/image-editor/zoom-dropdown.js.map +7 -1
  1516. package/build-module/components/image-size-control/index.js +95 -97
  1517. package/build-module/components/image-size-control/index.js.map +7 -1
  1518. package/build-module/components/image-size-control/use-dimension-handler.js +21 -28
  1519. package/build-module/components/image-size-control/use-dimension-handler.js.map +7 -1
  1520. package/build-module/components/index.js +293 -125
  1521. package/build-module/components/index.js.map +7 -1
  1522. package/build-module/components/inner-blocks/button-block-appender.js +22 -25
  1523. package/build-module/components/inner-blocks/button-block-appender.js.map +7 -1
  1524. package/build-module/components/inner-blocks/default-block-appender.js +10 -14
  1525. package/build-module/components/inner-blocks/default-block-appender.js.map +7 -1
  1526. package/build-module/components/inner-blocks/index.js +131 -175
  1527. package/build-module/components/inner-blocks/index.js.map +7 -1
  1528. package/build-module/components/inner-blocks/use-block-context.js +32 -34
  1529. package/build-module/components/inner-blocks/use-block-context.js.map +7 -1
  1530. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +37 -64
  1531. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +7 -1
  1532. package/build-module/components/inner-blocks/use-nested-settings-update.js +51 -99
  1533. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +7 -1
  1534. package/build-module/components/inserter/block-patterns-explorer/index.js +49 -52
  1535. package/build-module/components/inserter/block-patterns-explorer/index.js.map +7 -1
  1536. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +45 -44
  1537. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +7 -1
  1538. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +105 -70
  1539. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +7 -1
  1540. package/build-module/components/inserter/block-patterns-tab/index.js +59 -54
  1541. package/build-module/components/inserter/block-patterns-tab/index.js.map +7 -1
  1542. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +169 -107
  1543. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +7 -1
  1544. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +132 -98
  1545. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +7 -1
  1546. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +58 -27
  1547. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +7 -1
  1548. package/build-module/components/inserter/block-patterns-tab/utils.js +31 -37
  1549. package/build-module/components/inserter/block-patterns-tab/utils.js.map +7 -1
  1550. package/build-module/components/inserter/block-types-tab.js +135 -127
  1551. package/build-module/components/inserter/block-types-tab.js.map +7 -1
  1552. package/build-module/components/inserter/category-tabs/index.js +72 -63
  1553. package/build-module/components/inserter/category-tabs/index.js.map +7 -1
  1554. package/build-module/components/inserter/hooks/use-block-types-state.js +80 -64
  1555. package/build-module/components/inserter/hooks/use-block-types-state.js.map +7 -1
  1556. package/build-module/components/inserter/hooks/use-insertion-point.js +137 -117
  1557. package/build-module/components/inserter/hooks/use-insertion-point.js.map +7 -1
  1558. package/build-module/components/inserter/hooks/use-patterns-paging.js +25 -26
  1559. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +7 -1
  1560. package/build-module/components/inserter/hooks/use-patterns-state.js +92 -79
  1561. package/build-module/components/inserter/hooks/use-patterns-state.js.map +7 -1
  1562. package/build-module/components/inserter/index.js +199 -228
  1563. package/build-module/components/inserter/index.js.map +7 -1
  1564. package/build-module/components/inserter/library.js +51 -48
  1565. package/build-module/components/inserter/library.js.map +7 -1
  1566. package/build-module/components/inserter/media-tab/hooks.js +61 -77
  1567. package/build-module/components/inserter/media-tab/hooks.js.map +7 -1
  1568. package/build-module/components/inserter/media-tab/index.js +9 -4
  1569. package/build-module/components/inserter/media-tab/index.js.map +7 -1
  1570. package/build-module/components/inserter/media-tab/media-list.js +27 -24
  1571. package/build-module/components/inserter/media-tab/media-list.js.map +7 -1
  1572. package/build-module/components/inserter/media-tab/media-panel.js +39 -45
  1573. package/build-module/components/inserter/media-tab/media-panel.js.map +7 -1
  1574. package/build-module/components/inserter/media-tab/media-preview.js +241 -227
  1575. package/build-module/components/inserter/media-tab/media-preview.js.map +7 -1
  1576. package/build-module/components/inserter/media-tab/media-tab.js +79 -77
  1577. package/build-module/components/inserter/media-tab/media-tab.js.map +7 -1
  1578. package/build-module/components/inserter/media-tab/utils.js +25 -40
  1579. package/build-module/components/inserter/media-tab/utils.js.map +7 -1
  1580. package/build-module/components/inserter/menu.js +279 -202
  1581. package/build-module/components/inserter/menu.js.map +7 -1
  1582. package/build-module/components/inserter/mobile-tab-navigation.js +74 -71
  1583. package/build-module/components/inserter/mobile-tab-navigation.js.map +7 -1
  1584. package/build-module/components/inserter/no-results.js +8 -13
  1585. package/build-module/components/inserter/no-results.js.map +7 -1
  1586. package/build-module/components/inserter/panel.js +15 -26
  1587. package/build-module/components/inserter/panel.js.map +7 -1
  1588. package/build-module/components/inserter/preview-panel.js +43 -54
  1589. package/build-module/components/inserter/preview-panel.js.map +7 -1
  1590. package/build-module/components/inserter/quick-inserter.js +85 -81
  1591. package/build-module/components/inserter/quick-inserter.js.map +7 -1
  1592. package/build-module/components/inserter/search-items.js +53 -102
  1593. package/build-module/components/inserter/search-items.js.map +7 -1
  1594. package/build-module/components/inserter/search-results.js +136 -102
  1595. package/build-module/components/inserter/search-results.js.map +7 -1
  1596. package/build-module/components/inserter/tips.js +36 -22
  1597. package/build-module/components/inserter/tips.js.map +7 -1
  1598. package/build-module/components/inserter-button/sparkles.js +12 -14
  1599. package/build-module/components/inserter-button/sparkles.js.map +7 -1
  1600. package/build-module/components/inserter-draggable-blocks/index.js +58 -68
  1601. package/build-module/components/inserter-draggable-blocks/index.js.map +7 -1
  1602. package/build-module/components/inserter-list-item/index.js +111 -93
  1603. package/build-module/components/inserter-list-item/index.js.map +7 -1
  1604. package/build-module/components/inserter-listbox/context.js +7 -7
  1605. package/build-module/components/inserter-listbox/context.js.map +7 -1
  1606. package/build-module/components/inserter-listbox/group.js +32 -25
  1607. package/build-module/components/inserter-listbox/group.js.map +7 -1
  1608. package/build-module/components/inserter-listbox/index.js +26 -31
  1609. package/build-module/components/inserter-listbox/index.js.map +7 -1
  1610. package/build-module/components/inserter-listbox/item.js +29 -42
  1611. package/build-module/components/inserter-listbox/item.js.map +7 -1
  1612. package/build-module/components/inserter-listbox/row.js +9 -13
  1613. package/build-module/components/inserter-listbox/row.js.map +7 -1
  1614. package/build-module/components/inserter-menu-extension/index.js +9 -10
  1615. package/build-module/components/inserter-menu-extension/index.js.map +7 -1
  1616. package/build-module/components/inspector-controls/block-support-slot-container.js +19 -23
  1617. package/build-module/components/inspector-controls/block-support-slot-container.js.map +7 -1
  1618. package/build-module/components/inspector-controls/block-support-tools-panel.js +54 -58
  1619. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +7 -1
  1620. package/build-module/components/inspector-controls/fill.js +46 -65
  1621. package/build-module/components/inspector-controls/fill.js.map +7 -1
  1622. package/build-module/components/inspector-controls/groups.js +29 -19
  1623. package/build-module/components/inspector-controls/groups.js.map +7 -1
  1624. package/build-module/components/inspector-controls/index.js +14 -25
  1625. package/build-module/components/inspector-controls/index.js.map +7 -1
  1626. package/build-module/components/inspector-controls/slot.js +31 -39
  1627. package/build-module/components/inspector-controls/slot.js.map +7 -1
  1628. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +33 -22
  1629. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +7 -1
  1630. package/build-module/components/inspector-controls-tabs/content-tab.js +11 -22
  1631. package/build-module/components/inspector-controls-tabs/content-tab.js.map +7 -1
  1632. package/build-module/components/inspector-controls-tabs/index.js +62 -91
  1633. package/build-module/components/inspector-controls-tabs/index.js.map +7 -1
  1634. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +64 -65
  1635. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +7 -1
  1636. package/build-module/components/inspector-controls-tabs/settings-tab.js +15 -18
  1637. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +7 -1
  1638. package/build-module/components/inspector-controls-tabs/styles-tab.js +55 -50
  1639. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +7 -1
  1640. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +32 -38
  1641. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +7 -1
  1642. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +8 -6
  1643. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +7 -1
  1644. package/build-module/components/inspector-controls-tabs/utils.js +25 -22
  1645. package/build-module/components/inspector-controls-tabs/utils.js.map +7 -1
  1646. package/build-module/components/inspector-popover-header/index.js +54 -42
  1647. package/build-module/components/inspector-popover-header/index.js.map +7 -1
  1648. package/build-module/components/justify-content-control/index.js +11 -21
  1649. package/build-module/components/justify-content-control/index.js.map +7 -1
  1650. package/build-module/components/justify-content-control/ui.js +69 -57
  1651. package/build-module/components/justify-content-control/ui.js.map +7 -1
  1652. package/build-module/components/keyboard-shortcuts/index.js +117 -101
  1653. package/build-module/components/keyboard-shortcuts/index.js.map +7 -1
  1654. package/build-module/components/letter-spacing-control/index.js +39 -50
  1655. package/build-module/components/letter-spacing-control/index.js.map +7 -1
  1656. package/build-module/components/line-height-control/index.js +44 -69
  1657. package/build-module/components/line-height-control/index.js.map +7 -1
  1658. package/build-module/components/line-height-control/utils.js +14 -29
  1659. package/build-module/components/line-height-control/utils.js.map +7 -1
  1660. package/build-module/components/link-control/constants.js +28 -19
  1661. package/build-module/components/link-control/constants.js.map +7 -1
  1662. package/build-module/components/link-control/index.js +297 -305
  1663. package/build-module/components/link-control/index.js.map +7 -1
  1664. package/build-module/components/link-control/is-url-like.js +12 -37
  1665. package/build-module/components/link-control/is-url-like.js.map +7 -1
  1666. package/build-module/components/link-control/link-preview.js +128 -134
  1667. package/build-module/components/link-control/link-preview.js.map +7 -1
  1668. package/build-module/components/link-control/search-create-button.js +32 -24
  1669. package/build-module/components/link-control/search-create-button.js.map +7 -1
  1670. package/build-module/components/link-control/search-input.js +122 -134
  1671. package/build-module/components/link-control/search-input.js.map +7 -1
  1672. package/build-module/components/link-control/search-item.js +78 -78
  1673. package/build-module/components/link-control/search-item.js.map +7 -1
  1674. package/build-module/components/link-control/search-results.js +67 -65
  1675. package/build-module/components/link-control/search-results.js.map +7 -1
  1676. package/build-module/components/link-control/settings-drawer.js +40 -44
  1677. package/build-module/components/link-control/settings-drawer.js.map +7 -1
  1678. package/build-module/components/link-control/settings.js +48 -30
  1679. package/build-module/components/link-control/settings.js.map +7 -1
  1680. package/build-module/components/link-control/use-create-page.js +23 -34
  1681. package/build-module/components/link-control/use-create-page.js.map +7 -1
  1682. package/build-module/components/link-control/use-internal-value.js +26 -27
  1683. package/build-module/components/link-control/use-internal-value.js.map +7 -1
  1684. package/build-module/components/link-control/use-rich-url-data.js +18 -31
  1685. package/build-module/components/link-control/use-rich-url-data.js.map +7 -1
  1686. package/build-module/components/link-control/use-search-handler.js +66 -74
  1687. package/build-module/components/link-control/use-search-handler.js.map +7 -1
  1688. package/build-module/components/link-control/viewer-slot.js +11 -11
  1689. package/build-module/components/link-control/viewer-slot.js.map +7 -1
  1690. package/build-module/components/list-view/appender.js +87 -93
  1691. package/build-module/components/list-view/appender.js.map +7 -1
  1692. package/build-module/components/list-view/aria-referenced-text.js +8 -27
  1693. package/build-module/components/list-view/aria-referenced-text.js.map +7 -1
  1694. package/build-module/components/list-view/block-contents.js +65 -72
  1695. package/build-module/components/list-view/block-contents.js.map +7 -1
  1696. package/build-module/components/list-view/block-select-button.js +119 -136
  1697. package/build-module/components/list-view/block-select-button.js.map +7 -1
  1698. package/build-module/components/list-view/block.js +358 -360
  1699. package/build-module/components/list-view/block.js.map +7 -1
  1700. package/build-module/components/list-view/branch.js +125 -139
  1701. package/build-module/components/list-view/branch.js.map +7 -1
  1702. package/build-module/components/list-view/context.js +9 -8
  1703. package/build-module/components/list-view/context.js.map +7 -1
  1704. package/build-module/components/list-view/drop-indicator.js +135 -157
  1705. package/build-module/components/list-view/drop-indicator.js.map +7 -1
  1706. package/build-module/components/list-view/expander.js +18 -22
  1707. package/build-module/components/list-view/expander.js.map +7 -1
  1708. package/build-module/components/list-view/index.js +249 -252
  1709. package/build-module/components/list-view/index.js.map +7 -1
  1710. package/build-module/components/list-view/leaf.js +45 -48
  1711. package/build-module/components/list-view/leaf.js.map +7 -1
  1712. package/build-module/components/list-view/use-block-selection.js +98 -103
  1713. package/build-module/components/list-view/use-block-selection.js.map +7 -1
  1714. package/build-module/components/list-view/use-clipboard-handler.js +48 -69
  1715. package/build-module/components/list-view/use-clipboard-handler.js.map +7 -1
  1716. package/build-module/components/list-view/use-list-view-block-indexes.js +8 -8
  1717. package/build-module/components/list-view/use-list-view-block-indexes.js.map +7 -1
  1718. package/build-module/components/list-view/use-list-view-client-ids.js +23 -28
  1719. package/build-module/components/list-view/use-list-view-client-ids.js.map +7 -1
  1720. package/build-module/components/list-view/use-list-view-collapse-items.js +13 -27
  1721. package/build-module/components/list-view/use-list-view-collapse-items.js.map +7 -1
  1722. package/build-module/components/list-view/use-list-view-drop-zone.js +157 -290
  1723. package/build-module/components/list-view/use-list-view-drop-zone.js.map +7 -1
  1724. package/build-module/components/list-view/use-list-view-expand-selected-item.js +27 -32
  1725. package/build-module/components/list-view/use-list-view-expand-selected-item.js.map +7 -1
  1726. package/build-module/components/list-view/use-list-view-images.js +25 -59
  1727. package/build-module/components/list-view/use-list-view-images.js.map +7 -1
  1728. package/build-module/components/list-view/use-list-view-scroll-into-view.js +8 -20
  1729. package/build-module/components/list-view/use-list-view-scroll-into-view.js.map +7 -1
  1730. package/build-module/components/list-view/utils.js +48 -111
  1731. package/build-module/components/list-view/utils.js.map +7 -1
  1732. package/build-module/components/media-placeholder/index.js +326 -289
  1733. package/build-module/components/media-placeholder/index.js.map +7 -1
  1734. package/build-module/components/media-replace-flow/index.js +162 -152
  1735. package/build-module/components/media-replace-flow/index.js.map +7 -1
  1736. package/build-module/components/media-upload/check.js +11 -23
  1737. package/build-module/components/media-upload/check.js.map +7 -1
  1738. package/build-module/components/media-upload/index.js +6 -18
  1739. package/build-module/components/media-upload/index.js.map +7 -1
  1740. package/build-module/components/media-upload-progress/constants.js +15 -7
  1741. package/build-module/components/media-upload-progress/constants.js.map +7 -1
  1742. package/build-module/components/multi-selection-inspector/index.js +32 -30
  1743. package/build-module/components/multi-selection-inspector/index.js.map +7 -1
  1744. package/build-module/components/navigable-toolbar/index.js +65 -86
  1745. package/build-module/components/navigable-toolbar/index.js.map +7 -1
  1746. package/build-module/components/observe-typing/index.js +129 -207
  1747. package/build-module/components/observe-typing/index.js.map +7 -1
  1748. package/build-module/components/panel-color-settings/index.js +19 -23
  1749. package/build-module/components/panel-color-settings/index.js.map +7 -1
  1750. package/build-module/components/plain-text/index.js +22 -75
  1751. package/build-module/components/plain-text/index.js.map +7 -1
  1752. package/build-module/components/preview-options/index.js +8 -8
  1753. package/build-module/components/preview-options/index.js.map +7 -1
  1754. package/build-module/components/provider/block-refs-provider.js +13 -21
  1755. package/build-module/components/provider/block-refs-provider.js.map +7 -1
  1756. package/build-module/components/provider/index.js +80 -91
  1757. package/build-module/components/provider/index.js.map +7 -1
  1758. package/build-module/components/provider/use-block-sync.js +27 -136
  1759. package/build-module/components/provider/use-block-sync.js.map +7 -1
  1760. package/build-module/components/provider/use-media-upload-settings.js +15 -20
  1761. package/build-module/components/provider/use-media-upload-settings.js.map +7 -1
  1762. package/build-module/components/provider/with-registry-provider.js +27 -36
  1763. package/build-module/components/provider/with-registry-provider.js.map +7 -1
  1764. package/build-module/components/publish-date-time-picker/index.js +42 -39
  1765. package/build-module/components/publish-date-time-picker/index.js.map +7 -1
  1766. package/build-module/components/recursion-provider/index.js +31 -81
  1767. package/build-module/components/recursion-provider/index.js.map +7 -1
  1768. package/build-module/components/resizable-box-popover/index.js +17 -20
  1769. package/build-module/components/resizable-box-popover/index.js.map +7 -1
  1770. package/build-module/components/resolution-tool/index.js +53 -39
  1771. package/build-module/components/resolution-tool/index.js.map +7 -1
  1772. package/build-module/components/responsive-block-control/index.js +86 -66
  1773. package/build-module/components/responsive-block-control/index.js.map +7 -1
  1774. package/build-module/components/responsive-block-control/label.js +22 -21
  1775. package/build-module/components/responsive-block-control/label.js.map +7 -1
  1776. package/build-module/components/rich-text/content.js +22 -40
  1777. package/build-module/components/rich-text/content.js.map +7 -1
  1778. package/build-module/components/rich-text/event-listeners/before-input-rules.js +23 -52
  1779. package/build-module/components/rich-text/event-listeners/before-input-rules.js.map +7 -1
  1780. package/build-module/components/rich-text/event-listeners/delete.js +13 -31
  1781. package/build-module/components/rich-text/event-listeners/delete.js.map +7 -1
  1782. package/build-module/components/rich-text/event-listeners/enter.js +22 -38
  1783. package/build-module/components/rich-text/event-listeners/enter.js.map +7 -1
  1784. package/build-module/components/rich-text/event-listeners/firefox-compat.js +12 -18
  1785. package/build-module/components/rich-text/event-listeners/firefox-compat.js.map +7 -1
  1786. package/build-module/components/rich-text/event-listeners/index.js +47 -33
  1787. package/build-module/components/rich-text/event-listeners/index.js.map +7 -1
  1788. package/build-module/components/rich-text/event-listeners/input-events.js +8 -7
  1789. package/build-module/components/rich-text/event-listeners/input-events.js.map +7 -1
  1790. package/build-module/components/rich-text/event-listeners/input-rules.js +46 -64
  1791. package/build-module/components/rich-text/event-listeners/input-rules.js.map +7 -1
  1792. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js +10 -19
  1793. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js.map +7 -1
  1794. package/build-module/components/rich-text/event-listeners/paste-handler.js +36 -65
  1795. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +7 -1
  1796. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js +9 -14
  1797. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +7 -1
  1798. package/build-module/components/rich-text/event-listeners/shortcuts.js +8 -7
  1799. package/build-module/components/rich-text/event-listeners/shortcuts.js.map +7 -1
  1800. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js +13 -26
  1801. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js.map +7 -1
  1802. package/build-module/components/rich-text/format-edit.js +36 -46
  1803. package/build-module/components/rich-text/format-edit.js.map +7 -1
  1804. package/build-module/components/rich-text/format-toolbar/index.js +51 -55
  1805. package/build-module/components/rich-text/format-toolbar/index.js.map +7 -1
  1806. package/build-module/components/rich-text/format-toolbar-container.js +33 -46
  1807. package/build-module/components/rich-text/format-toolbar-container.js.map +7 -1
  1808. package/build-module/components/rich-text/get-rich-text-values.js +37 -43
  1809. package/build-module/components/rich-text/get-rich-text-values.js.map +7 -1
  1810. package/build-module/components/rich-text/index.js +298 -303
  1811. package/build-module/components/rich-text/index.js.map +7 -1
  1812. package/build-module/components/rich-text/input-event.js +7 -14
  1813. package/build-module/components/rich-text/input-event.js.map +7 -1
  1814. package/build-module/components/rich-text/multiline.js +74 -68
  1815. package/build-module/components/rich-text/multiline.js.map +7 -1
  1816. package/build-module/components/rich-text/native/format-edit.js +25 -24
  1817. package/build-module/components/rich-text/native/format-edit.js.map +7 -1
  1818. package/build-module/components/rich-text/native/index.js +6 -2
  1819. package/build-module/components/rich-text/native/index.js.map +7 -1
  1820. package/build-module/components/rich-text/native/use-format-types.js +64 -55
  1821. package/build-module/components/rich-text/native/use-format-types.js.map +7 -1
  1822. package/build-module/components/rich-text/prevent-event-discovery.js +9 -12
  1823. package/build-module/components/rich-text/prevent-event-discovery.js.map +7 -1
  1824. package/build-module/components/rich-text/shortcut.js +8 -16
  1825. package/build-module/components/rich-text/shortcut.js.map +7 -1
  1826. package/build-module/components/rich-text/toolbar-button.js +10 -16
  1827. package/build-module/components/rich-text/toolbar-button.js.map +7 -1
  1828. package/build-module/components/rich-text/use-format-types.js +102 -82
  1829. package/build-module/components/rich-text/use-format-types.js.map +7 -1
  1830. package/build-module/components/rich-text/use-mark-persistent.js +10 -25
  1831. package/build-module/components/rich-text/use-mark-persistent.js.map +7 -1
  1832. package/build-module/components/rich-text/utils.js +24 -40
  1833. package/build-module/components/rich-text/utils.js.map +7 -1
  1834. package/build-module/components/rich-text/with-deprecations.js +30 -29
  1835. package/build-module/components/rich-text/with-deprecations.js.map +7 -1
  1836. package/build-module/components/selection-scroll-into-view/index.js +9 -16
  1837. package/build-module/components/selection-scroll-into-view/index.js.map +7 -1
  1838. package/build-module/components/skip-to-selected-block/index.js +26 -28
  1839. package/build-module/components/skip-to-selected-block/index.js.map +7 -1
  1840. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +38 -34
  1841. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +7 -1
  1842. package/build-module/components/spacing-sizes-control/index.js +65 -101
  1843. package/build-module/components/spacing-sizes-control/index.js.map +7 -1
  1844. package/build-module/components/spacing-sizes-control/input-controls/axial.js +37 -31
  1845. package/build-module/components/spacing-sizes-control/input-controls/axial.js.map +7 -1
  1846. package/build-module/components/spacing-sizes-control/input-controls/separated.js +33 -25
  1847. package/build-module/components/spacing-sizes-control/input-controls/separated.js.map +7 -1
  1848. package/build-module/components/spacing-sizes-control/input-controls/single.js +29 -24
  1849. package/build-module/components/spacing-sizes-control/input-controls/single.js.map +7 -1
  1850. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +230 -263
  1851. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +7 -1
  1852. package/build-module/components/spacing-sizes-control/linked-button.js +20 -20
  1853. package/build-module/components/spacing-sizes-control/linked-button.js.map +7 -1
  1854. package/build-module/components/spacing-sizes-control/utils.js +85 -167
  1855. package/build-module/components/spacing-sizes-control/utils.js.map +7 -1
  1856. package/build-module/components/tabbed-sidebar/index.js +62 -94
  1857. package/build-module/components/tabbed-sidebar/index.js.map +7 -1
  1858. package/build-module/components/text-alignment-control/index.js +76 -64
  1859. package/build-module/components/text-alignment-control/index.js.map +7 -1
  1860. package/build-module/components/text-decoration-control/index.js +58 -56
  1861. package/build-module/components/text-decoration-control/index.js.map +7 -1
  1862. package/build-module/components/text-transform-control/index.js +68 -64
  1863. package/build-module/components/text-transform-control/index.js.map +7 -1
  1864. package/build-module/components/typewriter/index.js +152 -206
  1865. package/build-module/components/typewriter/index.js.map +7 -1
  1866. package/build-module/components/unit-control/index.js +14 -21
  1867. package/build-module/components/unit-control/index.js.map +7 -1
  1868. package/build-module/components/url-input/button.js +68 -70
  1869. package/build-module/components/url-input/button.js.map +7 -1
  1870. package/build-module/components/url-input/index.js +191 -239
  1871. package/build-module/components/url-input/index.js.map +7 -1
  1872. package/build-module/components/url-popover/image-url-input-ui.js +232 -186
  1873. package/build-module/components/url-popover/image-url-input-ui.js.map +7 -1
  1874. package/build-module/components/url-popover/index.js +87 -93
  1875. package/build-module/components/url-popover/index.js.map +7 -1
  1876. package/build-module/components/url-popover/link-editor.js +40 -33
  1877. package/build-module/components/url-popover/link-editor.js.map +7 -1
  1878. package/build-module/components/url-popover/link-viewer-url.js +15 -26
  1879. package/build-module/components/url-popover/link-viewer-url.js.map +7 -1
  1880. package/build-module/components/url-popover/link-viewer.js +40 -33
  1881. package/build-module/components/url-popover/link-viewer.js.map +7 -1
  1882. package/build-module/components/use-block-commands/index.js +151 -133
  1883. package/build-module/components/use-block-commands/index.js.map +7 -1
  1884. package/build-module/components/use-block-display-information/index.js +62 -102
  1885. package/build-module/components/use-block-display-information/index.js.map +7 -1
  1886. package/build-module/components/use-block-drop-zone/index.js +277 -301
  1887. package/build-module/components/use-block-drop-zone/index.js.map +7 -1
  1888. package/build-module/components/use-flash-editable-blocks/index.js +45 -48
  1889. package/build-module/components/use-flash-editable-blocks/index.js.map +7 -1
  1890. package/build-module/components/use-moving-animation/index.js +43 -102
  1891. package/build-module/components/use-moving-animation/index.js.map +7 -1
  1892. package/build-module/components/use-on-block-drop/index.js +184 -173
  1893. package/build-module/components/use-on-block-drop/index.js.map +7 -1
  1894. package/build-module/components/use-on-block-drop/types.js +1 -2
  1895. package/build-module/components/use-on-block-drop/types.js.map +7 -1
  1896. package/build-module/components/use-paste-styles/index.js +127 -127
  1897. package/build-module/components/use-paste-styles/index.js.map +7 -1
  1898. package/build-module/components/use-resize-canvas/index.js +19 -27
  1899. package/build-module/components/use-resize-canvas/index.js.map +7 -1
  1900. package/build-module/components/use-settings/index.js +24 -53
  1901. package/build-module/components/use-settings/index.js.map +7 -1
  1902. package/build-module/components/warning/index.js +45 -59
  1903. package/build-module/components/warning/index.js.map +7 -1
  1904. package/build-module/components/writing-flow/index.js +79 -65
  1905. package/build-module/components/writing-flow/index.js.map +7 -1
  1906. package/build-module/components/writing-flow/use-arrow-nav.js +89 -136
  1907. package/build-module/components/writing-flow/use-arrow-nav.js.map +7 -1
  1908. package/build-module/components/writing-flow/use-click-selection.js +38 -51
  1909. package/build-module/components/writing-flow/use-click-selection.js.map +7 -1
  1910. package/build-module/components/writing-flow/use-clipboard-handler.js +68 -76
  1911. package/build-module/components/writing-flow/use-clipboard-handler.js.map +7 -1
  1912. package/build-module/components/writing-flow/use-drag-selection.js +81 -145
  1913. package/build-module/components/writing-flow/use-drag-selection.js.map +7 -1
  1914. package/build-module/components/writing-flow/use-input.js +54 -52
  1915. package/build-module/components/writing-flow/use-input.js.map +7 -1
  1916. package/build-module/components/writing-flow/use-multi-selection.js +38 -55
  1917. package/build-module/components/writing-flow/use-multi-selection.js.map +7 -1
  1918. package/build-module/components/writing-flow/use-select-all.js +20 -31
  1919. package/build-module/components/writing-flow/use-select-all.js.map +7 -1
  1920. package/build-module/components/writing-flow/use-selection-observer.js +118 -184
  1921. package/build-module/components/writing-flow/use-selection-observer.js.map +7 -1
  1922. package/build-module/components/writing-flow/use-tab-nav.js +68 -131
  1923. package/build-module/components/writing-flow/use-tab-nav.js.map +7 -1
  1924. package/build-module/components/writing-flow/utils.js +40 -62
  1925. package/build-module/components/writing-flow/utils.js.map +7 -1
  1926. package/build-module/components/writing-mode-control/index.js +50 -56
  1927. package/build-module/components/writing-mode-control/index.js.map +7 -1
  1928. package/build-module/elements/index.js +8 -5
  1929. package/build-module/elements/index.js.map +7 -1
  1930. package/build-module/hooks/align.js +71 -125
  1931. package/build-module/hooks/align.js.map +7 -1
  1932. package/build-module/hooks/allowed-blocks.js +50 -0
  1933. package/build-module/hooks/allowed-blocks.js.map +7 -0
  1934. package/build-module/hooks/anchor.js +58 -84
  1935. package/build-module/hooks/anchor.js.map +7 -1
  1936. package/build-module/hooks/aria-label.js +22 -39
  1937. package/build-module/hooks/aria-label.js.map +7 -1
  1938. package/build-module/hooks/background.js +80 -100
  1939. package/build-module/hooks/background.js.map +7 -1
  1940. package/build-module/hooks/block-bindings.js +370 -245
  1941. package/build-module/hooks/block-bindings.js.map +7 -1
  1942. package/build-module/hooks/block-hooks.js +153 -158
  1943. package/build-module/hooks/block-hooks.js.map +7 -1
  1944. package/build-module/hooks/block-renaming.js +20 -29
  1945. package/build-module/hooks/block-renaming.js.map +7 -1
  1946. package/build-module/hooks/block-style-variation.js +127 -167
  1947. package/build-module/hooks/block-style-variation.js.map +7 -1
  1948. package/build-module/hooks/border.js +143 -231
  1949. package/build-module/hooks/border.js.map +7 -1
  1950. package/build-module/hooks/color.js +182 -174
  1951. package/build-module/hooks/color.js.map +7 -1
  1952. package/build-module/hooks/compat.js +10 -11
  1953. package/build-module/hooks/compat.js.map +7 -1
  1954. package/build-module/hooks/content-lock-ui.js +32 -53
  1955. package/build-module/hooks/content-lock-ui.js.map +7 -1
  1956. package/build-module/hooks/contrast-checker.js +36 -37
  1957. package/build-module/hooks/contrast-checker.js.map +7 -1
  1958. package/build-module/hooks/custom-class-name.js +52 -82
  1959. package/build-module/hooks/custom-class-name.js.map +7 -1
  1960. package/build-module/hooks/dimensions.js +113 -126
  1961. package/build-module/hooks/dimensions.js.map +7 -1
  1962. package/build-module/hooks/duotone.js +148 -178
  1963. package/build-module/hooks/duotone.js.map +7 -1
  1964. package/build-module/hooks/fit-text.js +174 -0
  1965. package/build-module/hooks/fit-text.js.map +7 -0
  1966. package/build-module/hooks/font-family.js +33 -68
  1967. package/build-module/hooks/font-family.js.map +7 -1
  1968. package/build-module/hooks/font-size.js +102 -111
  1969. package/build-module/hooks/font-size.js.map +7 -1
  1970. package/build-module/hooks/gap.js +9 -25
  1971. package/build-module/hooks/gap.js.map +7 -1
  1972. package/build-module/hooks/generated-class-name.js +20 -28
  1973. package/build-module/hooks/generated-class-name.js.map +7 -1
  1974. package/build-module/hooks/grid-visualizer.js +50 -57
  1975. package/build-module/hooks/grid-visualizer.js.map +7 -1
  1976. package/build-module/hooks/index.js +113 -48
  1977. package/build-module/hooks/index.js.map +7 -1
  1978. package/build-module/hooks/layout-child.js +109 -132
  1979. package/build-module/hooks/layout-child.js.map +7 -1
  1980. package/build-module/hooks/layout.js +229 -283
  1981. package/build-module/hooks/layout.js.map +7 -1
  1982. package/build-module/hooks/line-height.js +27 -47
  1983. package/build-module/hooks/line-height.js.map +7 -1
  1984. package/build-module/hooks/lock.js +9 -20
  1985. package/build-module/hooks/lock.js.map +7 -1
  1986. package/build-module/hooks/metadata.js +13 -19
  1987. package/build-module/hooks/metadata.js.map +7 -1
  1988. package/build-module/hooks/position.js +123 -221
  1989. package/build-module/hooks/position.js.map +7 -1
  1990. package/build-module/hooks/settings.js +10 -11
  1991. package/build-module/hooks/settings.js.map +7 -1
  1992. package/build-module/hooks/spacing-visualizer.js +69 -75
  1993. package/build-module/hooks/spacing-visualizer.js.map +7 -1
  1994. package/build-module/hooks/style.js +145 -271
  1995. package/build-module/hooks/style.js.map +7 -1
  1996. package/build-module/hooks/supports.js +95 -253
  1997. package/build-module/hooks/supports.js.map +7 -1
  1998. package/build-module/hooks/text-align.js +77 -89
  1999. package/build-module/hooks/text-align.js.map +7 -1
  2000. package/build-module/hooks/typography.js +105 -94
  2001. package/build-module/hooks/typography.js.map +7 -1
  2002. package/build-module/hooks/use-border-props.js +14 -46
  2003. package/build-module/hooks/use-border-props.js.map +7 -1
  2004. package/build-module/hooks/use-cached-truthy.js +6 -13
  2005. package/build-module/hooks/use-cached-truthy.js.map +7 -1
  2006. package/build-module/hooks/use-color-props.js +74 -83
  2007. package/build-module/hooks/use-color-props.js.map +7 -1
  2008. package/build-module/hooks/use-shadow-props.js +8 -22
  2009. package/build-module/hooks/use-shadow-props.js.map +7 -1
  2010. package/build-module/hooks/use-spacing-props.js +8 -27
  2011. package/build-module/hooks/use-spacing-props.js.map +7 -1
  2012. package/build-module/hooks/use-typography-props.js +24 -46
  2013. package/build-module/hooks/use-typography-props.js.map +7 -1
  2014. package/build-module/hooks/use-zoom-out.js +15 -49
  2015. package/build-module/hooks/use-zoom-out.js.map +7 -1
  2016. package/build-module/hooks/utils.js +384 -235
  2017. package/build-module/hooks/utils.js.map +7 -1
  2018. package/build-module/index.js +38 -12
  2019. package/build-module/index.js.map +7 -1
  2020. package/build-module/layouts/constrained.js +200 -201
  2021. package/build-module/layouts/constrained.js.map +7 -1
  2022. package/build-module/layouts/definitions.js +166 -140
  2023. package/build-module/layouts/definitions.js.map +7 -1
  2024. package/build-module/layouts/flex.js +246 -231
  2025. package/build-module/layouts/flex.js.map +7 -1
  2026. package/build-module/layouts/flow.js +36 -53
  2027. package/build-module/layouts/flow.js.map +7 -1
  2028. package/build-module/layouts/grid.js +237 -243
  2029. package/build-module/layouts/grid.js.map +7 -1
  2030. package/build-module/layouts/index.js +12 -24
  2031. package/build-module/layouts/index.js.map +7 -1
  2032. package/build-module/layouts/utils.js +28 -65
  2033. package/build-module/layouts/utils.js.map +7 -1
  2034. package/build-module/lock-unlock.js +8 -7
  2035. package/build-module/lock-unlock.js.map +7 -1
  2036. package/build-module/private-apis.js +63 -44
  2037. package/build-module/private-apis.js.map +7 -1
  2038. package/build-module/store/actions.js +536 -1191
  2039. package/build-module/store/actions.js.map +7 -1
  2040. package/build-module/store/array.js +17 -25
  2041. package/build-module/store/array.js.map +7 -1
  2042. package/build-module/store/constants.js +5 -2
  2043. package/build-module/store/constants.js.map +7 -1
  2044. package/build-module/store/defaults.js +168 -197
  2045. package/build-module/store/defaults.js.map +7 -1
  2046. package/build-module/store/get-block-settings.js +83 -88
  2047. package/build-module/store/get-block-settings.js.map +7 -1
  2048. package/build-module/store/index.js +17 -43
  2049. package/build-module/store/index.js.map +7 -1
  2050. package/build-module/store/private-actions.js +121 -310
  2051. package/build-module/store/private-actions.js.map +7 -1
  2052. package/build-module/store/private-keys.js +17 -8
  2053. package/build-module/store/private-keys.js.map +7 -1
  2054. package/build-module/store/private-selectors.js +282 -442
  2055. package/build-module/store/private-selectors.js.map +7 -1
  2056. package/build-module/store/reducer.js +1102 -1801
  2057. package/build-module/store/reducer.js.map +7 -1
  2058. package/build-module/store/selectors.js +1135 -2151
  2059. package/build-module/store/selectors.js.map +7 -1
  2060. package/build-module/store/utils.js +60 -42
  2061. package/build-module/store/utils.js.map +7 -1
  2062. package/build-module/utils/block-bindings.js +25 -175
  2063. package/build-module/utils/block-bindings.js.map +7 -1
  2064. package/build-module/utils/dom.js +36 -101
  2065. package/build-module/utils/dom.js.map +7 -1
  2066. package/build-module/utils/fit-text-frontend.js +40 -0
  2067. package/build-module/utils/fit-text-frontend.js.map +7 -0
  2068. package/build-module/utils/fit-text-utils.js +39 -0
  2069. package/build-module/utils/fit-text-utils.js.map +7 -0
  2070. package/build-module/utils/format-font-style.js +14 -24
  2071. package/build-module/utils/format-font-style.js.map +7 -1
  2072. package/build-module/utils/format-font-weight.js +30 -40
  2073. package/build-module/utils/format-font-weight.js.map +7 -1
  2074. package/build-module/utils/get-editor-region.js +10 -22
  2075. package/build-module/utils/get-editor-region.js.map +7 -1
  2076. package/build-module/utils/get-font-styles-and-weights.js +90 -101
  2077. package/build-module/utils/get-font-styles-and-weights.js.map +7 -1
  2078. package/build-module/utils/get-px-from-css-unit.js +5 -9
  2079. package/build-module/utils/get-px-from-css-unit.js.map +7 -1
  2080. package/build-module/utils/index.js +9 -4
  2081. package/build-module/utils/index.js.map +7 -1
  2082. package/build-module/utils/math.js +18 -78
  2083. package/build-module/utils/math.js.map +7 -1
  2084. package/build-module/utils/object.js +16 -53
  2085. package/build-module/utils/object.js.map +7 -1
  2086. package/build-module/utils/order-inserter-block-items.js +6 -18
  2087. package/build-module/utils/order-inserter-block-items.js.map +7 -1
  2088. package/build-module/utils/pasting.js +17 -79
  2089. package/build-module/utils/pasting.js.map +7 -1
  2090. package/build-module/utils/selection.js +13 -25
  2091. package/build-module/utils/selection.js.map +7 -1
  2092. package/build-module/utils/sorting.js +10 -29
  2093. package/build-module/utils/sorting.js.map +7 -1
  2094. package/build-module/utils/transform-styles/index.js +72 -136
  2095. package/build-module/utils/transform-styles/index.js.map +7 -1
  2096. package/build-module/utils/use-notify-copy.js +58 -49
  2097. package/build-module/utils/use-notify-copy.js.map +7 -1
  2098. package/build-style/content-rtl.css +64 -192
  2099. package/build-style/content.css +64 -192
  2100. package/build-style/default-editor-styles-rtl.css +3 -197
  2101. package/build-style/default-editor-styles.css +3 -197
  2102. package/build-style/style-rtl.css +140 -290
  2103. package/build-style/style.css +140 -290
  2104. package/package.json +56 -36
  2105. package/src/autocompleters/style.scss +2 -0
  2106. package/src/components/background-image-control/style.scss +4 -0
  2107. package/src/components/block-allowed-blocks/allowed-blocks-control.js +80 -0
  2108. package/src/components/block-allowed-blocks/index.js +2 -0
  2109. package/src/components/block-allowed-blocks/modal.js +100 -0
  2110. package/src/components/block-allowed-blocks/style.scss +27 -0
  2111. package/src/components/block-breadcrumb/style.scss +3 -0
  2112. package/src/components/block-canvas/style.scss +8 -1
  2113. package/src/components/block-card/index.js +37 -30
  2114. package/src/components/block-card/style.scss +3 -0
  2115. package/src/components/block-compare/style.scss +4 -0
  2116. package/src/components/block-draggable/content.scss +3 -2
  2117. package/src/components/block-draggable/style.scss +3 -0
  2118. package/src/components/block-icon/content.scss +7 -0
  2119. package/src/components/block-icon/style.scss +7 -0
  2120. package/src/components/block-inspector/index.js +27 -3
  2121. package/src/components/block-inspector/style.scss +3 -0
  2122. package/src/components/block-list/content.scss +19 -9
  2123. package/src/components/block-list/index.js +11 -6
  2124. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +132 -34
  2125. package/src/components/block-list-appender/content.scss +2 -0
  2126. package/src/components/block-lock/style.scss +4 -0
  2127. package/src/components/block-manager/index.js +32 -28
  2128. package/src/components/block-manager/style.scss +4 -26
  2129. package/src/components/block-mover/style.scss +3 -0
  2130. package/src/components/block-navigation/style.scss +3 -0
  2131. package/src/components/block-pattern-setup/style.scss +5 -0
  2132. package/src/components/block-patterns-list/style.scss +3 -0
  2133. package/src/components/block-patterns-paging/style.scss +3 -0
  2134. package/src/components/block-popover/style.scss +2 -0
  2135. package/src/components/block-rename/modal.js +3 -2
  2136. package/src/components/block-rename/style.scss +2 -0
  2137. package/src/components/block-settings-menu/block-settings-dropdown.js +7 -9
  2138. package/src/components/block-styles/style.scss +5 -0
  2139. package/src/components/block-switcher/style.scss +3 -0
  2140. package/src/components/block-toolbar/index.js +2 -14
  2141. package/src/components/block-toolbar/style.scss +5 -1
  2142. package/src/components/block-tools/index.js +46 -1
  2143. package/src/components/block-tools/style.scss +4 -45
  2144. package/src/components/block-tools/use-show-block-tools.js +1 -8
  2145. package/src/components/block-variation-picker/content.scss +3 -0
  2146. package/src/components/block-variation-transforms/style.scss +3 -0
  2147. package/src/components/block-visibility/menu-item.js +45 -2
  2148. package/src/components/border-radius-control/style.scss +2 -0
  2149. package/src/components/button-block-appender/content.scss +3 -0
  2150. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  2151. package/src/components/colors-gradients/style.scss +4 -0
  2152. package/src/components/date-format-picker/style.scss +3 -0
  2153. package/src/components/default-block-appender/content.scss +4 -0
  2154. package/src/components/duotone-control/style.scss +4 -0
  2155. package/src/components/font-appearance-control/style.scss +2 -0
  2156. package/src/components/font-family/style.scss +2 -0
  2157. package/src/components/global-styles/color-panel.js +2 -0
  2158. package/src/components/global-styles/get-global-styles-changes.js +2 -0
  2159. package/src/components/global-styles/style.scss +3 -0
  2160. package/src/components/grid/style.scss +5 -0
  2161. package/src/components/iframe/content.scss +8 -1
  2162. package/src/components/iframe/style.scss +7 -0
  2163. package/src/components/index.js +0 -1
  2164. package/src/components/inserter/style.scss +6 -5
  2165. package/src/components/inserter-list-item/style.scss +2 -0
  2166. package/src/components/inspector-controls/groups.js +5 -0
  2167. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +7 -1
  2168. package/src/components/inspector-popover-header/style.scss +2 -0
  2169. package/src/components/keyboard-shortcuts/index.js +10 -0
  2170. package/src/components/link-control/index.js +118 -16
  2171. package/src/components/link-control/link-preview.js +9 -2
  2172. package/src/components/link-control/search-input.js +3 -1
  2173. package/src/components/link-control/settings.js +38 -11
  2174. package/src/components/link-control/style.scss +20 -3
  2175. package/src/components/link-control/test/index.js +511 -1
  2176. package/src/components/list-view/block.js +32 -0
  2177. package/src/components/list-view/style.scss +5 -0
  2178. package/src/components/media-placeholder/style.scss +2 -0
  2179. package/src/components/media-replace-flow/style.scss +3 -0
  2180. package/src/components/multi-selection-inspector/style.scss +2 -0
  2181. package/src/components/responsive-block-control/style.scss +3 -0
  2182. package/src/components/rich-text/content.scss +2 -0
  2183. package/src/components/rich-text/index.js +18 -17
  2184. package/src/components/rich-text/style.scss +3 -0
  2185. package/src/components/skip-to-selected-block/style.scss +2 -0
  2186. package/src/components/spacing-sizes-control/style.scss +2 -0
  2187. package/src/components/tabbed-sidebar/style.scss +3 -0
  2188. package/src/components/url-input/index.js +8 -4
  2189. package/src/components/url-input/style.scss +4 -0
  2190. package/src/components/url-popover/link-viewer.js +2 -2
  2191. package/src/components/url-popover/style.scss +3 -0
  2192. package/src/components/use-block-commands/index.js +40 -0
  2193. package/src/components/warning/content.scss +4 -0
  2194. package/src/content.scss +16 -14
  2195. package/src/default-editor-styles.scss +1 -0
  2196. package/src/hooks/allowed-blocks.js +74 -0
  2197. package/src/hooks/block-bindings.js +399 -200
  2198. package/src/hooks/block-hooks.scss +3 -0
  2199. package/src/hooks/color.scss +2 -0
  2200. package/src/hooks/fit-text.js +268 -0
  2201. package/src/hooks/index.js +6 -0
  2202. package/src/hooks/layout.scss +3 -0
  2203. package/src/hooks/typography.js +2 -0
  2204. package/src/private-apis.js +6 -1
  2205. package/src/store/actions.js +2 -15
  2206. package/src/store/private-actions.js +15 -0
  2207. package/src/store/private-selectors.js +13 -14
  2208. package/src/store/reducer.js +81 -265
  2209. package/src/store/selectors.js +2 -44
  2210. package/src/store/test/private-selectors.js +2 -9
  2211. package/src/store/test/reducer.js +1 -345
  2212. package/src/store/test/selectors.js +3 -1
  2213. package/src/store/utils.js +11 -12
  2214. package/src/style.scss +64 -62
  2215. package/src/utils/fit-text-frontend.js +84 -0
  2216. package/src/utils/fit-text-utils.js +75 -0
  2217. package/build/components/audio-player/audio-url-parser.native.js +0 -24
  2218. package/build/components/audio-player/audio-url-parser.native.js.map +0 -1
  2219. package/build/components/audio-player/index.native.js +0 -174
  2220. package/build/components/audio-player/index.native.js.map +0 -1
  2221. package/build/components/block-alignment-control/ui.native.js +0 -80
  2222. package/build/components/block-alignment-control/ui.native.js.map +0 -1
  2223. package/build/components/block-caption/index.native.js +0 -95
  2224. package/build/components/block-caption/index.native.js.map +0 -1
  2225. package/build/components/block-controls/slot.native.js +0 -46
  2226. package/build/components/block-controls/slot.native.js.map +0 -1
  2227. package/build/components/block-draggable/draggable-chip.native.js +0 -58
  2228. package/build/components/block-draggable/draggable-chip.native.js.map +0 -1
  2229. package/build/components/block-draggable/dropping-insertion-point.native.js +0 -134
  2230. package/build/components/block-draggable/dropping-insertion-point.native.js.map +0 -1
  2231. package/build/components/block-draggable/index.native.js +0 -432
  2232. package/build/components/block-draggable/index.native.js.map +0 -1
  2233. package/build/components/block-draggable/use-scroll-when-dragging.native.js +0 -118
  2234. package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +0 -1
  2235. package/build/components/block-edit/edit.native.js +0 -51
  2236. package/build/components/block-edit/edit.native.js.map +0 -1
  2237. package/build/components/block-heading-level-dropdown/index.native.js +0 -68
  2238. package/build/components/block-heading-level-dropdown/index.native.js.map +0 -1
  2239. package/build/components/block-icon/index.native.js +0 -56
  2240. package/build/components/block-icon/index.native.js.map +0 -1
  2241. package/build/components/block-list/block-crash-boundary.native.js +0 -49
  2242. package/build/components/block-list/block-crash-boundary.native.js.map +0 -1
  2243. package/build/components/block-list/block-crash-warning.native.js +0 -24
  2244. package/build/components/block-list/block-crash-warning.native.js.map +0 -1
  2245. package/build/components/block-list/block-invalid-warning.native.js +0 -79
  2246. package/build/components/block-list/block-invalid-warning.native.js.map +0 -1
  2247. package/build/components/block-list/block-list-context.native.js +0 -170
  2248. package/build/components/block-list/block-list-context.native.js.map +0 -1
  2249. package/build/components/block-list/block-list-item-cell.native.js +0 -74
  2250. package/build/components/block-list/block-list-item-cell.native.js.map +0 -1
  2251. package/build/components/block-list/block-list-item.native.js +0 -191
  2252. package/build/components/block-list/block-list-item.native.js.map +0 -1
  2253. package/build/components/block-list/block-outline.native.js +0 -61
  2254. package/build/components/block-list/block-outline.native.js.map +0 -1
  2255. package/build/components/block-list/block-selection-button.native.js +0 -98
  2256. package/build/components/block-list/block-selection-button.native.js.map +0 -1
  2257. package/build/components/block-list/block.native.js +0 -538
  2258. package/build/components/block-list/block.native.js.map +0 -1
  2259. package/build/components/block-list/grid-item.native.js +0 -63
  2260. package/build/components/block-list/grid-item.native.js.map +0 -1
  2261. package/build/components/block-list/index.native.js +0 -351
  2262. package/build/components/block-list/index.native.js.map +0 -1
  2263. package/build/components/block-list/insertion-point.native.js +0 -45
  2264. package/build/components/block-list/insertion-point.native.js.map +0 -1
  2265. package/build/components/block-list/use-block-props/index.native.js +0 -24
  2266. package/build/components/block-list/use-block-props/index.native.js.map +0 -1
  2267. package/build/components/block-list/use-scroll-upon-insertion.native.js +0 -40
  2268. package/build/components/block-list/use-scroll-upon-insertion.native.js.map +0 -1
  2269. package/build/components/block-list-appender/index.native.js +0 -69
  2270. package/build/components/block-list-appender/index.native.js.map +0 -1
  2271. package/build/components/block-media-update-progress/index.native.js +0 -287
  2272. package/build/components/block-media-update-progress/index.native.js.map +0 -1
  2273. package/build/components/block-mover/index.native.js +0 -173
  2274. package/build/components/block-mover/index.native.js.map +0 -1
  2275. package/build/components/block-mover/mover-description.native.js +0 -130
  2276. package/build/components/block-mover/mover-description.native.js.map +0 -1
  2277. package/build/components/block-settings/button.native.js +0 -44
  2278. package/build/components/block-settings/button.native.js.map +0 -1
  2279. package/build/components/block-settings/container.native.js +0 -84
  2280. package/build/components/block-settings/container.native.js.map +0 -1
  2281. package/build/components/block-settings/index.native.js +0 -29
  2282. package/build/components/block-settings/index.native.js.map +0 -1
  2283. package/build/components/block-styles/index.native.js +0 -89
  2284. package/build/components/block-styles/index.native.js.map +0 -1
  2285. package/build/components/block-styles/preview.native.js +0 -96
  2286. package/build/components/block-styles/preview.native.js.map +0 -1
  2287. package/build/components/block-switcher/block-transformations-menu.native.js +0 -79
  2288. package/build/components/block-switcher/block-transformations-menu.native.js.map +0 -1
  2289. package/build/components/block-toolbar/block-toolbar-menu.native.js +0 -378
  2290. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +0 -1
  2291. package/build/components/block-toolbar/index.native.js +0 -108
  2292. package/build/components/block-toolbar/index.native.js.map +0 -1
  2293. package/build/components/block-types-list/index.native.js +0 -141
  2294. package/build/components/block-types-list/index.native.js.map +0 -1
  2295. package/build/components/block-variation-picker/index.native.js +0 -91
  2296. package/build/components/block-variation-picker/index.native.js.map +0 -1
  2297. package/build/components/button-block-appender/index.native.js +0 -82
  2298. package/build/components/button-block-appender/index.native.js.map +0 -1
  2299. package/build/components/caption/index.native.js +0 -62
  2300. package/build/components/caption/index.native.js.map +0 -1
  2301. package/build/components/colors-gradients/panel-color-gradient-settings.native.js +0 -62
  2302. package/build/components/colors-gradients/panel-color-gradient-settings.native.js.map +0 -1
  2303. package/build/components/contrast-checker/index.native.js +0 -91
  2304. package/build/components/contrast-checker/index.native.js.map +0 -1
  2305. package/build/components/convert-to-group-buttons/index.native.js +0 -82
  2306. package/build/components/convert-to-group-buttons/index.native.js.map +0 -1
  2307. package/build/components/default-block-appender/index.native.js +0 -113
  2308. package/build/components/default-block-appender/index.native.js.map +0 -1
  2309. package/build/components/floating-toolbar/index.native.js +0 -126
  2310. package/build/components/floating-toolbar/index.native.js.map +0 -1
  2311. package/build/components/font-sizes/index.native.js +0 -40
  2312. package/build/components/font-sizes/index.native.js.map +0 -1
  2313. package/build/components/global-styles/color-panel.native.js +0 -146
  2314. package/build/components/global-styles/color-panel.native.js.map +0 -1
  2315. package/build/components/global-styles/use-global-styles-context.native.js +0 -456
  2316. package/build/components/global-styles/use-global-styles-context.native.js.map +0 -1
  2317. package/build/components/gradients/index.native.js +0 -28
  2318. package/build/components/gradients/index.native.js.map +0 -1
  2319. package/build/components/image-link-destinations/index.native.js +0 -127
  2320. package/build/components/image-link-destinations/index.native.js.map +0 -1
  2321. package/build/components/index.native.js +0 -657
  2322. package/build/components/index.native.js.map +0 -1
  2323. package/build/components/inner-blocks/constants.native.js +0 -12
  2324. package/build/components/inner-blocks/constants.native.js.map +0 -1
  2325. package/build/components/inner-blocks/index.native.js +0 -208
  2326. package/build/components/inner-blocks/index.native.js.map +0 -1
  2327. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js +0 -95
  2328. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js.map +0 -1
  2329. package/build/components/inserter/block-types-tab.native.js +0 -72
  2330. package/build/components/inserter/block-types-tab.native.js.map +0 -1
  2331. package/build/components/inserter/hooks/use-block-type-impressions.native.js +0 -62
  2332. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +0 -1
  2333. package/build/components/inserter/hooks/use-clipboard-block.native.js +0 -51
  2334. package/build/components/inserter/hooks/use-clipboard-block.native.js.map +0 -1
  2335. package/build/components/inserter/index.native.js +0 -369
  2336. package/build/components/inserter/index.native.js.map +0 -1
  2337. package/build/components/inserter/menu.native.js +0 -189
  2338. package/build/components/inserter/menu.native.js.map +0 -1
  2339. package/build/components/inserter/no-results.native.js +0 -49
  2340. package/build/components/inserter/no-results.native.js.map +0 -1
  2341. package/build/components/inserter/reusable-blocks-tab.native.js +0 -57
  2342. package/build/components/inserter/reusable-blocks-tab.native.js.map +0 -1
  2343. package/build/components/inserter/search-results.native.js +0 -71
  2344. package/build/components/inserter/search-results.native.js.map +0 -1
  2345. package/build/components/inserter/tabs.native.js +0 -140
  2346. package/build/components/inserter/tabs.native.js.map +0 -1
  2347. package/build/components/inserter/utils.native.js +0 -56
  2348. package/build/components/inserter/utils.native.js.map +0 -1
  2349. package/build/components/inserter-button/index.native.js +0 -92
  2350. package/build/components/inserter-button/index.native.js.map +0 -1
  2351. package/build/components/inspector-controls/fill.native.js +0 -63
  2352. package/build/components/inspector-controls/fill.native.js.map +0 -1
  2353. package/build/components/inspector-controls/slot.native.js +0 -42
  2354. package/build/components/inspector-controls/slot.native.js.map +0 -1
  2355. package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js +0 -38
  2356. package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +0 -1
  2357. package/build/components/line-height-control/index.native.js +0 -40
  2358. package/build/components/line-height-control/index.native.js.map +0 -1
  2359. package/build/components/media-placeholder/index.native.js +0 -200
  2360. package/build/components/media-placeholder/index.native.js.map +0 -1
  2361. package/build/components/media-replace-flow/index.native.js +0 -21
  2362. package/build/components/media-replace-flow/index.native.js.map +0 -1
  2363. package/build/components/media-upload/constants.native.js +0 -20
  2364. package/build/components/media-upload/constants.native.js.map +0 -1
  2365. package/build/components/media-upload/index.native.js +0 -294
  2366. package/build/components/media-upload/index.native.js.map +0 -1
  2367. package/build/components/media-upload-progress/index.native.js +0 -203
  2368. package/build/components/media-upload-progress/index.native.js.map +0 -1
  2369. package/build/components/plain-text/index.native.js +0 -157
  2370. package/build/components/plain-text/index.native.js.map +0 -1
  2371. package/build/components/provider/index.native.js +0 -42
  2372. package/build/components/provider/index.native.js.map +0 -1
  2373. package/build/components/rich-text/embed-handler-picker.native.js +0 -54
  2374. package/build/components/rich-text/embed-handler-picker.native.js.map +0 -1
  2375. package/build/components/rich-text/file-paste-handler.native.js +0 -10
  2376. package/build/components/rich-text/file-paste-handler.native.js.map +0 -1
  2377. package/build/components/rich-text/format-toolbar/index.native.js +0 -23
  2378. package/build/components/rich-text/format-toolbar/index.native.js.map +0 -1
  2379. package/build/components/rich-text/format-toolbar-container.native.js +0 -23
  2380. package/build/components/rich-text/format-toolbar-container.native.js.map +0 -1
  2381. package/build/components/rich-text/index.native.js +0 -601
  2382. package/build/components/rich-text/index.native.js.map +0 -1
  2383. package/build/components/rich-text/input-event.native.js +0 -18
  2384. package/build/components/rich-text/input-event.native.js.map +0 -1
  2385. package/build/components/rich-text/native/get-format-colors.native.js +0 -39
  2386. package/build/components/rich-text/native/get-format-colors.native.js.map +0 -1
  2387. package/build/components/rich-text/native/index.native.js +0 -1184
  2388. package/build/components/rich-text/native/index.native.js.map +0 -1
  2389. package/build/components/rich-text/native/toolbar-button-with-options.native.js +0 -60
  2390. package/build/components/rich-text/native/toolbar-button-with-options.native.js.map +0 -1
  2391. package/build/components/rich-text/remove-browser-shortcuts.native.js +0 -9
  2392. package/build/components/rich-text/remove-browser-shortcuts.native.js.map +0 -1
  2393. package/build/components/rich-text/shortcut.native.js +0 -18
  2394. package/build/components/rich-text/shortcut.native.js.map +0 -1
  2395. package/build/components/tool-selector/index.js +0 -90
  2396. package/build/components/tool-selector/index.js.map +0 -1
  2397. package/build/components/ungroup-button/index.native.js +0 -77
  2398. package/build/components/ungroup-button/index.native.js.map +0 -1
  2399. package/build/components/unsupported-block-details/index.native.js +0 -129
  2400. package/build/components/unsupported-block-details/index.native.js.map +0 -1
  2401. package/build/components/url-input/index.native.js +0 -39
  2402. package/build/components/url-input/index.native.js.map +0 -1
  2403. package/build/components/use-block-drop-zone/index.native.js +0 -192
  2404. package/build/components/use-block-drop-zone/index.native.js.map +0 -1
  2405. package/build/components/use-on-block-drop/index.native.js +0 -89
  2406. package/build/components/use-on-block-drop/index.native.js.map +0 -1
  2407. package/build/components/use-unsupported-block-editor/index.native.js +0 -57
  2408. package/build/components/use-unsupported-block-editor/index.native.js.map +0 -1
  2409. package/build/components/video-player/gridicon-play.native.js +0 -20
  2410. package/build/components/video-player/gridicon-play.native.js.map +0 -1
  2411. package/build/components/video-player/index.native.js +0 -135
  2412. package/build/components/video-player/index.native.js.map +0 -1
  2413. package/build/components/warning/index.native.js +0 -63
  2414. package/build/components/warning/index.native.js.map +0 -1
  2415. package/build/hooks/align.native.js +0 -56
  2416. package/build/hooks/align.native.js.map +0 -1
  2417. package/build/hooks/custom-class-name.native.js +0 -66
  2418. package/build/hooks/custom-class-name.native.js.map +0 -1
  2419. package/build/hooks/index.native.js +0 -85
  2420. package/build/hooks/index.native.js.map +0 -1
  2421. package/build/hooks/layout.native.js +0 -20
  2422. package/build/hooks/layout.native.js.map +0 -1
  2423. package/build/hooks/typography.native.js +0 -76
  2424. package/build/hooks/typography.native.js.map +0 -1
  2425. package/build/hooks/use-editor-wrapper-styles.native.js +0 -227
  2426. package/build/hooks/use-editor-wrapper-styles.native.js.map +0 -1
  2427. package/build/index.native.js +0 -28
  2428. package/build/index.native.js.map +0 -1
  2429. package/build/private-apis.native.js +0 -31
  2430. package/build/private-apis.native.js.map +0 -1
  2431. package/build/store/defaults.native.js +0 -31
  2432. package/build/store/defaults.native.js.map +0 -1
  2433. package/build-module/components/audio-player/audio-url-parser.native.js +0 -16
  2434. package/build-module/components/audio-player/audio-url-parser.native.js.map +0 -1
  2435. package/build-module/components/audio-player/index.native.js +0 -166
  2436. package/build-module/components/audio-player/index.native.js.map +0 -1
  2437. package/build-module/components/block-alignment-control/ui.native.js +0 -72
  2438. package/build-module/components/block-alignment-control/ui.native.js.map +0 -1
  2439. package/build-module/components/block-caption/index.native.js +0 -87
  2440. package/build-module/components/block-caption/index.native.js.map +0 -1
  2441. package/build-module/components/block-controls/slot.native.js +0 -38
  2442. package/build-module/components/block-controls/slot.native.js.map +0 -1
  2443. package/build-module/components/block-draggable/draggable-chip.native.js +0 -50
  2444. package/build-module/components/block-draggable/draggable-chip.native.js.map +0 -1
  2445. package/build-module/components/block-draggable/dropping-insertion-point.native.js +0 -126
  2446. package/build-module/components/block-draggable/dropping-insertion-point.native.js.map +0 -1
  2447. package/build-module/components/block-draggable/index.native.js +0 -422
  2448. package/build-module/components/block-draggable/index.native.js.map +0 -1
  2449. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +0 -111
  2450. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +0 -1
  2451. package/build-module/components/block-edit/edit.native.js +0 -44
  2452. package/build-module/components/block-edit/edit.native.js.map +0 -1
  2453. package/build-module/components/block-heading-level-dropdown/index.native.js +0 -60
  2454. package/build-module/components/block-heading-level-dropdown/index.native.js.map +0 -1
  2455. package/build-module/components/block-icon/index.native.js +0 -47
  2456. package/build-module/components/block-icon/index.native.js.map +0 -1
  2457. package/build-module/components/block-list/block-crash-boundary.native.js +0 -42
  2458. package/build-module/components/block-list/block-crash-boundary.native.js.map +0 -1
  2459. package/build-module/components/block-list/block-crash-warning.native.js +0 -15
  2460. package/build-module/components/block-list/block-crash-warning.native.js.map +0 -1
  2461. package/build-module/components/block-list/block-invalid-warning.native.js +0 -71
  2462. package/build-module/components/block-list/block-invalid-warning.native.js.map +0 -1
  2463. package/build-module/components/block-list/block-list-context.native.js +0 -160
  2464. package/build-module/components/block-list/block-list-context.native.js.map +0 -1
  2465. package/build-module/components/block-list/block-list-item-cell.native.js +0 -67
  2466. package/build-module/components/block-list/block-list-item-cell.native.js.map +0 -1
  2467. package/build-module/components/block-list/block-list-item.native.js +0 -185
  2468. package/build-module/components/block-list/block-list-item.native.js.map +0 -1
  2469. package/build-module/components/block-list/block-outline.native.js +0 -53
  2470. package/build-module/components/block-list/block-outline.native.js.map +0 -1
  2471. package/build-module/components/block-list/block-selection-button.native.js +0 -90
  2472. package/build-module/components/block-list/block-selection-button.native.js.map +0 -1
  2473. package/build-module/components/block-list/block.native.js +0 -530
  2474. package/build-module/components/block-list/block.native.js.map +0 -1
  2475. package/build-module/components/block-list/grid-item.native.js +0 -55
  2476. package/build-module/components/block-list/grid-item.native.js.map +0 -1
  2477. package/build-module/components/block-list/index.native.js +0 -343
  2478. package/build-module/components/block-list/index.native.js.map +0 -1
  2479. package/build-module/components/block-list/insertion-point.native.js +0 -37
  2480. package/build-module/components/block-list/insertion-point.native.js.map +0 -1
  2481. package/build-module/components/block-list/use-block-props/index.native.js +0 -17
  2482. package/build-module/components/block-list/use-block-props/index.native.js.map +0 -1
  2483. package/build-module/components/block-list/use-scroll-upon-insertion.native.js +0 -33
  2484. package/build-module/components/block-list/use-scroll-upon-insertion.native.js.map +0 -1
  2485. package/build-module/components/block-list-appender/index.native.js +0 -61
  2486. package/build-module/components/block-list-appender/index.native.js.map +0 -1
  2487. package/build-module/components/block-media-update-progress/index.native.js +0 -278
  2488. package/build-module/components/block-media-update-progress/index.native.js.map +0 -1
  2489. package/build-module/components/block-mover/index.native.js +0 -165
  2490. package/build-module/components/block-mover/index.native.js.map +0 -1
  2491. package/build-module/components/block-mover/mover-description.native.js +0 -122
  2492. package/build-module/components/block-mover/mover-description.native.js.map +0 -1
  2493. package/build-module/components/block-settings/button.native.js +0 -37
  2494. package/build-module/components/block-settings/button.native.js.map +0 -1
  2495. package/build-module/components/block-settings/container.native.js +0 -75
  2496. package/build-module/components/block-settings/container.native.js.map +0 -1
  2497. package/build-module/components/block-settings/index.native.js +0 -3
  2498. package/build-module/components/block-settings/index.native.js.map +0 -1
  2499. package/build-module/components/block-styles/index.native.js +0 -81
  2500. package/build-module/components/block-styles/index.native.js.map +0 -1
  2501. package/build-module/components/block-styles/preview.native.js +0 -88
  2502. package/build-module/components/block-styles/preview.native.js.map +0 -1
  2503. package/build-module/components/block-switcher/block-transformations-menu.native.js +0 -72
  2504. package/build-module/components/block-switcher/block-transformations-menu.native.js.map +0 -1
  2505. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +0 -369
  2506. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +0 -1
  2507. package/build-module/components/block-toolbar/index.native.js +0 -100
  2508. package/build-module/components/block-toolbar/index.native.js.map +0 -1
  2509. package/build-module/components/block-types-list/index.native.js +0 -133
  2510. package/build-module/components/block-types-list/index.native.js.map +0 -1
  2511. package/build-module/components/block-variation-picker/index.native.js +0 -83
  2512. package/build-module/components/block-variation-picker/index.native.js.map +0 -1
  2513. package/build-module/components/button-block-appender/index.native.js +0 -74
  2514. package/build-module/components/button-block-appender/index.native.js.map +0 -1
  2515. package/build-module/components/caption/index.native.js +0 -55
  2516. package/build-module/components/caption/index.native.js.map +0 -1
  2517. package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js +0 -55
  2518. package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js.map +0 -1
  2519. package/build-module/components/contrast-checker/index.native.js +0 -82
  2520. package/build-module/components/contrast-checker/index.native.js.map +0 -1
  2521. package/build-module/components/convert-to-group-buttons/index.native.js +0 -69
  2522. package/build-module/components/convert-to-group-buttons/index.native.js.map +0 -1
  2523. package/build-module/components/default-block-appender/index.native.js +0 -104
  2524. package/build-module/components/default-block-appender/index.native.js.map +0 -1
  2525. package/build-module/components/floating-toolbar/index.native.js +0 -118
  2526. package/build-module/components/floating-toolbar/index.native.js.map +0 -1
  2527. package/build-module/components/font-sizes/index.native.js +0 -4
  2528. package/build-module/components/font-sizes/index.native.js.map +0 -1
  2529. package/build-module/components/global-styles/color-panel.native.js +0 -133
  2530. package/build-module/components/global-styles/color-panel.native.js.map +0 -1
  2531. package/build-module/components/global-styles/use-global-styles-context.native.js +0 -437
  2532. package/build-module/components/global-styles/use-global-styles-context.native.js.map +0 -1
  2533. package/build-module/components/gradients/index.native.js +0 -3
  2534. package/build-module/components/gradients/index.native.js.map +0 -1
  2535. package/build-module/components/image-link-destinations/index.native.js +0 -119
  2536. package/build-module/components/image-link-destinations/index.native.js.map +0 -1
  2537. package/build-module/components/index.native.js +0 -58
  2538. package/build-module/components/index.native.js.map +0 -1
  2539. package/build-module/components/inner-blocks/constants.native.js +0 -6
  2540. package/build-module/components/inner-blocks/constants.native.js.map +0 -1
  2541. package/build-module/components/inner-blocks/index.native.js +0 -200
  2542. package/build-module/components/inner-blocks/index.native.js.map +0 -1
  2543. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js +0 -87
  2544. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js.map +0 -1
  2545. package/build-module/components/inserter/block-types-tab.native.js +0 -64
  2546. package/build-module/components/inserter/block-types-tab.native.js.map +0 -1
  2547. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +0 -55
  2548. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +0 -1
  2549. package/build-module/components/inserter/hooks/use-clipboard-block.native.js +0 -44
  2550. package/build-module/components/inserter/hooks/use-clipboard-block.native.js.map +0 -1
  2551. package/build-module/components/inserter/index.native.js +0 -360
  2552. package/build-module/components/inserter/index.native.js.map +0 -1
  2553. package/build-module/components/inserter/menu.native.js +0 -181
  2554. package/build-module/components/inserter/menu.native.js.map +0 -1
  2555. package/build-module/components/inserter/no-results.native.js +0 -41
  2556. package/build-module/components/inserter/no-results.native.js.map +0 -1
  2557. package/build-module/components/inserter/reusable-blocks-tab.native.js +0 -49
  2558. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +0 -1
  2559. package/build-module/components/inserter/search-results.native.js +0 -63
  2560. package/build-module/components/inserter/search-results.native.js.map +0 -1
  2561. package/build-module/components/inserter/tabs.native.js +0 -132
  2562. package/build-module/components/inserter/tabs.native.js.map +0 -1
  2563. package/build-module/components/inserter/utils.native.js +0 -48
  2564. package/build-module/components/inserter/utils.native.js.map +0 -1
  2565. package/build-module/components/inserter-button/index.native.js +0 -84
  2566. package/build-module/components/inserter-button/index.native.js.map +0 -1
  2567. package/build-module/components/inspector-controls/fill.native.js +0 -55
  2568. package/build-module/components/inspector-controls/fill.native.js.map +0 -1
  2569. package/build-module/components/inspector-controls/slot.native.js +0 -34
  2570. package/build-module/components/inspector-controls/slot.native.js.map +0 -1
  2571. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js +0 -30
  2572. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +0 -1
  2573. package/build-module/components/line-height-control/index.native.js +0 -32
  2574. package/build-module/components/line-height-control/index.native.js.map +0 -1
  2575. package/build-module/components/media-placeholder/index.native.js +0 -192
  2576. package/build-module/components/media-placeholder/index.native.js.map +0 -1
  2577. package/build-module/components/media-replace-flow/index.native.js +0 -15
  2578. package/build-module/components/media-replace-flow/index.native.js.map +0 -1
  2579. package/build-module/components/media-upload/constants.native.js +0 -13
  2580. package/build-module/components/media-upload/constants.native.js.map +0 -1
  2581. package/build-module/components/media-upload/index.native.js +0 -285
  2582. package/build-module/components/media-upload/index.native.js.map +0 -1
  2583. package/build-module/components/media-upload-progress/index.native.js +0 -194
  2584. package/build-module/components/media-upload-progress/index.native.js.map +0 -1
  2585. package/build-module/components/plain-text/index.native.js +0 -148
  2586. package/build-module/components/plain-text/index.native.js.map +0 -1
  2587. package/build-module/components/provider/index.native.js +0 -37
  2588. package/build-module/components/provider/index.native.js.map +0 -1
  2589. package/build-module/components/rich-text/embed-handler-picker.native.js +0 -47
  2590. package/build-module/components/rich-text/embed-handler-picker.native.js.map +0 -1
  2591. package/build-module/components/rich-text/file-paste-handler.native.js +0 -4
  2592. package/build-module/components/rich-text/file-paste-handler.native.js.map +0 -1
  2593. package/build-module/components/rich-text/format-toolbar/index.native.js +0 -17
  2594. package/build-module/components/rich-text/format-toolbar/index.native.js.map +0 -1
  2595. package/build-module/components/rich-text/format-toolbar-container.native.js +0 -15
  2596. package/build-module/components/rich-text/format-toolbar-container.native.js.map +0 -1
  2597. package/build-module/components/rich-text/index.native.js +0 -573
  2598. package/build-module/components/rich-text/index.native.js.map +0 -1
  2599. package/build-module/components/rich-text/input-event.native.js +0 -10
  2600. package/build-module/components/rich-text/input-event.native.js.map +0 -1
  2601. package/build-module/components/rich-text/native/get-format-colors.native.js +0 -32
  2602. package/build-module/components/rich-text/native/get-format-colors.native.js.map +0 -1
  2603. package/build-module/components/rich-text/native/index.native.js +0 -1176
  2604. package/build-module/components/rich-text/native/index.native.js.map +0 -1
  2605. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js +0 -55
  2606. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js.map +0 -1
  2607. package/build-module/components/rich-text/remove-browser-shortcuts.native.js +0 -2
  2608. package/build-module/components/rich-text/remove-browser-shortcuts.native.js.map +0 -1
  2609. package/build-module/components/rich-text/shortcut.native.js +0 -10
  2610. package/build-module/components/rich-text/shortcut.native.js.map +0 -1
  2611. package/build-module/components/tool-selector/index.js +0 -83
  2612. package/build-module/components/tool-selector/index.js.map +0 -1
  2613. package/build-module/components/ungroup-button/index.native.js +0 -69
  2614. package/build-module/components/ungroup-button/index.native.js.map +0 -1
  2615. package/build-module/components/unsupported-block-details/index.native.js +0 -121
  2616. package/build-module/components/unsupported-block-details/index.native.js.map +0 -1
  2617. package/build-module/components/url-input/index.native.js +0 -32
  2618. package/build-module/components/url-input/index.native.js.map +0 -1
  2619. package/build-module/components/use-block-drop-zone/index.native.js +0 -183
  2620. package/build-module/components/use-block-drop-zone/index.native.js.map +0 -1
  2621. package/build-module/components/use-on-block-drop/index.native.js +0 -82
  2622. package/build-module/components/use-on-block-drop/index.native.js.map +0 -1
  2623. package/build-module/components/use-unsupported-block-editor/index.native.js +0 -51
  2624. package/build-module/components/use-unsupported-block-editor/index.native.js.map +0 -1
  2625. package/build-module/components/video-player/gridicon-play.native.js +0 -14
  2626. package/build-module/components/video-player/gridicon-play.native.js.map +0 -1
  2627. package/build-module/components/video-player/index.native.js +0 -128
  2628. package/build-module/components/video-player/index.native.js.map +0 -1
  2629. package/build-module/components/warning/index.native.js +0 -55
  2630. package/build-module/components/warning/index.native.js.map +0 -1
  2631. package/build-module/hooks/align.native.js +0 -32
  2632. package/build-module/hooks/align.native.js.map +0 -1
  2633. package/build-module/hooks/custom-class-name.native.js +0 -57
  2634. package/build-module/hooks/custom-class-name.native.js.map +0 -1
  2635. package/build-module/hooks/index.native.js +0 -24
  2636. package/build-module/hooks/index.native.js.map +0 -1
  2637. package/build-module/hooks/layout.native.js +0 -18
  2638. package/build-module/hooks/layout.native.js.map +0 -1
  2639. package/build-module/hooks/typography.native.js +0 -68
  2640. package/build-module/hooks/typography.native.js.map +0 -1
  2641. package/build-module/hooks/use-editor-wrapper-styles.native.js +0 -219
  2642. package/build-module/hooks/use-editor-wrapper-styles.native.js.map +0 -1
  2643. package/build-module/index.native.js +0 -6
  2644. package/build-module/index.native.js.map +0 -1
  2645. package/build-module/private-apis.native.js +0 -22
  2646. package/build-module/private-apis.native.js.map +0 -1
  2647. package/build-module/store/defaults.native.js +0 -19
  2648. package/build-module/store/defaults.native.js.map +0 -1
  2649. package/src/components/tool-selector/index.js +0 -107
  2650. 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\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 || 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
+ }