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