@wordpress/block-editor 10.5.0 → 11.0.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 (488) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/autocompleters/block.js +2 -6
  3. package/build/autocompleters/block.js.map +1 -1
  4. package/build/autocompleters/link.js +2 -0
  5. package/build/autocompleters/link.js.map +1 -1
  6. package/build/components/block-card/index.js +51 -3
  7. package/build/components/block-card/index.js.map +1 -1
  8. package/build/components/block-draggable/index.native.js +46 -39
  9. package/build/components/block-draggable/index.native.js.map +1 -1
  10. package/build/components/block-edit/edit.js +4 -3
  11. package/build/components/block-edit/edit.js.map +1 -1
  12. package/build/components/block-edit/edit.native.js +4 -7
  13. package/build/components/block-edit/edit.native.js.map +1 -1
  14. package/build/components/block-inspector/index.js +35 -33
  15. package/build/components/block-inspector/index.js.map +1 -1
  16. package/build/components/block-list/block-list-context.native.js +5 -8
  17. package/build/components/block-list/block-list-context.native.js.map +1 -1
  18. package/build/components/block-list/block.js +55 -24
  19. package/build/components/block-list/block.js.map +1 -1
  20. package/build/components/block-list/block.native.js +61 -28
  21. package/build/components/block-list/block.native.js.map +1 -1
  22. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +12 -4
  23. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  24. package/build/components/block-pattern-setup/index.js +3 -2
  25. package/build/components/block-pattern-setup/index.js.map +1 -1
  26. package/build/components/block-patterns-list/index.js +33 -11
  27. package/build/components/block-patterns-list/index.js.map +1 -1
  28. package/build/components/block-preview/auto.js +9 -3
  29. package/build/components/block-preview/auto.js.map +1 -1
  30. package/build/components/block-preview/index.js +5 -9
  31. package/build/components/block-preview/index.js.map +1 -1
  32. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
  33. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  34. package/build/components/block-toolbar/index.js +5 -1
  35. package/build/components/block-toolbar/index.js.map +1 -1
  36. package/build/components/block-tools/insertion-point.js +8 -49
  37. package/build/components/block-tools/insertion-point.js.map +1 -1
  38. package/build/components/block-variation-picker/index.js +1 -2
  39. package/build/components/block-variation-picker/index.js.map +1 -1
  40. package/build/components/height-control/index.js +115 -0
  41. package/build/components/height-control/index.js.map +1 -0
  42. package/build/components/iframe/index.js +11 -8
  43. package/build/components/iframe/index.js.map +1 -1
  44. package/build/components/image-editor/use-save-image.js +2 -0
  45. package/build/components/image-editor/use-save-image.js.map +1 -1
  46. package/build/components/image-editor/zoom-dropdown.js +1 -0
  47. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  48. package/build/components/index.js +9 -0
  49. package/build/components/index.js.map +1 -1
  50. package/build/components/inner-blocks/index.js +20 -6
  51. package/build/components/inner-blocks/index.js.map +1 -1
  52. package/build/components/inner-blocks/use-inner-block-template-sync.js +25 -10
  53. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  54. package/build/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  55. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  56. package/build/components/inserter/block-patterns-tab.js +25 -46
  57. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  58. package/build/components/inserter/block-types-tab.js +3 -1
  59. package/build/components/inserter/block-types-tab.js.map +1 -1
  60. package/build/components/inserter/hooks/use-debounced-input.js +27 -0
  61. package/build/components/inserter/hooks/use-debounced-input.js.map +1 -0
  62. package/build/components/inserter/index.js +8 -3
  63. package/build/components/inserter/index.js.map +1 -1
  64. package/build/components/inserter/index.native.js +3 -4
  65. package/build/components/inserter/index.native.js.map +1 -1
  66. package/build/components/inserter/media-tab/hooks.js +103 -0
  67. package/build/components/inserter/media-tab/hooks.js.map +1 -0
  68. package/build/components/inserter/media-tab/index.js +32 -0
  69. package/build/components/inserter/media-tab/index.js.map +1 -0
  70. package/build/components/inserter/media-tab/media-list.js +100 -0
  71. package/build/components/inserter/media-tab/media-list.js.map +1 -0
  72. package/build/components/inserter/media-tab/media-panel.js +96 -0
  73. package/build/components/inserter/media-tab/media-panel.js.map +1 -0
  74. package/build/components/inserter/media-tab/media-tab.js +120 -0
  75. package/build/components/inserter/media-tab/media-tab.js.map +1 -0
  76. package/build/components/inserter/media-tab/utils.js +54 -0
  77. package/build/components/inserter/media-tab/utils.js.map +1 -0
  78. package/build/components/inserter/menu.js +35 -12
  79. package/build/components/inserter/menu.js.map +1 -1
  80. package/build/components/inserter/mobile-tab-navigation.js +70 -0
  81. package/build/components/inserter/mobile-tab-navigation.js.map +1 -0
  82. package/build/components/inserter/quick-inserter.js +1 -0
  83. package/build/components/inserter/quick-inserter.js.map +1 -1
  84. package/build/components/inserter/search-results.js +3 -1
  85. package/build/components/inserter/search-results.js.map +1 -1
  86. package/build/components/inserter/tabs.js +16 -2
  87. package/build/components/inserter/tabs.js.map +1 -1
  88. package/build/components/inserter-list-item/index.js +4 -1
  89. package/build/components/inserter-list-item/index.js.map +1 -1
  90. package/build/components/inspector-controls/groups.js +2 -0
  91. package/build/components/inspector-controls/groups.js.map +1 -1
  92. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +46 -0
  93. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  94. package/build/components/inspector-controls-tabs/index.js +71 -0
  95. package/build/components/inspector-controls-tabs/index.js.map +1 -0
  96. package/build/components/inspector-controls-tabs/settings-tab.js +28 -0
  97. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  98. package/build/components/inspector-controls-tabs/styles-tab.js +61 -0
  99. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  100. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +97 -0
  101. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  102. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +18 -0
  103. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  104. package/build/components/inspector-controls-tabs/utils.js +37 -0
  105. package/build/components/inspector-controls-tabs/utils.js.map +1 -0
  106. package/build/components/link-control/index.js +1 -0
  107. package/build/components/link-control/index.js.map +1 -1
  108. package/build/components/link-control/search-input.js +0 -1
  109. package/build/components/link-control/search-input.js.map +1 -1
  110. package/build/components/link-control/use-internal-input-value.js +3 -3
  111. package/build/components/link-control/use-internal-input-value.js.map +1 -1
  112. package/build/components/list-view/block.js +5 -2
  113. package/build/components/list-view/block.js.map +1 -1
  114. package/build/components/list-view/branch.js +13 -12
  115. package/build/components/list-view/branch.js.map +1 -1
  116. package/build/components/media-upload/index.native.js +2 -3
  117. package/build/components/media-upload/index.native.js.map +1 -1
  118. package/build/components/off-canvas-editor/appender.js +104 -0
  119. package/build/components/off-canvas-editor/appender.js.map +1 -0
  120. package/build/components/off-canvas-editor/block-edit-button.js +50 -0
  121. package/build/components/off-canvas-editor/block-edit-button.js.map +1 -0
  122. package/build/components/off-canvas-editor/block.js +36 -4
  123. package/build/components/off-canvas-editor/block.js.map +1 -1
  124. package/build/components/off-canvas-editor/branch.js +3 -5
  125. package/build/components/off-canvas-editor/branch.js.map +1 -1
  126. package/build/components/off-canvas-editor/index.js +20 -11
  127. package/build/components/off-canvas-editor/index.js.map +1 -1
  128. package/build/components/off-canvas-editor/leaf.js +1 -1
  129. package/build/components/off-canvas-editor/leaf.js.map +1 -1
  130. package/build/components/off-canvas-editor/link-ui.js +185 -0
  131. package/build/components/off-canvas-editor/link-ui.js.map +1 -0
  132. package/build/components/off-canvas-editor/update-attributes.js +108 -0
  133. package/build/components/off-canvas-editor/update-attributes.js.map +1 -0
  134. package/build/components/rich-text/format-toolbar/index.js +8 -4
  135. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  136. package/build/components/rich-text/index.js +3 -3
  137. package/build/components/rich-text/index.js.map +1 -1
  138. package/build/components/rich-text/index.native.js +0 -2
  139. package/build/components/rich-text/index.native.js.map +1 -1
  140. package/build/components/rich-text/use-insert-replacement-text.js +43 -0
  141. package/build/components/rich-text/use-insert-replacement-text.js.map +1 -0
  142. package/build/components/rich-text/use-undo-automatic-change.js +9 -1
  143. package/build/components/rich-text/use-undo-automatic-change.js.map +1 -1
  144. package/build/components/rich-text/utils.js +1 -19
  145. package/build/components/rich-text/utils.js.map +1 -1
  146. package/build/components/spacing-sizes-control/spacing-input-control.js +12 -3
  147. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  148. package/build/components/ungroup-button/index.native.js +4 -2
  149. package/build/components/ungroup-button/index.native.js.map +1 -1
  150. package/build/components/url-input/index.js +46 -43
  151. package/build/components/url-input/index.js.map +1 -1
  152. package/build/components/use-block-display-information/index.js +8 -4
  153. package/build/components/use-block-display-information/index.js.map +1 -1
  154. package/build/components/use-setting/index.js +9 -1
  155. package/build/components/use-setting/index.js.map +1 -1
  156. package/build/hooks/child-layout.js +209 -0
  157. package/build/hooks/child-layout.js.map +1 -0
  158. package/build/hooks/content-lock-ui.js +1 -1
  159. package/build/hooks/content-lock-ui.js.map +1 -1
  160. package/build/hooks/dimensions.js +25 -7
  161. package/build/hooks/dimensions.js.map +1 -1
  162. package/build/hooks/layout.js +57 -1
  163. package/build/hooks/layout.js.map +1 -1
  164. package/build/hooks/min-height.js +4 -10
  165. package/build/hooks/min-height.js.map +1 -1
  166. package/build/store/reducer.js +393 -270
  167. package/build/store/reducer.js.map +1 -1
  168. package/build/store/selectors.js +57 -47
  169. package/build/store/selectors.js.map +1 -1
  170. package/build/utils/sorting.js +63 -0
  171. package/build/utils/sorting.js.map +1 -0
  172. package/build-module/autocompleters/block.js +2 -6
  173. package/build-module/autocompleters/block.js.map +1 -1
  174. package/build-module/autocompleters/link.js +2 -0
  175. package/build-module/autocompleters/link.js.map +1 -1
  176. package/build-module/components/block-card/index.js +45 -3
  177. package/build-module/components/block-card/index.js.map +1 -1
  178. package/build-module/components/block-draggable/index.native.js +40 -31
  179. package/build-module/components/block-draggable/index.native.js.map +1 -1
  180. package/build-module/components/block-edit/edit.js +4 -2
  181. package/build-module/components/block-edit/edit.js.map +1 -1
  182. package/build-module/components/block-edit/edit.native.js +4 -6
  183. package/build-module/components/block-edit/edit.native.js.map +1 -1
  184. package/build-module/components/block-inspector/index.js +32 -30
  185. package/build-module/components/block-inspector/index.js.map +1 -1
  186. package/build-module/components/block-list/block-list-context.native.js +5 -8
  187. package/build-module/components/block-list/block-list-context.native.js.map +1 -1
  188. package/build-module/components/block-list/block.js +55 -25
  189. package/build-module/components/block-list/block.js.map +1 -1
  190. package/build-module/components/block-list/block.native.js +61 -28
  191. package/build-module/components/block-list/block.native.js.map +1 -1
  192. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +13 -6
  193. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  194. package/build-module/components/block-pattern-setup/index.js +3 -2
  195. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  196. package/build-module/components/block-patterns-list/index.js +35 -13
  197. package/build-module/components/block-patterns-list/index.js.map +1 -1
  198. package/build-module/components/block-preview/auto.js +9 -3
  199. package/build-module/components/block-preview/auto.js.map +1 -1
  200. package/build-module/components/block-preview/index.js +5 -8
  201. package/build-module/components/block-preview/index.js.map +1 -1
  202. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -2
  203. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  204. package/build-module/components/block-toolbar/index.js +6 -2
  205. package/build-module/components/block-toolbar/index.js.map +1 -1
  206. package/build-module/components/block-tools/insertion-point.js +8 -49
  207. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  208. package/build-module/components/block-variation-picker/index.js +1 -2
  209. package/build-module/components/block-variation-picker/index.js.map +1 -1
  210. package/build-module/components/height-control/index.js +103 -0
  211. package/build-module/components/height-control/index.js.map +1 -0
  212. package/build-module/components/iframe/index.js +11 -8
  213. package/build-module/components/iframe/index.js.map +1 -1
  214. package/build-module/components/image-editor/use-save-image.js +2 -0
  215. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  216. package/build-module/components/image-editor/zoom-dropdown.js +1 -0
  217. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  218. package/build-module/components/index.js +1 -0
  219. package/build-module/components/index.js.map +1 -1
  220. package/build-module/components/inner-blocks/index.js +22 -8
  221. package/build-module/components/inner-blocks/index.js.map +1 -1
  222. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +23 -10
  223. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  224. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  225. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  226. package/build-module/components/inserter/block-patterns-tab.js +27 -49
  227. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  228. package/build-module/components/inserter/block-types-tab.js +3 -2
  229. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  230. package/build-module/components/inserter/hooks/use-debounced-input.js +18 -0
  231. package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -0
  232. package/build-module/components/inserter/index.js +8 -3
  233. package/build-module/components/inserter/index.js.map +1 -1
  234. package/build-module/components/inserter/index.native.js +3 -5
  235. package/build-module/components/inserter/index.native.js.map +1 -1
  236. package/build-module/components/inserter/media-tab/hooks.js +89 -0
  237. package/build-module/components/inserter/media-tab/hooks.js.map +1 -0
  238. package/build-module/components/inserter/media-tab/index.js +4 -0
  239. package/build-module/components/inserter/media-tab/index.js.map +1 -0
  240. package/build-module/components/inserter/media-tab/media-list.js +86 -0
  241. package/build-module/components/inserter/media-tab/media-list.js.map +1 -0
  242. package/build-module/components/inserter/media-tab/media-panel.js +77 -0
  243. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -0
  244. package/build-module/components/inserter/media-tab/media-tab.js +100 -0
  245. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -0
  246. package/build-module/components/inserter/media-tab/utils.js +45 -0
  247. package/build-module/components/inserter/media-tab/utils.js.map +1 -0
  248. package/build-module/components/inserter/menu.js +33 -12
  249. package/build-module/components/inserter/menu.js.map +1 -1
  250. package/build-module/components/inserter/mobile-tab-navigation.js +61 -0
  251. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -0
  252. package/build-module/components/inserter/quick-inserter.js +1 -0
  253. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  254. package/build-module/components/inserter/search-results.js +3 -2
  255. package/build-module/components/inserter/search-results.js.map +1 -1
  256. package/build-module/components/inserter/tabs.js +15 -2
  257. package/build-module/components/inserter/tabs.js.map +1 -1
  258. package/build-module/components/inserter-list-item/index.js +5 -2
  259. package/build-module/components/inserter-list-item/index.js.map +1 -1
  260. package/build-module/components/inspector-controls/groups.js +2 -0
  261. package/build-module/components/inspector-controls/groups.js.map +1 -1
  262. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +32 -0
  263. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  264. package/build-module/components/inspector-controls-tabs/index.js +56 -0
  265. package/build-module/components/inspector-controls-tabs/index.js.map +1 -0
  266. package/build-module/components/inspector-controls-tabs/settings-tab.js +17 -0
  267. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  268. package/build-module/components/inspector-controls-tabs/styles-tab.js +46 -0
  269. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  270. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +81 -0
  271. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  272. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +8 -0
  273. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  274. package/build-module/components/inspector-controls-tabs/utils.js +26 -0
  275. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -0
  276. package/build-module/components/link-control/index.js +1 -0
  277. package/build-module/components/link-control/index.js.map +1 -1
  278. package/build-module/components/link-control/search-input.js +0 -1
  279. package/build-module/components/link-control/search-input.js.map +1 -1
  280. package/build-module/components/link-control/use-internal-input-value.js +3 -3
  281. package/build-module/components/link-control/use-internal-input-value.js.map +1 -1
  282. package/build-module/components/list-view/block.js +5 -2
  283. package/build-module/components/list-view/block.js.map +1 -1
  284. package/build-module/components/list-view/branch.js +12 -11
  285. package/build-module/components/list-view/branch.js.map +1 -1
  286. package/build-module/components/media-upload/index.native.js +2 -4
  287. package/build-module/components/media-upload/index.native.js.map +1 -1
  288. package/build-module/components/off-canvas-editor/appender.js +89 -0
  289. package/build-module/components/off-canvas-editor/appender.js.map +1 -0
  290. package/build-module/components/off-canvas-editor/block-edit-button.js +35 -0
  291. package/build-module/components/off-canvas-editor/block-edit-button.js.map +1 -0
  292. package/build-module/components/off-canvas-editor/block.js +36 -6
  293. package/build-module/components/off-canvas-editor/block.js.map +1 -1
  294. package/build-module/components/off-canvas-editor/branch.js +3 -4
  295. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  296. package/build-module/components/off-canvas-editor/index.js +20 -12
  297. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  298. package/build-module/components/off-canvas-editor/leaf.js +1 -1
  299. package/build-module/components/off-canvas-editor/leaf.js.map +1 -1
  300. package/build-module/components/off-canvas-editor/link-ui.js +165 -0
  301. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -0
  302. package/build-module/components/off-canvas-editor/update-attributes.js +97 -0
  303. package/build-module/components/off-canvas-editor/update-attributes.js.map +1 -0
  304. package/build-module/components/rich-text/format-toolbar/index.js +6 -2
  305. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  306. package/build-module/components/rich-text/index.js +2 -3
  307. package/build-module/components/rich-text/index.js.map +1 -1
  308. package/build-module/components/rich-text/index.native.js +0 -2
  309. package/build-module/components/rich-text/index.native.js.map +1 -1
  310. package/build-module/components/rich-text/use-insert-replacement-text.js +33 -0
  311. package/build-module/components/rich-text/use-insert-replacement-text.js.map +1 -0
  312. package/build-module/components/rich-text/use-undo-automatic-change.js +9 -1
  313. package/build-module/components/rich-text/use-undo-automatic-change.js.map +1 -1
  314. package/build-module/components/rich-text/utils.js +1 -16
  315. package/build-module/components/rich-text/utils.js.map +1 -1
  316. package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -3
  317. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  318. package/build-module/components/ungroup-button/index.native.js +3 -2
  319. package/build-module/components/ungroup-button/index.native.js.map +1 -1
  320. package/build-module/components/url-input/index.js +46 -43
  321. package/build-module/components/url-input/index.js.map +1 -1
  322. package/build-module/components/use-block-display-information/index.js +9 -5
  323. package/build-module/components/use-block-display-information/index.js.map +1 -1
  324. package/build-module/components/use-setting/index.js +8 -1
  325. package/build-module/components/use-setting/index.js.map +1 -1
  326. package/build-module/hooks/child-layout.js +189 -0
  327. package/build-module/hooks/child-layout.js.map +1 -0
  328. package/build-module/hooks/content-lock-ui.js +1 -1
  329. package/build-module/hooks/content-lock-ui.js.map +1 -1
  330. package/build-module/hooks/dimensions.js +25 -8
  331. package/build-module/hooks/dimensions.js.map +1 -1
  332. package/build-module/hooks/layout.js +55 -0
  333. package/build-module/hooks/layout.js.map +1 -1
  334. package/build-module/hooks/min-height.js +3 -9
  335. package/build-module/hooks/min-height.js.map +1 -1
  336. package/build-module/store/reducer.js +391 -271
  337. package/build-module/store/reducer.js.map +1 -1
  338. package/build-module/store/selectors.js +54 -47
  339. package/build-module/store/selectors.js.map +1 -1
  340. package/build-module/utils/sorting.js +56 -0
  341. package/build-module/utils/sorting.js.map +1 -0
  342. package/build-style/content-rtl.css +701 -0
  343. package/build-style/content.css +701 -0
  344. package/build-style/default-editor-styles-rtl.css +14 -0
  345. package/build-style/default-editor-styles.css +14 -0
  346. package/build-style/style-rtl.css +286 -662
  347. package/build-style/style.css +286 -662
  348. package/package.json +32 -30
  349. package/src/autocompleters/block.js +2 -6
  350. package/src/autocompleters/link.js +2 -0
  351. package/src/components/alignment-control/test/index.js +4 -1
  352. package/src/components/block-alignment-control/test/index.js +4 -1
  353. package/src/components/block-card/index.js +46 -2
  354. package/src/components/block-card/style.scss +4 -0
  355. package/src/components/block-content-overlay/{style.scss → content.scss} +7 -1
  356. package/src/components/block-draggable/content.scss +20 -0
  357. package/src/components/block-draggable/index.native.js +54 -40
  358. package/src/components/block-draggable/style.scss +0 -21
  359. package/src/components/block-draggable/test/helpers.native.js +7 -9
  360. package/src/components/block-draggable/test/index.native.js +35 -45
  361. package/src/components/block-edit/edit.js +5 -2
  362. package/src/components/block-edit/edit.native.js +5 -6
  363. package/src/components/block-inspector/index.js +96 -81
  364. package/src/components/block-inspector/style.scss +9 -1
  365. package/src/components/block-list/block-list-context.native.js +5 -8
  366. package/src/components/block-list/block.js +74 -23
  367. package/src/components/block-list/block.native.js +78 -23
  368. package/src/components/block-list/{style.scss → content.scss} +1 -15
  369. package/src/components/block-list-appender/{style.scss → content.scss} +0 -0
  370. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +24 -6
  371. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +0 -2
  372. package/src/components/block-pattern-setup/index.js +2 -1
  373. package/src/components/block-patterns-list/index.js +47 -24
  374. package/src/components/block-preview/README.md +15 -10
  375. package/src/components/block-preview/auto.js +7 -1
  376. package/src/components/block-preview/content.scss +4 -0
  377. package/src/components/block-preview/index.js +7 -12
  378. package/src/components/block-preview/style.scss +0 -7
  379. package/src/components/block-preview/test/index.js +18 -35
  380. package/src/components/block-selection-clearer/test/index.js +12 -12
  381. package/src/components/block-settings-menu/block-settings-dropdown.js +32 -20
  382. package/src/components/block-switcher/test/index.js +4 -0
  383. package/src/components/block-toolbar/index.js +12 -5
  384. package/src/components/block-toolbar/style.scss +10 -0
  385. package/src/components/block-tools/insertion-point.js +3 -47
  386. package/src/components/block-tools/style.scss +12 -5
  387. package/src/components/block-variation-picker/index.js +1 -4
  388. package/src/components/block-vertical-alignment-control/test/index.js +4 -1
  389. package/src/components/default-block-appender/{style.scss → content.scss} +0 -0
  390. package/src/components/height-control/index.js +123 -0
  391. package/src/components/height-control/stories/index.js +21 -0
  392. package/src/components/height-control/style.scss +5 -0
  393. package/src/components/iframe/index.js +25 -18
  394. package/src/components/image-editor/use-save-image.js +2 -0
  395. package/src/components/image-editor/zoom-dropdown.js +1 -0
  396. package/src/components/index.js +1 -0
  397. package/src/components/inner-blocks/{style.scss → content.scss} +0 -0
  398. package/src/components/inner-blocks/index.js +23 -6
  399. package/src/components/inner-blocks/use-inner-block-template-sync.js +28 -10
  400. package/src/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  401. package/src/components/inserter/block-patterns-tab.js +28 -71
  402. package/src/components/inserter/block-types-tab.js +3 -2
  403. package/src/components/inserter/hooks/use-debounced-input.js +17 -0
  404. package/src/components/inserter/index.js +10 -2
  405. package/src/components/inserter/index.native.js +1 -1
  406. package/src/components/inserter/media-tab/hooks.js +88 -0
  407. package/src/components/inserter/media-tab/index.js +3 -0
  408. package/src/components/inserter/media-tab/media-list.js +93 -0
  409. package/src/components/inserter/media-tab/media-panel.js +83 -0
  410. package/src/components/inserter/media-tab/media-tab.js +135 -0
  411. package/src/components/inserter/media-tab/utils.js +37 -0
  412. package/src/components/inserter/menu.js +55 -13
  413. package/src/components/inserter/mobile-tab-navigation.js +85 -0
  414. package/src/components/inserter/quick-inserter.js +1 -0
  415. package/src/components/inserter/search-results.js +3 -2
  416. package/src/components/inserter/stories/index.js +1 -1
  417. package/src/components/inserter/stories/{fixtures.js → utils/fixtures.js} +0 -0
  418. package/src/components/inserter/style.scss +176 -11
  419. package/src/components/inserter/tabs.js +12 -1
  420. package/src/components/inserter-list-item/index.js +11 -1
  421. package/src/components/inserter-list-item/style.scss +26 -0
  422. package/src/components/inspector-controls/groups.js +2 -0
  423. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +37 -0
  424. package/src/components/inspector-controls-tabs/index.js +62 -0
  425. package/src/components/inspector-controls-tabs/settings-tab.js +18 -0
  426. package/src/components/inspector-controls-tabs/styles-tab.js +51 -0
  427. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +89 -0
  428. package/src/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +9 -0
  429. package/src/components/inspector-controls-tabs/utils.js +28 -0
  430. package/src/components/line-height-control/test/index.js +5 -5
  431. package/src/components/link-control/README.md +1 -1
  432. package/src/components/link-control/index.js +1 -0
  433. package/src/components/link-control/search-input.js +0 -1
  434. package/src/components/link-control/test/index.js +188 -401
  435. package/src/components/link-control/use-internal-input-value.js +3 -3
  436. package/src/components/list-view/block.js +3 -0
  437. package/src/components/list-view/branch.js +10 -8
  438. package/src/components/list-view/style.scss +20 -9
  439. package/src/components/media-placeholder/{style.scss → content.scss} +0 -0
  440. package/src/components/media-replace-flow/test/index.js +37 -9
  441. package/src/components/media-upload/test/index.native.js +2 -0
  442. package/src/components/off-canvas-editor/appender.js +93 -0
  443. package/src/components/off-canvas-editor/block-edit-button.js +27 -0
  444. package/src/components/off-canvas-editor/block.js +88 -22
  445. package/src/components/off-canvas-editor/branch.js +3 -5
  446. package/src/components/off-canvas-editor/index.js +59 -33
  447. package/src/components/off-canvas-editor/leaf.js +5 -1
  448. package/src/components/off-canvas-editor/link-ui.js +166 -0
  449. package/src/components/off-canvas-editor/style.scss +17 -388
  450. package/src/components/off-canvas-editor/update-attributes.js +99 -0
  451. package/src/components/plain-text/{style.scss → content.scss} +0 -0
  452. package/src/components/recursion-provider/test/index.js +27 -29
  453. package/src/components/rich-text/content.scss +42 -0
  454. package/src/components/rich-text/format-toolbar/index.js +6 -4
  455. package/src/components/rich-text/index.js +2 -2
  456. package/src/components/rich-text/index.native.js +0 -2
  457. package/src/components/rich-text/style.scss +0 -43
  458. package/src/components/rich-text/use-insert-replacement-text.js +31 -0
  459. package/src/components/rich-text/use-undo-automatic-change.js +7 -1
  460. package/src/components/rich-text/utils.js +2 -21
  461. package/src/components/spacing-sizes-control/spacing-input-control.js +9 -0
  462. package/src/components/ungroup-button/index.native.js +6 -2
  463. package/src/components/url-input/index.js +57 -73
  464. package/src/components/url-popover/test/__snapshots__/index.js.snap +8 -6
  465. package/src/components/url-popover/test/index.js +21 -9
  466. package/src/components/use-block-display-information/index.js +14 -5
  467. package/src/components/use-setting/index.js +13 -1
  468. package/src/components/use-setting/test/index.js +99 -0
  469. package/src/content.scss +10 -0
  470. package/src/hooks/child-layout.js +190 -0
  471. package/src/hooks/content-lock-ui.js +1 -1
  472. package/src/hooks/dimensions.js +45 -7
  473. package/src/hooks/layout.js +60 -0
  474. package/src/hooks/min-height.js +2 -19
  475. package/src/store/reducer.js +459 -423
  476. package/src/store/selectors.js +56 -57
  477. package/src/store/test/performance.js +71 -0
  478. package/src/store/test/reducer.js +623 -491
  479. package/src/store/test/selectors.js +1820 -1306
  480. package/src/style.scss +4 -7
  481. package/src/utils/sorting.js +54 -0
  482. package/src/utils/test/sorting.js +49 -0
  483. package/tsconfig.tsbuildinfo +1 -1
  484. package/build/components/block-preview/live.js +0 -30
  485. package/build/components/block-preview/live.js.map +0 -1
  486. package/build-module/components/block-preview/live.js +0 -20
  487. package/build-module/components/block-preview/live.js.map +0 -1
  488. package/src/components/block-preview/live.js +0 -19
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { map, find, filter, orderBy } from 'lodash';
4
+ import { map, find } from 'lodash';
5
5
  import createSelector from 'rememo';
6
6
 
7
7
  /**
@@ -27,6 +27,7 @@ import deprecated from '@wordpress/deprecated';
27
27
  * Internal dependencies
28
28
  */
29
29
  import { mapRichTextSettings } from './utils';
30
+ import { orderBy } from '../utils/sorting';
30
31
 
31
32
  /**
32
33
  * A block selection object.
@@ -65,12 +66,12 @@ const EMPTY_ARRAY = [];
65
66
  * @return {string} Block name.
66
67
  */
67
68
  export function getBlockName( state, clientId ) {
68
- const block = state.blocks.byClientId[ clientId ];
69
+ const block = state.blocks.byClientId.get( clientId );
69
70
  const socialLinkName = 'core/social-link';
70
71
 
71
72
  if ( Platform.OS !== 'web' && block?.name === socialLinkName ) {
72
- const attributes = state.blocks.attributes[ clientId ];
73
- const { service } = attributes;
73
+ const attributes = state.blocks.attributes.get( clientId );
74
+ const { service } = attributes ?? {};
74
75
 
75
76
  return service ? `${ socialLinkName }-${ service }` : socialLinkName;
76
77
  }
@@ -86,7 +87,7 @@ export function getBlockName( state, clientId ) {
86
87
  * @return {boolean} Is Valid.
87
88
  */
88
89
  export function isBlockValid( state, clientId ) {
89
- const block = state.blocks.byClientId[ clientId ];
90
+ const block = state.blocks.byClientId.get( clientId );
90
91
  return !! block && block.isValid;
91
92
  }
92
93
 
@@ -100,12 +101,12 @@ export function isBlockValid( state, clientId ) {
100
101
  * @return {Object?} Block attributes.
101
102
  */
102
103
  export function getBlockAttributes( state, clientId ) {
103
- const block = state.blocks.byClientId[ clientId ];
104
+ const block = state.blocks.byClientId.get( clientId );
104
105
  if ( ! block ) {
105
106
  return null;
106
107
  }
107
108
 
108
- return state.blocks.attributes[ clientId ];
109
+ return state.blocks.attributes.get( clientId );
109
110
  }
110
111
 
111
112
  /**
@@ -130,29 +131,27 @@ export function getBlockAttributes( state, clientId ) {
130
131
  * @return {Object} Parsed block object.
131
132
  */
132
133
  export function getBlock( state, clientId ) {
133
- const block = state.blocks.byClientId[ clientId ];
134
- if ( ! block ) {
134
+ if ( ! state.blocks.byClientId.has( clientId ) ) {
135
135
  return null;
136
136
  }
137
137
 
138
- return state.blocks.tree[ clientId ];
138
+ return state.blocks.tree.get( clientId );
139
139
  }
140
140
 
141
141
  export const __unstableGetBlockWithoutInnerBlocks = createSelector(
142
142
  ( state, clientId ) => {
143
- const block = state.blocks.byClientId[ clientId ];
144
- if ( ! block ) {
143
+ if ( ! state.blocks.byClientId.has( clientId ) ) {
145
144
  return null;
146
145
  }
147
146
 
148
147
  return {
149
- ...block,
148
+ ...state.blocks.byClientId.get( clientId ),
150
149
  attributes: getBlockAttributes( state, clientId ),
151
150
  };
152
151
  },
153
152
  ( state, clientId ) => [
154
- state.blocks.byClientId[ clientId ],
155
- state.blocks.attributes[ clientId ],
153
+ state.blocks.byClientId.get( clientId ),
154
+ state.blocks.attributes.get( clientId ),
156
155
  ]
157
156
  );
158
157
 
@@ -171,7 +170,7 @@ export function getBlocks( state, rootClientId ) {
171
170
  ! rootClientId || ! areInnerBlocksControlled( state, rootClientId )
172
171
  ? rootClientId || ''
173
172
  : 'controlled||' + rootClientId;
174
- return state.blocks.tree[ treeKey ]?.innerBlocks || EMPTY_ARRAY;
173
+ return state.blocks.tree.get( treeKey )?.innerBlocks || EMPTY_ARRAY;
175
174
  }
176
175
 
177
176
  /**
@@ -274,7 +273,7 @@ export const getGlobalBlockCount = createSelector(
274
273
  return clientIds.length;
275
274
  }
276
275
  return clientIds.reduce( ( accumulator, clientId ) => {
277
- const block = state.blocks.byClientId[ clientId ];
276
+ const block = state.blocks.byClientId.get( clientId );
278
277
  return block.name === blockName ? accumulator + 1 : accumulator;
279
278
  }, 0 );
280
279
  },
@@ -296,7 +295,7 @@ export const __experimentalGetGlobalBlocksByName = createSelector(
296
295
  }
297
296
  const clientIds = getClientIdsWithDescendants( state );
298
297
  const foundBlocks = clientIds.filter( ( clientId ) => {
299
- const block = state.blocks.byClientId[ clientId ];
298
+ const block = state.blocks.byClientId.get( clientId );
300
299
  return block.name === blockName;
301
300
  } );
302
301
  return foundBlocks.length > 0 ? foundBlocks : EMPTY_ARRAY;
@@ -322,7 +321,7 @@ export const getBlocksByClientId = createSelector(
322
321
  ( state, clientIds ) =>
323
322
  map(
324
323
  Array.isArray( clientIds ) ? clientIds : [ clientIds ],
325
- ( clientId ) => state.blocks.tree[ clientId ]
324
+ ( clientId ) => state.blocks.tree.get( clientId )
326
325
  )
327
326
  );
328
327
 
@@ -463,8 +462,8 @@ export function getSelectedBlock( state ) {
463
462
  * @return {?string} Root client ID, if exists
464
463
  */
465
464
  export function getBlockRootClientId( state, clientId ) {
466
- return state.blocks.parents[ clientId ] !== undefined
467
- ? state.blocks.parents[ clientId ]
465
+ return state.blocks.parents.has( clientId )
466
+ ? state.blocks.parents.get( clientId )
468
467
  : null;
469
468
  }
470
469
 
@@ -481,8 +480,8 @@ export const getBlockParents = createSelector(
481
480
  ( state, clientId, ascending = false ) => {
482
481
  const parents = [];
483
482
  let current = clientId;
484
- while ( !! state.blocks.parents[ current ] ) {
485
- current = state.blocks.parents[ current ];
483
+ while ( !! state.blocks.parents.get( current ) ) {
484
+ current = state.blocks.parents.get( current );
486
485
  parents.push( current );
487
486
  }
488
487
 
@@ -509,24 +508,20 @@ export const getBlockParentsByBlockName = createSelector(
509
508
  ( state, clientId, blockName, ascending = false ) => {
510
509
  const parents = getBlockParents( state, clientId, ascending );
511
510
  return map(
512
- filter(
513
- map( parents, ( id ) => ( {
514
- id,
515
- name: getBlockName( state, id ),
516
- } ) ),
517
- ( { name } ) => {
518
- if ( Array.isArray( blockName ) ) {
519
- return blockName.includes( name );
520
- }
521
- return name === blockName;
511
+ map( parents, ( id ) => ( {
512
+ id,
513
+ name: getBlockName( state, id ),
514
+ } ) ).filter( ( { name } ) => {
515
+ if ( Array.isArray( blockName ) ) {
516
+ return blockName.includes( name );
522
517
  }
523
- ),
518
+ return name === blockName;
519
+ } ),
524
520
  ( { id } ) => id
525
521
  );
526
522
  },
527
523
  ( state ) => [ state.blocks.parents ]
528
524
  );
529
-
530
525
  /**
531
526
  * Given a block client ID, returns the root of the hierarchy from which the block is nested, return the block itself for root level blocks.
532
527
  *
@@ -540,7 +535,7 @@ export function getBlockHierarchyRootClientId( state, clientId ) {
540
535
  let parent;
541
536
  do {
542
537
  parent = current;
543
- current = state.blocks.parents[ current ];
538
+ current = state.blocks.parents.get( current );
544
539
  } while ( current );
545
540
  return parent;
546
541
  }
@@ -617,7 +612,7 @@ export function getAdjacentBlockClientId( state, startClientId, modifier = 1 ) {
617
612
  }
618
613
 
619
614
  const { order } = state.blocks;
620
- const orderSet = order[ rootClientId ];
615
+ const orderSet = order.get( rootClientId );
621
616
  const index = orderSet.indexOf( startClientId );
622
617
  const nextIndex = index + 1 * modifier;
623
618
 
@@ -1132,7 +1127,7 @@ export const __unstableGetSelectedBlocksWithPartialSelection = ( state ) => {
1132
1127
  * @return {Array} Ordered client IDs of editor blocks.
1133
1128
  */
1134
1129
  export function getBlockOrder( state, rootClientId ) {
1135
- return state.blocks.order[ rootClientId || '' ] || EMPTY_ARRAY;
1130
+ return state.blocks.order.get( rootClientId || '' ) || EMPTY_ARRAY;
1136
1131
  }
1137
1132
 
1138
1133
  /**
@@ -1431,19 +1426,14 @@ export function getTemplate( state ) {
1431
1426
  * @param {Object} state Editor state.
1432
1427
  * @param {?string} rootClientId Optional block root client ID.
1433
1428
  *
1434
- * @return {?string} Block Template Lock
1429
+ * @return {string|false} Block Template Lock
1435
1430
  */
1436
1431
  export function getTemplateLock( state, rootClientId ) {
1437
1432
  if ( ! rootClientId ) {
1438
- return state.settings.templateLock;
1439
- }
1440
-
1441
- const blockListSettings = getBlockListSettings( state, rootClientId );
1442
- if ( ! blockListSettings ) {
1443
- return undefined;
1433
+ return state.settings.templateLock ?? false;
1444
1434
  }
1445
1435
 
1446
- return blockListSettings.templateLock;
1436
+ return getBlockListSettings( state, rootClientId )?.templateLock ?? false;
1447
1437
  }
1448
1438
 
1449
1439
  const checkAllowList = ( list, item, defaultResult = null ) => {
@@ -1598,7 +1588,7 @@ export const canInsertBlockType = createSelector(
1598
1588
  canInsertBlockTypeUnmemoized,
1599
1589
  ( state, blockName, rootClientId ) => [
1600
1590
  state.blockListSettings[ rootClientId ],
1601
- state.blocks.byClientId[ rootClientId ],
1591
+ state.blocks.byClientId.get( rootClientId ),
1602
1592
  state.settings.allowedBlockTypes,
1603
1593
  state.settings.templateLock,
1604
1594
  ]
@@ -2111,7 +2101,7 @@ export const getBlockTransformItems = createSelector(
2111
2101
  'desc'
2112
2102
  );
2113
2103
  },
2114
- ( state, rootClientId ) => [
2104
+ ( state, blocks, rootClientId ) => [
2115
2105
  state.blockListSettings[ rootClientId ],
2116
2106
  state.blocks.byClientId,
2117
2107
  state.preferences.insertUsage,
@@ -2167,7 +2157,7 @@ export const __experimentalGetAllowedBlocks = createSelector(
2167
2157
  return;
2168
2158
  }
2169
2159
 
2170
- return filter( getBlockTypes(), ( blockType ) =>
2160
+ return getBlockTypes().filter( ( blockType ) =>
2171
2161
  canIncludeBlockTypeInInserter( state, blockType, rootClientId )
2172
2162
  );
2173
2163
  },
@@ -2214,7 +2204,7 @@ export const __experimentalGetDirectInsertBlock = createSelector(
2214
2204
  },
2215
2205
  ( state, rootClientId ) => [
2216
2206
  state.blockListSettings[ rootClientId ],
2217
- state.blocks.tree[ rootClientId ],
2207
+ state.blocks.tree.get( rootClientId ),
2218
2208
  ]
2219
2209
  );
2220
2210
 
@@ -2292,8 +2282,7 @@ const getAllAllowedPatterns = createSelector(
2292
2282
  export const __experimentalGetAllowedPatterns = createSelector(
2293
2283
  ( state, rootClientId = null ) => {
2294
2284
  const availableParsedPatterns = getAllAllowedPatterns( state );
2295
- const patternsAllowed = filter(
2296
- availableParsedPatterns,
2285
+ const patternsAllowed = availableParsedPatterns.filter(
2297
2286
  ( { blocks } ) =>
2298
2287
  blocks.every( ( { name } ) =>
2299
2288
  canInsertBlockType( state, name, rootClientId )
@@ -2307,7 +2296,7 @@ export const __experimentalGetAllowedPatterns = createSelector(
2307
2296
  state.settings.allowedBlockTypes,
2308
2297
  state.settings.templateLock,
2309
2298
  state.blockListSettings[ rootClientId ],
2310
- state.blocks.byClientId[ rootClientId ],
2299
+ state.blocks.byClientId.get( rootClientId ),
2311
2300
  ]
2312
2301
  );
2313
2302
 
@@ -2340,7 +2329,7 @@ export const __experimentalGetPatternsByBlockTypes = createSelector(
2340
2329
  )
2341
2330
  );
2342
2331
  },
2343
- ( state, rootClientId ) => [
2332
+ ( state, blockNames, rootClientId ) => [
2344
2333
  ...__experimentalGetAllowedPatterns.getDependants(
2345
2334
  state,
2346
2335
  rootClientId
@@ -2401,7 +2390,7 @@ export const __experimentalGetPatternTransformItems = createSelector(
2401
2390
  rootClientId
2402
2391
  );
2403
2392
  },
2404
- ( state, rootClientId ) => [
2393
+ ( state, blocks, rootClientId ) => [
2405
2394
  ...__experimentalGetPatternsByBlockTypes.getDependants(
2406
2395
  state,
2407
2396
  rootClientId
@@ -2664,6 +2653,16 @@ export function wasBlockJustInserted( state, clientId, source ) {
2664
2653
  );
2665
2654
  }
2666
2655
 
2656
+ /**
2657
+ * Gets the client id of the last inserted block.
2658
+ *
2659
+ * @param {Object} state Global application state.
2660
+ * @return {string|undefined} Client Id of the last inserted block.
2661
+ */
2662
+ export function getLastInsertedBlockClientId( state ) {
2663
+ return state?.lastBlockInserted?.clientId;
2664
+ }
2665
+
2667
2666
  /**
2668
2667
  * Tells if the block is visible on the canvas or not.
2669
2668
  *
@@ -2701,8 +2700,8 @@ export const __unstableGetContentLockingParent = createSelector(
2701
2700
  ( state, clientId ) => {
2702
2701
  let current = clientId;
2703
2702
  let result;
2704
- while ( !! state.blocks.parents[ current ] ) {
2705
- current = state.blocks.parents[ current ];
2703
+ while ( state.blocks.parents.has( current ) ) {
2704
+ current = state.blocks.parents.get( current );
2706
2705
  if ( getTemplateLock( state, current ) === 'contentOnly' ) {
2707
2706
  result = current;
2708
2707
  }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import reducer from '../reducer';
5
+
6
+ describe( 'performance', () => {
7
+ const state = reducer( undefined, { type: '@@init' } );
8
+ const blocks = [];
9
+ for ( let i = 0; i < 100000; i++ ) {
10
+ blocks.push( {
11
+ clientId: `block-${ i }`,
12
+ attributes: { content: `paragraph ${ i }` },
13
+ innerBlocks: [],
14
+ } );
15
+ }
16
+
17
+ let preparedState;
18
+
19
+ it( 'should reset blocks', () => {
20
+ preparedState = reducer( state, {
21
+ type: 'RESET_BLOCKS',
22
+ blocks,
23
+ } );
24
+ expect( preparedState ).toBeDefined();
25
+ } );
26
+
27
+ it( 'should update blocks', () => {
28
+ const updatedState = reducer( preparedState, {
29
+ type: 'UPDATE_BLOCK_ATTRIBUTES',
30
+ clientIds: [ 'block-10' ],
31
+ attributes: {
32
+ content: 'updated paragraph 10',
33
+ },
34
+ } );
35
+
36
+ expect( updatedState ).toBeDefined();
37
+ } );
38
+
39
+ it( 'should replace blocks (Enter in paragraphs)', () => {
40
+ const updatedState = reducer( preparedState, {
41
+ type: 'REPLACE_BLOCKS',
42
+ clientIds: [ 'block-10' ],
43
+ blocks: [
44
+ {
45
+ clientId: `block-10`,
46
+ attributes: { content: `paragraph 10` },
47
+ innerBlocks: [],
48
+ },
49
+ {
50
+ clientId: `block-10-2`,
51
+ attributes: { content: '' },
52
+ innerBlocks: [],
53
+ },
54
+ ],
55
+ indexToSelect: 10,
56
+ initialPosition: 0,
57
+ } );
58
+
59
+ expect( updatedState ).toBeDefined();
60
+ } );
61
+
62
+ it( 'should move blocks', () => {
63
+ const updatedState = reducer( preparedState, {
64
+ type: 'MOVE_BLOCKS_DOWN',
65
+ clientIds: [ 'block-10' ],
66
+ rootClientId: '',
67
+ } );
68
+
69
+ expect( updatedState ).toBeDefined();
70
+ } );
71
+ } );