@wordpress/block-editor 9.8.1-next.957ca95e4c.0 → 10.0.1

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 (511) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +13 -1
  3. package/build/components/alignment-control/ui.js +6 -5
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/autocomplete/index.js +2 -2
  6. package/build/components/autocomplete/index.js.map +1 -1
  7. package/build/components/block-actions/index.js +5 -9
  8. package/build/components/block-actions/index.js.map +1 -1
  9. package/build/components/block-alignment-control/ui.js +5 -5
  10. package/build/components/block-alignment-control/ui.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-draggable/draggable-chip.js +2 -1
  14. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  15. package/build/components/block-edit/edit.js +1 -1
  16. package/build/components/block-edit/edit.js.map +1 -1
  17. package/build/components/block-inspector/index.js +125 -17
  18. package/build/components/block-inspector/index.js.map +1 -1
  19. package/build/components/block-list/block-list-compact.native.js +2 -1
  20. package/build/components/block-list/block-list-compact.native.js.map +1 -1
  21. package/build/components/block-list/block.js +40 -9
  22. package/build/components/block-list/block.js.map +1 -1
  23. package/build/components/block-list/index.js +4 -4
  24. package/build/components/block-list/index.js.map +1 -1
  25. package/build/components/block-list/use-block-props/index.js +14 -11
  26. package/build/components/block-list/use-block-props/index.js.map +1 -1
  27. package/build/components/block-list/use-block-props/use-block-class-names.js +3 -2
  28. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  29. package/build/components/block-list/use-block-props/use-focus-first-element.js +3 -9
  30. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  31. package/build/components/block-list/use-block-props/use-is-hovered.js +1 -2
  32. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  33. package/build/components/block-list/use-in-between-inserter.js +7 -12
  34. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  35. package/build/components/block-list-appender/index.js +20 -21
  36. package/build/components/block-list-appender/index.js.map +1 -1
  37. package/build/components/block-list-appender/index.native.js +1 -7
  38. package/build/components/block-list-appender/index.native.js.map +1 -1
  39. package/build/components/block-lock/use-block-lock.js +3 -1
  40. package/build/components/block-lock/use-block-lock.js.map +1 -1
  41. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +20 -10
  42. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  43. package/build/components/block-mover/button.js +4 -6
  44. package/build/components/block-mover/button.js.map +1 -1
  45. package/build/components/block-mover/index.js +4 -6
  46. package/build/components/block-mover/index.js.map +1 -1
  47. package/build/components/block-mover/index.native.js +24 -8
  48. package/build/components/block-mover/index.native.js.map +1 -1
  49. package/build/components/block-popover/inbetween.js +82 -52
  50. package/build/components/block-popover/inbetween.js.map +1 -1
  51. package/build/components/block-popover/index.js +31 -7
  52. package/build/components/block-popover/index.js.map +1 -1
  53. package/build/components/block-preview/auto.js +4 -2
  54. package/build/components/block-preview/auto.js.map +1 -1
  55. package/build/components/block-settings-menu/block-settings-dropdown.js +3 -1
  56. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  57. package/build/components/block-settings-menu-controls/index.js +3 -1
  58. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  59. package/build/components/block-styles/preview-panel.js +7 -1
  60. package/build/components/block-styles/preview-panel.js.map +1 -1
  61. package/build/components/block-switcher/block-transformations-menu.js +114 -25
  62. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  63. package/build/components/block-toolbar/index.js +9 -8
  64. package/build/components/block-toolbar/index.js.map +1 -1
  65. package/build/components/block-tools/block-contextual-toolbar.js +3 -2
  66. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  67. package/build/components/block-tools/block-selection-button.js +13 -5
  68. package/build/components/block-tools/block-selection-button.js.map +1 -1
  69. package/build/components/block-tools/index.js +33 -15
  70. package/build/components/block-tools/index.js.map +1 -1
  71. package/build/components/block-tools/insertion-point.js +4 -9
  72. package/build/components/block-tools/insertion-point.js.map +1 -1
  73. package/build/components/block-tools/selected-block-popover.js +9 -8
  74. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  75. package/build/components/block-tools/use-block-toolbar-popover-props.js +13 -8
  76. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  77. package/build/components/block-tools/zoom-out-mode-inserters.js +71 -0
  78. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
  79. package/build/components/block-vertical-alignment-control/ui.js +5 -2
  80. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  81. package/build/components/border-radius-control/linked-button.js +5 -6
  82. package/build/components/border-radius-control/linked-button.js.map +1 -1
  83. package/build/components/colors-gradients/dropdown.js +1 -1
  84. package/build/components/colors-gradients/dropdown.js.map +1 -1
  85. package/build/components/convert-to-group-buttons/toolbar.js +8 -3
  86. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  87. package/build/components/iframe/index.js +31 -4
  88. package/build/components/iframe/index.js.map +1 -1
  89. package/build/components/inner-blocks/default-block-appender.js +1 -7
  90. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  91. package/build/components/inner-blocks/index.js +9 -3
  92. package/build/components/inner-blocks/index.js.map +1 -1
  93. package/build/components/inner-blocks/use-inner-block-template-sync.js +28 -17
  94. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  95. package/build/components/inner-blocks/use-nested-settings-update.js +28 -4
  96. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  97. package/build/components/inserter/index.js +3 -6
  98. package/build/components/inserter/index.js.map +1 -1
  99. package/build/components/inserter/library.js +14 -3
  100. package/build/components/inserter/library.js.map +1 -1
  101. package/build/components/inserter/menu.js +21 -8
  102. package/build/components/inserter/menu.js.map +1 -1
  103. package/build/components/inserter/preview-panel.js +1 -1
  104. package/build/components/inserter/preview-panel.js.map +1 -1
  105. package/build/components/inserter/tabs.js +11 -4
  106. package/build/components/inserter/tabs.js.map +1 -1
  107. package/build/components/link-control/link-preview.js +1 -1
  108. package/build/components/link-control/link-preview.js.map +1 -1
  109. package/build/components/link-control/search-input.js +6 -3
  110. package/build/components/link-control/search-input.js.map +1 -1
  111. package/build/components/link-control/search-item.js +36 -5
  112. package/build/components/link-control/search-item.js.map +1 -1
  113. package/build/components/list-view/block.js +23 -11
  114. package/build/components/list-view/block.js.map +1 -1
  115. package/build/components/list-view/branch.js +19 -2
  116. package/build/components/list-view/branch.js.map +1 -1
  117. package/build/components/list-view/drop-indicator.js +30 -28
  118. package/build/components/list-view/drop-indicator.js.map +1 -1
  119. package/build/components/list-view/index.js +8 -4
  120. package/build/components/list-view/index.js.map +1 -1
  121. package/build/components/list-view/use-block-selection.js +0 -1
  122. package/build/components/list-view/use-block-selection.js.map +1 -1
  123. package/build/components/provider/use-block-sync.js +1 -7
  124. package/build/components/provider/use-block-sync.js.map +1 -1
  125. package/build/components/publish-date-time-picker/index.js +1 -1
  126. package/build/components/publish-date-time-picker/index.js.map +1 -1
  127. package/build/components/rich-text/format-toolbar-container.js +9 -9
  128. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  129. package/build/components/rich-text/index.js +31 -21
  130. package/build/components/rich-text/index.js.map +1 -1
  131. package/build/components/rich-text/index.native.js +11 -20
  132. package/build/components/rich-text/index.native.js.map +1 -1
  133. package/build/components/spacing-sizes-control/linked-button.js +2 -3
  134. package/build/components/spacing-sizes-control/linked-button.js.map +1 -1
  135. package/build/components/spacing-sizes-control/utils.js +1 -4
  136. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  137. package/build/components/text-decoration-control/index.js +19 -15
  138. package/build/components/text-decoration-control/index.js.map +1 -1
  139. package/build/components/text-transform-control/index.js +25 -17
  140. package/build/components/text-transform-control/index.js.map +1 -1
  141. package/build/components/tool-selector/index.js +6 -11
  142. package/build/components/tool-selector/index.js.map +1 -1
  143. package/build/components/url-popover/image-url-input-ui.js +6 -4
  144. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  145. package/build/components/url-popover/index.js +1 -1
  146. package/build/components/url-popover/index.js.map +1 -1
  147. package/build/components/use-block-drop-zone/index.js +7 -4
  148. package/build/components/use-block-drop-zone/index.js.map +1 -1
  149. package/build/components/use-moving-animation/index.js +9 -28
  150. package/build/components/use-moving-animation/index.js.map +1 -1
  151. package/build/components/writing-flow/use-select-all.js +1 -7
  152. package/build/components/writing-flow/use-select-all.js.map +1 -1
  153. package/build/hooks/align.js +14 -2
  154. package/build/hooks/align.js.map +1 -1
  155. package/build/hooks/color-panel.js +2 -1
  156. package/build/hooks/color-panel.js.map +1 -1
  157. package/build/hooks/content-lock-ui.js +145 -0
  158. package/build/hooks/content-lock-ui.js.map +1 -0
  159. package/build/hooks/duotone.js +8 -1
  160. package/build/hooks/duotone.js.map +1 -1
  161. package/build/hooks/index.js +14 -0
  162. package/build/hooks/index.js.map +1 -1
  163. package/build/hooks/layout.js +11 -9
  164. package/build/hooks/layout.js.map +1 -1
  165. package/build/hooks/metadata-name.js +55 -0
  166. package/build/hooks/metadata-name.js.map +1 -0
  167. package/build/hooks/metadata.js +65 -0
  168. package/build/hooks/metadata.js.map +1 -0
  169. package/build/hooks/typography.js +10 -11
  170. package/build/hooks/typography.js.map +1 -1
  171. package/build/hooks/use-typography-props.js +51 -0
  172. package/build/hooks/use-typography-props.js.map +1 -0
  173. package/build/hooks/utils.js +3 -1
  174. package/build/hooks/utils.js.map +1 -1
  175. package/build/index.js +7 -0
  176. package/build/index.js.map +1 -1
  177. package/build/layouts/constrained.js +59 -20
  178. package/build/layouts/constrained.js.map +1 -1
  179. package/build/store/actions.js +65 -21
  180. package/build/store/actions.js.map +1 -1
  181. package/build/store/reducer.js +43 -19
  182. package/build/store/reducer.js.map +1 -1
  183. package/build/store/selectors.js +96 -10
  184. package/build/store/selectors.js.map +1 -1
  185. package/build/utils/parse-css-unit-to-px.js +1 -1
  186. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  187. package/build-module/components/alignment-control/ui.js +6 -5
  188. package/build-module/components/alignment-control/ui.js.map +1 -1
  189. package/build-module/components/autocomplete/index.js +2 -2
  190. package/build-module/components/autocomplete/index.js.map +1 -1
  191. package/build-module/components/block-actions/index.js +5 -8
  192. package/build-module/components/block-actions/index.js.map +1 -1
  193. package/build-module/components/block-alignment-control/ui.js +5 -5
  194. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  195. package/build-module/components/block-content-overlay/index.js +2 -4
  196. package/build-module/components/block-content-overlay/index.js.map +1 -1
  197. package/build-module/components/block-draggable/draggable-chip.js +2 -1
  198. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  199. package/build-module/components/block-edit/edit.js +1 -1
  200. package/build-module/components/block-edit/edit.js.map +1 -1
  201. package/build-module/components/block-inspector/index.js +127 -19
  202. package/build-module/components/block-inspector/index.js.map +1 -1
  203. package/build-module/components/block-list/block-list-compact.native.js +2 -1
  204. package/build-module/components/block-list/block-list-compact.native.js.map +1 -1
  205. package/build-module/components/block-list/block.js +41 -9
  206. package/build-module/components/block-list/block.js.map +1 -1
  207. package/build-module/components/block-list/index.js +4 -4
  208. package/build-module/components/block-list/index.js.map +1 -1
  209. package/build-module/components/block-list/use-block-props/index.js +13 -11
  210. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  211. package/build-module/components/block-list/use-block-props/use-block-class-names.js +3 -2
  212. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  213. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +3 -8
  214. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  215. package/build-module/components/block-list/use-block-props/use-is-hovered.js +1 -2
  216. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  217. package/build-module/components/block-list/use-in-between-inserter.js +7 -12
  218. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  219. package/build-module/components/block-list-appender/index.js +20 -20
  220. package/build-module/components/block-list-appender/index.js.map +1 -1
  221. package/build-module/components/block-list-appender/index.native.js +1 -6
  222. package/build-module/components/block-list-appender/index.native.js.map +1 -1
  223. package/build-module/components/block-lock/use-block-lock.js +3 -1
  224. package/build-module/components/block-lock/use-block-lock.js.map +1 -1
  225. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +20 -9
  226. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  227. package/build-module/components/block-mover/button.js +4 -5
  228. package/build-module/components/block-mover/button.js.map +1 -1
  229. package/build-module/components/block-mover/index.js +4 -5
  230. package/build-module/components/block-mover/index.js.map +1 -1
  231. package/build-module/components/block-mover/index.native.js +24 -7
  232. package/build-module/components/block-mover/index.native.js.map +1 -1
  233. package/build-module/components/block-popover/inbetween.js +83 -53
  234. package/build-module/components/block-popover/inbetween.js.map +1 -1
  235. package/build-module/components/block-popover/index.js +31 -7
  236. package/build-module/components/block-popover/index.js.map +1 -1
  237. package/build-module/components/block-preview/auto.js +4 -2
  238. package/build-module/components/block-preview/auto.js.map +1 -1
  239. package/build-module/components/block-settings-menu/block-settings-dropdown.js +3 -1
  240. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  241. package/build-module/components/block-settings-menu-controls/index.js +3 -1
  242. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  243. package/build-module/components/block-styles/preview-panel.js +6 -1
  244. package/build-module/components/block-styles/preview-panel.js.map +1 -1
  245. package/build-module/components/block-switcher/block-transformations-menu.js +115 -27
  246. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  247. package/build-module/components/block-toolbar/index.js +9 -8
  248. package/build-module/components/block-toolbar/index.js.map +1 -1
  249. package/build-module/components/block-tools/block-contextual-toolbar.js +3 -2
  250. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  251. package/build-module/components/block-tools/block-selection-button.js +12 -5
  252. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  253. package/build-module/components/block-tools/index.js +30 -15
  254. package/build-module/components/block-tools/index.js.map +1 -1
  255. package/build-module/components/block-tools/insertion-point.js +4 -9
  256. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  257. package/build-module/components/block-tools/selected-block-popover.js +9 -8
  258. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  259. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +13 -8
  260. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  261. package/build-module/components/block-tools/zoom-out-mode-inserters.js +59 -0
  262. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
  263. package/build-module/components/block-vertical-alignment-control/ui.js +5 -2
  264. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  265. package/build-module/components/border-radius-control/linked-button.js +5 -6
  266. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  267. package/build-module/components/colors-gradients/dropdown.js +1 -1
  268. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  269. package/build-module/components/convert-to-group-buttons/toolbar.js +8 -3
  270. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  271. package/build-module/components/iframe/index.js +32 -5
  272. package/build-module/components/iframe/index.js.map +1 -1
  273. package/build-module/components/inner-blocks/default-block-appender.js +1 -6
  274. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  275. package/build-module/components/inner-blocks/index.js +9 -3
  276. package/build-module/components/inner-blocks/index.js.map +1 -1
  277. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +28 -17
  278. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  279. package/build-module/components/inner-blocks/use-nested-settings-update.js +28 -4
  280. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  281. package/build-module/components/inserter/index.js +3 -6
  282. package/build-module/components/inserter/index.js.map +1 -1
  283. package/build-module/components/inserter/library.js +14 -3
  284. package/build-module/components/inserter/library.js.map +1 -1
  285. package/build-module/components/inserter/menu.js +20 -8
  286. package/build-module/components/inserter/menu.js.map +1 -1
  287. package/build-module/components/inserter/preview-panel.js +1 -1
  288. package/build-module/components/inserter/preview-panel.js.map +1 -1
  289. package/build-module/components/inserter/tabs.js +11 -4
  290. package/build-module/components/inserter/tabs.js.map +1 -1
  291. package/build-module/components/link-control/link-preview.js +1 -1
  292. package/build-module/components/link-control/link-preview.js.map +1 -1
  293. package/build-module/components/link-control/search-input.js +6 -2
  294. package/build-module/components/link-control/search-input.js.map +1 -1
  295. package/build-module/components/link-control/search-item.js +37 -6
  296. package/build-module/components/link-control/search-item.js.map +1 -1
  297. package/build-module/components/list-view/block.js +23 -11
  298. package/build-module/components/list-view/block.js.map +1 -1
  299. package/build-module/components/list-view/branch.js +19 -3
  300. package/build-module/components/list-view/branch.js.map +1 -1
  301. package/build-module/components/list-view/drop-indicator.js +30 -28
  302. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  303. package/build-module/components/list-view/index.js +8 -4
  304. package/build-module/components/list-view/index.js.map +1 -1
  305. package/build-module/components/list-view/use-block-selection.js +0 -1
  306. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  307. package/build-module/components/provider/use-block-sync.js +1 -6
  308. package/build-module/components/provider/use-block-sync.js.map +1 -1
  309. package/build-module/components/publish-date-time-picker/index.js +1 -1
  310. package/build-module/components/publish-date-time-picker/index.js.map +1 -1
  311. package/build-module/components/rich-text/format-toolbar-container.js +10 -10
  312. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  313. package/build-module/components/rich-text/index.js +31 -20
  314. package/build-module/components/rich-text/index.js.map +1 -1
  315. package/build-module/components/rich-text/index.native.js +11 -18
  316. package/build-module/components/rich-text/index.native.js.map +1 -1
  317. package/build-module/components/spacing-sizes-control/linked-button.js +2 -3
  318. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -1
  319. package/build-module/components/spacing-sizes-control/utils.js +1 -4
  320. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  321. package/build-module/components/text-decoration-control/index.js +21 -16
  322. package/build-module/components/text-decoration-control/index.js.map +1 -1
  323. package/build-module/components/text-transform-control/index.js +28 -20
  324. package/build-module/components/text-transform-control/index.js.map +1 -1
  325. package/build-module/components/tool-selector/index.js +6 -11
  326. package/build-module/components/tool-selector/index.js.map +1 -1
  327. package/build-module/components/url-popover/image-url-input-ui.js +6 -4
  328. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  329. package/build-module/components/url-popover/index.js +1 -1
  330. package/build-module/components/url-popover/index.js.map +1 -1
  331. package/build-module/components/use-block-drop-zone/index.js +7 -4
  332. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  333. package/build-module/components/use-moving-animation/index.js +9 -28
  334. package/build-module/components/use-moving-animation/index.js.map +1 -1
  335. package/build-module/components/writing-flow/use-select-all.js +1 -6
  336. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  337. package/build-module/hooks/align.js +12 -2
  338. package/build-module/hooks/align.js.map +1 -1
  339. package/build-module/hooks/color-panel.js +2 -1
  340. package/build-module/hooks/color-panel.js.map +1 -1
  341. package/build-module/hooks/content-lock-ui.js +128 -0
  342. package/build-module/hooks/content-lock-ui.js.map +1 -0
  343. package/build-module/hooks/duotone.js +6 -1
  344. package/build-module/hooks/duotone.js.map +1 -1
  345. package/build-module/hooks/index.js +4 -0
  346. package/build-module/hooks/index.js.map +1 -1
  347. package/build-module/hooks/layout.js +11 -9
  348. package/build-module/hooks/layout.js.map +1 -1
  349. package/build-module/hooks/metadata-name.js +45 -0
  350. package/build-module/hooks/metadata-name.js.map +1 -0
  351. package/build-module/hooks/metadata.js +50 -0
  352. package/build-module/hooks/metadata.js.map +1 -0
  353. package/build-module/hooks/typography.js +10 -11
  354. package/build-module/hooks/typography.js.map +1 -1
  355. package/build-module/hooks/use-typography-props.js +38 -0
  356. package/build-module/hooks/use-typography-props.js.map +1 -0
  357. package/build-module/hooks/utils.js +4 -2
  358. package/build-module/hooks/utils.js.map +1 -1
  359. package/build-module/index.js +1 -1
  360. package/build-module/index.js.map +1 -1
  361. package/build-module/layouts/constrained.js +61 -22
  362. package/build-module/layouts/constrained.js.map +1 -1
  363. package/build-module/store/actions.js +58 -20
  364. package/build-module/store/actions.js.map +1 -1
  365. package/build-module/store/reducer.js +41 -19
  366. package/build-module/store/reducer.js.map +1 -1
  367. package/build-module/store/selectors.js +81 -10
  368. package/build-module/store/selectors.js.map +1 -1
  369. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  370. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  371. package/build-style/style-rtl.css +142 -46
  372. package/build-style/style.css +142 -46
  373. package/package.json +28 -28
  374. package/src/components/alignment-control/test/__snapshots__/index.js.snap +137 -108
  375. package/src/components/alignment-control/test/index.js +124 -33
  376. package/src/components/alignment-control/ui.js +8 -3
  377. package/src/components/autocomplete/index.js +2 -5
  378. package/src/components/block-actions/index.js +9 -8
  379. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +108 -65
  380. package/src/components/block-alignment-control/test/index.js +95 -31
  381. package/src/components/block-alignment-control/ui.js +2 -2
  382. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +28 -26
  383. package/src/components/block-compare/test/block-view.js +3 -3
  384. package/src/components/block-content-overlay/index.js +2 -6
  385. package/src/components/block-content-overlay/style.scss +24 -3
  386. package/src/components/block-draggable/draggable-chip.js +4 -1
  387. package/src/components/block-edit/edit.js +5 -1
  388. package/src/components/block-edit/test/edit.js +23 -21
  389. package/src/components/block-icon/test/__snapshots__/index.js.snap +22 -0
  390. package/src/components/block-icon/test/index.js +31 -16
  391. package/src/components/block-inspector/index.js +126 -12
  392. package/src/components/block-inspector/style.scss +7 -1
  393. package/src/components/block-list/block-list-compact.native.js +1 -1
  394. package/src/components/block-list/block.js +53 -13
  395. package/src/components/block-list/index.js +4 -4
  396. package/src/components/block-list/style.scss +57 -11
  397. package/src/components/block-list/test/block-list-context.native.js +11 -13
  398. package/src/components/block-list/use-block-props/index.js +10 -10
  399. package/src/components/block-list/use-block-props/use-block-class-names.js +4 -1
  400. package/src/components/block-list/use-block-props/use-focus-first-element.js +3 -8
  401. package/src/components/block-list/use-block-props/use-is-hovered.js +2 -2
  402. package/src/components/block-list/use-in-between-inserter.js +11 -13
  403. package/src/components/block-list-appender/index.js +27 -18
  404. package/src/components/block-list-appender/index.native.js +3 -6
  405. package/src/components/block-lock/use-block-lock.js +2 -0
  406. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +15 -9
  407. package/src/components/block-mover/button.js +6 -5
  408. package/src/components/block-mover/index.js +8 -7
  409. package/src/components/block-mover/index.native.js +20 -13
  410. package/src/components/block-popover/inbetween.js +124 -62
  411. package/src/components/block-popover/index.js +47 -8
  412. package/src/components/block-popover/style.scss +3 -4
  413. package/src/components/block-preview/auto.js +4 -2
  414. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
  415. package/src/components/block-settings-menu-controls/README.md +9 -0
  416. package/src/components/block-settings-menu-controls/index.js +13 -2
  417. package/src/components/block-styles/preview-panel.js +3 -0
  418. package/src/components/block-switcher/block-transformations-menu.js +127 -33
  419. package/src/components/block-switcher/style.scss +4 -2
  420. package/src/components/block-title/test/index.js +28 -25
  421. package/src/components/block-toolbar/index.js +27 -17
  422. package/src/components/block-tools/block-contextual-toolbar.js +10 -3
  423. package/src/components/block-tools/block-selection-button.js +35 -16
  424. package/src/components/block-tools/index.js +40 -24
  425. package/src/components/block-tools/insertion-point.js +3 -7
  426. package/src/components/block-tools/selected-block-popover.js +9 -7
  427. package/src/components/block-tools/style.scss +5 -0
  428. package/src/components/block-tools/use-block-toolbar-popover-props.js +19 -6
  429. package/src/components/block-tools/zoom-out-mode-inserters.js +57 -0
  430. package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +91 -51
  431. package/src/components/block-vertical-alignment-control/test/index.js +92 -23
  432. package/src/components/block-vertical-alignment-control/ui.js +3 -2
  433. package/src/components/border-radius-control/linked-button.js +12 -11
  434. package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -12
  435. package/src/components/colors/test/with-colors.js +37 -12
  436. package/src/components/colors-gradients/dropdown.js +1 -1
  437. package/src/components/contrast-checker/test/index.js +135 -116
  438. package/src/components/convert-to-group-buttons/toolbar.js +6 -2
  439. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +39 -57
  440. package/src/components/default-block-appender/test/index.js +32 -18
  441. package/src/components/font-sizes/README.MD +9 -0
  442. package/src/components/iframe/index.js +64 -5
  443. package/src/components/inner-blocks/README.md +2 -1
  444. package/src/components/inner-blocks/default-block-appender.js +1 -6
  445. package/src/components/inner-blocks/index.js +10 -2
  446. package/src/components/inner-blocks/use-inner-block-template-sync.js +40 -25
  447. package/src/components/inner-blocks/use-nested-settings-update.js +32 -3
  448. package/src/components/inserter/index.js +2 -8
  449. package/src/components/inserter/library.js +11 -5
  450. package/src/components/inserter/menu.js +42 -29
  451. package/src/components/inserter/preview-panel.js +1 -1
  452. package/src/components/inserter/stories/fixtures.js +44 -0
  453. package/src/components/inserter/stories/index.js +90 -0
  454. package/src/components/inserter/style.scss +21 -27
  455. package/src/components/inserter/tabs.js +8 -4
  456. package/src/components/link-control/link-preview.js +5 -3
  457. package/src/components/link-control/search-input.js +2 -2
  458. package/src/components/link-control/search-item.js +39 -7
  459. package/src/components/list-view/block.js +29 -10
  460. package/src/components/list-view/branch.js +27 -4
  461. package/src/components/list-view/drop-indicator.js +33 -32
  462. package/src/components/list-view/index.js +8 -3
  463. package/src/components/list-view/use-block-selection.js +0 -1
  464. package/src/components/media-placeholder/test/index.js +2 -2
  465. package/src/components/media-replace-flow/README.md +1 -1
  466. package/src/components/provider/use-block-sync.js +3 -6
  467. package/src/components/publish-date-time-picker/index.js +1 -1
  468. package/src/components/rich-text/format-toolbar-container.js +18 -10
  469. package/src/components/rich-text/index.js +26 -37
  470. package/src/components/rich-text/index.native.js +8 -21
  471. package/src/components/spacing-sizes-control/linked-button.js +2 -3
  472. package/src/components/spacing-sizes-control/style.scss +4 -1
  473. package/src/components/spacing-sizes-control/utils.js +1 -8
  474. package/src/components/text-decoration-control/index.js +31 -23
  475. package/src/components/text-decoration-control/style.scss +18 -0
  476. package/src/components/text-transform-control/index.js +42 -26
  477. package/src/components/text-transform-control/style.scss +18 -0
  478. package/src/components/tool-selector/index.js +9 -11
  479. package/src/components/url-input/test/button.js +145 -71
  480. package/src/components/url-popover/image-url-input-ui.js +5 -3
  481. package/src/components/url-popover/index.js +1 -1
  482. package/src/components/url-popover/test/__snapshots__/index.js.snap +108 -80
  483. package/src/components/url-popover/test/index.js +14 -12
  484. package/src/components/use-block-drop-zone/index.js +15 -4
  485. package/src/components/use-moving-animation/index.js +9 -24
  486. package/src/components/warning/test/__snapshots__/index.js.snap +11 -14
  487. package/src/components/warning/test/index.js +32 -29
  488. package/src/components/writing-flow/use-select-all.js +4 -6
  489. package/src/hooks/align.js +22 -13
  490. package/src/hooks/color-panel.js +2 -1
  491. package/src/hooks/content-lock-ui.js +161 -0
  492. package/src/hooks/duotone.js +13 -1
  493. package/src/hooks/index.js +4 -0
  494. package/src/hooks/layout.js +25 -19
  495. package/src/hooks/layout.scss +7 -1
  496. package/src/hooks/metadata-name.js +48 -0
  497. package/src/hooks/metadata.js +64 -0
  498. package/src/hooks/test/use-typography-props.js +28 -0
  499. package/src/hooks/typography.js +13 -14
  500. package/src/hooks/use-typography-props.js +41 -0
  501. package/src/hooks/utils.js +2 -11
  502. package/src/index.js +1 -0
  503. package/src/layouts/constrained.js +73 -24
  504. package/src/store/actions.js +45 -4
  505. package/src/store/reducer.js +36 -21
  506. package/src/store/selectors.js +99 -20
  507. package/src/store/test/reducer.js +8 -5
  508. package/src/store/test/selectors.js +4 -4
  509. package/src/style.scss +2 -0
  510. package/src/utils/parse-css-unit-to-px.js +1 -1
  511. package/src/components/colors/test/__snapshots__/with-colors.js.snap +0 -23
@@ -34,6 +34,7 @@ import { useNavModeExit } from './use-nav-mode-exit';
34
34
  import { useBlockRefProvider } from './use-block-refs';
35
35
  import { useIntersectionObserver } from './use-intersection-observer';
36
36
  import { store as blockEditorStore } from '../../../store';
37
+ import useBlockOverlayActive from '../../block-content-overlay';
37
38
 
38
39
  /**
39
40
  * If the block count exceeds the threshold, we disable the reordering animation
@@ -50,18 +51,14 @@ const BLOCK_ANIMATION_THRESHOLD = 200;
50
51
  * also pass any other props through this hook, and they will be merged and
51
52
  * returned.
52
53
  *
53
- * @param {Object} props Optional. Props to pass to the element. Must contain
54
- * the ref if one is defined.
55
- * @param {Object} options Options for internal use only.
54
+ * @param {Object} props Optional. Props to pass to the element. Must contain
55
+ * the ref if one is defined.
56
+ * @param {Object} options Options for internal use only.
56
57
  * @param {boolean} options.__unstableIsHtml
57
- * @param {boolean} options.__unstableIsDisabled Whether the block should be disabled.
58
58
  *
59
59
  * @return {Object} Props to pass to the element to mark as a block.
60
60
  */
61
- export function useBlockProps(
62
- props = {},
63
- { __unstableIsHtml, __unstableIsDisabled = false } = {}
64
- ) {
61
+ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
65
62
  const {
66
63
  clientId,
67
64
  className,
@@ -114,6 +111,8 @@ export function useBlockProps(
114
111
  [ clientId ]
115
112
  );
116
113
 
114
+ const hasOverlay = useBlockOverlayActive( clientId );
115
+
117
116
  // translators: %s: Type of block (i.e. Text, Image etc)
118
117
  const blockLabel = sprintf( __( 'Block: %s' ), blockTitle );
119
118
  const htmlSuffix = mode === 'html' && ! __unstableIsHtml ? '-visual' : '';
@@ -132,7 +131,7 @@ export function useBlockProps(
132
131
  enableAnimation,
133
132
  triggerAnimationOnChange: index,
134
133
  } ),
135
- useDisabled( { isDisabled: ! __unstableIsDisabled } ),
134
+ useDisabled( { isDisabled: ! hasOverlay } ),
136
135
  ] );
137
136
 
138
137
  const blockEditContext = useBlockEditContext();
@@ -144,11 +143,11 @@ export function useBlockProps(
144
143
  }
145
144
 
146
145
  return {
146
+ tabIndex: 0,
147
147
  ...wrapperProps,
148
148
  ...props,
149
149
  ref: mergedRefs,
150
150
  id: `block-${ clientId }${ htmlSuffix }`,
151
- tabIndex: 0,
152
151
  role: 'document',
153
152
  'aria-label': blockLabel,
154
153
  'data-block': clientId,
@@ -158,6 +157,7 @@ export function useBlockProps(
158
157
  // The wp-block className is important for editor styles.
159
158
  classnames( 'block-editor-block-list__block', {
160
159
  'wp-block': ! isAligned,
160
+ 'has-block-overlay': hasOverlay,
161
161
  } ),
162
162
  className,
163
163
  props.className,
@@ -34,6 +34,7 @@ export function useBlockClassNames( clientId ) {
34
34
  hasSelectedInnerBlock,
35
35
  isTyping,
36
36
  __unstableIsFullySelected,
37
+ __unstableSelectionHasUnmergeableBlock,
37
38
  } = select( blockEditorStore );
38
39
  const { outlineMode } = getSettings();
39
40
  const isDragging = isBlockBeingDragged( clientId );
@@ -51,7 +52,9 @@ export function useBlockClassNames( clientId ) {
51
52
  'is-highlighted': isBlockHighlighted( clientId ),
52
53
  'is-multi-selected': isMultiSelected,
53
54
  'is-partially-selected':
54
- isMultiSelected && ! __unstableIsFullySelected(),
55
+ isMultiSelected &&
56
+ ! __unstableIsFullySelected() &&
57
+ ! __unstableSelectionHasUnmergeableBlock(),
55
58
  'is-reusable': isReusableBlock( getBlockType( name ) ),
56
59
  'is-dragging': isDragging,
57
60
  'has-child-selected': isAncestorOfSelectedBlock,
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { first, last } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -36,7 +31,7 @@ function useInitialPosition( clientId ) {
36
31
  ( select ) => {
37
32
  const {
38
33
  getSelectedBlocksInitialCaretPosition,
39
- isNavigationMode,
34
+ __unstableGetEditorMode,
40
35
  isBlockSelected,
41
36
  } = select( blockEditorStore );
42
37
 
@@ -44,7 +39,7 @@ function useInitialPosition( clientId ) {
44
39
  return;
45
40
  }
46
41
 
47
- if ( isNavigationMode() ) {
42
+ if ( __unstableGetEditorMode() !== 'edit' ) {
48
43
  return;
49
44
  }
50
45
 
@@ -98,7 +93,7 @@ export function useFocusFirstElement( clientId ) {
98
93
  // tabbables.
99
94
  const isReverse = -1 === initialPosition;
100
95
  const target =
101
- ( isReverse ? last : first )( textInputs ) || ref.current;
96
+ textInputs[ isReverse ? textInputs.length - 1 : 0 ] || ref.current;
102
97
 
103
98
  if ( ! isInsideRootBlock( ref.current, target ) ) {
104
99
  ref.current.focus();
@@ -26,8 +26,8 @@ function listener( event ) {
26
26
  */
27
27
  export function useIsHovered() {
28
28
  const isEnabled = useSelect( ( select ) => {
29
- const { isNavigationMode, getSettings } = select( blockEditorStore );
30
- return isNavigationMode() || getSettings().outlineMode;
29
+ const { getSettings } = select( blockEditorStore );
30
+ return getSettings().outlineMode;
31
31
  }, [] );
32
32
 
33
33
  return useRefEffect(
@@ -14,8 +14,10 @@ import { InsertionPointOpenRef } from '../block-tools/insertion-point';
14
14
 
15
15
  export function useInBetweenInserter() {
16
16
  const openRef = useContext( InsertionPointOpenRef );
17
- const hasReducedUI = useSelect(
18
- ( select ) => select( blockEditorStore ).getSettings().hasReducedUI,
17
+ const isInBetweenInserterDisabled = useSelect(
18
+ ( select ) =>
19
+ select( blockEditorStore ).getSettings().hasReducedUI ||
20
+ select( blockEditorStore ).__unstableGetEditorMode() === 'zoom-out',
19
21
  []
20
22
  );
21
23
  const {
@@ -26,13 +28,14 @@ export function useInBetweenInserter() {
26
28
  isMultiSelecting,
27
29
  getSelectedBlockClientIds,
28
30
  getTemplateLock,
31
+ __unstableIsWithinBlockOverlay,
29
32
  } = useSelect( blockEditorStore );
30
33
  const { showInsertionPoint, hideInsertionPoint } =
31
34
  useDispatch( blockEditorStore );
32
35
 
33
36
  return useRefEffect(
34
37
  ( node ) => {
35
- if ( hasReducedUI ) {
38
+ if ( isInBetweenInserterDisabled ) {
36
39
  return;
37
40
  }
38
41
 
@@ -108,16 +111,11 @@ export function useInBetweenInserter() {
108
111
 
109
112
  // Don't show the insertion point if a parent block has an "overlay"
110
113
  // See https://github.com/WordPress/gutenberg/pull/34012#pullrequestreview-727762337
111
- const parentOverlay = element.parentElement?.closest(
112
- '.block-editor-block-content-overlay'
113
- );
114
- if ( parentOverlay ) {
115
- return;
116
- }
117
-
118
114
  const clientId = element.id.slice( 'block-'.length );
119
-
120
- if ( ! clientId ) {
115
+ if (
116
+ ! clientId ||
117
+ __unstableIsWithinBlockOverlay( clientId )
118
+ ) {
121
119
  return;
122
120
  }
123
121
 
@@ -126,7 +124,6 @@ export function useInBetweenInserter() {
126
124
  if ( getSelectedBlockClientIds().includes( clientId ) ) {
127
125
  return;
128
126
  }
129
-
130
127
  const elementRect = element.getBoundingClientRect();
131
128
 
132
129
  if (
@@ -175,6 +172,7 @@ export function useInBetweenInserter() {
175
172
  showInsertionPoint,
176
173
  hideInsertionPoint,
177
174
  getSelectedBlockClientIds,
175
+ isInBetweenInserterDisabled,
178
176
  ]
179
177
  );
180
178
  }
@@ -6,7 +6,7 @@ import classnames from 'classnames';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { withSelect } from '@wordpress/data';
9
+ import { useSelect } from '@wordpress/data';
10
10
  import { getDefaultBlockName } from '@wordpress/blocks';
11
11
 
12
12
  /**
@@ -18,14 +18,35 @@ import { store as blockEditorStore } from '../../store';
18
18
 
19
19
  function BlockListAppender( {
20
20
  rootClientId,
21
- canInsertDefaultBlock,
22
- isLocked,
23
21
  renderAppender: CustomAppender,
24
22
  className,
25
- selectedBlockClientId,
26
23
  tagName: TagName = 'div',
27
24
  } ) {
28
- if ( isLocked || CustomAppender === false ) {
25
+ const { hideInserter, canInsertDefaultBlock, selectedBlockClientId } =
26
+ useSelect(
27
+ ( select ) => {
28
+ const {
29
+ canInsertBlockType,
30
+ getTemplateLock,
31
+ getSelectedBlockClientId,
32
+ __unstableGetEditorMode,
33
+ } = select( blockEditorStore );
34
+
35
+ return {
36
+ hideInserter:
37
+ !! getTemplateLock( rootClientId ) ||
38
+ __unstableGetEditorMode() === 'zoom-out',
39
+ canInsertDefaultBlock: canInsertBlockType(
40
+ getDefaultBlockName(),
41
+ rootClientId
42
+ ),
43
+ selectedBlockClientId: getSelectedBlockClientId(),
44
+ };
45
+ },
46
+ [ rootClientId ]
47
+ );
48
+
49
+ if ( hideInserter || CustomAppender === false ) {
29
50
  return null;
30
51
  }
31
52
 
@@ -92,16 +113,4 @@ function BlockListAppender( {
92
113
  );
93
114
  }
94
115
 
95
- export default withSelect( ( select, { rootClientId } ) => {
96
- const { canInsertBlockType, getTemplateLock, getSelectedBlockClientId } =
97
- select( blockEditorStore );
98
-
99
- return {
100
- isLocked: !! getTemplateLock( rootClientId ),
101
- canInsertDefaultBlock: canInsertBlockType(
102
- getDefaultBlockName(),
103
- rootClientId
104
- ),
105
- selectedBlockClientId: getSelectedBlockClientId(),
106
- };
107
- } )( BlockListAppender );
116
+ export default BlockListAppender;
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { last } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -36,7 +31,9 @@ function BlockListAppender( {
36
31
  return (
37
32
  <DefaultBlockAppender
38
33
  rootClientId={ rootClientId }
39
- lastBlockClientId={ last( blockClientIds ) }
34
+ lastBlockClientId={
35
+ blockClientIds[ blockClientIds.length - 1 ]
36
+ }
40
37
  containerStyle={ styles.blockListAppender }
41
38
  placeholder={ blockClientIds.length > 0 ? '' : null }
42
39
  showSeparator={ showSeparator }
@@ -25,6 +25,7 @@ export default function useBlockLock( clientId ) {
25
25
  canLockBlockType,
26
26
  getBlockName,
27
27
  getBlockRootClientId,
28
+ getTemplateLock,
28
29
  } = select( blockEditorStore );
29
30
  const rootClientId = getBlockRootClientId( clientId );
30
31
 
@@ -37,6 +38,7 @@ export default function useBlockLock( clientId ) {
37
38
  canMove,
38
39
  canRemove,
39
40
  canLock: canLockBlockType( getBlockName( clientId ) ),
41
+ isContentLocked: getTemplateLock( clientId ) === 'contentOnly',
40
42
  isLocked: ! canEdit || ! canMove || ! canRemove,
41
43
  };
42
44
  },
@@ -2,7 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { Platform, findNodeHandle } from 'react-native';
5
- import { partial, first, castArray, last, every } from 'lodash';
5
+
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
@@ -307,21 +307,25 @@ export default compose(
307
307
  canInsertBlockType,
308
308
  getTemplateLock,
309
309
  } = select( blockEditorStore );
310
- const normalizedClientIds = castArray( clientIds );
310
+ const normalizedClientIds = Array.isArray( clientIds )
311
+ ? clientIds
312
+ : [ clientIds ];
311
313
  const block = getBlock( normalizedClientIds );
312
314
  const blockName = getBlockName( normalizedClientIds );
313
315
  const blockType = getBlockType( blockName );
314
316
  const blockTitle = blockType?.title;
315
- const firstClientId = first( normalizedClientIds );
317
+ const firstClientId = normalizedClientIds[ 0 ];
316
318
  const rootClientId = getBlockRootClientId( firstClientId );
317
319
  const blockOrder = getBlockOrder( rootClientId );
318
320
 
319
321
  const firstIndex = getBlockIndex( firstClientId );
320
- const lastIndex = getBlockIndex( last( normalizedClientIds ) );
322
+ const lastIndex = getBlockIndex(
323
+ normalizedClientIds[ normalizedClientIds.length - 1 ]
324
+ );
321
325
 
322
326
  const innerBlocks = getBlocksByClientId( clientIds );
323
327
 
324
- const canDuplicate = every( innerBlocks, ( innerBlock ) => {
328
+ const canDuplicate = innerBlocks.every( ( innerBlock ) => {
325
329
  return (
326
330
  !! innerBlock &&
327
331
  hasBlockSupport( innerBlock.name, 'multiple', true ) &&
@@ -336,9 +340,9 @@ export default compose(
336
340
  isExactlyOneBlock && isDefaultBlock && isEmptyContent;
337
341
  const isLocked = !! getTemplateLock( rootClientId );
338
342
 
339
- const selectedBlockClientId = first( getSelectedBlockClientIds() );
343
+ const selectedBlockClientId = getSelectedBlockClientIds()[ 0 ];
340
344
  const selectedBlock = selectedBlockClientId
341
- ? first( getBlocksByClientId( selectedBlockClientId ) )
345
+ ? getBlocksByClientId( selectedBlockClientId )[ 0 ]
342
346
  : undefined;
343
347
  const selectedBlockPossibleTransformations = selectedBlock
344
348
  ? getBlockTransformItems( [ selectedBlock ], rootClientId )
@@ -406,8 +410,10 @@ export default compose(
406
410
  duplicateBlock() {
407
411
  return duplicateBlocks( clientIds );
408
412
  },
409
- onMoveDown: partial( moveBlocksDown, clientIds, rootClientId ),
410
- onMoveUp: partial( moveBlocksUp, clientIds, rootClientId ),
413
+ onMoveDown: ( ...args ) =>
414
+ moveBlocksDown( clientIds, rootClientId, ...args ),
415
+ onMoveUp: ( ...args ) =>
416
+ moveBlocksUp( clientIds, rootClientId, ...args ),
411
417
  openGeneralSidebar: () =>
412
418
  openGeneralSidebar( 'edit-post/block' ),
413
419
  pasteBlock: ( clipboardBlock ) => {
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import { castArray, first, last } from 'lodash';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -62,7 +61,10 @@ const BlockMoverButton = forwardRef(
62
61
  ref
63
62
  ) => {
64
63
  const instanceId = useInstanceId( BlockMoverButton );
65
- const blocksCount = castArray( clientIds ).length;
64
+ const normalizedClientIds = Array.isArray( clientIds )
65
+ ? clientIds
66
+ : [ clientIds ];
67
+ const blocksCount = normalizedClientIds.length;
66
68
 
67
69
  const {
68
70
  blockType,
@@ -81,12 +83,11 @@ const BlockMoverButton = forwardRef(
81
83
  getBlock,
82
84
  getBlockListSettings,
83
85
  } = select( blockEditorStore );
84
- const normalizedClientIds = castArray( clientIds );
85
- const firstClientId = first( normalizedClientIds );
86
+ const firstClientId = normalizedClientIds[ 0 ];
86
87
  const blockRootClientId = getBlockRootClientId( firstClientId );
87
88
  const firstBlockIndex = getBlockIndex( firstClientId );
88
89
  const lastBlockIndex = getBlockIndex(
89
- last( normalizedClientIds )
90
+ normalizedClientIds[ normalizedClientIds.length - 1 ]
90
91
  );
91
92
  const blockOrder = getBlockOrder( blockRootClientId );
92
93
  const block = getBlock( firstClientId );
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { first, last, castArray } from 'lodash';
5
4
  import classnames from 'classnames';
6
5
 
7
6
  /**
@@ -30,13 +29,15 @@ function BlockMover( { clientIds, hideDragHandle } ) {
30
29
  getBlockOrder,
31
30
  getBlockRootClientId,
32
31
  } = select( blockEditorStore );
33
- const normalizedClientIds = castArray( clientIds );
34
- const firstClientId = first( normalizedClientIds );
35
- const _rootClientId = getBlockRootClientId(
36
- first( normalizedClientIds )
37
- );
32
+ const normalizedClientIds = Array.isArray( clientIds )
33
+ ? clientIds
34
+ : [ clientIds ];
35
+ const firstClientId = normalizedClientIds[ 0 ];
36
+ const _rootClientId = getBlockRootClientId( firstClientId );
38
37
  const firstIndex = getBlockIndex( firstClientId );
39
- const lastIndex = getBlockIndex( last( normalizedClientIds ) );
38
+ const lastIndex = getBlockIndex(
39
+ normalizedClientIds[ normalizedClientIds.length - 1 ]
40
+ );
40
41
  const blockOrder = getBlockOrder( _rootClientId );
41
42
 
42
43
  return {
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { first, last, partial, castArray } from 'lodash';
5
4
  import { Platform } from 'react-native';
6
5
 
7
6
  /**
@@ -149,12 +148,16 @@ export default compose(
149
148
  getBlockRootClientId,
150
149
  getBlockOrder,
151
150
  } = select( blockEditorStore );
152
- const normalizedClientIds = castArray( clientIds );
153
- const firstClientId = first( normalizedClientIds );
151
+ const normalizedClientIds = Array.isArray( clientIds )
152
+ ? clientIds
153
+ : [ clientIds ];
154
+ const firstClientId = normalizedClientIds[ 0 ];
154
155
  const rootClientId = getBlockRootClientId( firstClientId );
155
156
  const blockOrder = getBlockOrder( rootClientId );
156
157
  const firstIndex = getBlockIndex( firstClientId );
157
- const lastIndex = getBlockIndex( last( normalizedClientIds ) );
158
+ const lastIndex = getBlockIndex(
159
+ normalizedClientIds[ normalizedClientIds.length - 1 ]
160
+ );
158
161
 
159
162
  return {
160
163
  firstIndex,
@@ -169,15 +172,19 @@ export default compose(
169
172
  const { moveBlocksDown, moveBlocksUp, moveBlocksToPosition } =
170
173
  dispatch( blockEditorStore );
171
174
  return {
172
- onMoveDown: partial( moveBlocksDown, clientIds, rootClientId ),
173
- onMoveUp: partial( moveBlocksUp, clientIds, rootClientId ),
174
- onLongMove: ( targetIndex ) =>
175
- partial(
176
- moveBlocksToPosition,
177
- clientIds,
178
- rootClientId,
179
- targetIndex
180
- ),
175
+ onMoveDown: ( ...args ) =>
176
+ moveBlocksDown( clientIds, rootClientId, ...args ),
177
+ onMoveUp: ( ...args ) =>
178
+ moveBlocksUp( clientIds, rootClientId, ...args ),
179
+ onLongMove:
180
+ ( targetIndex ) =>
181
+ ( ...args ) =>
182
+ moveBlocksToPosition(
183
+ clientIds,
184
+ rootClientId,
185
+ targetIndex,
186
+ ...args
187
+ ),
181
188
  };
182
189
  } ),
183
190
  withInstanceId