@wordpress/block-editor 8.4.0 → 8.5.2

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 (421) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +56 -19
  3. package/build/components/alignment-control/index.js +13 -6
  4. package/build/components/alignment-control/index.js.map +1 -1
  5. package/build/components/block-alignment-control/index.js +13 -6
  6. package/build/components/block-alignment-control/index.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.js +1 -1
  8. package/build/components/block-alignment-control/ui.js.map +1 -1
  9. package/build/components/block-content-overlay/index.js +13 -4
  10. package/build/components/block-content-overlay/index.js.map +1 -1
  11. package/build/components/block-draggable/index.js +2 -3
  12. package/build/components/block-draggable/index.js.map +1 -1
  13. package/build/components/block-icon/index.js +4 -0
  14. package/build/components/block-icon/index.js.map +1 -1
  15. package/build/components/block-inspector/index.js +6 -1
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/use-block-props/index.js +1 -6
  18. package/build/components/block-list/use-block-props/index.js.map +1 -1
  19. package/build/components/block-list/use-block-props/use-focus-first-element.js +14 -17
  20. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  21. package/build/components/block-list/use-block-props/use-focus-handler.js +7 -1
  22. package/build/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
  23. package/build/components/block-list-appender/index.js +6 -1
  24. package/build/components/block-list-appender/index.js.map +1 -1
  25. package/build/components/block-lock/index.js +8 -0
  26. package/build/components/block-lock/index.js.map +1 -1
  27. package/build/components/block-lock/menu-item.js +9 -15
  28. package/build/components/block-lock/menu-item.js.map +1 -1
  29. package/build/components/block-lock/modal.js +35 -23
  30. package/build/components/block-lock/modal.js.map +1 -1
  31. package/build/components/block-lock/toolbar.js +11 -16
  32. package/build/components/block-lock/toolbar.js.map +1 -1
  33. package/build/components/block-lock/use-block-lock.js +50 -0
  34. package/build/components/block-lock/use-block-lock.js.map +1 -0
  35. package/build/components/block-mover/index.js +4 -0
  36. package/build/components/block-mover/index.js.map +1 -1
  37. package/build/components/block-pattern-setup/index.js +37 -22
  38. package/build/components/block-pattern-setup/index.js.map +1 -1
  39. package/build/components/block-pattern-setup/setup-toolbar.js +1 -1
  40. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  41. package/build/components/block-preview/auto.js +6 -3
  42. package/build/components/block-preview/auto.js.map +1 -1
  43. package/build/components/block-preview/index.js +4 -2
  44. package/build/components/block-preview/index.js.map +1 -1
  45. package/build/components/block-settings-menu/block-settings-dropdown.js +50 -5
  46. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  47. package/build/components/block-switcher/index.js +8 -3
  48. package/build/components/block-switcher/index.js.map +1 -1
  49. package/build/components/block-title/index.js +2 -2
  50. package/build/components/block-title/index.js.map +1 -1
  51. package/build/components/block-title/use-block-display-title.js +1 -1
  52. package/build/components/block-title/use-block-display-title.js.map +1 -1
  53. package/build/components/block-toolbar/block-name-context.js +17 -0
  54. package/build/components/block-toolbar/block-name-context.js.map +1 -0
  55. package/build/components/block-toolbar/block-toolbar-last-item.js +20 -0
  56. package/build/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
  57. package/build/components/block-toolbar/index.js +20 -5
  58. package/build/components/block-toolbar/index.js.map +1 -1
  59. package/build/components/block-tools/index.js +0 -16
  60. package/build/components/block-tools/index.js.map +1 -1
  61. package/build/components/block-variation-transforms/index.js +92 -47
  62. package/build/components/block-variation-transforms/index.js.map +1 -1
  63. package/build/components/block-vertical-alignment-control/index.js +13 -6
  64. package/build/components/block-vertical-alignment-control/index.js.map +1 -1
  65. package/build/components/contrast-checker/index.js +4 -0
  66. package/build/components/contrast-checker/index.js.map +1 -1
  67. package/build/components/convert-to-group-buttons/index.js +8 -0
  68. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  69. package/build/components/convert-to-group-buttons/toolbar.js +105 -0
  70. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -0
  71. package/build/components/copy-handler/index.js +48 -9
  72. package/build/components/copy-handler/index.js.map +1 -1
  73. package/build/components/font-sizes/font-size-picker.js +4 -0
  74. package/build/components/font-sizes/font-size-picker.js.map +1 -1
  75. package/build/components/iframe/index.js +6 -9
  76. package/build/components/iframe/index.js.map +1 -1
  77. package/build/components/index.js +18 -0
  78. package/build/components/index.js.map +1 -1
  79. package/build/components/justify-content-control/index.js +13 -6
  80. package/build/components/justify-content-control/index.js.map +1 -1
  81. package/build/components/keyboard-shortcuts/index.js +1 -1
  82. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  83. package/build/components/line-height-control/index.js +10 -3
  84. package/build/components/line-height-control/index.js.map +1 -1
  85. package/build/components/link-control/index.js +6 -7
  86. package/build/components/link-control/index.js.map +1 -1
  87. package/build/components/list-view/block-select-button.js +19 -6
  88. package/build/components/list-view/block-select-button.js.map +1 -1
  89. package/build/components/list-view/block.js +18 -3
  90. package/build/components/list-view/block.js.map +1 -1
  91. package/build/components/list-view/branch.js +1 -1
  92. package/build/components/list-view/branch.js.map +1 -1
  93. package/build/components/media-replace-flow/index.js +4 -0
  94. package/build/components/media-replace-flow/index.js.map +1 -1
  95. package/build/components/multi-selection-inspector/index.js +1 -1
  96. package/build/components/multi-selection-inspector/index.js.map +1 -1
  97. package/build/components/rich-text/index.js +26 -4
  98. package/build/components/rich-text/index.js.map +1 -1
  99. package/build/components/rich-text/split-value.js +12 -2
  100. package/build/components/rich-text/split-value.js.map +1 -1
  101. package/build/components/rich-text/use-firefox-compat.js +49 -0
  102. package/build/components/rich-text/use-firefox-compat.js.map +1 -0
  103. package/build/components/rich-text/use-input-rules.js +34 -2
  104. package/build/components/rich-text/use-input-rules.js.map +1 -1
  105. package/build/components/skip-to-selected-block/index.js +4 -0
  106. package/build/components/skip-to-selected-block/index.js.map +1 -1
  107. package/build/components/writing-flow/index.js +9 -1
  108. package/build/components/writing-flow/index.js.map +1 -1
  109. package/build/components/writing-flow/use-arrow-nav.js +3 -44
  110. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  111. package/build/components/writing-flow/use-click-selection.js +68 -0
  112. package/build/components/writing-flow/use-click-selection.js.map +1 -0
  113. package/build/components/writing-flow/use-drag-selection.js +134 -0
  114. package/build/components/writing-flow/use-drag-selection.js.map +1 -0
  115. package/build/components/writing-flow/use-input.js +116 -0
  116. package/build/components/writing-flow/use-input.js.map +1 -0
  117. package/build/components/writing-flow/use-multi-selection.js +18 -38
  118. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  119. package/build/components/writing-flow/use-selection-observer.js +161 -0
  120. package/build/components/writing-flow/use-selection-observer.js.map +1 -0
  121. package/build/components/writing-flow/use-tab-nav.js +1 -8
  122. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  123. package/build/hooks/border-color.js +3 -3
  124. package/build/hooks/border-color.js.map +1 -1
  125. package/build/hooks/border.js +0 -14
  126. package/build/hooks/border.js.map +1 -1
  127. package/build/hooks/color.js +20 -17
  128. package/build/hooks/color.js.map +1 -1
  129. package/build/hooks/font-family.js +5 -1
  130. package/build/hooks/font-family.js.map +1 -1
  131. package/build/hooks/font-size.js +4 -2
  132. package/build/hooks/font-size.js.map +1 -1
  133. package/build/hooks/gap.js +23 -16
  134. package/build/hooks/gap.js.map +1 -1
  135. package/build/hooks/layout.js +7 -2
  136. package/build/hooks/layout.js.map +1 -1
  137. package/build/hooks/style.js +34 -3
  138. package/build/hooks/style.js.map +1 -1
  139. package/build/hooks/utils.js +29 -0
  140. package/build/hooks/utils.js.map +1 -1
  141. package/build/layouts/flex.js +76 -12
  142. package/build/layouts/flex.js.map +1 -1
  143. package/build/layouts/flow.js +9 -4
  144. package/build/layouts/flow.js.map +1 -1
  145. package/build/store/actions.js +290 -51
  146. package/build/store/actions.js.map +1 -1
  147. package/build/store/defaults.js +5 -2
  148. package/build/store/defaults.js.map +1 -1
  149. package/build/store/reducer.js +25 -13
  150. package/build/store/reducer.js.map +1 -1
  151. package/build/store/selectors.js +264 -21
  152. package/build/store/selectors.js.map +1 -1
  153. package/build/store/utils.js +27 -0
  154. package/build/store/utils.js.map +1 -0
  155. package/build/utils/dom.js +2 -1
  156. package/build/utils/dom.js.map +1 -1
  157. package/build-module/components/alignment-control/index.js +12 -4
  158. package/build-module/components/alignment-control/index.js.map +1 -1
  159. package/build-module/components/block-alignment-control/index.js +12 -4
  160. package/build-module/components/block-alignment-control/index.js.map +1 -1
  161. package/build-module/components/block-alignment-control/ui.js +2 -2
  162. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  163. package/build-module/components/block-content-overlay/index.js +13 -4
  164. package/build-module/components/block-content-overlay/index.js.map +1 -1
  165. package/build-module/components/block-draggable/index.js +2 -3
  166. package/build-module/components/block-draggable/index.js.map +1 -1
  167. package/build-module/components/block-icon/index.js +4 -0
  168. package/build-module/components/block-icon/index.js.map +1 -1
  169. package/build-module/components/block-inspector/index.js +6 -1
  170. package/build-module/components/block-inspector/index.js.map +1 -1
  171. package/build-module/components/block-list/use-block-props/index.js +1 -4
  172. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  173. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +15 -17
  174. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  175. package/build-module/components/block-list/use-block-props/use-focus-handler.js +7 -1
  176. package/build-module/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
  177. package/build-module/components/block-list-appender/index.js +6 -1
  178. package/build-module/components/block-list-appender/index.js.map +1 -1
  179. package/build-module/components/block-lock/index.js +1 -0
  180. package/build-module/components/block-lock/index.js.map +1 -1
  181. package/build-module/components/block-lock/menu-item.js +8 -13
  182. package/build-module/components/block-lock/menu-item.js.map +1 -1
  183. package/build-module/components/block-lock/modal.js +34 -24
  184. package/build-module/components/block-lock/modal.js.map +1 -1
  185. package/build-module/components/block-lock/toolbar.js +10 -14
  186. package/build-module/components/block-lock/toolbar.js.map +1 -1
  187. package/build-module/components/block-lock/use-block-lock.js +41 -0
  188. package/build-module/components/block-lock/use-block-lock.js.map +1 -0
  189. package/build-module/components/block-mover/index.js +4 -0
  190. package/build-module/components/block-mover/index.js.map +1 -1
  191. package/build-module/components/block-pattern-setup/index.js +39 -24
  192. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  193. package/build-module/components/block-pattern-setup/setup-toolbar.js +1 -1
  194. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  195. package/build-module/components/block-preview/auto.js +6 -3
  196. package/build-module/components/block-preview/auto.js.map +1 -1
  197. package/build-module/components/block-preview/index.js +4 -2
  198. package/build-module/components/block-preview/index.js.map +1 -1
  199. package/build-module/components/block-settings-menu/block-settings-dropdown.js +50 -7
  200. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  201. package/build-module/components/block-switcher/index.js +9 -4
  202. package/build-module/components/block-switcher/index.js.map +1 -1
  203. package/build-module/components/block-title/index.js +2 -2
  204. package/build-module/components/block-title/index.js.map +1 -1
  205. package/build-module/components/block-title/use-block-display-title.js +1 -1
  206. package/build-module/components/block-title/use-block-display-title.js.map +1 -1
  207. package/build-module/components/block-toolbar/block-name-context.js +9 -0
  208. package/build-module/components/block-toolbar/block-name-context.js.map +1 -0
  209. package/build-module/components/block-toolbar/block-toolbar-last-item.js +11 -0
  210. package/build-module/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
  211. package/build-module/components/block-toolbar/index.js +16 -4
  212. package/build-module/components/block-toolbar/index.js.map +1 -1
  213. package/build-module/components/block-tools/index.js +0 -16
  214. package/build-module/components/block-tools/index.js.map +1 -1
  215. package/build-module/components/block-variation-transforms/index.js +95 -49
  216. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  217. package/build-module/components/block-vertical-alignment-control/index.js +12 -4
  218. package/build-module/components/block-vertical-alignment-control/index.js.map +1 -1
  219. package/build-module/components/contrast-checker/index.js +4 -0
  220. package/build-module/components/contrast-checker/index.js.map +1 -1
  221. package/build-module/components/convert-to-group-buttons/index.js +2 -1
  222. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  223. package/build-module/components/convert-to-group-buttons/toolbar.js +90 -0
  224. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -0
  225. package/build-module/components/copy-handler/index.js +48 -9
  226. package/build-module/components/copy-handler/index.js.map +1 -1
  227. package/build-module/components/font-sizes/font-size-picker.js +4 -0
  228. package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
  229. package/build-module/components/iframe/index.js +6 -9
  230. package/build-module/components/iframe/index.js.map +1 -1
  231. package/build-module/components/index.js +2 -0
  232. package/build-module/components/index.js.map +1 -1
  233. package/build-module/components/justify-content-control/index.js +12 -4
  234. package/build-module/components/justify-content-control/index.js.map +1 -1
  235. package/build-module/components/keyboard-shortcuts/index.js +1 -1
  236. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  237. package/build-module/components/line-height-control/index.js +9 -2
  238. package/build-module/components/line-height-control/index.js.map +1 -1
  239. package/build-module/components/link-control/index.js +6 -7
  240. package/build-module/components/link-control/index.js.map +1 -1
  241. package/build-module/components/list-view/block-select-button.js +17 -6
  242. package/build-module/components/list-view/block-select-button.js.map +1 -1
  243. package/build-module/components/list-view/block.js +18 -3
  244. package/build-module/components/list-view/block.js.map +1 -1
  245. package/build-module/components/list-view/branch.js +1 -1
  246. package/build-module/components/list-view/branch.js.map +1 -1
  247. package/build-module/components/media-replace-flow/index.js +4 -0
  248. package/build-module/components/media-replace-flow/index.js.map +1 -1
  249. package/build-module/components/multi-selection-inspector/index.js +2 -2
  250. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  251. package/build-module/components/rich-text/index.js +25 -4
  252. package/build-module/components/rich-text/index.js.map +1 -1
  253. package/build-module/components/rich-text/split-value.js +12 -2
  254. package/build-module/components/rich-text/split-value.js.map +1 -1
  255. package/build-module/components/rich-text/use-firefox-compat.js +39 -0
  256. package/build-module/components/rich-text/use-firefox-compat.js.map +1 -0
  257. package/build-module/components/rich-text/use-input-rules.js +35 -4
  258. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  259. package/build-module/components/skip-to-selected-block/index.js +4 -0
  260. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  261. package/build-module/components/writing-flow/index.js +5 -1
  262. package/build-module/components/writing-flow/index.js.map +1 -1
  263. package/build-module/components/writing-flow/use-arrow-nav.js +4 -45
  264. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  265. package/build-module/components/writing-flow/use-click-selection.js +57 -0
  266. package/build-module/components/writing-flow/use-click-selection.js.map +1 -0
  267. package/build-module/components/writing-flow/use-drag-selection.js +124 -0
  268. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -0
  269. package/build-module/components/writing-flow/use-input.js +104 -0
  270. package/build-module/components/writing-flow/use-input.js.map +1 -0
  271. package/build-module/components/writing-flow/use-multi-selection.js +18 -37
  272. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  273. package/build-module/components/writing-flow/use-selection-observer.js +150 -0
  274. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -0
  275. package/build-module/components/writing-flow/use-tab-nav.js +1 -9
  276. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  277. package/build-module/hooks/border-color.js +5 -5
  278. package/build-module/hooks/border-color.js.map +1 -1
  279. package/build-module/hooks/border.js +0 -12
  280. package/build-module/hooks/border.js.map +1 -1
  281. package/build-module/hooks/color.js +19 -18
  282. package/build-module/hooks/color.js.map +1 -1
  283. package/build-module/hooks/font-family.js +3 -1
  284. package/build-module/hooks/font-family.js.map +1 -1
  285. package/build-module/hooks/font-size.js +4 -3
  286. package/build-module/hooks/font-size.js.map +1 -1
  287. package/build-module/hooks/gap.js +22 -15
  288. package/build-module/hooks/gap.js.map +1 -1
  289. package/build-module/hooks/layout.js +7 -2
  290. package/build-module/hooks/layout.js.map +1 -1
  291. package/build-module/hooks/style.js +33 -3
  292. package/build-module/hooks/style.js.map +1 -1
  293. package/build-module/hooks/utils.js +26 -0
  294. package/build-module/hooks/utils.js.map +1 -1
  295. package/build-module/layouts/flex.js +76 -13
  296. package/build-module/layouts/flex.js.map +1 -1
  297. package/build-module/layouts/flow.js +9 -5
  298. package/build-module/layouts/flow.js.map +1 -1
  299. package/build-module/store/actions.js +277 -49
  300. package/build-module/store/actions.js.map +1 -1
  301. package/build-module/store/defaults.js +5 -2
  302. package/build-module/store/defaults.js.map +1 -1
  303. package/build-module/store/reducer.js +25 -13
  304. package/build-module/store/reducer.js.map +1 -1
  305. package/build-module/store/selectors.js +250 -21
  306. package/build-module/store/selectors.js.map +1 -1
  307. package/build-module/store/utils.js +20 -0
  308. package/build-module/store/utils.js.map +1 -0
  309. package/build-module/utils/dom.js +2 -1
  310. package/build-module/utils/dom.js.map +1 -1
  311. package/build-style/style-rtl.css +142 -101
  312. package/build-style/style.css +142 -101
  313. package/build-types/utils/dom.d.ts.map +1 -1
  314. package/package.json +28 -28
  315. package/src/components/alignment-control/index.js +9 -4
  316. package/src/components/block-alignment-control/index.js +9 -4
  317. package/src/components/block-alignment-control/ui.js +2 -2
  318. package/src/components/block-content-overlay/index.js +19 -2
  319. package/src/components/block-draggable/index.js +2 -5
  320. package/src/components/block-icon/index.js +3 -0
  321. package/src/components/block-inspector/index.js +4 -0
  322. package/src/components/block-list/style.scss +4 -5
  323. package/src/components/block-list/use-block-props/index.js +0 -5
  324. package/src/components/block-list/use-block-props/use-focus-first-element.js +19 -26
  325. package/src/components/block-list/use-block-props/use-focus-handler.js +8 -0
  326. package/src/components/block-list-appender/index.js +5 -0
  327. package/src/components/block-lock/index.js +1 -0
  328. package/src/components/block-lock/menu-item.js +6 -19
  329. package/src/components/block-lock/modal.js +52 -23
  330. package/src/components/block-lock/style.scss +7 -5
  331. package/src/components/block-lock/toolbar.js +7 -14
  332. package/src/components/block-lock/use-block-lock.js +45 -0
  333. package/src/components/block-mover/index.js +3 -0
  334. package/src/components/block-mover/style.scss +4 -0
  335. package/src/components/block-pattern-setup/index.js +84 -59
  336. package/src/components/block-pattern-setup/setup-toolbar.js +3 -1
  337. package/src/components/block-pattern-setup/style.scss +32 -26
  338. package/src/components/block-preview/auto.js +10 -1
  339. package/src/components/block-preview/index.js +2 -0
  340. package/src/components/block-settings-menu/block-settings-dropdown.js +62 -4
  341. package/src/components/block-switcher/index.js +15 -3
  342. package/src/components/block-switcher/style.scss +15 -4
  343. package/src/components/block-switcher/test/__snapshots__/index.js.snap +15 -13
  344. package/src/components/block-switcher/test/index.js +2 -2
  345. package/src/components/block-title/index.js +2 -2
  346. package/src/components/block-title/use-block-display-title.js +1 -1
  347. package/src/components/block-toolbar/block-name-context.js +8 -0
  348. package/src/components/block-toolbar/block-toolbar-last-item.js +12 -0
  349. package/src/components/block-toolbar/index.js +18 -2
  350. package/src/components/block-toolbar/style.scss +6 -0
  351. package/src/components/block-tools/index.js +0 -19
  352. package/src/components/block-tools/style.scss +3 -5
  353. package/src/components/block-variation-transforms/index.js +105 -36
  354. package/src/components/block-variation-transforms/style.scss +1 -1
  355. package/src/components/block-vertical-alignment-control/index.js +9 -4
  356. package/src/components/button-block-appender/style.scss +5 -1
  357. package/src/components/contrast-checker/index.js +3 -0
  358. package/src/components/convert-to-group-buttons/index.js +6 -1
  359. package/src/components/convert-to-group-buttons/toolbar.js +87 -0
  360. package/src/components/copy-handler/index.js +55 -10
  361. package/src/components/font-sizes/font-size-picker.js +3 -0
  362. package/src/components/iframe/index.js +5 -7
  363. package/src/components/index.js +2 -0
  364. package/src/components/justify-content-control/index.js +9 -4
  365. package/src/components/keyboard-shortcuts/index.js +1 -1
  366. package/src/components/line-height-control/index.js +8 -3
  367. package/src/components/link-control/index.js +5 -5
  368. package/src/components/list-view/block-select-button.js +13 -3
  369. package/src/components/list-view/block.js +24 -8
  370. package/src/components/list-view/branch.js +1 -1
  371. package/src/components/list-view/style.scss +56 -14
  372. package/src/components/media-placeholder/README.md +8 -0
  373. package/src/components/media-replace-flow/index.js +3 -0
  374. package/src/components/multi-selection-inspector/index.js +2 -2
  375. package/src/components/rich-text/index.js +24 -1
  376. package/src/components/rich-text/split-value.js +5 -1
  377. package/src/components/rich-text/use-firefox-compat.js +39 -0
  378. package/src/components/rich-text/use-input-rules.js +40 -3
  379. package/src/components/skip-to-selected-block/index.js +3 -0
  380. package/src/components/url-input/style.scss +3 -2
  381. package/src/components/writing-flow/index.js +8 -0
  382. package/src/components/writing-flow/readme.md +28 -0
  383. package/src/components/writing-flow/use-arrow-nav.js +4 -53
  384. package/src/components/writing-flow/use-click-selection.js +65 -0
  385. package/src/components/writing-flow/use-drag-selection.js +126 -0
  386. package/src/components/writing-flow/use-input.js +112 -0
  387. package/src/components/writing-flow/use-multi-selection.js +13 -36
  388. package/src/components/writing-flow/use-selection-observer.js +153 -0
  389. package/src/components/writing-flow/use-tab-nav.js +1 -11
  390. package/src/hooks/border-color.js +5 -5
  391. package/src/hooks/border.js +0 -13
  392. package/src/hooks/color.js +51 -24
  393. package/src/hooks/font-family.js +5 -2
  394. package/src/hooks/font-size.js +10 -7
  395. package/src/hooks/gap.js +25 -17
  396. package/src/hooks/layout.js +11 -1
  397. package/src/hooks/style.js +40 -4
  398. package/src/hooks/test/gap.js +25 -1
  399. package/src/hooks/test/style.js +94 -0
  400. package/src/hooks/test/utils.js +1 -1
  401. package/src/hooks/utils.js +26 -0
  402. package/src/layouts/flex.js +89 -5
  403. package/src/layouts/flow.js +15 -4
  404. package/src/store/actions.js +341 -32
  405. package/src/store/defaults.js +7 -2
  406. package/src/store/reducer.js +25 -10
  407. package/src/store/selectors.js +329 -26
  408. package/src/store/test/selectors.js +242 -5
  409. package/src/store/utils.js +19 -0
  410. package/src/utils/dom.js +2 -1
  411. package/tsconfig.tsbuildinfo +1 -1
  412. package/build/components/block-list/use-block-props/use-multi-selection.js +0 -205
  413. package/build/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
  414. package/build/components/block-list/use-block-props/use-scroll-into-view.js +0 -77
  415. package/build/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
  416. package/build-module/components/block-list/use-block-props/use-multi-selection.js +0 -192
  417. package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
  418. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js +0 -63
  419. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
  420. package/src/components/block-list/use-block-props/use-multi-selection.js +0 -227
  421. package/src/components/block-list/use-block-props/use-scroll-into-view.js +0 -73
@@ -7,11 +7,16 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.__experimentalGetGlobalBlocksByName = exports.__experimentalGetDirectInsertBlock = exports.__experimentalGetBlockListSettingsForBlocks = exports.__experimentalGetAllowedPatterns = exports.__experimentalGetAllowedBlocks = exports.__experimentalGetActiveBlockIdByBlockNames = void 0;
9
9
  exports.__experimentalGetLastBlockAttributeChanges = __experimentalGetLastBlockAttributeChanges;
10
- exports.__unstableGetClientIdsTree = exports.__unstableGetClientIdWithClientIdsTree = exports.__unstableGetBlockWithoutInnerBlocks = exports.__experimentalGetReusableBlockTitle = exports.__experimentalGetPatternsByBlockTypes = exports.__experimentalGetPatternTransformItems = exports.__experimentalGetParsedPattern = void 0;
10
+ exports.__unstableGetSelectedBlocksWithPartialSelection = exports.__unstableGetClientIdsTree = exports.__unstableGetClientIdWithClientIdsTree = exports.__unstableGetBlockWithoutInnerBlocks = exports.__experimentalGetReusableBlockTitle = exports.__experimentalGetPatternsByBlockTypes = exports.__experimentalGetPatternTransformItems = exports.__experimentalGetParsedPattern = void 0;
11
+ exports.__unstableIsFullySelected = __unstableIsFullySelected;
11
12
  exports.__unstableIsLastBlockChangeIgnored = __unstableIsLastBlockChangeIgnored;
13
+ exports.__unstableIsSelectionCollapsed = __unstableIsSelectionCollapsed;
14
+ exports.__unstableIsSelectionMergeable = __unstableIsSelectionMergeable;
12
15
  exports.areInnerBlocksControlled = areInnerBlocksControlled;
16
+ exports.canEditBlock = canEditBlock;
13
17
  exports.canInsertBlockType = void 0;
14
18
  exports.canInsertBlocks = canInsertBlocks;
19
+ exports.canLockBlockType = canLockBlockType;
15
20
  exports.canMoveBlock = canMoveBlock;
16
21
  exports.canMoveBlocks = canMoveBlocks;
17
22
  exports.canRemoveBlock = canRemoveBlock;
@@ -93,6 +98,12 @@ var _hooks = require("@wordpress/hooks");
93
98
 
94
99
  var _icons = require("@wordpress/icons");
95
100
 
101
+ var _i18n = require("@wordpress/i18n");
102
+
103
+ var _richText = require("@wordpress/rich-text");
104
+
105
+ var _utils = require("./utils");
106
+
96
107
  /**
97
108
  * External dependencies
98
109
  */
@@ -101,6 +112,10 @@ var _icons = require("@wordpress/icons");
101
112
  * WordPress dependencies
102
113
  */
103
114
 
115
+ /**
116
+ * Internal dependencies
117
+ */
118
+
104
119
  /**
105
120
  * A block selection object.
106
121
  *
@@ -282,8 +297,9 @@ const __unstableGetClientIdsTree = (0, _rememo.default)(function (state) {
282
297
  return (0, _lodash.map)(getBlockOrder(state, rootClientId), clientId => __unstableGetClientIdWithClientIdsTree(state, clientId));
283
298
  }, state => [state.blocks.order]);
284
299
  /**
285
- * Returns an array containing the clientIds of all descendants
286
- * of the blocks given.
300
+ * Returns an array containing the clientIds of all descendants of the blocks
301
+ * given. Returned ids are ordered first by the order of the ids given, then
302
+ * by the order that they appear in the editor.
287
303
  *
288
304
  * @param {Object} state Global application state.
289
305
  * @param {Array} clientIds Array of blocks to inspect.
@@ -293,25 +309,36 @@ const __unstableGetClientIdsTree = (0, _rememo.default)(function (state) {
293
309
 
294
310
 
295
311
  exports.__unstableGetClientIdsTree = __unstableGetClientIdsTree;
312
+ const getClientIdsOfDescendants = (0, _rememo.default)((state, clientIds) => {
313
+ const collectedIds = [];
296
314
 
297
- const getClientIdsOfDescendants = (state, clientIds) => (0, _lodash.flatMap)(clientIds, clientId => {
298
- const descendants = getBlockOrder(state, clientId);
299
- return [...descendants, ...getClientIdsOfDescendants(state, descendants)];
300
- });
315
+ for (const givenId of clientIds) {
316
+ for (const descendantId of getBlockOrder(state, givenId)) {
317
+ collectedIds.push(descendantId, ...getClientIdsOfDescendants(state, [descendantId]));
318
+ }
319
+ }
320
+
321
+ return collectedIds;
322
+ }, state => [state.blocks.order]);
301
323
  /**
302
- * Returns an array containing the clientIds of the top-level blocks
303
- * and their descendants of any depth (for nested blocks).
324
+ * Returns an array containing the clientIds of the top-level blocks and
325
+ * their descendants of any depth (for nested blocks). Ids are returned
326
+ * in the same order that they appear in the editor.
304
327
  *
305
328
  * @param {Object} state Global application state.
306
329
  *
307
330
  * @return {Array} ids of top-level and descendant blocks.
308
331
  */
309
332
 
310
-
311
333
  exports.getClientIdsOfDescendants = getClientIdsOfDescendants;
312
334
  const getClientIdsWithDescendants = (0, _rememo.default)(state => {
313
- const topLevelIds = getBlockOrder(state);
314
- return [...topLevelIds, ...getClientIdsOfDescendants(state, topLevelIds)];
335
+ const collectedIds = [];
336
+
337
+ for (const topLevelId of getBlockOrder(state)) {
338
+ collectedIds.push(topLevelId, ...getClientIdsOfDescendants(state, [topLevelId]));
339
+ }
340
+
341
+ return collectedIds;
315
342
  }, state => [state.blocks.order]);
316
343
  /**
317
344
  * Returns the total number of blocks, or the total number of blocks with a specific name in a post.
@@ -968,6 +995,156 @@ function getMultiSelectedBlocksEndClientId(state) {
968
995
 
969
996
  return selectionEnd.clientId || null;
970
997
  }
998
+ /**
999
+ * Returns true if the selection is not partial.
1000
+ *
1001
+ * @param {Object} state Editor state.
1002
+ *
1003
+ * @return {boolean} Whether the selection is mergeable.
1004
+ */
1005
+
1006
+
1007
+ function __unstableIsFullySelected(state) {
1008
+ const selectionAnchor = getSelectionStart(state);
1009
+ const selectionFocus = getSelectionEnd(state);
1010
+ return !selectionAnchor.attributeKey && !selectionFocus.attributeKey && typeof selectionAnchor.offset === 'undefined' && typeof selectionFocus.offset === 'undefined';
1011
+ }
1012
+ /**
1013
+ * Returns true if the selection is collapsed.
1014
+ *
1015
+ * @param {Object} state Editor state.
1016
+ *
1017
+ * @return {boolean} Whether the selection is collapsed.
1018
+ */
1019
+
1020
+
1021
+ function __unstableIsSelectionCollapsed(state) {
1022
+ const selectionAnchor = getSelectionStart(state);
1023
+ const selectionFocus = getSelectionEnd(state);
1024
+ return !!selectionAnchor && !!selectionFocus && selectionAnchor.clientId === selectionFocus.clientId && selectionAnchor.attributeKey === selectionFocus.attributeKey && selectionAnchor.offset === selectionFocus.offset;
1025
+ }
1026
+ /**
1027
+ * Check whether the selection is mergeable.
1028
+ *
1029
+ * @param {Object} state Editor state.
1030
+ * @param {boolean} isForward Whether to merge forwards.
1031
+ *
1032
+ * @return {boolean} Whether the selection is mergeable.
1033
+ */
1034
+
1035
+
1036
+ function __unstableIsSelectionMergeable(state, isForward) {
1037
+ const selectionAnchor = getSelectionStart(state);
1038
+ const selectionFocus = getSelectionEnd(state); // It's not mergeable if the start and end are within the same block.
1039
+
1040
+ if (selectionAnchor.clientId === selectionFocus.clientId) return false; // It's not mergeable if there's no rich text selection.
1041
+
1042
+ if (!selectionAnchor.attributeKey || !selectionFocus.attributeKey || typeof selectionAnchor.offset === 'undefined' || typeof selectionFocus.offset === 'undefined') return false;
1043
+ const anchorRootClientId = getBlockRootClientId(state, selectionAnchor.clientId);
1044
+ const focusRootClientId = getBlockRootClientId(state, selectionFocus.clientId); // It's not mergeable if the selection doesn't start and end in the same
1045
+ // block list. Maybe in the future it should be allowed.
1046
+
1047
+ if (anchorRootClientId !== focusRootClientId) {
1048
+ return false;
1049
+ }
1050
+
1051
+ const blockOrder = getBlockOrder(state, anchorRootClientId);
1052
+ const anchorIndex = blockOrder.indexOf(selectionAnchor.clientId);
1053
+ const focusIndex = blockOrder.indexOf(selectionFocus.clientId); // Reassign selection start and end based on order.
1054
+
1055
+ let selectionStart, selectionEnd;
1056
+
1057
+ if (anchorIndex > focusIndex) {
1058
+ selectionStart = selectionFocus;
1059
+ selectionEnd = selectionAnchor;
1060
+ } else {
1061
+ selectionStart = selectionAnchor;
1062
+ selectionEnd = selectionFocus;
1063
+ }
1064
+
1065
+ const targetBlockClientId = isForward ? selectionEnd.clientId : selectionStart.clientId;
1066
+ const blockToMergeClientId = isForward ? selectionStart.clientId : selectionEnd.clientId;
1067
+ const targetBlock = getBlock(state, targetBlockClientId);
1068
+ const targetBlockType = (0, _blocks.getBlockType)(targetBlock.name);
1069
+ if (!targetBlockType.merge) return false;
1070
+ const blockToMerge = getBlock(state, blockToMergeClientId); // It's mergeable if the blocks are of the same type.
1071
+
1072
+ if (blockToMerge.name === targetBlock.name) return true; // If the blocks are of a different type, try to transform the block being
1073
+ // merged into the same type of block.
1074
+
1075
+ const blocksToMerge = (0, _blocks.switchToBlockType)(blockToMerge, targetBlock.name);
1076
+ return blocksToMerge && blocksToMerge.length;
1077
+ }
1078
+ /**
1079
+ * Get partial selected blocks with their content updated
1080
+ * based on the selection.
1081
+ *
1082
+ * @param {Object} state Editor state.
1083
+ *
1084
+ * @return {Object[]} Updated partial selected blocks.
1085
+ */
1086
+
1087
+
1088
+ const __unstableGetSelectedBlocksWithPartialSelection = state => {
1089
+ const selectionAnchor = getSelectionStart(state);
1090
+ const selectionFocus = getSelectionEnd(state);
1091
+
1092
+ if (selectionAnchor.clientId === selectionFocus.clientId) {
1093
+ return EMPTY_ARRAY;
1094
+ } // Can't split if the selection is not set.
1095
+
1096
+
1097
+ if (!selectionAnchor.attributeKey || !selectionFocus.attributeKey || typeof selectionAnchor.offset === 'undefined' || typeof selectionFocus.offset === 'undefined') {
1098
+ return EMPTY_ARRAY;
1099
+ }
1100
+
1101
+ const anchorRootClientId = getBlockRootClientId(state, selectionAnchor.clientId);
1102
+ const focusRootClientId = getBlockRootClientId(state, selectionFocus.clientId); // It's not splittable if the selection doesn't start and end in the same
1103
+ // block list. Maybe in the future it should be allowed.
1104
+
1105
+ if (anchorRootClientId !== focusRootClientId) {
1106
+ return EMPTY_ARRAY;
1107
+ }
1108
+
1109
+ const blockOrder = getBlockOrder(state, anchorRootClientId);
1110
+ const anchorIndex = blockOrder.indexOf(selectionAnchor.clientId);
1111
+ const focusIndex = blockOrder.indexOf(selectionFocus.clientId); // Reassign selection start and end based on order.
1112
+
1113
+ const [selectionStart, selectionEnd] = anchorIndex > focusIndex ? [selectionFocus, selectionAnchor] : [selectionAnchor, selectionFocus];
1114
+ const blockA = getBlock(state, selectionStart.clientId);
1115
+ const blockAType = (0, _blocks.getBlockType)(blockA.name);
1116
+ const blockB = getBlock(state, selectionEnd.clientId);
1117
+ const blockBType = (0, _blocks.getBlockType)(blockB.name);
1118
+ const htmlA = blockA.attributes[selectionStart.attributeKey];
1119
+ const htmlB = blockB.attributes[selectionEnd.attributeKey];
1120
+ const attributeDefinitionA = blockAType.attributes[selectionStart.attributeKey];
1121
+ const attributeDefinitionB = blockBType.attributes[selectionEnd.attributeKey];
1122
+ let valueA = (0, _richText.create)({
1123
+ html: htmlA,
1124
+ ...(0, _utils.mapRichTextSettings)(attributeDefinitionA)
1125
+ });
1126
+ let valueB = (0, _richText.create)({
1127
+ html: htmlB,
1128
+ ...(0, _utils.mapRichTextSettings)(attributeDefinitionB)
1129
+ });
1130
+ valueA = (0, _richText.remove)(valueA, 0, selectionStart.offset);
1131
+ valueB = (0, _richText.remove)(valueB, selectionEnd.offset, valueB.text.length);
1132
+ return [{ ...blockA,
1133
+ attributes: { ...blockA.attributes,
1134
+ [selectionStart.attributeKey]: (0, _richText.toHTMLString)({
1135
+ value: valueA,
1136
+ ...(0, _utils.mapRichTextSettings)(attributeDefinitionA)
1137
+ })
1138
+ }
1139
+ }, { ...blockB,
1140
+ attributes: { ...blockB.attributes,
1141
+ [selectionEnd.attributeKey]: (0, _richText.toHTMLString)({
1142
+ value: valueB,
1143
+ ...(0, _utils.mapRichTextSettings)(attributeDefinitionB)
1144
+ })
1145
+ }
1146
+ }];
1147
+ };
971
1148
  /**
972
1149
  * Returns an array containing all block client IDs in the editor in the order
973
1150
  * they appear. Optionally accepts a root client ID of the block list for which
@@ -980,6 +1157,8 @@ function getMultiSelectedBlocksEndClientId(state) {
980
1157
  */
981
1158
 
982
1159
 
1160
+ exports.__unstableGetSelectedBlocksWithPartialSelection = __unstableGetSelectedBlocksWithPartialSelection;
1161
+
983
1162
  function getBlockOrder(state, rootClientId) {
984
1163
  return state.blocks.order[rootClientId || ''] || EMPTY_ARRAY;
985
1164
  }
@@ -1380,7 +1559,15 @@ const canInsertBlockTypeUnmemoized = function (state, blockName) {
1380
1559
  const blockAllowedParentBlocks = blockType.parent;
1381
1560
  const parentName = getBlockName(state, rootClientId);
1382
1561
  const hasBlockAllowedParent = checkAllowList(blockAllowedParentBlocks, parentName);
1383
- const canInsert = hasParentAllowedBlock === null && hasBlockAllowedParent === null || hasParentAllowedBlock === true || hasBlockAllowedParent === true;
1562
+ let hasBlockAllowedAncestor = true;
1563
+ const blockAllowedAncestorBlocks = blockType.ancestor;
1564
+
1565
+ if (blockAllowedAncestorBlocks) {
1566
+ const ancestors = [rootClientId, ...getBlockParents(state, rootClientId)];
1567
+ hasBlockAllowedAncestor = (0, _lodash.some)(ancestors, ancestorClientId => checkAllowList(blockAllowedAncestorBlocks, getBlockName(state, ancestorClientId)));
1568
+ }
1569
+
1570
+ const canInsert = hasBlockAllowedAncestor && (hasParentAllowedBlock === null && hasBlockAllowedParent === null || hasParentAllowedBlock === true || hasBlockAllowedParent === true);
1384
1571
 
1385
1572
  if (!canInsert) {
1386
1573
  return canInsert;
@@ -1458,7 +1645,7 @@ function canRemoveBlock(state, clientId) {
1458
1645
  const {
1459
1646
  lock
1460
1647
  } = attributes;
1461
- const parentIsLocked = !!getTemplateLock(state, rootClientId); // If we don't have a lock on the blockType level, we differ to the parent templateLock.
1648
+ const parentIsLocked = !!getTemplateLock(state, rootClientId); // If we don't have a lock on the blockType level, we defer to the parent templateLock.
1462
1649
 
1463
1650
  if (lock === undefined || (lock === null || lock === void 0 ? void 0 : lock.remove) === undefined) {
1464
1651
  return !parentIsLocked;
@@ -1504,7 +1691,7 @@ function canMoveBlock(state, clientId) {
1504
1691
  const {
1505
1692
  lock
1506
1693
  } = attributes;
1507
- const parentIsLocked = getTemplateLock(state, rootClientId) === 'all'; // If we don't have a lock on the blockType level, we differ to the parent templateLock.
1694
+ const parentIsLocked = getTemplateLock(state, rootClientId) === 'all'; // If we don't have a lock on the blockType level, we defer to the parent templateLock.
1508
1695
 
1509
1696
  if (lock === undefined || (lock === null || lock === void 0 ? void 0 : lock.move) === undefined) {
1510
1697
  return !parentIsLocked;
@@ -1528,6 +1715,49 @@ function canMoveBlocks(state, clientIds) {
1528
1715
  let rootClientId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1529
1716
  return clientIds.every(clientId => canMoveBlock(state, clientId, rootClientId));
1530
1717
  }
1718
+ /**
1719
+ * Determines if the given block is allowed to be edited.
1720
+ *
1721
+ * @param {Object} state Editor state.
1722
+ * @param {string} clientId The block client Id.
1723
+ *
1724
+ * @return {boolean} Whether the given block is allowed to be edited.
1725
+ */
1726
+
1727
+
1728
+ function canEditBlock(state, clientId) {
1729
+ const attributes = getBlockAttributes(state, clientId);
1730
+
1731
+ if (attributes === null) {
1732
+ return true;
1733
+ }
1734
+
1735
+ const {
1736
+ lock
1737
+ } = attributes; // When the edit is true, we cannot edit the block.
1738
+
1739
+ return !(lock !== null && lock !== void 0 && lock.edit);
1740
+ }
1741
+ /**
1742
+ * Determines if the given block type can be locked/unlocked by a user.
1743
+ *
1744
+ * @param {Object} state Editor state.
1745
+ * @param {(string|Object)} nameOrType Block name or type object.
1746
+ *
1747
+ * @return {boolean} Whether a given block type can be locked/unlocked.
1748
+ */
1749
+
1750
+
1751
+ function canLockBlockType(state, nameOrType) {
1752
+ var _state$settings;
1753
+
1754
+ if (!(0, _blocks.hasBlockSupport)(nameOrType, 'lock', true)) {
1755
+ return false;
1756
+ } // Use block editor settings as the default value.
1757
+
1758
+
1759
+ return !!((_state$settings = state.settings) !== null && _state$settings !== void 0 && _state$settings.canLockBlocks);
1760
+ }
1531
1761
  /**
1532
1762
  * Returns information about how recently and frequently a block has been inserted.
1533
1763
  *
@@ -1858,7 +2088,10 @@ const getInserterItems = (0, _rememo.default)(function (state) {
1858
2088
 
1859
2089
  exports.getInserterItems = getInserterItems;
1860
2090
  const getBlockTransformItems = (0, _rememo.default)(function (state, blocks) {
2091
+ var _itemsByName$sourceBl;
2092
+
1861
2093
  let rootClientId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
2094
+ const [sourceBlock] = blocks;
1862
2095
  const buildBlockTypeTransformItem = buildBlockTypeItem(state, {
1863
2096
  buildScope: 'transform'
1864
2097
  });
@@ -1868,16 +2101,26 @@ const getBlockTransformItems = (0, _rememo.default)(function (state, blocks) {
1868
2101
  name
1869
2102
  } = _ref5;
1870
2103
  return name;
1871
- });
2104
+ }); // Consider unwraping the highest priority.
2105
+
2106
+ itemsByName['*'] = {
2107
+ frecency: +Infinity,
2108
+ id: '*',
2109
+ isDisabled: false,
2110
+ name: '*',
2111
+ title: (0, _i18n.__)('Unwrap'),
2112
+ icon: (_itemsByName$sourceBl = itemsByName[sourceBlock.name]) === null || _itemsByName$sourceBl === void 0 ? void 0 : _itemsByName$sourceBl.icon
2113
+ };
1872
2114
  const possibleTransforms = (0, _blocks.getPossibleBlockTransformations)(blocks).reduce((accumulator, block) => {
1873
- if (itemsByName[block === null || block === void 0 ? void 0 : block.name]) {
2115
+ if (block === '*') {
2116
+ accumulator.push(itemsByName['*']);
2117
+ } else if (itemsByName[block === null || block === void 0 ? void 0 : block.name]) {
1874
2118
  accumulator.push(itemsByName[block.name]);
1875
2119
  }
1876
2120
 
1877
2121
  return accumulator;
1878
2122
  }, []);
1879
- const possibleBlockTransformations = (0, _lodash.orderBy)(possibleTransforms, block => itemsByName[block.name].frecency, 'desc');
1880
- return possibleBlockTransformations;
2123
+ return (0, _lodash.orderBy)(possibleTransforms, block => itemsByName[block.name].frecency, 'desc');
1881
2124
  }, (state, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId, state.preferences.insertUsage, state.settings.allowedBlockTypes, state.settings.templateLock, (0, _blocks.getBlockTypes)()]);
1882
2125
  /**
1883
2126
  * Determines whether there are items to show in the inserter.
@@ -2277,9 +2520,9 @@ function __experimentalGetLastBlockAttributeChanges(state) {
2277
2520
 
2278
2521
 
2279
2522
  function getReusableBlocks(state) {
2280
- var _state$settings$__exp, _state$settings;
2523
+ var _state$settings$__exp, _state$settings2;
2281
2524
 
2282
- return (_state$settings$__exp = state === null || state === void 0 ? void 0 : (_state$settings = state.settings) === null || _state$settings === void 0 ? void 0 : _state$settings.__experimentalReusableBlocks) !== null && _state$settings$__exp !== void 0 ? _state$settings$__exp : EMPTY_ARRAY;
2525
+ return (_state$settings$__exp = state === null || state === void 0 ? void 0 : (_state$settings2 = state.settings) === null || _state$settings2 === void 0 ? void 0 : _state$settings2.__experimentalReusableBlocks) !== null && _state$settings$__exp !== void 0 ? _state$settings$__exp : EMPTY_ARRAY;
2283
2526
  }
2284
2527
  /**
2285
2528
  * Returns whether the navigation mode is enabled.