@wordpress/block-editor 7.0.1 → 8.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 (1017) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +47 -4
  3. package/build/components/autocomplete/index.js +1 -1
  4. package/build/components/autocomplete/index.js.map +1 -1
  5. package/build/components/block-actions/index.js +8 -4
  6. package/build/components/block-actions/index.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.js +61 -14
  8. package/build/components/block-alignment-control/ui.js.map +1 -1
  9. package/build/components/block-alignment-control/use-available-alignments.js +25 -3
  10. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  11. package/build/components/block-content-overlay/index.js +2 -4
  12. package/build/components/block-content-overlay/index.js.map +1 -1
  13. package/build/components/block-controls/fill.js +6 -6
  14. package/build/components/block-controls/fill.js.map +1 -1
  15. package/build/components/block-controls/groups.js +3 -1
  16. package/build/components/block-controls/groups.js.map +1 -1
  17. package/build/components/block-controls/hook.js +57 -0
  18. package/build/components/block-controls/hook.js.map +1 -0
  19. package/build/components/block-edit/context.js +6 -5
  20. package/build/components/block-edit/context.js.map +1 -1
  21. package/build/components/block-edit/edit.js +1 -1
  22. package/build/components/block-edit/edit.js.map +1 -1
  23. package/build/components/block-icon/index.js +5 -1
  24. package/build/components/block-icon/index.js.map +1 -1
  25. package/build/components/block-icon/index.native.js +13 -9
  26. package/build/components/block-icon/index.native.js.map +1 -1
  27. package/build/components/block-inspector/index.js +14 -7
  28. package/build/components/block-inspector/index.js.map +1 -1
  29. package/build/components/block-list/block-html.js +5 -0
  30. package/build/components/block-list/block-html.js.map +1 -1
  31. package/build/components/block-list/block-list-item.native.js +31 -12
  32. package/build/components/block-list/block-list-item.native.js.map +1 -1
  33. package/build/components/block-list/block-selection-button.native.js +4 -4
  34. package/build/components/block-list/block-selection-button.native.js.map +1 -1
  35. package/build/components/block-list/block.js +15 -9
  36. package/build/components/block-list/block.js.map +1 -1
  37. package/build/components/block-list/block.native.js +6 -7
  38. package/build/components/block-list/block.native.js.map +1 -1
  39. package/build/components/block-list/grid-item.native.js +68 -0
  40. package/build/components/block-list/grid-item.native.js.map +1 -0
  41. package/build/components/block-list/index.js +19 -15
  42. package/build/components/block-list/index.js.map +1 -1
  43. package/build/components/block-list/index.native.js +13 -9
  44. package/build/components/block-list/index.native.js.map +1 -1
  45. package/build/components/block-list/use-block-props/index.js +6 -6
  46. package/build/components/block-list/use-block-props/index.js.map +1 -1
  47. package/build/components/block-list/use-block-props/use-block-custom-class-name.js +4 -6
  48. package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
  49. package/build/components/block-list/use-block-props/use-block-default-class-name.js +1 -1
  50. package/build/components/block-list/use-block-props/use-block-default-class-name.js.map +1 -1
  51. package/build/components/block-list/use-block-props/use-multi-selection.js +21 -6
  52. package/build/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
  53. package/build/components/block-list/use-in-between-inserter.js +9 -1
  54. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  55. package/build/components/block-list-appender/index.js +9 -1
  56. package/build/components/block-list-appender/index.js.map +1 -1
  57. package/build/components/block-mover/index.js +4 -4
  58. package/build/components/block-mover/index.js.map +1 -1
  59. package/build/components/block-mover/index.native.js +4 -4
  60. package/build/components/block-mover/index.native.js.map +1 -1
  61. package/build/components/block-navigation/dropdown.js +0 -1
  62. package/build/components/block-navigation/dropdown.js.map +1 -1
  63. package/build/components/block-patterns-list/index.js +1 -8
  64. package/build/components/block-patterns-list/index.js.map +1 -1
  65. package/build/components/block-preview/auto.js +42 -14
  66. package/build/components/block-preview/auto.js.map +1 -1
  67. package/build/components/block-settings/container.native.js +5 -2
  68. package/build/components/block-settings/container.native.js.map +1 -1
  69. package/build/components/block-settings-menu/block-settings-dropdown.js +26 -5
  70. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  71. package/build/components/block-settings-menu-controls/index.js +10 -3
  72. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  73. package/build/components/block-styles/index.js +5 -1
  74. package/build/components/block-styles/index.js.map +1 -1
  75. package/build/components/block-styles/preview.native.js +2 -2
  76. package/build/components/block-styles/preview.native.js.map +1 -1
  77. package/build/components/block-switcher/block-styles-menu.js +1 -1
  78. package/build/components/block-switcher/block-styles-menu.js.map +1 -1
  79. package/build/components/block-switcher/index.js +10 -3
  80. package/build/components/block-switcher/index.js.map +1 -1
  81. package/build/components/block-title/index.js +3 -2
  82. package/build/components/block-title/index.js.map +1 -1
  83. package/build/components/block-toolbar/index.js +3 -0
  84. package/build/components/block-toolbar/index.js.map +1 -1
  85. package/build/components/block-tools/block-contextual-toolbar.js +1 -1
  86. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  87. package/build/components/block-tools/block-popover.js +8 -7
  88. package/build/components/block-tools/block-popover.js.map +1 -1
  89. package/build/components/block-tools/block-selection-button.js +2 -4
  90. package/build/components/block-tools/block-selection-button.js.map +1 -1
  91. package/build/components/block-tools/index.js +4 -1
  92. package/build/components/block-tools/index.js.map +1 -1
  93. package/build/components/block-tools/insertion-point.js +96 -7
  94. package/build/components/block-tools/insertion-point.js.map +1 -1
  95. package/build/components/block-types-list/index.native.js +3 -2
  96. package/build/components/block-types-list/index.native.js.map +1 -1
  97. package/build/components/border-radius-control/index.js.map +1 -1
  98. package/build/components/border-radius-control/utils.js +17 -8
  99. package/build/components/border-radius-control/utils.js.map +1 -1
  100. package/build/components/colors/utils.js +11 -3
  101. package/build/components/colors/utils.js.map +1 -1
  102. package/build/components/colors-gradients/control.js +22 -57
  103. package/build/components/colors-gradients/control.js.map +1 -1
  104. package/build/components/colors-gradients/panel-color-gradient-settings.js +83 -7
  105. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  106. package/build/components/contrast-checker/index.js +18 -12
  107. package/build/components/contrast-checker/index.js.map +1 -1
  108. package/build/components/copy-handler/index.js +9 -3
  109. package/build/components/copy-handler/index.js.map +1 -1
  110. package/build/components/default-block-appender/index.js +2 -2
  111. package/build/components/default-block-appender/index.js.map +1 -1
  112. package/build/components/duotone-control/index.js +41 -39
  113. package/build/components/duotone-control/index.js.map +1 -1
  114. package/build/components/editor-styles/index.js +9 -3
  115. package/build/components/editor-styles/index.js.map +1 -1
  116. package/build/components/font-appearance-control/index.js +44 -12
  117. package/build/components/font-appearance-control/index.js.map +1 -1
  118. package/build/components/font-sizes/index.native.js +24 -0
  119. package/build/components/font-sizes/index.native.js.map +1 -1
  120. package/build/components/iframe/index.js +46 -63
  121. package/build/components/iframe/index.js.map +1 -1
  122. package/build/components/image-editor/aspect-ratio-dropdown.js +126 -0
  123. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
  124. package/build/components/image-editor/constants.js +16 -0
  125. package/build/components/image-editor/constants.js.map +1 -0
  126. package/build/components/image-editor/context.js +59 -0
  127. package/build/components/image-editor/context.js.map +1 -0
  128. package/build/components/image-editor/cropper.js +83 -0
  129. package/build/components/image-editor/cropper.js.map +1 -0
  130. package/build/components/image-editor/form-controls.js +36 -0
  131. package/build/components/image-editor/form-controls.js.map +1 -0
  132. package/build/components/image-editor/index.js +60 -0
  133. package/build/components/image-editor/index.js.map +1 -0
  134. package/build/components/image-editor/rotation-button.js +37 -0
  135. package/build/components/image-editor/rotation-button.js.map +1 -0
  136. package/build/components/image-editor/use-save-image.js +84 -0
  137. package/build/components/image-editor/use-save-image.js.map +1 -0
  138. package/build/components/image-editor/use-transform-image.js +135 -0
  139. package/build/components/image-editor/use-transform-image.js.map +1 -0
  140. package/build/components/image-editor/zoom-dropdown.js +55 -0
  141. package/build/components/image-editor/zoom-dropdown.js.map +1 -0
  142. package/build/components/image-size-control/use-dimension-handler.js +14 -3
  143. package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
  144. package/build/components/index.js +42 -37
  145. package/build/components/index.js.map +1 -1
  146. package/build/components/index.native.js +12 -7
  147. package/build/components/index.native.js.map +1 -1
  148. package/build/components/inner-blocks/button-block-appender.js +11 -1
  149. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  150. package/build/components/inner-blocks/index.js +28 -10
  151. package/build/components/inner-blocks/index.js.map +1 -1
  152. package/build/components/inner-blocks/index.native.js +42 -4
  153. package/build/components/inner-blocks/index.native.js.map +1 -1
  154. package/build/components/inner-blocks/use-nested-settings-update.js +24 -13
  155. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  156. package/build/components/inserter/block-patterns-explorer/explorer.js +62 -0
  157. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
  158. package/build/components/inserter/block-patterns-explorer/patterns-list.js +111 -0
  159. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
  160. package/build/components/inserter/block-patterns-explorer/sidebar.js +78 -0
  161. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
  162. package/build/components/inserter/block-patterns-tab.js +74 -35
  163. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  164. package/build/components/inserter/block-types-tab.native.js +3 -6
  165. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  166. package/build/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
  167. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  168. package/build/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  169. package/build/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  170. package/build/components/inserter/index.js +12 -4
  171. package/build/components/inserter/index.js.map +1 -1
  172. package/build/components/inserter/index.native.js +1 -7
  173. package/build/components/inserter/index.native.js.map +1 -1
  174. package/build/components/inserter/library.js +2 -0
  175. package/build/components/inserter/library.js.map +1 -1
  176. package/build/components/inserter/menu.js +2 -1
  177. package/build/components/inserter/menu.js.map +1 -1
  178. package/build/components/inserter/menu.native.js +18 -17
  179. package/build/components/inserter/menu.native.js.map +1 -1
  180. package/build/components/inserter/pattern-panel.js +19 -10
  181. package/build/components/inserter/pattern-panel.js.map +1 -1
  182. package/build/components/inserter/preview-panel.js +1 -1
  183. package/build/components/inserter/preview-panel.js.map +1 -1
  184. package/build/components/inserter/quick-inserter.js +2 -1
  185. package/build/components/inserter/quick-inserter.js.map +1 -1
  186. package/build/components/inserter/reusable-blocks-tab.native.js +5 -6
  187. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  188. package/build/components/inserter/search-results.native.js +9 -2
  189. package/build/components/inserter/search-results.native.js.map +1 -1
  190. package/build/components/inserter/tabs.native.js +1 -4
  191. package/build/components/inserter/tabs.native.js.map +1 -1
  192. package/build/components/inserter/utils.native.js +44 -0
  193. package/build/components/inserter/utils.native.js.map +1 -0
  194. package/build/components/inspector-controls/block-support-slot-container.js +28 -0
  195. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -0
  196. package/build/components/inspector-controls/block-support-tools-panel.js +78 -0
  197. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -0
  198. package/build/components/inspector-controls/fill.js +64 -0
  199. package/build/components/inspector-controls/fill.js.map +1 -0
  200. package/build/components/inspector-controls/{index.native.js → fill.native.js} +20 -19
  201. package/build/components/inspector-controls/fill.native.js.map +1 -0
  202. package/build/components/inspector-controls/groups.js +25 -0
  203. package/build/components/inspector-controls/groups.js.map +1 -0
  204. package/build/components/inspector-controls/index.js +22 -20
  205. package/build/components/inspector-controls/index.js.map +1 -1
  206. package/build/components/inspector-controls/slot.js +67 -0
  207. package/build/components/inspector-controls/slot.js.map +1 -0
  208. package/build/components/inspector-controls/slot.native.js +38 -0
  209. package/build/components/inspector-controls/slot.native.js.map +1 -0
  210. package/build/components/letter-spacing-control/index.js +9 -6
  211. package/build/components/letter-spacing-control/index.js.map +1 -1
  212. package/build/components/line-height-control/index.native.js +39 -0
  213. package/build/components/line-height-control/index.native.js.map +1 -0
  214. package/build/components/link-control/index.js +93 -34
  215. package/build/components/link-control/index.js.map +1 -1
  216. package/build/components/link-control/link-preview.js +45 -15
  217. package/build/components/link-control/link-preview.js.map +1 -1
  218. package/build/components/link-control/search-input.js +25 -7
  219. package/build/components/link-control/search-input.js.map +1 -1
  220. package/build/components/list-view/block-contents.js +1 -20
  221. package/build/components/list-view/block-contents.js.map +1 -1
  222. package/build/components/list-view/block.js +54 -69
  223. package/build/components/list-view/block.js.map +1 -1
  224. package/build/components/list-view/branch.js +102 -76
  225. package/build/components/list-view/branch.js.map +1 -1
  226. package/build/components/list-view/index.js +53 -23
  227. package/build/components/list-view/index.js.map +1 -1
  228. package/build/components/list-view/leaf.js +2 -2
  229. package/build/components/list-view/leaf.js.map +1 -1
  230. package/build/components/list-view/list-item.js +3 -2
  231. package/build/components/list-view/list-item.js.map +1 -1
  232. package/build/components/list-view/use-list-view-client-ids.js +13 -54
  233. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  234. package/build/components/media-placeholder/index.js +35 -21
  235. package/build/components/media-placeholder/index.js.map +1 -1
  236. package/build/components/media-placeholder/index.native.js +2 -1
  237. package/build/components/media-placeholder/index.native.js.map +1 -1
  238. package/build/components/media-replace-flow/index.js +5 -3
  239. package/build/components/media-replace-flow/index.js.map +1 -1
  240. package/build/components/navigable-toolbar/index.js +1 -4
  241. package/build/components/navigable-toolbar/index.js.map +1 -1
  242. package/build/components/observe-typing/index.js +1 -1
  243. package/build/components/observe-typing/index.js.map +1 -1
  244. package/build/components/plain-text/index.native.js +30 -1
  245. package/build/components/plain-text/index.native.js.map +1 -1
  246. package/build/components/rich-text/embed-handler-picker.native.js +66 -0
  247. package/build/components/rich-text/embed-handler-picker.native.js.map +1 -0
  248. package/build/components/rich-text/format-edit.js +28 -2
  249. package/build/components/rich-text/format-edit.js.map +1 -1
  250. package/build/components/rich-text/format-toolbar/index.js +32 -11
  251. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  252. package/build/components/rich-text/index.js +29 -7
  253. package/build/components/rich-text/index.js.map +1 -1
  254. package/build/components/rich-text/index.native.js +43 -5
  255. package/build/components/rich-text/index.native.js.map +1 -1
  256. package/build/components/rich-text/input-event.js +25 -24
  257. package/build/components/rich-text/input-event.js.map +1 -1
  258. package/build/components/rich-text/shortcut.js +23 -9
  259. package/build/components/rich-text/shortcut.js.map +1 -1
  260. package/build/components/rich-text/use-input-events.js +27 -0
  261. package/build/components/rich-text/use-input-events.js.map +1 -0
  262. package/build/components/rich-text/use-paste-handler.js +45 -10
  263. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  264. package/build/components/rich-text/use-shortcuts.js +27 -0
  265. package/build/components/rich-text/use-shortcuts.js.map +1 -0
  266. package/build/components/rich-text/utils.js +22 -0
  267. package/build/components/rich-text/utils.js.map +1 -1
  268. package/build/components/typewriter/index.js +1 -1
  269. package/build/components/typewriter/index.js.map +1 -1
  270. package/build/components/url-input/index.js +25 -11
  271. package/build/components/url-input/index.js.map +1 -1
  272. package/build/components/use-display-block-controls/index.js +5 -7
  273. package/build/components/use-display-block-controls/index.js.map +1 -1
  274. package/build/components/use-moving-animation/index.js +13 -10
  275. package/build/components/use-moving-animation/index.js.map +1 -1
  276. package/build/components/use-on-block-drop/index.js +2 -1
  277. package/build/components/use-on-block-drop/index.js.map +1 -1
  278. package/build/components/use-resize-canvas/index.js +2 -13
  279. package/build/components/use-resize-canvas/index.js.map +1 -1
  280. package/build/components/use-setting/index.js +49 -14
  281. package/build/components/use-setting/index.js.map +1 -1
  282. package/build/components/writing-flow/use-multi-selection.js +6 -0
  283. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  284. package/build/components/writing-flow/use-tab-nav.js +18 -3
  285. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  286. package/build/hooks/align.js +14 -14
  287. package/build/hooks/align.js.map +1 -1
  288. package/build/hooks/anchor.js +4 -2
  289. package/build/hooks/anchor.js.map +1 -1
  290. package/build/hooks/border-color.js +9 -5
  291. package/build/hooks/border-color.js.map +1 -1
  292. package/build/hooks/border.js +5 -5
  293. package/build/hooks/border.js.map +1 -1
  294. package/build/hooks/color-panel.js +5 -2
  295. package/build/hooks/color-panel.js.map +1 -1
  296. package/build/hooks/color.js +6 -4
  297. package/build/hooks/color.js.map +1 -1
  298. package/build/hooks/compat.js +23 -0
  299. package/build/hooks/compat.js.map +1 -0
  300. package/build/hooks/custom-class-name.js +3 -1
  301. package/build/hooks/custom-class-name.js.map +1 -1
  302. package/build/hooks/dimensions.js +63 -28
  303. package/build/hooks/dimensions.js.map +1 -1
  304. package/build/hooks/duotone.js +63 -18
  305. package/build/hooks/duotone.js.map +1 -1
  306. package/build/hooks/font-appearance.js +49 -6
  307. package/build/hooks/font-appearance.js.map +1 -1
  308. package/build/hooks/font-family.js +123 -32
  309. package/build/hooks/font-family.js.map +1 -1
  310. package/build/hooks/font-size.js +51 -9
  311. package/build/hooks/font-size.js.map +1 -1
  312. package/build/hooks/gap.js +163 -0
  313. package/build/hooks/gap.js.map +1 -0
  314. package/build/hooks/index.js +12 -0
  315. package/build/hooks/index.js.map +1 -1
  316. package/build/hooks/index.native.js +10 -0
  317. package/build/hooks/index.native.js.map +1 -1
  318. package/build/hooks/layout.js +47 -30
  319. package/build/hooks/layout.js.map +1 -1
  320. package/build/hooks/letter-spacing.js +45 -8
  321. package/build/hooks/letter-spacing.js.map +1 -1
  322. package/build/hooks/line-height.js +45 -8
  323. package/build/hooks/line-height.js.map +1 -1
  324. package/build/hooks/lock.js +43 -0
  325. package/build/hooks/lock.js.map +1 -0
  326. package/build/hooks/margin.js +6 -3
  327. package/build/hooks/margin.js.map +1 -1
  328. package/build/hooks/padding.js +6 -3
  329. package/build/hooks/padding.js.map +1 -1
  330. package/build/hooks/style.js +39 -11
  331. package/build/hooks/style.js.map +1 -1
  332. package/build/hooks/text-decoration.js +42 -6
  333. package/build/hooks/text-decoration.js.map +1 -1
  334. package/build/hooks/text-transform.js +42 -6
  335. package/build/hooks/text-transform.js.map +1 -1
  336. package/build/hooks/typography.js +109 -9
  337. package/build/hooks/typography.js.map +1 -1
  338. package/build/hooks/typography.native.js +60 -0
  339. package/build/hooks/typography.native.js.map +1 -0
  340. package/build/hooks/use-cached-truthy.js +29 -0
  341. package/build/hooks/use-cached-truthy.js.map +1 -0
  342. package/build/index.js +7 -0
  343. package/build/index.js.map +1 -1
  344. package/build/layouts/flex.js +215 -11
  345. package/build/layouts/flex.js.map +1 -1
  346. package/build/layouts/flow.js +99 -6
  347. package/build/layouts/flow.js.map +1 -1
  348. package/build/store/actions.js +331 -266
  349. package/build/store/actions.js.map +1 -1
  350. package/build/store/defaults.js +2 -0
  351. package/build/store/defaults.js.map +1 -1
  352. package/build/store/defaults.native.js +16 -1
  353. package/build/store/defaults.native.js.map +1 -1
  354. package/build/store/index.js +1 -3
  355. package/build/store/index.js.map +1 -1
  356. package/build/store/reducer.js +165 -114
  357. package/build/store/reducer.js.map +1 -1
  358. package/build/store/selectors.js +203 -115
  359. package/build/store/selectors.js.map +1 -1
  360. package/build/utils/index.js +10 -1
  361. package/build/utils/index.js.map +1 -1
  362. package/build/utils/parse-css-unit-to-px.js +295 -0
  363. package/build/utils/parse-css-unit-to-px.js.map +1 -0
  364. package/build/utils/transform-styles/transforms/wrap.js +16 -0
  365. package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
  366. package/build-module/components/autocomplete/index.js +2 -2
  367. package/build-module/components/autocomplete/index.js.map +1 -1
  368. package/build-module/components/block-actions/index.js +8 -4
  369. package/build-module/components/block-actions/index.js.map +1 -1
  370. package/build-module/components/block-alignment-control/ui.js +64 -17
  371. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  372. package/build-module/components/block-alignment-control/use-available-alignments.js +25 -3
  373. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  374. package/build-module/components/block-content-overlay/index.js +2 -4
  375. package/build-module/components/block-content-overlay/index.js.map +1 -1
  376. package/build-module/components/block-controls/fill.js +6 -5
  377. package/build-module/components/block-controls/fill.js.map +1 -1
  378. package/build-module/components/block-controls/groups.js +3 -1
  379. package/build-module/components/block-controls/groups.js.map +1 -1
  380. package/build-module/components/block-controls/hook.js +42 -0
  381. package/build-module/components/block-controls/hook.js.map +1 -0
  382. package/build-module/components/block-edit/context.js +4 -4
  383. package/build-module/components/block-edit/context.js.map +1 -1
  384. package/build-module/components/block-edit/edit.js +1 -1
  385. package/build-module/components/block-edit/edit.js.map +1 -1
  386. package/build-module/components/block-icon/index.js +5 -1
  387. package/build-module/components/block-icon/index.js.map +1 -1
  388. package/build-module/components/block-icon/index.native.js +14 -9
  389. package/build-module/components/block-icon/index.native.js.map +1 -1
  390. package/build-module/components/block-inspector/index.js +12 -6
  391. package/build-module/components/block-inspector/index.js.map +1 -1
  392. package/build-module/components/block-list/block-html.js +5 -0
  393. package/build-module/components/block-list/block-html.js.map +1 -1
  394. package/build-module/components/block-list/block-list-item.native.js +30 -12
  395. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  396. package/build-module/components/block-list/block-selection-button.native.js +3 -4
  397. package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
  398. package/build-module/components/block-list/block.js +16 -10
  399. package/build-module/components/block-list/block.js.map +1 -1
  400. package/build-module/components/block-list/block.native.js +6 -7
  401. package/build-module/components/block-list/block.native.js.map +1 -1
  402. package/build-module/components/block-list/grid-item.native.js +57 -0
  403. package/build-module/components/block-list/grid-item.native.js.map +1 -0
  404. package/build-module/components/block-list/index.js +17 -14
  405. package/build-module/components/block-list/index.js.map +1 -1
  406. package/build-module/components/block-list/index.native.js +13 -9
  407. package/build-module/components/block-list/index.native.js.map +1 -1
  408. package/build-module/components/block-list/use-block-props/index.js +7 -7
  409. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  410. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js +5 -7
  411. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
  412. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js +2 -2
  413. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js.map +1 -1
  414. package/build-module/components/block-list/use-block-props/use-multi-selection.js +21 -6
  415. package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
  416. package/build-module/components/block-list/use-in-between-inserter.js +9 -1
  417. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  418. package/build-module/components/block-list-appender/index.js +9 -1
  419. package/build-module/components/block-list-appender/index.js.map +1 -1
  420. package/build-module/components/block-mover/index.js +4 -4
  421. package/build-module/components/block-mover/index.js.map +1 -1
  422. package/build-module/components/block-mover/index.native.js +4 -4
  423. package/build-module/components/block-mover/index.native.js.map +1 -1
  424. package/build-module/components/block-navigation/dropdown.js +0 -1
  425. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  426. package/build-module/components/block-patterns-list/index.js +1 -6
  427. package/build-module/components/block-patterns-list/index.js.map +1 -1
  428. package/build-module/components/block-preview/auto.js +40 -16
  429. package/build-module/components/block-preview/auto.js.map +1 -1
  430. package/build-module/components/block-settings/container.native.js +6 -3
  431. package/build-module/components/block-settings/container.native.js.map +1 -1
  432. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -7
  433. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  434. package/build-module/components/block-settings-menu-controls/index.js +10 -3
  435. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  436. package/build-module/components/block-styles/index.js +5 -1
  437. package/build-module/components/block-styles/index.js.map +1 -1
  438. package/build-module/components/block-styles/preview.native.js +2 -2
  439. package/build-module/components/block-styles/preview.native.js.map +1 -1
  440. package/build-module/components/block-switcher/block-styles-menu.js +1 -1
  441. package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
  442. package/build-module/components/block-switcher/index.js +10 -3
  443. package/build-module/components/block-switcher/index.js.map +1 -1
  444. package/build-module/components/block-title/index.js +3 -2
  445. package/build-module/components/block-title/index.js.map +1 -1
  446. package/build-module/components/block-toolbar/index.js +3 -0
  447. package/build-module/components/block-toolbar/index.js.map +1 -1
  448. package/build-module/components/block-tools/block-contextual-toolbar.js +1 -1
  449. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  450. package/build-module/components/block-tools/block-popover.js +9 -8
  451. package/build-module/components/block-tools/block-popover.js.map +1 -1
  452. package/build-module/components/block-tools/block-selection-button.js +2 -4
  453. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  454. package/build-module/components/block-tools/index.js +4 -1
  455. package/build-module/components/block-tools/index.js.map +1 -1
  456. package/build-module/components/block-tools/insertion-point.js +96 -8
  457. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  458. package/build-module/components/block-types-list/index.native.js +3 -2
  459. package/build-module/components/block-types-list/index.native.js.map +1 -1
  460. package/build-module/components/border-radius-control/index.js.map +1 -1
  461. package/build-module/components/border-radius-control/utils.js +16 -9
  462. package/build-module/components/border-radius-control/utils.js.map +1 -1
  463. package/build-module/components/colors/utils.js +9 -3
  464. package/build-module/components/colors/utils.js.map +1 -1
  465. package/build-module/components/colors-gradients/control.js +26 -63
  466. package/build-module/components/colors-gradients/control.js.map +1 -1
  467. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +84 -7
  468. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  469. package/build-module/components/contrast-checker/index.js +13 -10
  470. package/build-module/components/contrast-checker/index.js.map +1 -1
  471. package/build-module/components/copy-handler/index.js +9 -3
  472. package/build-module/components/copy-handler/index.js.map +1 -1
  473. package/build-module/components/default-block-appender/index.js +2 -2
  474. package/build-module/components/default-block-appender/index.js.map +1 -1
  475. package/build-module/components/duotone-control/index.js +43 -39
  476. package/build-module/components/duotone-control/index.js.map +1 -1
  477. package/build-module/components/editor-styles/index.js +7 -3
  478. package/build-module/components/editor-styles/index.js.map +1 -1
  479. package/build-module/components/font-appearance-control/index.js +40 -12
  480. package/build-module/components/font-appearance-control/index.js.map +1 -1
  481. package/build-module/components/font-sizes/index.native.js +3 -1
  482. package/build-module/components/font-sizes/index.native.js.map +1 -1
  483. package/build-module/components/iframe/index.js +47 -65
  484. package/build-module/components/iframe/index.js.map +1 -1
  485. package/build-module/components/image-editor/aspect-ratio-dropdown.js +115 -0
  486. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
  487. package/build-module/components/image-editor/constants.js +7 -0
  488. package/build-module/components/image-editor/constants.js.map +1 -0
  489. package/build-module/components/image-editor/context.js +44 -0
  490. package/build-module/components/image-editor/context.js.map +1 -0
  491. package/build-module/components/image-editor/cropper.js +69 -0
  492. package/build-module/components/image-editor/cropper.js.map +1 -0
  493. package/build-module/components/image-editor/form-controls.js +26 -0
  494. package/build-module/components/image-editor/form-controls.js.map +1 -0
  495. package/build-module/components/image-editor/index.js +37 -0
  496. package/build-module/components/image-editor/index.js.map +1 -0
  497. package/build-module/components/image-editor/rotation-button.js +26 -0
  498. package/build-module/components/image-editor/rotation-button.js.map +1 -0
  499. package/build-module/components/image-editor/use-save-image.js +70 -0
  500. package/build-module/components/image-editor/use-save-image.js.map +1 -0
  501. package/build-module/components/image-editor/use-transform-image.js +127 -0
  502. package/build-module/components/image-editor/use-transform-image.js.map +1 -0
  503. package/build-module/components/image-editor/zoom-dropdown.js +43 -0
  504. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -0
  505. package/build-module/components/image-size-control/use-dimension-handler.js +13 -2
  506. package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
  507. package/build-module/components/index.js +5 -6
  508. package/build-module/components/index.js.map +1 -1
  509. package/build-module/components/index.native.js +2 -3
  510. package/build-module/components/index.native.js.map +1 -1
  511. package/build-module/components/inner-blocks/button-block-appender.js +10 -1
  512. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  513. package/build-module/components/inner-blocks/index.js +29 -11
  514. package/build-module/components/inner-blocks/index.js.map +1 -1
  515. package/build-module/components/inner-blocks/index.native.js +41 -5
  516. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  517. package/build-module/components/inner-blocks/use-nested-settings-update.js +24 -13
  518. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  519. package/build-module/components/inserter/block-patterns-explorer/explorer.js +50 -0
  520. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
  521. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +92 -0
  522. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
  523. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +69 -0
  524. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
  525. package/build-module/components/inserter/block-patterns-tab.js +75 -36
  526. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  527. package/build-module/components/inserter/block-types-tab.native.js +2 -5
  528. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  529. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
  530. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  531. package/build-module/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  532. package/build-module/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  533. package/build-module/components/inserter/index.js +12 -4
  534. package/build-module/components/inserter/index.js.map +1 -1
  535. package/build-module/components/inserter/index.native.js +1 -7
  536. package/build-module/components/inserter/index.native.js.map +1 -1
  537. package/build-module/components/inserter/library.js +2 -0
  538. package/build-module/components/inserter/library.js.map +1 -1
  539. package/build-module/components/inserter/menu.js +2 -1
  540. package/build-module/components/inserter/menu.js.map +1 -1
  541. package/build-module/components/inserter/menu.native.js +17 -17
  542. package/build-module/components/inserter/menu.native.js.map +1 -1
  543. package/build-module/components/inserter/pattern-panel.js +21 -13
  544. package/build-module/components/inserter/pattern-panel.js.map +1 -1
  545. package/build-module/components/inserter/preview-panel.js +1 -1
  546. package/build-module/components/inserter/preview-panel.js.map +1 -1
  547. package/build-module/components/inserter/quick-inserter.js +2 -1
  548. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  549. package/build-module/components/inserter/reusable-blocks-tab.native.js +4 -5
  550. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  551. package/build-module/components/inserter/search-results.native.js +8 -2
  552. package/build-module/components/inserter/search-results.native.js.map +1 -1
  553. package/build-module/components/inserter/tabs.native.js +1 -4
  554. package/build-module/components/inserter/tabs.native.js.map +1 -1
  555. package/build-module/components/inserter/utils.native.js +35 -0
  556. package/build-module/components/inserter/utils.native.js.map +1 -0
  557. package/build-module/components/inspector-controls/block-support-slot-container.js +18 -0
  558. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -0
  559. package/build-module/components/inspector-controls/block-support-tools-panel.js +67 -0
  560. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -0
  561. package/build-module/components/inspector-controls/fill.js +50 -0
  562. package/build-module/components/inspector-controls/fill.js.map +1 -0
  563. package/build-module/components/inspector-controls/{index.native.js → fill.native.js} +16 -18
  564. package/build-module/components/inspector-controls/fill.native.js.map +1 -0
  565. package/build-module/components/inspector-controls/groups.js +16 -0
  566. package/build-module/components/inspector-controls/groups.js.map +1 -0
  567. package/build-module/components/inspector-controls/index.js +16 -17
  568. package/build-module/components/inspector-controls/index.js.map +1 -1
  569. package/build-module/components/inspector-controls/slot.js +52 -0
  570. package/build-module/components/inspector-controls/slot.js.map +1 -0
  571. package/build-module/components/inspector-controls/slot.native.js +27 -0
  572. package/build-module/components/inspector-controls/slot.native.js.map +1 -0
  573. package/build-module/components/letter-spacing-control/index.js +9 -6
  574. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  575. package/build-module/components/line-height-control/index.native.js +29 -0
  576. package/build-module/components/line-height-control/index.native.js.map +1 -0
  577. package/build-module/components/link-control/index.js +93 -35
  578. package/build-module/components/link-control/index.js.map +1 -1
  579. package/build-module/components/link-control/link-preview.js +46 -17
  580. package/build-module/components/link-control/link-preview.js.map +1 -1
  581. package/build-module/components/link-control/search-input.js +24 -7
  582. package/build-module/components/link-control/search-input.js.map +1 -1
  583. package/build-module/components/list-view/block-contents.js +1 -18
  584. package/build-module/components/list-view/block-contents.js.map +1 -1
  585. package/build-module/components/list-view/block.js +56 -71
  586. package/build-module/components/list-view/block.js.map +1 -1
  587. package/build-module/components/list-view/branch.js +102 -78
  588. package/build-module/components/list-view/branch.js.map +1 -1
  589. package/build-module/components/list-view/index.js +55 -27
  590. package/build-module/components/list-view/index.js.map +1 -1
  591. package/build-module/components/list-view/leaf.js +2 -2
  592. package/build-module/components/list-view/leaf.js.map +1 -1
  593. package/build-module/components/list-view/list-item.js +3 -2
  594. package/build-module/components/list-view/list-item.js.map +1 -1
  595. package/build-module/components/list-view/use-list-view-client-ids.js +13 -54
  596. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  597. package/build-module/components/media-placeholder/index.js +35 -21
  598. package/build-module/components/media-placeholder/index.js.map +1 -1
  599. package/build-module/components/media-placeholder/index.native.js +2 -1
  600. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  601. package/build-module/components/media-replace-flow/index.js +5 -3
  602. package/build-module/components/media-replace-flow/index.js.map +1 -1
  603. package/build-module/components/navigable-toolbar/index.js +1 -4
  604. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  605. package/build-module/components/observe-typing/index.js +1 -1
  606. package/build-module/components/observe-typing/index.js.map +1 -1
  607. package/build-module/components/plain-text/index.native.js +29 -2
  608. package/build-module/components/plain-text/index.native.js.map +1 -1
  609. package/build-module/components/rich-text/embed-handler-picker.native.js +54 -0
  610. package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -0
  611. package/build-module/components/rich-text/format-edit.js +28 -3
  612. package/build-module/components/rich-text/format-edit.js.map +1 -1
  613. package/build-module/components/rich-text/format-toolbar/index.js +29 -11
  614. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  615. package/build-module/components/rich-text/index.js +22 -6
  616. package/build-module/components/rich-text/index.js.map +1 -1
  617. package/build-module/components/rich-text/index.native.js +43 -6
  618. package/build-module/components/rich-text/index.native.js.map +1 -1
  619. package/build-module/components/rich-text/input-event.js +24 -22
  620. package/build-module/components/rich-text/input-event.js.map +1 -1
  621. package/build-module/components/rich-text/shortcut.js +22 -9
  622. package/build-module/components/rich-text/shortcut.js.map +1 -1
  623. package/build-module/components/rich-text/use-input-events.js +19 -0
  624. package/build-module/components/rich-text/use-input-events.js.map +1 -0
  625. package/build-module/components/rich-text/use-paste-handler.js +44 -10
  626. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  627. package/build-module/components/rich-text/use-shortcuts.js +19 -0
  628. package/build-module/components/rich-text/use-shortcuts.js.map +1 -0
  629. package/build-module/components/rich-text/utils.js +20 -0
  630. package/build-module/components/rich-text/utils.js.map +1 -1
  631. package/build-module/components/typewriter/index.js +1 -1
  632. package/build-module/components/typewriter/index.js.map +1 -1
  633. package/build-module/components/url-input/index.js +25 -11
  634. package/build-module/components/url-input/index.js.map +1 -1
  635. package/build-module/components/use-display-block-controls/index.js +5 -7
  636. package/build-module/components/use-display-block-controls/index.js.map +1 -1
  637. package/build-module/components/use-moving-animation/index.js +13 -10
  638. package/build-module/components/use-moving-animation/index.js.map +1 -1
  639. package/build-module/components/use-on-block-drop/index.js +3 -2
  640. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  641. package/build-module/components/use-resize-canvas/index.js +2 -10
  642. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  643. package/build-module/components/use-setting/index.js +48 -14
  644. package/build-module/components/use-setting/index.js.map +1 -1
  645. package/build-module/components/writing-flow/use-multi-selection.js +6 -0
  646. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  647. package/build-module/components/writing-flow/use-tab-nav.js +18 -3
  648. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  649. package/build-module/hooks/align.js +15 -15
  650. package/build-module/hooks/align.js.map +1 -1
  651. package/build-module/hooks/anchor.js +5 -3
  652. package/build-module/hooks/anchor.js.map +1 -1
  653. package/build-module/hooks/border-color.js +10 -5
  654. package/build-module/hooks/border-color.js.map +1 -1
  655. package/build-module/hooks/border.js +5 -5
  656. package/build-module/hooks/border.js.map +1 -1
  657. package/build-module/hooks/color-panel.js +6 -3
  658. package/build-module/hooks/color-panel.js.map +1 -1
  659. package/build-module/hooks/color.js +6 -4
  660. package/build-module/hooks/color.js.map +1 -1
  661. package/build-module/hooks/compat.js +20 -0
  662. package/build-module/hooks/compat.js.map +1 -0
  663. package/build-module/hooks/custom-class-name.js +4 -2
  664. package/build-module/hooks/custom-class-name.js.map +1 -1
  665. package/build-module/hooks/dimensions.js +57 -26
  666. package/build-module/hooks/dimensions.js.map +1 -1
  667. package/build-module/hooks/duotone.js +62 -18
  668. package/build-module/hooks/duotone.js.map +1 -1
  669. package/build-module/hooks/font-appearance.js +45 -6
  670. package/build-module/hooks/font-appearance.js.map +1 -1
  671. package/build-module/hooks/font-family.js +117 -33
  672. package/build-module/hooks/font-family.js.map +1 -1
  673. package/build-module/hooks/font-size.js +47 -9
  674. package/build-module/hooks/font-size.js.map +1 -1
  675. package/build-module/hooks/gap.js +140 -0
  676. package/build-module/hooks/gap.js.map +1 -0
  677. package/build-module/hooks/index.js +3 -0
  678. package/build-module/hooks/index.js.map +1 -1
  679. package/build-module/hooks/index.native.js +2 -0
  680. package/build-module/hooks/index.native.js.map +1 -1
  681. package/build-module/hooks/layout.js +47 -30
  682. package/build-module/hooks/layout.js.map +1 -1
  683. package/build-module/hooks/letter-spacing.js +41 -8
  684. package/build-module/hooks/letter-spacing.js.map +1 -1
  685. package/build-module/hooks/line-height.js +41 -8
  686. package/build-module/hooks/line-height.js.map +1 -1
  687. package/build-module/hooks/lock.js +33 -0
  688. package/build-module/hooks/lock.js.map +1 -0
  689. package/build-module/hooks/margin.js +7 -4
  690. package/build-module/hooks/margin.js.map +1 -1
  691. package/build-module/hooks/padding.js +7 -4
  692. package/build-module/hooks/padding.js.map +1 -1
  693. package/build-module/hooks/style.js +39 -11
  694. package/build-module/hooks/style.js.map +1 -1
  695. package/build-module/hooks/text-decoration.js +38 -6
  696. package/build-module/hooks/text-decoration.js.map +1 -1
  697. package/build-module/hooks/text-transform.js +38 -6
  698. package/build-module/hooks/text-transform.js.map +1 -1
  699. package/build-module/hooks/typography.js +118 -19
  700. package/build-module/hooks/typography.js.map +1 -1
  701. package/build-module/hooks/typography.native.js +41 -0
  702. package/build-module/hooks/typography.native.js.map +1 -0
  703. package/build-module/hooks/use-cached-truthy.js +21 -0
  704. package/build-module/hooks/use-cached-truthy.js.map +1 -0
  705. package/build-module/index.js +1 -1
  706. package/build-module/index.js.map +1 -1
  707. package/build-module/layouts/flex.js +210 -12
  708. package/build-module/layouts/flex.js.map +1 -1
  709. package/build-module/layouts/flow.js +99 -7
  710. package/build-module/layouts/flow.js.map +1 -1
  711. package/build-module/store/actions.js +294 -242
  712. package/build-module/store/actions.js.map +1 -1
  713. package/build-module/store/defaults.js +2 -0
  714. package/build-module/store/defaults.js.map +1 -1
  715. package/build-module/store/defaults.native.js +15 -1
  716. package/build-module/store/defaults.native.js.map +1 -1
  717. package/build-module/store/index.js +1 -2
  718. package/build-module/store/index.js.map +1 -1
  719. package/build-module/store/reducer.js +167 -115
  720. package/build-module/store/reducer.js.map +1 -1
  721. package/build-module/store/selectors.js +189 -104
  722. package/build-module/store/selectors.js.map +1 -1
  723. package/build-module/utils/index.js +1 -0
  724. package/build-module/utils/index.js.map +1 -1
  725. package/build-module/utils/parse-css-unit-to-px.js +285 -0
  726. package/build-module/utils/parse-css-unit-to-px.js.map +1 -0
  727. package/build-module/utils/transform-styles/transforms/wrap.js +16 -0
  728. package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
  729. package/build-style/default-editor-styles-rtl.css +114 -0
  730. package/build-style/default-editor-styles.css +114 -0
  731. package/build-style/style-rtl.css +292 -181
  732. package/build-style/style.css +292 -181
  733. package/build-types/components/block-context/index.d.ts +1 -1
  734. package/build-types/components/block-context/index.d.ts.map +1 -1
  735. package/package.json +28 -27
  736. package/src/components/autocomplete/index.js +5 -2
  737. package/src/components/block-actions/index.js +9 -5
  738. package/src/components/block-alignment-control/style.scss +5 -0
  739. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +15 -1
  740. package/src/components/block-alignment-control/test/index.native.js +37 -0
  741. package/src/components/block-alignment-control/ui.js +98 -27
  742. package/src/components/block-alignment-control/use-available-alignments.js +31 -10
  743. package/src/components/block-content-overlay/index.js +3 -6
  744. package/src/components/block-content-overlay/style.scss +9 -21
  745. package/src/components/block-controls/fill.js +7 -4
  746. package/src/components/block-controls/groups.js +2 -0
  747. package/src/components/block-controls/hook.js +44 -0
  748. package/src/components/block-draggable/style.scss +19 -4
  749. package/src/components/block-edit/context.js +4 -3
  750. package/src/components/block-edit/edit.js +1 -4
  751. package/src/components/block-icon/index.js +4 -1
  752. package/src/components/block-icon/index.native.js +11 -12
  753. package/src/components/block-inspector/index.js +19 -9
  754. package/src/components/block-list/block-html.js +5 -0
  755. package/src/components/block-list/block-list-item.native.js +34 -11
  756. package/src/components/block-list/block-list-item.native.scss +4 -0
  757. package/src/components/block-list/block-selection-button.native.js +8 -5
  758. package/src/components/block-list/block.js +13 -9
  759. package/src/components/block-list/block.native.js +7 -5
  760. package/src/components/block-list/grid-item.native.js +58 -0
  761. package/src/components/block-list/index.js +33 -27
  762. package/src/components/block-list/index.native.js +10 -4
  763. package/src/components/block-list/style.native.scss +0 -1
  764. package/src/components/block-list/style.scss +15 -0
  765. package/src/components/block-list/use-block-props/index.js +4 -7
  766. package/src/components/block-list/use-block-props/use-block-custom-class-name.js +5 -7
  767. package/src/components/block-list/use-block-props/use-block-default-class-name.js +2 -8
  768. package/src/components/block-list/use-block-props/use-multi-selection.js +30 -4
  769. package/src/components/block-list/use-in-between-inserter.js +9 -0
  770. package/src/components/block-list-appender/index.js +8 -0
  771. package/src/components/block-mover/index.js +4 -4
  772. package/src/components/block-mover/index.native.js +4 -4
  773. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -6
  774. package/src/components/block-mover/test/index.native.js +26 -28
  775. package/src/components/block-navigation/dropdown.js +0 -1
  776. package/src/components/block-patterns-list/index.js +1 -8
  777. package/src/components/block-patterns-list/style.scss +22 -12
  778. package/src/components/block-preview/README.md +1 -1
  779. package/src/components/block-preview/auto.js +36 -18
  780. package/src/components/block-preview/style.scss +0 -20
  781. package/src/components/block-settings/container.native.js +7 -0
  782. package/src/components/block-settings-menu/block-settings-dropdown.js +26 -13
  783. package/src/components/block-settings-menu-controls/index.js +9 -6
  784. package/src/components/block-styles/index.js +6 -1
  785. package/src/components/block-styles/preview.native.js +2 -2
  786. package/src/components/block-switcher/block-styles-menu.js +1 -1
  787. package/src/components/block-switcher/index.js +7 -3
  788. package/src/components/block-switcher/test/__snapshots__/index.js.snap +1 -1
  789. package/src/components/block-switcher/test/index.js +3 -0
  790. package/src/components/block-title/index.js +5 -2
  791. package/src/components/block-toolbar/index.js +4 -0
  792. package/src/components/block-tools/block-contextual-toolbar.js +7 -5
  793. package/src/components/block-tools/block-popover.js +8 -8
  794. package/src/components/block-tools/block-selection-button.js +2 -4
  795. package/src/components/block-tools/index.js +5 -2
  796. package/src/components/block-tools/insertion-point.js +97 -9
  797. package/src/components/block-tools/style.scss +4 -35
  798. package/src/components/block-types-list/index.native.js +8 -2
  799. package/src/components/block-types-list/style.scss +0 -3
  800. package/src/components/block-variation-picker/README.md +47 -14
  801. package/src/components/block-variation-picker/style.native.scss +4 -0
  802. package/src/components/border-radius-control/index.js +1 -0
  803. package/src/components/border-radius-control/test/utils.js +216 -0
  804. package/src/components/border-radius-control/utils.js +18 -10
  805. package/src/components/color-palette/test/__snapshots__/control.js.snap +128 -71
  806. package/src/components/colors/test/utils.js +41 -0
  807. package/src/components/colors/utils.js +9 -5
  808. package/src/components/colors-gradients/control.js +70 -110
  809. package/src/components/colors-gradients/panel-color-gradient-settings.js +79 -7
  810. package/src/components/colors-gradients/style.scss +10 -18
  811. package/src/components/colors-gradients/test/control.js +41 -66
  812. package/src/components/contrast-checker/index.js +14 -10
  813. package/src/components/copy-handler/index.js +6 -1
  814. package/src/components/default-block-appender/index.js +2 -2
  815. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +3 -3
  816. package/src/components/duotone-control/index.js +49 -41
  817. package/src/components/duotone-control/style.scss +27 -12
  818. package/src/components/editor-styles/index.js +8 -4
  819. package/src/components/font-appearance-control/index.js +62 -24
  820. package/src/components/font-appearance-control/style.scss +1 -1
  821. package/src/components/font-sizes/index.native.js +7 -1
  822. package/src/components/iframe/index.js +64 -75
  823. package/src/components/image-editor/aspect-ratio-dropdown.js +129 -0
  824. package/src/components/image-editor/constants.js +6 -0
  825. package/src/components/image-editor/context.js +56 -0
  826. package/src/components/image-editor/cropper.js +74 -0
  827. package/src/components/image-editor/form-controls.js +22 -0
  828. package/src/components/image-editor/index.js +52 -0
  829. package/src/components/image-editor/rotation-button.js +24 -0
  830. package/src/components/image-editor/use-save-image.js +97 -0
  831. package/src/components/image-editor/use-transform-image.js +162 -0
  832. package/src/components/image-editor/zoom-dropdown.js +40 -0
  833. package/src/components/image-size-control/use-dimension-handler.js +18 -1
  834. package/src/components/index.js +10 -8
  835. package/src/components/index.native.js +5 -3
  836. package/src/components/inner-blocks/button-block-appender.js +9 -0
  837. package/src/components/inner-blocks/index.js +43 -14
  838. package/src/components/inner-blocks/index.native.js +48 -4
  839. package/src/components/inner-blocks/use-nested-settings-update.js +26 -11
  840. package/src/components/inserter/block-patterns-explorer/explorer.js +50 -0
  841. package/src/components/inserter/block-patterns-explorer/patterns-list.js +122 -0
  842. package/src/components/inserter/block-patterns-explorer/sidebar.js +73 -0
  843. package/src/components/inserter/block-patterns-tab.js +107 -73
  844. package/src/components/inserter/block-types-tab.native.js +3 -6
  845. package/src/components/inserter/hooks/use-block-type-impressions.native.js +14 -21
  846. package/src/components/inserter/hooks/use-clipboard-block.native.js +3 -2
  847. package/src/components/inserter/index.js +15 -3
  848. package/src/components/inserter/index.native.js +2 -19
  849. package/src/components/inserter/library.js +2 -0
  850. package/src/components/inserter/menu.js +4 -1
  851. package/src/components/inserter/menu.native.js +18 -15
  852. package/src/components/inserter/pattern-panel.js +33 -16
  853. package/src/components/inserter/preview-panel.js +1 -1
  854. package/src/components/inserter/quick-inserter.js +1 -1
  855. package/src/components/inserter/reusable-blocks-tab.native.js +4 -6
  856. package/src/components/inserter/search-results.native.js +8 -1
  857. package/src/components/inserter/style.native.scss +8 -5
  858. package/src/components/inserter/style.scss +80 -16
  859. package/src/components/inserter/tabs.native.js +1 -7
  860. package/src/components/inserter/test/block-types-tab.native.js +3 -2
  861. package/src/components/inserter/test/fixtures/index.native.js +12 -0
  862. package/src/components/inserter/utils.native.js +35 -0
  863. package/src/components/inserter-list-item/style.scss +4 -2
  864. package/src/components/inspector-controls/README.md +43 -198
  865. package/src/components/inspector-controls/block-support-slot-container.js +10 -0
  866. package/src/components/inspector-controls/block-support-tools-panel.js +60 -0
  867. package/src/components/inspector-controls/fill.js +53 -0
  868. package/src/components/inspector-controls/{index.native.js → fill.native.js} +14 -14
  869. package/src/components/inspector-controls/groups.js +22 -0
  870. package/src/components/inspector-controls/index.js +16 -18
  871. package/src/components/inspector-controls/slot.js +45 -0
  872. package/src/components/inspector-controls/slot.native.js +22 -0
  873. package/src/components/letter-spacing-control/index.js +12 -6
  874. package/src/components/line-height-control/index.native.js +25 -0
  875. package/src/components/link-control/README.md +47 -14
  876. package/src/components/link-control/index.js +102 -31
  877. package/src/components/link-control/link-preview.js +53 -20
  878. package/src/components/link-control/search-input.js +21 -7
  879. package/src/components/link-control/style.scss +66 -19
  880. package/src/components/link-control/test/index.js +311 -4
  881. package/src/components/list-view/block-contents.js +17 -38
  882. package/src/components/list-view/block.js +73 -84
  883. package/src/components/list-view/branch.js +123 -94
  884. package/src/components/list-view/index.js +95 -37
  885. package/src/components/list-view/leaf.js +2 -2
  886. package/src/components/list-view/list-item.js +5 -4
  887. package/src/components/list-view/style.scss +70 -33
  888. package/src/components/list-view/use-list-view-client-ids.js +9 -68
  889. package/src/components/media-placeholder/README.md +9 -0
  890. package/src/components/media-placeholder/index.js +31 -20
  891. package/src/components/media-placeholder/index.native.js +2 -1
  892. package/src/components/media-placeholder/style.scss +2 -0
  893. package/src/components/media-replace-flow/README.md +7 -0
  894. package/src/components/media-replace-flow/index.js +4 -1
  895. package/src/components/media-replace-flow/style.scss +11 -12
  896. package/src/components/media-upload/README.md +1 -1
  897. package/src/components/navigable-toolbar/index.js +1 -4
  898. package/src/components/observe-typing/index.js +3 -2
  899. package/src/components/plain-text/index.native.js +26 -4
  900. package/src/components/rich-text/embed-handler-picker.native.js +68 -0
  901. package/src/components/rich-text/format-edit.js +36 -2
  902. package/src/components/rich-text/format-toolbar/index.js +25 -6
  903. package/src/components/rich-text/index.js +38 -12
  904. package/src/components/rich-text/index.native.js +37 -4
  905. package/src/components/rich-text/input-event.js +21 -20
  906. package/src/components/rich-text/shortcut.js +24 -9
  907. package/src/components/rich-text/style.scss +7 -5
  908. package/src/components/rich-text/use-input-events.js +19 -0
  909. package/src/components/rich-text/use-paste-handler.js +47 -12
  910. package/src/components/rich-text/use-shortcuts.js +19 -0
  911. package/src/components/rich-text/utils.js +16 -0
  912. package/src/components/skip-to-selected-block/README.md +39 -0
  913. package/src/components/tool-selector/style.scss +5 -5
  914. package/src/components/typewriter/index.js +3 -2
  915. package/src/components/url-input/index.js +26 -10
  916. package/src/components/use-display-block-controls/index.js +7 -10
  917. package/src/components/use-moving-animation/index.js +9 -8
  918. package/src/components/use-on-block-drop/index.js +5 -1
  919. package/src/components/use-resize-canvas/index.js +2 -17
  920. package/src/components/use-setting/index.js +48 -16
  921. package/src/components/writing-flow/use-multi-selection.js +6 -0
  922. package/src/components/writing-flow/use-tab-nav.js +21 -11
  923. package/src/default-editor-styles.scss +24 -0
  924. package/src/hooks/align.js +28 -20
  925. package/src/hooks/anchor.js +5 -5
  926. package/src/hooks/border-color.js +12 -1
  927. package/src/hooks/border.js +8 -11
  928. package/src/hooks/color-panel.js +4 -1
  929. package/src/hooks/color.js +11 -4
  930. package/src/hooks/compat.js +23 -0
  931. package/src/hooks/custom-class-name.js +3 -3
  932. package/src/hooks/dimensions.js +94 -50
  933. package/src/hooks/duotone.js +70 -21
  934. package/src/hooks/font-appearance.js +38 -7
  935. package/src/hooks/font-family.js +129 -33
  936. package/src/hooks/font-size.js +42 -6
  937. package/src/hooks/gap.js +146 -0
  938. package/src/hooks/index.js +3 -0
  939. package/src/hooks/index.native.js +2 -0
  940. package/src/hooks/layout.js +82 -56
  941. package/src/hooks/layout.scss +8 -0
  942. package/src/hooks/letter-spacing.js +37 -8
  943. package/src/hooks/line-height.js +37 -9
  944. package/src/hooks/lock.js +34 -0
  945. package/src/hooks/margin.js +13 -3
  946. package/src/hooks/padding.js +13 -3
  947. package/src/hooks/style.js +57 -18
  948. package/src/hooks/test/style.js +4 -0
  949. package/src/hooks/text-decoration.js +34 -6
  950. package/src/hooks/text-transform.js +34 -6
  951. package/src/hooks/typography.js +167 -21
  952. package/src/hooks/typography.native.js +64 -0
  953. package/src/hooks/typography.scss +16 -0
  954. package/src/hooks/use-cached-truthy.js +20 -0
  955. package/src/index.js +1 -0
  956. package/src/layouts/flex.js +237 -14
  957. package/src/layouts/flow.js +81 -14
  958. package/src/store/actions.js +248 -378
  959. package/src/store/defaults.js +2 -0
  960. package/src/store/defaults.native.js +15 -0
  961. package/src/store/index.js +1 -2
  962. package/src/store/reducer.js +248 -145
  963. package/src/store/selectors.js +212 -158
  964. package/src/store/test/actions.js +407 -705
  965. package/src/store/test/reducer.js +184 -146
  966. package/src/store/test/selectors.js +197 -177
  967. package/src/style.scss +2 -15
  968. package/src/utils/index.js +1 -0
  969. package/src/utils/parse-css-unit-to-px.js +272 -0
  970. package/src/utils/test/parse-css-unit-to-px.js +166 -0
  971. package/src/utils/transform-styles/transforms/test/wrap.js +1 -1
  972. package/src/utils/transform-styles/transforms/wrap.js +16 -0
  973. package/tsconfig.tsbuildinfo +1 -466
  974. package/build/components/block-list/head.js +0 -27
  975. package/build/components/block-list/head.js.map +0 -1
  976. package/build/components/duotone-control/duotone-picker-popover.js +0 -44
  977. package/build/components/duotone-control/duotone-picker-popover.js.map +0 -1
  978. package/build/components/inspector-advanced-controls/index.js +0 -46
  979. package/build/components/inspector-advanced-controls/index.js.map +0 -1
  980. package/build/components/inspector-controls/index.native.js.map +0 -1
  981. package/build/components/list-view/block-slot.js +0 -121
  982. package/build/components/list-view/block-slot.js.map +0 -1
  983. package/build/components/list-view/editor.js +0 -35
  984. package/build/components/list-view/editor.js.map +0 -1
  985. package/build/components/text-decoration-and-transform/index.js +0 -39
  986. package/build/components/text-decoration-and-transform/index.js.map +0 -1
  987. package/build/components/use-simulated-media-query/index.js +0 -137
  988. package/build/components/use-simulated-media-query/index.js.map +0 -1
  989. package/build/store/controls.js +0 -44
  990. package/build/store/controls.js.map +0 -1
  991. package/build-module/components/block-list/head.js +0 -19
  992. package/build-module/components/block-list/head.js.map +0 -1
  993. package/build-module/components/duotone-control/duotone-picker-popover.js +0 -35
  994. package/build-module/components/duotone-control/duotone-picker-popover.js.map +0 -1
  995. package/build-module/components/inspector-advanced-controls/index.js +0 -36
  996. package/build-module/components/inspector-advanced-controls/index.js.map +0 -1
  997. package/build-module/components/inspector-controls/index.native.js.map +0 -1
  998. package/build-module/components/list-view/block-slot.js +0 -96
  999. package/build-module/components/list-view/block-slot.js.map +0 -1
  1000. package/build-module/components/list-view/editor.js +0 -25
  1001. package/build-module/components/list-view/editor.js.map +0 -1
  1002. package/build-module/components/text-decoration-and-transform/index.js +0 -30
  1003. package/build-module/components/text-decoration-and-transform/index.js.map +0 -1
  1004. package/build-module/components/use-simulated-media-query/index.js +0 -126
  1005. package/build-module/components/use-simulated-media-query/index.js.map +0 -1
  1006. package/build-module/store/controls.js +0 -32
  1007. package/build-module/store/controls.js.map +0 -1
  1008. package/src/components/block-list/head.js +0 -18
  1009. package/src/components/duotone-control/duotone-picker-popover.js +0 -36
  1010. package/src/components/inspector-advanced-controls/README.md +0 -72
  1011. package/src/components/inspector-advanced-controls/index.js +0 -32
  1012. package/src/components/list-view/block-slot.js +0 -120
  1013. package/src/components/list-view/editor.js +0 -29
  1014. package/src/components/text-decoration-and-transform/index.js +0 -36
  1015. package/src/components/text-decoration-and-transform/style.scss +0 -3
  1016. package/src/components/use-simulated-media-query/index.js +0 -144
  1017. package/src/store/controls.js +0 -39
@@ -5,32 +5,21 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.resetBlocks = resetBlocks;
9
- exports.validateBlocksToTemplate = validateBlocksToTemplate;
10
8
  exports.resetSelection = resetSelection;
11
9
  exports.receiveBlocks = receiveBlocks;
12
10
  exports.updateBlockAttributes = updateBlockAttributes;
13
11
  exports.updateBlock = updateBlock;
14
12
  exports.selectBlock = selectBlock;
15
- exports.selectPreviousBlock = selectPreviousBlock;
16
- exports.selectNextBlock = selectNextBlock;
17
13
  exports.startMultiSelect = startMultiSelect;
18
14
  exports.stopMultiSelect = stopMultiSelect;
19
- exports.multiSelect = multiSelect;
20
15
  exports.clearSelectedBlock = clearSelectedBlock;
21
16
  exports.toggleSelection = toggleSelection;
22
- exports.replaceBlocks = replaceBlocks;
23
17
  exports.replaceBlock = replaceBlock;
24
- exports.moveBlocksToPosition = moveBlocksToPosition;
25
18
  exports.moveBlockToPosition = moveBlockToPosition;
26
19
  exports.insertBlock = insertBlock;
27
- exports.insertBlocks = insertBlocks;
28
20
  exports.showInsertionPoint = showInsertionPoint;
29
21
  exports.hideInsertionPoint = hideInsertionPoint;
30
22
  exports.setTemplateValidity = setTemplateValidity;
31
- exports.synchronizeTemplate = synchronizeTemplate;
32
- exports.mergeBlocks = mergeBlocks;
33
- exports.removeBlocks = removeBlocks;
34
23
  exports.removeBlock = removeBlock;
35
24
  exports.replaceInnerBlocks = replaceInnerBlocks;
36
25
  exports.toggleBlockMode = toggleBlockMode;
@@ -47,17 +36,9 @@ exports.updateSettings = updateSettings;
47
36
  exports.__unstableSaveReusableBlock = __unstableSaveReusableBlock;
48
37
  exports.__unstableMarkLastChangeAsPersistent = __unstableMarkLastChangeAsPersistent;
49
38
  exports.__unstableMarkNextChangeAsNotPersistent = __unstableMarkNextChangeAsNotPersistent;
50
- exports.__unstableMarkAutomaticChange = __unstableMarkAutomaticChange;
51
- exports.__unstableMarkAutomaticChangeFinal = __unstableMarkAutomaticChangeFinal;
52
- exports.setNavigationMode = setNavigationMode;
53
- exports.setBlockMovingClientId = setBlockMovingClientId;
54
- exports.duplicateBlocks = duplicateBlocks;
55
- exports.insertBeforeBlock = insertBeforeBlock;
56
- exports.insertAfterBlock = insertAfterBlock;
57
39
  exports.toggleBlockHighlight = toggleBlockHighlight;
58
- exports.flashBlock = flashBlock;
59
40
  exports.setHasControlledInnerBlocks = setHasControlledInnerBlocks;
60
- exports.moveBlocksUp = exports.moveBlocksDown = void 0;
41
+ exports.flashBlock = exports.insertAfterBlock = exports.insertBeforeBlock = exports.duplicateBlocks = exports.setBlockMovingClientId = exports.setNavigationMode = exports.__unstableMarkAutomaticChange = exports.removeBlocks = exports.mergeBlocks = exports.synchronizeTemplate = exports.insertBlocks = exports.moveBlocksToPosition = exports.moveBlocksUp = exports.moveBlocksDown = exports.replaceBlocks = exports.multiSelect = exports.selectNextBlock = exports.selectPreviousBlock = exports.validateBlocksToTemplate = exports.resetBlocks = void 0;
61
42
 
62
43
  var _lodash = require("lodash");
63
44
 
@@ -67,16 +48,10 @@ var _a11y = require("@wordpress/a11y");
67
48
 
68
49
  var _i18n = require("@wordpress/i18n");
69
50
 
70
- var _data = require("@wordpress/data");
71
-
72
51
  var _richText = require("@wordpress/rich-text");
73
52
 
74
53
  var _deprecated = _interopRequireDefault(require("@wordpress/deprecated"));
75
54
 
76
- var _controls = require("../store/controls");
77
-
78
- var _constants = require("./constants");
79
-
80
55
  /**
81
56
  * External dependencies
82
57
  */
@@ -86,49 +61,53 @@ var _constants = require("./constants");
86
61
  */
87
62
 
88
63
  /**
89
- * Internal dependencies
90
- */
91
-
92
- /**
93
- * Generator which will yield a default block insert action if there
94
- * are no other blocks at the root of the editor. This generator should be used
64
+ * Action which will insert a default block insert action if there
65
+ * are no other blocks at the root of the editor. This action should be used
95
66
  * in actions which may result in no blocks remaining in the editor (removal,
96
67
  * replacement, etc).
97
68
  */
98
- function* ensureDefaultBlock() {
99
- const count = yield _data.controls.select(_constants.STORE_NAME, 'getBlockCount'); // To avoid a focus loss when removing the last block, assure there is
69
+ const ensureDefaultBlock = () => ({
70
+ select,
71
+ dispatch
72
+ }) => {
73
+ // To avoid a focus loss when removing the last block, assure there is
100
74
  // always a default block if the last of the blocks have been removed.
75
+ const count = select.getBlockCount();
101
76
 
102
- if (count === 0) {
103
- const {
104
- __unstableHasCustomAppender
105
- } = yield _data.controls.select(_constants.STORE_NAME, 'getSettings'); // If there's an custom appender, don't insert default block.
106
- // We have to remember to manually move the focus elsewhere to
107
- // prevent it from being lost though.
77
+ if (count > 0) {
78
+ return;
79
+ } // If there's an custom appender, don't insert default block.
80
+ // We have to remember to manually move the focus elsewhere to
81
+ // prevent it from being lost though.
108
82
 
109
- if (__unstableHasCustomAppender) {
110
- return;
111
- }
112
83
 
113
- return yield insertDefaultBlock();
84
+ const {
85
+ __unstableHasCustomAppender
86
+ } = select.getSettings();
87
+
88
+ if (__unstableHasCustomAppender) {
89
+ return;
114
90
  }
115
- }
91
+
92
+ dispatch.insertDefaultBlock();
93
+ };
116
94
  /**
117
- * Returns an action object used in signalling that blocks state should be
118
- * reset to the specified array of blocks, taking precedence over any other
119
- * content reflected as an edit in state.
95
+ * Action that resets blocks state to the specified array of blocks, taking precedence
96
+ * over any other content reflected as an edit in state.
120
97
  *
121
98
  * @param {Array} blocks Array of blocks.
122
99
  */
123
100
 
124
101
 
125
- function* resetBlocks(blocks) {
126
- yield {
102
+ const resetBlocks = blocks => ({
103
+ dispatch
104
+ }) => {
105
+ dispatch({
127
106
  type: 'RESET_BLOCKS',
128
107
  blocks
129
- };
130
- return yield* validateBlocksToTemplate(blocks);
131
- }
108
+ });
109
+ dispatch(validateBlocksToTemplate(blocks));
110
+ };
132
111
  /**
133
112
  * Block validity is a function of blocks state (at the point of a
134
113
  * reset) and the template setting. As a compromise to its placement
@@ -139,20 +118,25 @@ function* resetBlocks(blocks) {
139
118
  */
140
119
 
141
120
 
142
- function* validateBlocksToTemplate(blocks) {
143
- const template = yield _data.controls.select(_constants.STORE_NAME, 'getTemplate');
144
- const templateLock = yield _data.controls.select(_constants.STORE_NAME, 'getTemplateLock'); // Unlocked templates are considered always valid because they act
121
+ exports.resetBlocks = resetBlocks;
122
+
123
+ const validateBlocksToTemplate = blocks => ({
124
+ select,
125
+ dispatch
126
+ }) => {
127
+ const template = select.getTemplate();
128
+ const templateLock = select.getTemplateLock(); // Unlocked templates are considered always valid because they act
145
129
  // as default values only.
146
130
 
147
131
  const isBlocksValidToTemplate = !template || templateLock !== 'all' || (0, _blocks.doBlocksMatchTemplate)(blocks, template); // Update if validity has changed.
148
132
 
149
- const isValidTemplate = yield _data.controls.select(_constants.STORE_NAME, 'isValidTemplate');
133
+ const isValidTemplate = select.isValidTemplate();
150
134
 
151
135
  if (isBlocksValidToTemplate !== isValidTemplate) {
152
- yield setTemplateValidity(isBlocksValidToTemplate);
136
+ dispatch.setTemplateValidity(isBlocksValidToTemplate);
153
137
  return isBlocksValidToTemplate;
154
138
  }
155
- }
139
+ };
156
140
  /**
157
141
  * A block selection object.
158
142
  *
@@ -164,6 +148,8 @@ function* validateBlocksToTemplate(blocks) {
164
148
  * text value. See `wp.richText.create`.
165
149
  */
166
150
 
151
+ /* eslint-disable jsdoc/valid-types */
152
+
167
153
  /**
168
154
  * Returns an action object used in signalling that selection state should be
169
155
  * reset to the specified selection.
@@ -176,7 +162,10 @@ function* validateBlocksToTemplate(blocks) {
176
162
  */
177
163
 
178
164
 
165
+ exports.validateBlocksToTemplate = validateBlocksToTemplate;
166
+
179
167
  function resetSelection(selectionStart, selectionEnd, initialPosition) {
168
+ /* eslint-enable jsdoc/valid-types */
180
169
  return {
181
170
  type: 'RESET_SELECTION',
182
171
  selectionStart,
@@ -189,6 +178,8 @@ function resetSelection(selectionStart, selectionEnd, initialPosition) {
189
178
  * Unlike resetBlocks, these should be appended to the existing known set, not
190
179
  * replacing.
191
180
  *
181
+ * @deprecated
182
+ *
192
183
  * @param {Object[]} blocks Array of block objects.
193
184
  *
194
185
  * @return {Object} Action object.
@@ -196,14 +187,17 @@ function resetSelection(selectionStart, selectionEnd, initialPosition) {
196
187
 
197
188
 
198
189
  function receiveBlocks(blocks) {
190
+ (0, _deprecated.default)('wp.data.dispatch( "core/block-editor" ).receiveBlocks', {
191
+ since: '5.9',
192
+ alternative: 'resetBlocks or insertBlocks'
193
+ });
199
194
  return {
200
195
  type: 'RECEIVE_BLOCKS',
201
196
  blocks
202
197
  };
203
198
  }
204
199
  /**
205
- * Returns an action object used in signalling that the multiple blocks'
206
- * attributes with the specified client IDs have been updated.
200
+ * Action that updates attributes of multiple blocks with the specified client IDs.
207
201
  *
208
202
  * @param {string|string[]} clientIds Block client IDs.
209
203
  * @param {Object} attributes Block attributes to be merged. Should be keyed by clientIds if
@@ -222,8 +216,7 @@ function updateBlockAttributes(clientIds, attributes, uniqueByBlock = false) {
222
216
  };
223
217
  }
224
218
  /**
225
- * Returns an action object used in signalling that the block with the
226
- * specified client ID has been updated.
219
+ * Action that updates the block with the specified client ID.
227
220
  *
228
221
  * @param {string} clientId Block client ID.
229
222
  * @param {Object} updates Block attributes to be merged.
@@ -239,6 +232,8 @@ function updateBlock(clientId, updates) {
239
232
  updates
240
233
  };
241
234
  }
235
+ /* eslint-disable jsdoc/valid-types */
236
+
242
237
  /**
243
238
  * Returns an action object used in signalling that the block with the
244
239
  * specified client ID has been selected, optionally accepting a position
@@ -254,6 +249,7 @@ function updateBlock(clientId, updates) {
254
249
 
255
250
 
256
251
  function selectBlock(clientId, initialPosition = 0) {
252
+ /* eslint-enable jsdoc/valid-types */
257
253
  return {
258
254
  type: 'SELECT_BLOCK',
259
255
  initialPosition,
@@ -268,14 +264,16 @@ function selectBlock(clientId, initialPosition = 0) {
268
264
  */
269
265
 
270
266
 
271
- function* selectPreviousBlock(clientId) {
272
- const previousBlockClientId = yield _data.controls.select(_constants.STORE_NAME, 'getPreviousBlockClientId', clientId);
267
+ const selectPreviousBlock = clientId => ({
268
+ select,
269
+ dispatch
270
+ }) => {
271
+ const previousBlockClientId = select.getPreviousBlockClientId(clientId);
273
272
 
274
273
  if (previousBlockClientId) {
275
- yield selectBlock(previousBlockClientId, -1);
276
- return [previousBlockClientId];
274
+ dispatch.selectBlock(previousBlockClientId, -1);
277
275
  }
278
- }
276
+ };
279
277
  /**
280
278
  * Yields action objects used in signalling that the block following the given
281
279
  * clientId should be selected.
@@ -284,28 +282,34 @@ function* selectPreviousBlock(clientId) {
284
282
  */
285
283
 
286
284
 
287
- function* selectNextBlock(clientId) {
288
- const nextBlockClientId = yield _data.controls.select(_constants.STORE_NAME, 'getNextBlockClientId', clientId);
285
+ exports.selectPreviousBlock = selectPreviousBlock;
286
+
287
+ const selectNextBlock = clientId => ({
288
+ select,
289
+ dispatch
290
+ }) => {
291
+ const nextBlockClientId = select.getNextBlockClientId(clientId);
289
292
 
290
293
  if (nextBlockClientId) {
291
- yield selectBlock(nextBlockClientId);
292
- return [nextBlockClientId];
294
+ dispatch.selectBlock(nextBlockClientId);
293
295
  }
294
- }
296
+ };
295
297
  /**
296
- * Returns an action object used in signalling that a block multi-selection has started.
298
+ * Action that starts block multi-selection.
297
299
  *
298
300
  * @return {Object} Action object.
299
301
  */
300
302
 
301
303
 
304
+ exports.selectNextBlock = selectNextBlock;
305
+
302
306
  function startMultiSelect() {
303
307
  return {
304
308
  type: 'START_MULTI_SELECT'
305
309
  };
306
310
  }
307
311
  /**
308
- * Returns an action object used in signalling that block multi-selection stopped.
312
+ * Action that stops block multi-selection.
309
313
  *
310
314
  * @return {Object} Action object.
311
315
  */
@@ -317,45 +321,50 @@ function stopMultiSelect() {
317
321
  };
318
322
  }
319
323
  /**
320
- * Returns an action object used in signalling that block multi-selection changed.
324
+ * Action that changes block multi-selection.
321
325
  *
322
326
  * @param {string} start First block of the multi selection.
323
327
  * @param {string} end Last block of the multiselection.
324
328
  */
325
329
 
326
330
 
327
- function* multiSelect(start, end) {
328
- const startBlockRootClientId = yield _data.controls.select(_constants.STORE_NAME, 'getBlockRootClientId', start);
329
- const endBlockRootClientId = yield _data.controls.select(_constants.STORE_NAME, 'getBlockRootClientId', end); // Only allow block multi-selections at the same level.
331
+ const multiSelect = (start, end) => ({
332
+ select,
333
+ dispatch
334
+ }) => {
335
+ const startBlockRootClientId = select.getBlockRootClientId(start);
336
+ const endBlockRootClientId = select.getBlockRootClientId(end); // Only allow block multi-selections at the same level.
330
337
 
331
338
  if (startBlockRootClientId !== endBlockRootClientId) {
332
339
  return;
333
340
  }
334
341
 
335
- yield {
342
+ dispatch({
336
343
  type: 'MULTI_SELECT',
337
344
  start,
338
345
  end
339
- };
340
- const blockCount = yield _data.controls.select(_constants.STORE_NAME, 'getSelectedBlockCount');
346
+ });
347
+ const blockCount = select.getSelectedBlockCount();
341
348
  (0, _a11y.speak)((0, _i18n.sprintf)(
342
349
  /* translators: %s: number of selected blocks */
343
350
  (0, _i18n._n)('%s block selected.', '%s blocks selected.', blockCount), blockCount), 'assertive');
344
- }
351
+ };
345
352
  /**
346
- * Returns an action object used in signalling that the block selection is cleared.
353
+ * Action that clears the block selection.
347
354
  *
348
355
  * @return {Object} Action object.
349
356
  */
350
357
 
351
358
 
359
+ exports.multiSelect = multiSelect;
360
+
352
361
  function clearSelectedBlock() {
353
362
  return {
354
363
  type: 'CLEAR_SELECTED_BLOCK'
355
364
  };
356
365
  }
357
366
  /**
358
- * Returns an action object that enables or disables block selection.
367
+ * Action that enables or disables block selection.
359
368
  *
360
369
  * @param {boolean} [isSelectionEnabled=true] Whether block selection should
361
370
  * be enabled.
@@ -405,9 +414,10 @@ function getBlocksWithDefaultStylesApplied(blocks, blockEditorSettings) {
405
414
  };
406
415
  });
407
416
  }
417
+ /* eslint-disable jsdoc/valid-types */
418
+
408
419
  /**
409
- * Returns an action object signalling that a blocks should be replaced with
410
- * one or more replacement blocks.
420
+ * Action that replaces given blocks with one or more replacement blocks.
411
421
  *
412
422
  * @param {(string|string[])} clientIds Block client ID(s) to replace.
413
423
  * @param {(Object|Object[])} blocks Replacement block(s).
@@ -415,25 +425,29 @@ function getBlocksWithDefaultStylesApplied(blocks, blockEditorSettings) {
415
425
  * @param {0|-1|null} initialPosition Index of caret after in the selected block after the operation.
416
426
  * @param {?Object} meta Optional Meta values to be passed to the action object.
417
427
  *
418
- * @yield {Object} Action object.
428
+ * @return {Object} Action object.
419
429
  */
420
430
 
421
431
 
422
- function* replaceBlocks(clientIds, blocks, indexToSelect, initialPosition = 0, meta) {
432
+ const replaceBlocks = (clientIds, blocks, indexToSelect, initialPosition = 0, meta) => ({
433
+ select,
434
+ dispatch
435
+ }) => {
436
+ /* eslint-enable jsdoc/valid-types */
423
437
  clientIds = (0, _lodash.castArray)(clientIds);
424
- blocks = getBlocksWithDefaultStylesApplied((0, _lodash.castArray)(blocks), yield _data.controls.select(_constants.STORE_NAME, 'getSettings'));
425
- const rootClientId = yield _data.controls.select(_constants.STORE_NAME, 'getBlockRootClientId', (0, _lodash.first)(clientIds)); // Replace is valid if the new blocks can be inserted in the root block.
438
+ blocks = getBlocksWithDefaultStylesApplied((0, _lodash.castArray)(blocks), select.getSettings());
439
+ const rootClientId = select.getBlockRootClientId((0, _lodash.first)(clientIds)); // Replace is valid if the new blocks can be inserted in the root block.
426
440
 
427
441
  for (let index = 0; index < blocks.length; index++) {
428
442
  const block = blocks[index];
429
- const canInsertBlock = yield _data.controls.select(_constants.STORE_NAME, 'canInsertBlockType', block.name, rootClientId);
443
+ const canInsertBlock = select.canInsertBlockType(block.name, rootClientId);
430
444
 
431
445
  if (!canInsertBlock) {
432
446
  return;
433
447
  }
434
448
  }
435
449
 
436
- yield {
450
+ dispatch({
437
451
  type: 'REPLACE_BLOCKS',
438
452
  clientIds,
439
453
  blocks,
@@ -441,12 +455,11 @@ function* replaceBlocks(clientIds, blocks, indexToSelect, initialPosition = 0, m
441
455
  indexToSelect,
442
456
  initialPosition,
443
457
  meta
444
- };
445
- yield* ensureDefaultBlock();
446
- }
458
+ });
459
+ dispatch(ensureDefaultBlock());
460
+ };
447
461
  /**
448
- * Returns an action object signalling that a single block should be replaced
449
- * with one or more replacement blocks.
462
+ * Action that replaces a single block with one or more replacement blocks.
450
463
  *
451
464
  * @param {(string|string[])} clientId Block client ID to replace.
452
465
  * @param {(Object|Object[])} block Replacement block(s).
@@ -455,6 +468,8 @@ function* replaceBlocks(clientIds, blocks, indexToSelect, initialPosition = 0, m
455
468
  */
456
469
 
457
470
 
471
+ exports.replaceBlocks = replaceBlocks;
472
+
458
473
  function replaceBlock(clientId, block) {
459
474
  return replaceBlocks(clientId, block);
460
475
  }
@@ -468,86 +483,89 @@ function replaceBlock(clientId, block) {
468
483
  */
469
484
 
470
485
 
471
- function createOnMove(type) {
472
- return (clientIds, rootClientId) => {
473
- return {
474
- clientIds: (0, _lodash.castArray)(clientIds),
475
- type,
476
- rootClientId
477
- };
478
- };
479
- }
486
+ const createOnMove = type => (clientIds, rootClientId) => ({
487
+ select,
488
+ dispatch
489
+ }) => {
490
+ // If one of the blocks is locked or the parent is locked, we cannot move any block.
491
+ const canMoveBlocks = select.canMoveBlocks(clientIds, rootClientId);
492
+
493
+ if (!canMoveBlocks) {
494
+ return;
495
+ }
496
+
497
+ dispatch({
498
+ type,
499
+ clientIds: (0, _lodash.castArray)(clientIds),
500
+ rootClientId
501
+ });
502
+ };
480
503
 
481
504
  const moveBlocksDown = createOnMove('MOVE_BLOCKS_DOWN');
482
505
  exports.moveBlocksDown = moveBlocksDown;
483
506
  const moveBlocksUp = createOnMove('MOVE_BLOCKS_UP');
484
507
  /**
485
- * Returns an action object signalling that the given blocks should be moved to
486
- * a new position.
508
+ * Action that moves given blocks to a new position.
487
509
  *
488
510
  * @param {?string} clientIds The client IDs of the blocks.
489
511
  * @param {?string} fromRootClientId Root client ID source.
490
512
  * @param {?string} toRootClientId Root client ID destination.
491
513
  * @param {number} index The index to move the blocks to.
492
- *
493
- * @yield {Object} Action object.
494
514
  */
495
515
 
496
516
  exports.moveBlocksUp = moveBlocksUp;
497
517
 
498
- function* moveBlocksToPosition(clientIds, fromRootClientId = '', toRootClientId = '', index) {
499
- const templateLock = yield _data.controls.select(_constants.STORE_NAME, 'getTemplateLock', fromRootClientId); // If locking is equal to all on the original clientId (fromRootClientId),
500
- // it is not possible to move the block to any other position.
518
+ const moveBlocksToPosition = (clientIds, fromRootClientId = '', toRootClientId = '', index) => ({
519
+ select,
520
+ dispatch
521
+ }) => {
522
+ const canMoveBlocks = select.canMoveBlocks(clientIds, fromRootClientId); // If one of the blocks is locked or the parent is locked, we cannot move any block.
501
523
 
502
- if (templateLock === 'all') {
524
+ if (!canMoveBlocks) {
503
525
  return;
526
+ } // If moving inside the same root block the move is always possible.
527
+
528
+
529
+ if (fromRootClientId !== toRootClientId) {
530
+ const canRemoveBlocks = select.canRemoveBlocks(clientIds, fromRootClientId); // If we're moving to another block, it means we're deleting blocks from
531
+ // the original block, so we need to check if removing is possible.
532
+
533
+ if (!canRemoveBlocks) {
534
+ return;
535
+ }
536
+
537
+ const canInsertBlocks = select.canInsertBlocks(clientIds, toRootClientId); // If moving to other parent block, the move is possible if we can insert a block of the same type inside the new parent block.
538
+
539
+ if (!canInsertBlocks) {
540
+ return;
541
+ }
504
542
  }
505
543
 
506
- const action = {
544
+ dispatch({
507
545
  type: 'MOVE_BLOCKS_TO_POSITION',
508
546
  fromRootClientId,
509
547
  toRootClientId,
510
548
  clientIds,
511
549
  index
512
- }; // If moving inside the same root block the move is always possible.
513
-
514
- if (fromRootClientId === toRootClientId) {
515
- yield action;
516
- return;
517
- } // If templateLock is insert we can not remove the block from the parent.
518
- // Given that here we know that we are moving the block to a different
519
- // parent, the move should not be possible if the condition is true.
520
-
521
-
522
- if (templateLock === 'insert') {
523
- return;
524
- }
525
-
526
- const canInsertBlocks = yield _data.controls.select(_constants.STORE_NAME, 'canInsertBlocks', clientIds, toRootClientId); // If moving to other parent block, the move is possible if we can insert a block of the same type inside the new parent block.
527
-
528
- if (canInsertBlocks) {
529
- yield action;
530
- }
531
- }
550
+ });
551
+ };
532
552
  /**
533
- * Returns an action object signalling that the given block should be moved to a
534
- * new position.
553
+ * Action that moves given block to a new position.
535
554
  *
536
555
  * @param {?string} clientId The client ID of the block.
537
556
  * @param {?string} fromRootClientId Root client ID source.
538
557
  * @param {?string} toRootClientId Root client ID destination.
539
558
  * @param {number} index The index to move the block to.
540
- *
541
- * @yield {Object} Action object.
542
559
  */
543
560
 
544
561
 
545
- function* moveBlockToPosition(clientId, fromRootClientId = '', toRootClientId = '', index) {
546
- yield moveBlocksToPosition([clientId], fromRootClientId, toRootClientId, index);
562
+ exports.moveBlocksToPosition = moveBlocksToPosition;
563
+
564
+ function moveBlockToPosition(clientId, fromRootClientId = '', toRootClientId = '', index) {
565
+ return moveBlocksToPosition([clientId], fromRootClientId, toRootClientId, index);
547
566
  }
548
567
  /**
549
- * Returns an action object used in signalling that a single block should be
550
- * inserted, optionally at a specific index respective a root block list.
568
+ * Action that inserts a single block, optionally at a specific index respective a root block list.
551
569
  *
552
570
  * @param {Object} block Block object to insert.
553
571
  * @param {?number} index Index at which block should be inserted.
@@ -559,12 +577,13 @@ function* moveBlockToPosition(clientId, fromRootClientId = '', toRootClientId =
559
577
  */
560
578
 
561
579
 
562
- function insertBlock(block, index, rootClientId, updateSelection = true, meta) {
580
+ function insertBlock(block, index, rootClientId, updateSelection, meta) {
563
581
  return insertBlocks([block], index, rootClientId, updateSelection, 0, meta);
564
582
  }
583
+ /* eslint-disable jsdoc/valid-types */
584
+
565
585
  /**
566
- * Returns an action object used in signalling that an array of blocks should
567
- * be inserted, optionally at a specific index respective a root block list.
586
+ * Action that inserts an array of blocks, optionally at a specific index respective a root block list.
568
587
  *
569
588
  * @param {Object[]} blocks Block objects to insert.
570
589
  * @param {?number} index Index at which block should be inserted.
@@ -576,7 +595,11 @@ function insertBlock(block, index, rootClientId, updateSelection = true, meta) {
576
595
  */
577
596
 
578
597
 
579
- function* insertBlocks(blocks, index, rootClientId, updateSelection = true, initialPosition = 0, meta) {
598
+ const insertBlocks = (blocks, index, rootClientId, updateSelection = true, initialPosition = 0, meta) => ({
599
+ select,
600
+ dispatch
601
+ }) => {
602
+ /* eslint-enable jsdoc/valid-types */
580
603
  if ((0, _lodash.isObject)(initialPosition)) {
581
604
  meta = initialPosition;
582
605
  initialPosition = 0;
@@ -587,11 +610,11 @@ function* insertBlocks(blocks, index, rootClientId, updateSelection = true, init
587
610
  });
588
611
  }
589
612
 
590
- blocks = getBlocksWithDefaultStylesApplied((0, _lodash.castArray)(blocks), yield _data.controls.select(_constants.STORE_NAME, 'getSettings'));
613
+ blocks = getBlocksWithDefaultStylesApplied((0, _lodash.castArray)(blocks), select.getSettings());
591
614
  const allowedBlocks = [];
592
615
 
593
616
  for (const block of blocks) {
594
- const isValid = yield _data.controls.select(_constants.STORE_NAME, 'canInsertBlockType', block.name, rootClientId);
617
+ const isValid = select.canInsertBlockType(block.name, rootClientId);
595
618
 
596
619
  if (isValid) {
597
620
  allowedBlocks.push(block);
@@ -599,7 +622,7 @@ function* insertBlocks(blocks, index, rootClientId, updateSelection = true, init
599
622
  }
600
623
 
601
624
  if (allowedBlocks.length) {
602
- return {
625
+ dispatch({
603
626
  type: 'INSERT_BLOCKS',
604
627
  blocks: allowedBlocks,
605
628
  index,
@@ -608,12 +631,11 @@ function* insertBlocks(blocks, index, rootClientId, updateSelection = true, init
608
631
  updateSelection,
609
632
  initialPosition: updateSelection ? initialPosition : null,
610
633
  meta
611
- };
634
+ });
612
635
  }
613
- }
636
+ };
614
637
  /**
615
- * Returns an action object used in signalling that the insertion point should
616
- * be shown.
638
+ * Action that shows the insertion point.
617
639
  *
618
640
  * @param {?string} rootClientId Optional root client ID of block list on
619
641
  * which to insert.
@@ -624,6 +646,8 @@ function* insertBlocks(blocks, index, rootClientId, updateSelection = true, init
624
646
  */
625
647
 
626
648
 
649
+ exports.insertBlocks = insertBlocks;
650
+
627
651
  function showInsertionPoint(rootClientId, index, __unstableOptions = {}) {
628
652
  const {
629
653
  __unstableWithInserter
@@ -636,7 +660,7 @@ function showInsertionPoint(rootClientId, index, __unstableOptions = {}) {
636
660
  };
637
661
  }
638
662
  /**
639
- * Returns an action object hiding the insertion point.
663
+ * Action that hides the insertion point.
640
664
  *
641
665
  * @return {Object} Action object.
642
666
  */
@@ -648,7 +672,7 @@ function hideInsertionPoint() {
648
672
  };
649
673
  }
650
674
  /**
651
- * Returns an action object resetting the template validity.
675
+ * Action that resets the template validity.
652
676
  *
653
677
  * @param {boolean} isValid template validity flag.
654
678
  *
@@ -663,51 +687,59 @@ function setTemplateValidity(isValid) {
663
687
  };
664
688
  }
665
689
  /**
666
- * Returns an action object synchronize the template with the list of blocks
690
+ * Action that synchronizes the template with the list of blocks.
667
691
  *
668
692
  * @return {Object} Action object.
669
693
  */
670
694
 
671
695
 
672
- function* synchronizeTemplate() {
673
- yield {
696
+ const synchronizeTemplate = () => ({
697
+ select,
698
+ dispatch
699
+ }) => {
700
+ dispatch({
674
701
  type: 'SYNCHRONIZE_TEMPLATE'
675
- };
676
- const blocks = yield _data.controls.select(_constants.STORE_NAME, 'getBlocks');
677
- const template = yield _data.controls.select(_constants.STORE_NAME, 'getTemplate');
702
+ });
703
+ const blocks = select.getBlocks();
704
+ const template = select.getTemplate();
678
705
  const updatedBlockList = (0, _blocks.synchronizeBlocksWithTemplate)(blocks, template);
679
- return yield resetBlocks(updatedBlockList);
680
- }
706
+ dispatch.resetBlocks(updatedBlockList);
707
+ };
681
708
  /**
682
- * Returns an action object used in signalling that two blocks should be merged
709
+ * Action that merges two blocks.
683
710
  *
684
711
  * @param {string} firstBlockClientId Client ID of the first block to merge.
685
712
  * @param {string} secondBlockClientId Client ID of the second block to merge.
686
713
  */
687
714
 
688
715
 
689
- function* mergeBlocks(firstBlockClientId, secondBlockClientId) {
716
+ exports.synchronizeTemplate = synchronizeTemplate;
717
+
718
+ const mergeBlocks = (firstBlockClientId, secondBlockClientId) => ({
719
+ select,
720
+ dispatch
721
+ }) => {
690
722
  const blocks = [firstBlockClientId, secondBlockClientId];
691
- yield {
723
+ dispatch({
692
724
  type: 'MERGE_BLOCKS',
693
725
  blocks
694
- };
726
+ });
695
727
  const [clientIdA, clientIdB] = blocks;
696
- const blockA = yield _data.controls.select(_constants.STORE_NAME, 'getBlock', clientIdA);
728
+ const blockA = select.getBlock(clientIdA);
697
729
  const blockAType = (0, _blocks.getBlockType)(blockA.name); // Only focus the previous block if it's not mergeable
698
730
 
699
- if (!blockAType.merge) {
700
- yield selectBlock(blockA.clientId);
731
+ if (blockAType && !blockAType.merge) {
732
+ dispatch.selectBlock(blockA.clientId);
701
733
  return;
702
734
  }
703
735
 
704
- const blockB = yield _data.controls.select(_constants.STORE_NAME, 'getBlock', clientIdB);
736
+ const blockB = select.getBlock(clientIdB);
705
737
  const blockBType = (0, _blocks.getBlockType)(blockB.name);
706
738
  const {
707
739
  clientId,
708
740
  attributeKey,
709
741
  offset
710
- } = yield _data.controls.select(_constants.STORE_NAME, 'getSelectionStart');
742
+ } = select.getSelectionStart();
711
743
  const selectedBlockType = clientId === clientIdA ? blockAType : blockBType;
712
744
  const attributeDefinition = selectedBlockType.attributes[attributeKey];
713
745
  const canRestoreTextSelection = (clientId === clientIdA || clientId === clientIdB) && attributeKey !== undefined && offset !== undefined && // We cannot restore text selection if the RichText identifier
@@ -785,15 +817,16 @@ function* mergeBlocks(firstBlockClientId, secondBlockClientId) {
785
817
  preserveWhiteSpace
786
818
  });
787
819
  updatedAttributes[newAttributeKey] = newHtml;
788
- yield selectionChange(blockA.clientId, newAttributeKey, newOffset, newOffset);
820
+ dispatch.selectionChange(blockA.clientId, newAttributeKey, newOffset, newOffset);
789
821
  }
790
822
 
791
- yield* replaceBlocks([blockA.clientId, blockB.clientId], [{ ...blockA,
823
+ dispatch.replaceBlocks([blockA.clientId, blockB.clientId], [{ ...blockA,
792
824
  attributes: { ...blockA.attributes,
793
825
  ...updatedAttributes
794
826
  }
795
- }, ...blocksWithTheSameType.slice(1)]);
796
- }
827
+ }, ...blocksWithTheSameType.slice(1)], 0 // If we don't pass the `indexToSelect` it will default to the last block.
828
+ );
829
+ };
797
830
  /**
798
831
  * Yields action objects used in signalling that the blocks corresponding to
799
832
  * the set of specified client IDs are to be removed.
@@ -804,36 +837,36 @@ function* mergeBlocks(firstBlockClientId, secondBlockClientId) {
804
837
  */
805
838
 
806
839
 
807
- function* removeBlocks(clientIds, selectPrevious = true) {
840
+ exports.mergeBlocks = mergeBlocks;
841
+
842
+ const removeBlocks = (clientIds, selectPrevious = true) => ({
843
+ select,
844
+ dispatch
845
+ }) => {
808
846
  if (!clientIds || !clientIds.length) {
809
847
  return;
810
848
  }
811
849
 
812
850
  clientIds = (0, _lodash.castArray)(clientIds);
813
- const rootClientId = yield _data.controls.select(_constants.STORE_NAME, 'getBlockRootClientId', clientIds[0]);
814
- const isLocked = yield _data.controls.select(_constants.STORE_NAME, 'getTemplateLock', rootClientId);
851
+ const rootClientId = select.getBlockRootClientId(clientIds[0]);
852
+ const canRemoveBlocks = select.canRemoveBlocks(clientIds, rootClientId);
815
853
 
816
- if (isLocked) {
854
+ if (!canRemoveBlocks) {
817
855
  return;
818
856
  }
819
857
 
820
- let previousBlockId;
821
-
822
858
  if (selectPrevious) {
823
- previousBlockId = yield selectPreviousBlock(clientIds[0]);
824
- } else {
825
- previousBlockId = yield _data.controls.select(_constants.STORE_NAME, 'getPreviousBlockClientId', clientIds[0]);
859
+ dispatch.selectPreviousBlock(clientIds[0]);
826
860
  }
827
861
 
828
- yield {
862
+ dispatch({
829
863
  type: 'REMOVE_BLOCKS',
830
864
  clientIds
831
- }; // To avoid a focus loss when removing the last block, assure there is
865
+ }); // To avoid a focus loss when removing the last block, assure there is
832
866
  // always a default block if the last of the blocks have been removed.
833
867
 
834
- const defaultBlockId = yield* ensureDefaultBlock();
835
- return [previousBlockId || defaultBlockId];
836
- }
868
+ dispatch(ensureDefaultBlock());
869
+ };
837
870
  /**
838
871
  * Returns an action object used in signalling that the block with the
839
872
  * specified client ID is to be removed.
@@ -846,9 +879,13 @@ function* removeBlocks(clientIds, selectPrevious = true) {
846
879
  */
847
880
 
848
881
 
882
+ exports.removeBlocks = removeBlocks;
883
+
849
884
  function removeBlock(clientId, selectPrevious) {
850
885
  return removeBlocks([clientId], selectPrevious);
851
886
  }
887
+ /* eslint-disable jsdoc/valid-types */
888
+
852
889
  /**
853
890
  * Returns an action object used in signalling that the inner blocks with the
854
891
  * specified client ID should be replaced.
@@ -862,6 +899,7 @@ function removeBlock(clientId, selectPrevious) {
862
899
 
863
900
 
864
901
  function replaceInnerBlocks(rootClientId, blocks, updateSelection = false, initialPosition = 0) {
902
+ /* eslint-enable jsdoc/valid-types */
865
903
  return {
866
904
  type: 'REPLACE_INNER_BLOCKS',
867
905
  rootClientId,
@@ -963,8 +1001,7 @@ function exitFormattedText() {
963
1001
  };
964
1002
  }
965
1003
  /**
966
- * Returns an action object used in signalling that the user caret has changed
967
- * position.
1004
+ * Action that changes the position of the user caret.
968
1005
  *
969
1006
  * @param {string} clientId The selected block client ID.
970
1007
  * @param {string} attributeKey The selected block attribute key.
@@ -985,8 +1022,7 @@ function selectionChange(clientId, attributeKey, startOffset, endOffset) {
985
1022
  };
986
1023
  }
987
1024
  /**
988
- * Returns an action object used in signalling that a new block of the default
989
- * type should be added to the block list.
1025
+ * Action that adds a new block of the default type to the block list.
990
1026
  *
991
1027
  * @param {?Object} attributes Optional attributes of the block to assign.
992
1028
  * @param {?string} rootClientId Optional root client ID of block list on which
@@ -1009,7 +1045,7 @@ function insertDefaultBlock(attributes, rootClientId, index) {
1009
1045
  return insertBlock(block, index, rootClientId);
1010
1046
  }
1011
1047
  /**
1012
- * Returns an action object that changes the nested settings of a given block.
1048
+ * Action that changes the nested settings of a given block.
1013
1049
  *
1014
1050
  * @param {string} clientId Client ID of the block whose nested setting are
1015
1051
  * being received.
@@ -1027,7 +1063,7 @@ function updateBlockListSettings(clientId, settings) {
1027
1063
  };
1028
1064
  }
1029
1065
  /**
1030
- * Returns an action object used in signalling that the block editor settings have been updated.
1066
+ * Action that updates the block editor settings.
1031
1067
  *
1032
1068
  * @param {Object} settings Updated settings
1033
1069
  *
@@ -1042,7 +1078,7 @@ function updateSettings(settings) {
1042
1078
  };
1043
1079
  }
1044
1080
  /**
1045
- * Returns an action object used in signalling that a temporary reusable blocks have been saved
1081
+ * Action that signals that a temporary reusable block has been saved
1046
1082
  * in order to switch its temporary id with the real id.
1047
1083
  *
1048
1084
  * @param {string} id Reusable block's id.
@@ -1060,7 +1096,7 @@ function __unstableSaveReusableBlock(id, updatedId) {
1060
1096
  };
1061
1097
  }
1062
1098
  /**
1063
- * Returns an action object used in signalling that the last block change should be marked explicitly as persistent.
1099
+ * Action that marks the last block change explicitly as persistent.
1064
1100
  *
1065
1101
  * @return {Object} Action object.
1066
1102
  */
@@ -1072,7 +1108,7 @@ function __unstableMarkLastChangeAsPersistent() {
1072
1108
  };
1073
1109
  }
1074
1110
  /**
1075
- * Returns an action object used in signalling that the next block change should be marked explicitly as not persistent.
1111
+ * Action that signals that the next block change should be marked explicitly as not persistent.
1076
1112
  *
1077
1113
  * @return {Object} Action object.
1078
1114
  */
@@ -1084,151 +1120,180 @@ function __unstableMarkNextChangeAsNotPersistent() {
1084
1120
  };
1085
1121
  }
1086
1122
  /**
1087
- * Returns an action object used in signalling that the last block change is
1088
- * an automatic change, meaning it was not performed by the user, and can be
1089
- * undone using the `Escape` and `Backspace` keys. This action must be called
1090
- * after the change was made, and any actions that are a consequence of it, so
1091
- * it is recommended to be called at the next idle period to ensure all
1123
+ * Action that marks the last block change as an automatic change, meaning it was not
1124
+ * performed by the user, and can be undone using the `Escape` and `Backspace` keys.
1125
+ * This action must be called after the change was made, and any actions that are a
1126
+ * consequence of it, so it is recommended to be called at the next idle period to ensure all
1092
1127
  * selection changes have been recorded.
1093
1128
  */
1094
1129
 
1095
1130
 
1096
- function* __unstableMarkAutomaticChange() {
1097
- yield {
1131
+ const __unstableMarkAutomaticChange = () => ({
1132
+ dispatch
1133
+ }) => {
1134
+ dispatch({
1098
1135
  type: 'MARK_AUTOMATIC_CHANGE'
1099
- };
1100
- yield (0, _controls.__unstableMarkAutomaticChangeFinalControl)();
1101
- }
1102
-
1103
- function __unstableMarkAutomaticChangeFinal() {
1104
- return {
1105
- type: 'MARK_AUTOMATIC_CHANGE_FINAL'
1106
- };
1107
- }
1136
+ });
1137
+ const {
1138
+ requestIdleCallback = cb => setTimeout(cb, 100)
1139
+ } = window;
1140
+ requestIdleCallback(() => {
1141
+ dispatch({
1142
+ type: 'MARK_AUTOMATIC_CHANGE_FINAL'
1143
+ });
1144
+ });
1145
+ };
1108
1146
  /**
1109
- * Generators that triggers an action used to enable or disable the navigation mode.
1147
+ * Action that enables or disables the navigation mode.
1110
1148
  *
1111
1149
  * @param {string} isNavigationMode Enable/Disable navigation mode.
1112
1150
  */
1113
1151
 
1114
1152
 
1115
- function* setNavigationMode(isNavigationMode = true) {
1116
- yield {
1153
+ exports.__unstableMarkAutomaticChange = __unstableMarkAutomaticChange;
1154
+
1155
+ const setNavigationMode = (isNavigationMode = true) => ({
1156
+ dispatch
1157
+ }) => {
1158
+ dispatch({
1117
1159
  type: 'SET_NAVIGATION_MODE',
1118
1160
  isNavigationMode
1119
- };
1161
+ });
1120
1162
 
1121
1163
  if (isNavigationMode) {
1122
1164
  (0, _a11y.speak)((0, _i18n.__)('You are currently in navigation mode. Navigate blocks using the Tab key and Arrow keys. Use Left and Right Arrow keys to move between nesting levels. To exit navigation mode and edit the selected block, press Enter.'));
1123
1165
  } else {
1124
1166
  (0, _a11y.speak)((0, _i18n.__)('You are currently in edit mode. To return to the navigation mode, press Escape.'));
1125
1167
  }
1126
- }
1168
+ };
1127
1169
  /**
1128
- * Generator that triggers an action used to enable or disable the block moving mode.
1170
+ * Action that enables or disables the block moving mode.
1129
1171
  *
1130
1172
  * @param {string|null} hasBlockMovingClientId Enable/Disable block moving mode.
1131
1173
  */
1132
1174
 
1133
1175
 
1134
- function* setBlockMovingClientId(hasBlockMovingClientId = null) {
1135
- yield {
1176
+ exports.setNavigationMode = setNavigationMode;
1177
+
1178
+ const setBlockMovingClientId = (hasBlockMovingClientId = null) => ({
1179
+ dispatch
1180
+ }) => {
1181
+ dispatch({
1136
1182
  type: 'SET_BLOCK_MOVING_MODE',
1137
1183
  hasBlockMovingClientId
1138
- };
1184
+ });
1139
1185
 
1140
1186
  if (hasBlockMovingClientId) {
1141
1187
  (0, _a11y.speak)((0, _i18n.__)('Use the Tab key and Arrow keys to choose new block location. Use Left and Right Arrow keys to move between nesting levels. Once location is selected press Enter or Space to move the block.'));
1142
1188
  }
1143
- }
1189
+ };
1144
1190
  /**
1145
- * Generator that triggers an action used to duplicate a list of blocks.
1191
+ * Action that duplicates a list of blocks.
1146
1192
  *
1147
1193
  * @param {string[]} clientIds
1148
1194
  * @param {boolean} updateSelection
1149
1195
  */
1150
1196
 
1151
1197
 
1152
- function* duplicateBlocks(clientIds, updateSelection = true) {
1153
- if (!clientIds && !clientIds.length) {
1198
+ exports.setBlockMovingClientId = setBlockMovingClientId;
1199
+
1200
+ const duplicateBlocks = (clientIds, updateSelection = true) => ({
1201
+ select,
1202
+ dispatch
1203
+ }) => {
1204
+ if (!clientIds || !clientIds.length) {
1154
1205
  return;
1155
- }
1206
+ } // Return early if blocks don't exist.
1207
+
1156
1208
 
1157
- const blocks = yield _data.controls.select(_constants.STORE_NAME, 'getBlocksByClientId', clientIds);
1158
- const rootClientId = yield _data.controls.select(_constants.STORE_NAME, 'getBlockRootClientId', clientIds[0]); // Return early if blocks don't exist.
1209
+ const blocks = select.getBlocksByClientId(clientIds);
1159
1210
 
1160
1211
  if ((0, _lodash.some)(blocks, block => !block)) {
1161
1212
  return;
1162
- }
1213
+ } // Return early if blocks don't support multiple usage.
1214
+
1163
1215
 
1164
- const blockNames = blocks.map(block => block.name); // Return early if blocks don't support multiple usage.
1216
+ const blockNames = blocks.map(block => block.name);
1165
1217
 
1166
- if ((0, _lodash.some)(blockNames, blockName => !(0, _blocks.hasBlockSupport)(blockName, 'multiple', true))) {
1218
+ if (blockNames.some(blockName => !(0, _blocks.hasBlockSupport)(blockName, 'multiple', true))) {
1167
1219
  return;
1168
1220
  }
1169
1221
 
1170
- const lastSelectedIndex = yield _data.controls.select(_constants.STORE_NAME, 'getBlockIndex', (0, _lodash.last)((0, _lodash.castArray)(clientIds)), rootClientId);
1222
+ const rootClientId = select.getBlockRootClientId(clientIds[0]);
1223
+ const lastSelectedIndex = select.getBlockIndex((0, _lodash.last)((0, _lodash.castArray)(clientIds)), rootClientId);
1171
1224
  const clonedBlocks = blocks.map(block => (0, _blocks.__experimentalCloneSanitizedBlock)(block));
1172
- yield insertBlocks(clonedBlocks, lastSelectedIndex + 1, rootClientId, updateSelection);
1225
+ dispatch.insertBlocks(clonedBlocks, lastSelectedIndex + 1, rootClientId, updateSelection);
1173
1226
 
1174
1227
  if (clonedBlocks.length > 1 && updateSelection) {
1175
- yield multiSelect((0, _lodash.first)(clonedBlocks).clientId, (0, _lodash.last)(clonedBlocks).clientId);
1228
+ dispatch.multiSelect((0, _lodash.first)(clonedBlocks).clientId, (0, _lodash.last)(clonedBlocks).clientId);
1176
1229
  }
1177
1230
 
1178
1231
  return clonedBlocks.map(block => block.clientId);
1179
- }
1232
+ };
1180
1233
  /**
1181
- * Generator used to insert an empty block after a given block.
1234
+ * Action that inserts an empty block before a given block.
1182
1235
  *
1183
1236
  * @param {string} clientId
1184
1237
  */
1185
1238
 
1186
1239
 
1187
- function* insertBeforeBlock(clientId) {
1240
+ exports.duplicateBlocks = duplicateBlocks;
1241
+
1242
+ const insertBeforeBlock = clientId => ({
1243
+ select,
1244
+ dispatch
1245
+ }) => {
1188
1246
  if (!clientId) {
1189
1247
  return;
1190
1248
  }
1191
1249
 
1192
- const rootClientId = yield _data.controls.select(_constants.STORE_NAME, 'getBlockRootClientId', clientId);
1193
- const isLocked = yield _data.controls.select(_constants.STORE_NAME, 'getTemplateLock', rootClientId);
1250
+ const rootClientId = select.getBlockRootClientId(clientId);
1251
+ const isLocked = select.getTemplateLock(rootClientId);
1194
1252
 
1195
1253
  if (isLocked) {
1196
1254
  return;
1197
1255
  }
1198
1256
 
1199
- const firstSelectedIndex = yield _data.controls.select(_constants.STORE_NAME, 'getBlockIndex', clientId, rootClientId);
1200
- return yield insertDefaultBlock({}, rootClientId, firstSelectedIndex);
1201
- }
1257
+ const firstSelectedIndex = select.getBlockIndex(clientId, rootClientId);
1258
+ return dispatch.insertDefaultBlock({}, rootClientId, firstSelectedIndex);
1259
+ };
1202
1260
  /**
1203
- * Generator used to insert an empty block before a given block.
1261
+ * Action that inserts an empty block after a given block.
1204
1262
  *
1205
1263
  * @param {string} clientId
1206
1264
  */
1207
1265
 
1208
1266
 
1209
- function* insertAfterBlock(clientId) {
1267
+ exports.insertBeforeBlock = insertBeforeBlock;
1268
+
1269
+ const insertAfterBlock = clientId => ({
1270
+ select,
1271
+ dispatch
1272
+ }) => {
1210
1273
  if (!clientId) {
1211
1274
  return;
1212
1275
  }
1213
1276
 
1214
- const rootClientId = yield _data.controls.select(_constants.STORE_NAME, 'getBlockRootClientId', clientId);
1215
- const isLocked = yield _data.controls.select(_constants.STORE_NAME, 'getTemplateLock', rootClientId);
1277
+ const rootClientId = select.getBlockRootClientId(clientId);
1278
+ const isLocked = select.getTemplateLock(rootClientId);
1216
1279
 
1217
1280
  if (isLocked) {
1218
1281
  return;
1219
1282
  }
1220
1283
 
1221
- const firstSelectedIndex = yield _data.controls.select(_constants.STORE_NAME, 'getBlockIndex', clientId, rootClientId);
1222
- return yield insertDefaultBlock({}, rootClientId, firstSelectedIndex + 1);
1223
- }
1284
+ const firstSelectedIndex = select.getBlockIndex(clientId, rootClientId);
1285
+ return dispatch.insertDefaultBlock({}, rootClientId, firstSelectedIndex + 1);
1286
+ };
1224
1287
  /**
1225
- * Returns an action object that toggles the highlighted block state.
1288
+ * Action that toggles the highlighted block state.
1226
1289
  *
1227
1290
  * @param {string} clientId The block's clientId.
1228
1291
  * @param {boolean} isHighlighted The highlight state.
1229
1292
  */
1230
1293
 
1231
1294
 
1295
+ exports.insertAfterBlock = insertAfterBlock;
1296
+
1232
1297
  function toggleBlockHighlight(clientId, isHighlighted) {
1233
1298
  return {
1234
1299
  type: 'TOGGLE_BLOCK_HIGHLIGHT',
@@ -1237,29 +1302,29 @@ function toggleBlockHighlight(clientId, isHighlighted) {
1237
1302
  };
1238
1303
  }
1239
1304
  /**
1240
- * Yields action objects used in signalling that the block corresponding to the
1241
- * given clientId should appear to "flash" by rhythmically highlighting it.
1305
+ * Action that "flashes" the block with a given `clientId` by rhythmically highlighting it.
1242
1306
  *
1243
1307
  * @param {string} clientId Target block client ID.
1244
1308
  */
1245
1309
 
1246
1310
 
1247
- function* flashBlock(clientId) {
1248
- yield toggleBlockHighlight(clientId, true);
1249
- yield {
1250
- type: 'SLEEP',
1251
- duration: 150
1252
- };
1253
- yield toggleBlockHighlight(clientId, false);
1254
- }
1311
+ const flashBlock = clientId => async ({
1312
+ dispatch
1313
+ }) => {
1314
+ dispatch(toggleBlockHighlight(clientId, true));
1315
+ await new Promise(resolve => setTimeout(resolve, 150));
1316
+ dispatch(toggleBlockHighlight(clientId, false));
1317
+ };
1255
1318
  /**
1256
- * Returns an action object that sets whether the block has controlled innerblocks.
1319
+ * Action that sets whether a block has controlled inner blocks.
1257
1320
  *
1258
1321
  * @param {string} clientId The block's clientId.
1259
1322
  * @param {boolean} hasControlledInnerBlocks True if the block's inner blocks are controlled.
1260
1323
  */
1261
1324
 
1262
1325
 
1326
+ exports.flashBlock = flashBlock;
1327
+
1263
1328
  function setHasControlledInnerBlocks(clientId, hasControlledInnerBlocks) {
1264
1329
  return {
1265
1330
  type: 'SET_HAS_CONTROLLED_INNER_BLOCKS',