@wordpress/block-library 7.7.0 → 7.10.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 (847) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/audio/edit.js +1 -0
  3. package/build/audio/edit.js.map +1 -1
  4. package/build/audio/index.js +6 -1
  5. package/build/audio/index.js.map +1 -1
  6. package/build/audio/save.js +2 -1
  7. package/build/audio/save.js.map +1 -1
  8. package/build/avatar/hooks.js +2 -2
  9. package/build/avatar/hooks.js.map +1 -1
  10. package/build/block/edit.js.map +1 -1
  11. package/build/block/edit.native.js.map +1 -1
  12. package/build/button/deprecated.js.map +1 -1
  13. package/build/button/edit.js +1 -1
  14. package/build/button/edit.js.map +1 -1
  15. package/build/button/edit.native.js.map +1 -1
  16. package/build/button/save.js +1 -1
  17. package/build/button/save.js.map +1 -1
  18. package/build/buttons/deprecated.js.map +1 -1
  19. package/build/buttons/edit.js.map +1 -1
  20. package/build/buttons/edit.native.js.map +1 -1
  21. package/build/column/deprecated.js.map +1 -1
  22. package/build/column/edit.js.map +1 -1
  23. package/build/column/edit.native.js.map +1 -1
  24. package/build/columns/deprecated.js.map +1 -1
  25. package/build/columns/edit.js +1 -1
  26. package/build/columns/edit.js.map +1 -1
  27. package/build/columns/edit.native.js +1 -1
  28. package/build/columns/edit.native.js.map +1 -1
  29. package/build/columns/index.js.map +1 -1
  30. package/build/columns/utils.js +1 -1
  31. package/build/columns/utils.js.map +1 -1
  32. package/build/columns/variations.js +2 -2
  33. package/build/columns/variations.js.map +1 -1
  34. package/build/comment-author-name/edit.js +3 -3
  35. package/build/comment-author-name/edit.js.map +1 -1
  36. package/build/comment-author-name/index.js +0 -4
  37. package/build/comment-author-name/index.js.map +1 -1
  38. package/build/comment-date/edit.js +4 -4
  39. package/build/comment-date/edit.js.map +1 -1
  40. package/build/comment-date/index.js +0 -4
  41. package/build/comment-date/index.js.map +1 -1
  42. package/build/comment-edit-link/index.js +0 -4
  43. package/build/comment-edit-link/index.js.map +1 -1
  44. package/build/comment-reply-link/index.js +0 -4
  45. package/build/comment-reply-link/index.js.map +1 -1
  46. package/build/comment-template/index.js +1 -1
  47. package/build/comments/deprecated.js +65 -0
  48. package/build/comments/deprecated.js.map +1 -0
  49. package/build/comments/edit.js +10 -2
  50. package/build/comments/edit.js.map +1 -1
  51. package/build/comments/index.js +5 -2
  52. package/build/comments/index.js.map +1 -1
  53. package/build/comments-pagination/index.js +1 -1
  54. package/build/comments-title/deprecated.js +1 -4
  55. package/build/comments-title/deprecated.js.map +1 -1
  56. package/build/comments-title/edit.js +1 -1
  57. package/build/comments-title/edit.js.map +1 -1
  58. package/build/comments-title/index.js +1 -1
  59. package/build/cover/controls.native.js.map +1 -1
  60. package/build/cover/deprecated.js.map +1 -1
  61. package/build/cover/edit/block-controls.js +5 -22
  62. package/build/cover/edit/block-controls.js.map +1 -1
  63. package/build/cover/edit/cover-placeholder.js +3 -1
  64. package/build/cover/edit/cover-placeholder.js.map +1 -1
  65. package/build/cover/edit/index.js +38 -30
  66. package/build/cover/edit/index.js.map +1 -1
  67. package/build/cover/edit/inspector-controls.js +34 -6
  68. package/build/cover/edit/inspector-controls.js.map +1 -1
  69. package/build/cover/edit.native.js.map +1 -1
  70. package/build/cover/index.js +1 -0
  71. package/build/cover/index.js.map +1 -1
  72. package/build/cover/save.js.map +1 -1
  73. package/build/cover/transforms.js.map +1 -1
  74. package/build/embed/deprecated.js +6 -1
  75. package/build/embed/deprecated.js.map +1 -1
  76. package/build/embed/edit.js.map +1 -1
  77. package/build/embed/edit.native.js.map +1 -1
  78. package/build/embed/embed-controls.native.js.map +1 -1
  79. package/build/embed/embed-preview.js +1 -0
  80. package/build/embed/embed-preview.js.map +1 -1
  81. package/build/embed/icons.js +21 -1
  82. package/build/embed/icons.js.map +1 -1
  83. package/build/embed/index.js +6 -1
  84. package/build/embed/index.js.map +1 -1
  85. package/build/embed/save.js +1 -0
  86. package/build/embed/save.js.map +1 -1
  87. package/build/embed/transforms.js +6 -1
  88. package/build/embed/transforms.js.map +1 -1
  89. package/build/embed/util.js +6 -1
  90. package/build/embed/util.js.map +1 -1
  91. package/build/embed/variations.js +11 -0
  92. package/build/embed/variations.js.map +1 -1
  93. package/build/file/edit.js +1 -1
  94. package/build/file/edit.js.map +1 -1
  95. package/build/file/edit.native.js.map +1 -1
  96. package/build/file/index.js.map +1 -1
  97. package/build/file/save.js +1 -1
  98. package/build/file/save.js.map +1 -1
  99. package/build/gallery/edit.js +10 -18
  100. package/build/gallery/edit.js.map +1 -1
  101. package/build/gallery/gallery.js +1 -1
  102. package/build/gallery/gallery.js.map +1 -1
  103. package/build/gallery/gallery.native.js.map +1 -1
  104. package/build/gallery/index.js.map +1 -1
  105. package/build/gallery/save.js +1 -1
  106. package/build/gallery/save.js.map +1 -1
  107. package/build/gallery/shared.js +27 -10
  108. package/build/gallery/shared.js.map +1 -1
  109. package/build/gallery/transforms.js +32 -22
  110. package/build/gallery/transforms.js.map +1 -1
  111. package/build/gallery/use-get-media.js +7 -18
  112. package/build/gallery/use-get-media.js.map +1 -1
  113. package/build/gallery/v1/edit.js +3 -3
  114. package/build/gallery/v1/edit.js.map +1 -1
  115. package/build/gallery/v1/gallery-image.js +1 -0
  116. package/build/gallery/v1/gallery-image.js.map +1 -1
  117. package/build/gallery/v1/gallery-image.native.js.map +1 -1
  118. package/build/gallery/v1/gallery.js +1 -1
  119. package/build/gallery/v1/gallery.js.map +1 -1
  120. package/build/gallery/v1/save.js +10 -2
  121. package/build/gallery/v1/save.js.map +1 -1
  122. package/build/group/edit.js +1 -3
  123. package/build/group/edit.js.map +1 -1
  124. package/build/group/index.js +1 -0
  125. package/build/group/index.js.map +1 -1
  126. package/build/heading/autogenerate-anchors.js +7 -2
  127. package/build/heading/autogenerate-anchors.js.map +1 -1
  128. package/build/heading/deprecated.js.map +1 -1
  129. package/build/heading/edit.js.map +1 -1
  130. package/build/heading/heading-level-dropdown.js +2 -1
  131. package/build/heading/heading-level-dropdown.js.map +1 -1
  132. package/build/heading/index.js +9 -4
  133. package/build/heading/index.js.map +1 -1
  134. package/build/html/edit.js +11 -20
  135. package/build/html/edit.js.map +1 -1
  136. package/build/html/preview.js +48 -0
  137. package/build/html/preview.js.map +1 -0
  138. package/build/image/deprecated.js.map +1 -1
  139. package/build/image/edit.native.js +2 -1
  140. package/build/image/edit.native.js.map +1 -1
  141. package/build/image/image.js +1 -0
  142. package/build/image/image.js.map +1 -1
  143. package/build/image/index.js +5 -0
  144. package/build/image/index.js.map +1 -1
  145. package/build/image/save.js +1 -0
  146. package/build/image/save.js.map +1 -1
  147. package/build/image/transforms.js.map +1 -1
  148. package/build/image/utils.js +2 -1
  149. package/build/image/utils.js.map +1 -1
  150. package/build/index.js +1 -1
  151. package/build/index.js.map +1 -1
  152. package/build/latest-comments/edit.js.map +1 -1
  153. package/build/latest-posts/edit.js +2 -2
  154. package/build/latest-posts/edit.js.map +1 -1
  155. package/build/latest-posts/edit.native.js.map +1 -1
  156. package/build/list/index.js.map +1 -1
  157. package/build/list/v2/edit.js.map +1 -1
  158. package/build/list/v2/transforms.js +33 -17
  159. package/build/list/v2/transforms.js.map +1 -1
  160. package/build/list-item/hooks/use-backspace.js.map +1 -1
  161. package/build/list-item/hooks/use-enter.js +7 -4
  162. package/build/list-item/hooks/use-enter.js.map +1 -1
  163. package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
  164. package/build/list-item/hooks/use-outdent-list-item.js +36 -15
  165. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  166. package/build/list-item/hooks/use-space.js.map +1 -1
  167. package/build/media-text/deprecated.js +5 -3
  168. package/build/media-text/deprecated.js.map +1 -1
  169. package/build/media-text/edit.native.js.map +1 -1
  170. package/build/media-text/media-container.js +3 -3
  171. package/build/media-text/media-container.js.map +1 -1
  172. package/build/media-text/media-container.native.js.map +1 -1
  173. package/build/media-text/save.js +3 -1
  174. package/build/media-text/save.js.map +1 -1
  175. package/build/missing/edit.native.js.map +1 -1
  176. package/build/more/edit.js +2 -4
  177. package/build/more/edit.js.map +1 -1
  178. package/build/navigation/deprecated.js.map +1 -1
  179. package/build/navigation/edit/index.js +1 -1
  180. package/build/navigation/edit/index.js.map +1 -1
  181. package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  182. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  183. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  184. package/build/navigation/index.js +9 -0
  185. package/build/navigation/index.js.map +1 -1
  186. package/build/navigation/use-navigation-entities.js.map +1 -1
  187. package/build/navigation/use-navigation-menu.js +72 -38
  188. package/build/navigation/use-navigation-menu.js.map +1 -1
  189. package/build/navigation/use-template-part-area-label.js +4 -1
  190. package/build/navigation/use-template-part-area-label.js.map +1 -1
  191. package/build/navigation/view.js +6 -1
  192. package/build/navigation/view.js.map +1 -1
  193. package/build/navigation-link/edit.js +14 -8
  194. package/build/navigation-link/edit.js.map +1 -1
  195. package/build/navigation-link/hooks.js +0 -16
  196. package/build/navigation-link/hooks.js.map +1 -1
  197. package/build/navigation-link/index.js +1 -1
  198. package/build/navigation-link/index.js.map +1 -1
  199. package/build/navigation-submenu/edit.js.map +1 -1
  200. package/build/navigation-submenu/view.js +6 -1
  201. package/build/navigation-submenu/view.js.map +1 -1
  202. package/build/nextpage/edit.js +1 -3
  203. package/build/nextpage/edit.js.map +1 -1
  204. package/build/page-list/convert-to-links-modal.js.map +1 -1
  205. package/build/page-list/edit.js +2 -2
  206. package/build/page-list/edit.js.map +1 -1
  207. package/build/paragraph/deprecated.js +1 -1
  208. package/build/paragraph/deprecated.js.map +1 -1
  209. package/build/pattern/edit.js.map +1 -1
  210. package/build/post-author/edit.js.map +1 -1
  211. package/build/post-comments-form/edit.js +14 -6
  212. package/build/post-comments-form/edit.js.map +1 -1
  213. package/build/post-comments-form/form.js +1 -1
  214. package/build/post-comments-form/form.js.map +1 -1
  215. package/build/post-content/edit.js.map +1 -1
  216. package/build/post-featured-image/edit.js +10 -24
  217. package/build/post-featured-image/edit.js.map +1 -1
  218. package/build/post-navigation-link/index.js +4 -0
  219. package/build/post-navigation-link/index.js.map +1 -1
  220. package/build/post-terms/index.js +1 -1
  221. package/build/post-terms/index.js.map +1 -1
  222. package/build/post-title/index.js +1 -0
  223. package/build/post-title/index.js.map +1 -1
  224. package/build/pullquote/deprecated.js.map +1 -1
  225. package/build/query/edit/index.js +5 -1
  226. package/build/query/edit/index.js.map +1 -1
  227. package/build/query/edit/inspector-controls/index.js +1 -1
  228. package/build/query/edit/inspector-controls/index.js.map +1 -1
  229. package/build/query/edit/inspector-controls/parent-control.js.map +1 -1
  230. package/build/query/edit/query-toolbar.js +16 -2
  231. package/build/query/edit/query-toolbar.js.map +1 -1
  232. package/build/query/index.js +1 -1
  233. package/build/query/index.js.map +1 -1
  234. package/build/quote/v2/edit.js.map +1 -1
  235. package/build/search/edit.js +1 -1
  236. package/build/search/edit.js.map +1 -1
  237. package/build/search/edit.native.js.map +1 -1
  238. package/build/separator/use-deprecated-opacity.js.map +1 -1
  239. package/build/shortcode/edit.native.js.map +1 -1
  240. package/build/site-logo/edit.js +8 -25
  241. package/build/site-logo/edit.js.map +1 -1
  242. package/build/site-title/edit/level-toolbar.js +2 -1
  243. package/build/site-title/edit/level-toolbar.js.map +1 -1
  244. package/build/social-links/deprecated.js.map +1 -1
  245. package/build/social-links/edit.native.js.map +1 -1
  246. package/build/spacer/controls.js.map +1 -1
  247. package/build/table/deprecated.js.map +1 -1
  248. package/build/table/edit.js +1 -0
  249. package/build/table/edit.js.map +1 -1
  250. package/build/table/index.js +6 -1
  251. package/build/table/index.js.map +1 -1
  252. package/build/table/save.js +2 -1
  253. package/build/table/save.js.map +1 -1
  254. package/build/table/state.js.map +1 -1
  255. package/build/table-of-contents/edit.js.map +1 -1
  256. package/build/tag-cloud/edit.js.map +1 -1
  257. package/build/template-part/edit/advanced-controls.js +4 -1
  258. package/build/template-part/edit/advanced-controls.js.map +1 -1
  259. package/build/template-part/edit/index.js.map +1 -1
  260. package/build/template-part/edit/utils/hooks.js +4 -1
  261. package/build/template-part/edit/utils/hooks.js.map +1 -1
  262. package/build/template-part/index.js +1 -1
  263. package/build/template-part/index.js.map +1 -1
  264. package/build/template-part/variations.js +0 -16
  265. package/build/template-part/variations.js.map +1 -1
  266. package/build/transformationCategories.native.js.map +1 -1
  267. package/build/utils/clean-empty-object.js +5 -3
  268. package/build/utils/clean-empty-object.js.map +1 -1
  269. package/build/video/edit-common-settings.js.map +1 -1
  270. package/build/video/edit.js +1 -0
  271. package/build/video/edit.js.map +1 -1
  272. package/build/video/edit.native.js +43 -0
  273. package/build/video/edit.native.js.map +1 -1
  274. package/build/video/index.js +6 -1
  275. package/build/video/index.js.map +1 -1
  276. package/build/video/save.js +1 -0
  277. package/build/video/save.js.map +1 -1
  278. package/build/video/tracks-editor.js +9 -11
  279. package/build/video/tracks-editor.js.map +1 -1
  280. package/build-module/audio/edit.js +2 -1
  281. package/build-module/audio/edit.js.map +1 -1
  282. package/build-module/audio/index.js +6 -1
  283. package/build-module/audio/index.js.map +1 -1
  284. package/build-module/audio/save.js +3 -2
  285. package/build-module/audio/save.js.map +1 -1
  286. package/build-module/avatar/hooks.js +2 -2
  287. package/build-module/avatar/hooks.js.map +1 -1
  288. package/build-module/block/edit.js.map +1 -1
  289. package/build-module/block/edit.native.js.map +1 -1
  290. package/build-module/button/deprecated.js.map +1 -1
  291. package/build-module/button/edit.js +2 -2
  292. package/build-module/button/edit.js.map +1 -1
  293. package/build-module/button/edit.native.js.map +1 -1
  294. package/build-module/button/save.js +2 -2
  295. package/build-module/button/save.js.map +1 -1
  296. package/build-module/buttons/deprecated.js.map +1 -1
  297. package/build-module/buttons/edit.js.map +1 -1
  298. package/build-module/buttons/edit.native.js.map +1 -1
  299. package/build-module/column/deprecated.js.map +1 -1
  300. package/build-module/column/edit.js.map +1 -1
  301. package/build-module/column/edit.native.js.map +1 -1
  302. package/build-module/columns/deprecated.js.map +1 -1
  303. package/build-module/columns/edit.js +2 -2
  304. package/build-module/columns/edit.js.map +1 -1
  305. package/build-module/columns/edit.native.js +2 -2
  306. package/build-module/columns/edit.native.js.map +1 -1
  307. package/build-module/columns/index.js.map +1 -1
  308. package/build-module/columns/utils.js +2 -2
  309. package/build-module/columns/utils.js.map +1 -1
  310. package/build-module/columns/variations.js +2 -2
  311. package/build-module/columns/variations.js.map +1 -1
  312. package/build-module/comment-author-name/edit.js +3 -3
  313. package/build-module/comment-author-name/edit.js.map +1 -1
  314. package/build-module/comment-author-name/index.js +0 -4
  315. package/build-module/comment-author-name/index.js.map +1 -1
  316. package/build-module/comment-date/edit.js +4 -4
  317. package/build-module/comment-date/edit.js.map +1 -1
  318. package/build-module/comment-date/index.js +0 -4
  319. package/build-module/comment-date/index.js.map +1 -1
  320. package/build-module/comment-edit-link/index.js +0 -4
  321. package/build-module/comment-edit-link/index.js.map +1 -1
  322. package/build-module/comment-reply-link/index.js +0 -4
  323. package/build-module/comment-reply-link/index.js.map +1 -1
  324. package/build-module/comment-template/index.js +1 -1
  325. package/build-module/comments/deprecated.js +54 -0
  326. package/build-module/comments/deprecated.js.map +1 -0
  327. package/build-module/comments/edit.js +10 -2
  328. package/build-module/comments/edit.js.map +1 -1
  329. package/build-module/comments/index.js +4 -2
  330. package/build-module/comments/index.js.map +1 -1
  331. package/build-module/comments-pagination/index.js +1 -1
  332. package/build-module/comments-title/deprecated.js +1 -4
  333. package/build-module/comments-title/deprecated.js.map +1 -1
  334. package/build-module/comments-title/edit.js +1 -1
  335. package/build-module/comments-title/edit.js.map +1 -1
  336. package/build-module/comments-title/index.js +1 -1
  337. package/build-module/cover/controls.native.js.map +1 -1
  338. package/build-module/cover/deprecated.js.map +1 -1
  339. package/build-module/cover/edit/block-controls.js +6 -21
  340. package/build-module/cover/edit/block-controls.js.map +1 -1
  341. package/build-module/cover/edit/cover-placeholder.js +3 -1
  342. package/build-module/cover/edit/cover-placeholder.js.map +1 -1
  343. package/build-module/cover/edit/index.js +39 -31
  344. package/build-module/cover/edit/index.js.map +1 -1
  345. package/build-module/cover/edit/inspector-controls.js +32 -7
  346. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  347. package/build-module/cover/edit.native.js.map +1 -1
  348. package/build-module/cover/index.js +1 -0
  349. package/build-module/cover/index.js.map +1 -1
  350. package/build-module/cover/save.js.map +1 -1
  351. package/build-module/cover/transforms.js.map +1 -1
  352. package/build-module/embed/deprecated.js +6 -1
  353. package/build-module/embed/deprecated.js.map +1 -1
  354. package/build-module/embed/edit.js.map +1 -1
  355. package/build-module/embed/edit.native.js.map +1 -1
  356. package/build-module/embed/embed-controls.native.js.map +1 -1
  357. package/build-module/embed/embed-preview.js +2 -1
  358. package/build-module/embed/embed-preview.js.map +1 -1
  359. package/build-module/embed/icons.js +19 -0
  360. package/build-module/embed/icons.js.map +1 -1
  361. package/build-module/embed/index.js +6 -1
  362. package/build-module/embed/index.js.map +1 -1
  363. package/build-module/embed/save.js +2 -1
  364. package/build-module/embed/save.js.map +1 -1
  365. package/build-module/embed/transforms.js +6 -1
  366. package/build-module/embed/transforms.js.map +1 -1
  367. package/build-module/embed/util.js +6 -1
  368. package/build-module/embed/util.js.map +1 -1
  369. package/build-module/embed/variations.js +12 -1
  370. package/build-module/embed/variations.js.map +1 -1
  371. package/build-module/file/edit.js +2 -2
  372. package/build-module/file/edit.js.map +1 -1
  373. package/build-module/file/edit.native.js.map +1 -1
  374. package/build-module/file/index.js.map +1 -1
  375. package/build-module/file/save.js +2 -2
  376. package/build-module/file/save.js.map +1 -1
  377. package/build-module/gallery/edit.js +11 -18
  378. package/build-module/gallery/edit.js.map +1 -1
  379. package/build-module/gallery/gallery.js +2 -2
  380. package/build-module/gallery/gallery.js.map +1 -1
  381. package/build-module/gallery/gallery.native.js.map +1 -1
  382. package/build-module/gallery/index.js.map +1 -1
  383. package/build-module/gallery/save.js +2 -2
  384. package/build-module/gallery/save.js.map +1 -1
  385. package/build-module/gallery/shared.js +25 -8
  386. package/build-module/gallery/shared.js.map +1 -1
  387. package/build-module/gallery/transforms.js +33 -23
  388. package/build-module/gallery/transforms.js.map +1 -1
  389. package/build-module/gallery/use-get-media.js +6 -16
  390. package/build-module/gallery/use-get-media.js.map +1 -1
  391. package/build-module/gallery/v1/edit.js +4 -4
  392. package/build-module/gallery/v1/edit.js.map +1 -1
  393. package/build-module/gallery/v1/gallery-image.js +2 -1
  394. package/build-module/gallery/v1/gallery-image.js.map +1 -1
  395. package/build-module/gallery/v1/gallery-image.native.js.map +1 -1
  396. package/build-module/gallery/v1/gallery.js +2 -2
  397. package/build-module/gallery/v1/gallery.js.map +1 -1
  398. package/build-module/gallery/v1/save.js +8 -3
  399. package/build-module/gallery/v1/save.js.map +1 -1
  400. package/build-module/group/edit.js +1 -3
  401. package/build-module/group/edit.js.map +1 -1
  402. package/build-module/group/index.js +1 -0
  403. package/build-module/group/index.js.map +1 -1
  404. package/build-module/heading/autogenerate-anchors.js +5 -2
  405. package/build-module/heading/autogenerate-anchors.js.map +1 -1
  406. package/build-module/heading/deprecated.js.map +1 -1
  407. package/build-module/heading/edit.js.map +1 -1
  408. package/build-module/heading/heading-level-dropdown.js +2 -1
  409. package/build-module/heading/heading-level-dropdown.js.map +1 -1
  410. package/build-module/heading/index.js +9 -4
  411. package/build-module/heading/index.js.map +1 -1
  412. package/build-module/html/edit.js +12 -23
  413. package/build-module/html/edit.js.map +1 -1
  414. package/build-module/html/preview.js +38 -0
  415. package/build-module/html/preview.js.map +1 -0
  416. package/build-module/image/deprecated.js.map +1 -1
  417. package/build-module/image/edit.native.js +2 -1
  418. package/build-module/image/edit.native.js.map +1 -1
  419. package/build-module/image/image.js +2 -1
  420. package/build-module/image/image.js.map +1 -1
  421. package/build-module/image/index.js +5 -0
  422. package/build-module/image/index.js.map +1 -1
  423. package/build-module/image/save.js +2 -1
  424. package/build-module/image/save.js.map +1 -1
  425. package/build-module/image/transforms.js.map +1 -1
  426. package/build-module/image/utils.js +2 -2
  427. package/build-module/image/utils.js.map +1 -1
  428. package/build-module/index.js +1 -1
  429. package/build-module/index.js.map +1 -1
  430. package/build-module/latest-comments/edit.js.map +1 -1
  431. package/build-module/latest-posts/edit.js +3 -3
  432. package/build-module/latest-posts/edit.js.map +1 -1
  433. package/build-module/latest-posts/edit.native.js.map +1 -1
  434. package/build-module/list/index.js.map +1 -1
  435. package/build-module/list/v2/edit.js.map +1 -1
  436. package/build-module/list/v2/transforms.js +32 -17
  437. package/build-module/list/v2/transforms.js.map +1 -1
  438. package/build-module/list-item/hooks/use-backspace.js.map +1 -1
  439. package/build-module/list-item/hooks/use-enter.js +7 -4
  440. package/build-module/list-item/hooks/use-enter.js.map +1 -1
  441. package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
  442. package/build-module/list-item/hooks/use-outdent-list-item.js +34 -15
  443. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  444. package/build-module/list-item/hooks/use-space.js.map +1 -1
  445. package/build-module/media-text/deprecated.js +3 -1
  446. package/build-module/media-text/deprecated.js.map +1 -1
  447. package/build-module/media-text/edit.native.js.map +1 -1
  448. package/build-module/media-text/media-container.js +3 -1
  449. package/build-module/media-text/media-container.js.map +1 -1
  450. package/build-module/media-text/media-container.native.js.map +1 -1
  451. package/build-module/media-text/save.js +4 -1
  452. package/build-module/media-text/save.js.map +1 -1
  453. package/build-module/missing/edit.native.js.map +1 -1
  454. package/build-module/more/edit.js +2 -4
  455. package/build-module/more/edit.js.map +1 -1
  456. package/build-module/navigation/deprecated.js.map +1 -1
  457. package/build-module/navigation/edit/index.js +1 -1
  458. package/build-module/navigation/edit/index.js.map +1 -1
  459. package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  460. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  461. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  462. package/build-module/navigation/index.js +9 -0
  463. package/build-module/navigation/index.js.map +1 -1
  464. package/build-module/navigation/use-navigation-entities.js.map +1 -1
  465. package/build-module/navigation/use-navigation-menu.js +73 -39
  466. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  467. package/build-module/navigation/use-template-part-area-label.js +4 -1
  468. package/build-module/navigation/use-template-part-area-label.js.map +1 -1
  469. package/build-module/navigation/view.js +6 -1
  470. package/build-module/navigation/view.js.map +1 -1
  471. package/build-module/navigation-link/edit.js +14 -8
  472. package/build-module/navigation-link/edit.js.map +1 -1
  473. package/build-module/navigation-link/hooks.js +0 -13
  474. package/build-module/navigation-link/hooks.js.map +1 -1
  475. package/build-module/navigation-link/index.js +1 -1
  476. package/build-module/navigation-link/index.js.map +1 -1
  477. package/build-module/navigation-submenu/edit.js.map +1 -1
  478. package/build-module/navigation-submenu/view.js +6 -1
  479. package/build-module/navigation-submenu/view.js.map +1 -1
  480. package/build-module/nextpage/edit.js +1 -3
  481. package/build-module/nextpage/edit.js.map +1 -1
  482. package/build-module/page-list/convert-to-links-modal.js.map +1 -1
  483. package/build-module/page-list/edit.js +2 -2
  484. package/build-module/page-list/edit.js.map +1 -1
  485. package/build-module/paragraph/deprecated.js +2 -2
  486. package/build-module/paragraph/deprecated.js.map +1 -1
  487. package/build-module/pattern/edit.js.map +1 -1
  488. package/build-module/post-author/edit.js.map +1 -1
  489. package/build-module/post-comments-form/edit.js +14 -7
  490. package/build-module/post-comments-form/edit.js.map +1 -1
  491. package/build-module/post-comments-form/form.js +2 -2
  492. package/build-module/post-comments-form/form.js.map +1 -1
  493. package/build-module/post-content/edit.js.map +1 -1
  494. package/build-module/post-featured-image/edit.js +10 -23
  495. package/build-module/post-featured-image/edit.js.map +1 -1
  496. package/build-module/post-navigation-link/index.js +4 -0
  497. package/build-module/post-navigation-link/index.js.map +1 -1
  498. package/build-module/post-terms/index.js +1 -1
  499. package/build-module/post-terms/index.js.map +1 -1
  500. package/build-module/post-title/index.js +1 -0
  501. package/build-module/post-title/index.js.map +1 -1
  502. package/build-module/pullquote/deprecated.js.map +1 -1
  503. package/build-module/query/edit/index.js +5 -1
  504. package/build-module/query/edit/index.js.map +1 -1
  505. package/build-module/query/edit/inspector-controls/index.js +1 -1
  506. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  507. package/build-module/query/edit/inspector-controls/parent-control.js.map +1 -1
  508. package/build-module/query/edit/query-toolbar.js +14 -2
  509. package/build-module/query/edit/query-toolbar.js.map +1 -1
  510. package/build-module/query/index.js +1 -1
  511. package/build-module/query/index.js.map +1 -1
  512. package/build-module/quote/v2/edit.js.map +1 -1
  513. package/build-module/search/edit.js +2 -2
  514. package/build-module/search/edit.js.map +1 -1
  515. package/build-module/search/edit.native.js.map +1 -1
  516. package/build-module/separator/use-deprecated-opacity.js.map +1 -1
  517. package/build-module/shortcode/edit.native.js.map +1 -1
  518. package/build-module/site-logo/edit.js +8 -24
  519. package/build-module/site-logo/edit.js.map +1 -1
  520. package/build-module/site-title/edit/level-toolbar.js +2 -1
  521. package/build-module/site-title/edit/level-toolbar.js.map +1 -1
  522. package/build-module/social-links/deprecated.js.map +1 -1
  523. package/build-module/social-links/edit.native.js.map +1 -1
  524. package/build-module/spacer/controls.js.map +1 -1
  525. package/build-module/table/deprecated.js.map +1 -1
  526. package/build-module/table/edit.js +2 -1
  527. package/build-module/table/edit.js.map +1 -1
  528. package/build-module/table/index.js +6 -1
  529. package/build-module/table/index.js.map +1 -1
  530. package/build-module/table/save.js +3 -2
  531. package/build-module/table/save.js.map +1 -1
  532. package/build-module/table/state.js.map +1 -1
  533. package/build-module/table-of-contents/edit.js.map +1 -1
  534. package/build-module/tag-cloud/edit.js.map +1 -1
  535. package/build-module/template-part/edit/advanced-controls.js +4 -1
  536. package/build-module/template-part/edit/advanced-controls.js.map +1 -1
  537. package/build-module/template-part/edit/index.js.map +1 -1
  538. package/build-module/template-part/edit/utils/hooks.js +4 -1
  539. package/build-module/template-part/edit/utils/hooks.js.map +1 -1
  540. package/build-module/template-part/index.js +1 -1
  541. package/build-module/template-part/index.js.map +1 -1
  542. package/build-module/template-part/variations.js +0 -13
  543. package/build-module/template-part/variations.js.map +1 -1
  544. package/build-module/transformationCategories.native.js.map +1 -1
  545. package/build-module/utils/clean-empty-object.js +5 -2
  546. package/build-module/utils/clean-empty-object.js.map +1 -1
  547. package/build-module/video/edit-common-settings.js.map +1 -1
  548. package/build-module/video/edit.js +2 -1
  549. package/build-module/video/edit.js.map +1 -1
  550. package/build-module/video/edit.native.js +42 -1
  551. package/build-module/video/edit.native.js.map +1 -1
  552. package/build-module/video/index.js +6 -1
  553. package/build-module/video/index.js.map +1 -1
  554. package/build-module/video/save.js +2 -1
  555. package/build-module/video/save.js.map +1 -1
  556. package/build-module/video/tracks-editor.js +9 -11
  557. package/build-module/video/tracks-editor.js.map +1 -1
  558. package/build-style/audio/style-rtl.css +0 -3
  559. package/build-style/audio/style.css +0 -3
  560. package/build-style/button/style-rtl.css +5 -5
  561. package/build-style/button/style.css +5 -5
  562. package/build-style/comment-template/style-rtl.css +12 -0
  563. package/build-style/comment-template/style.css +12 -0
  564. package/build-style/common-rtl.css +1 -3
  565. package/build-style/common.css +1 -3
  566. package/build-style/cover/editor-rtl.css +11 -0
  567. package/build-style/cover/editor.css +11 -0
  568. package/build-style/cover/style-rtl.css +1 -2
  569. package/build-style/cover/style.css +1 -2
  570. package/build-style/editor-rtl.css +15 -40
  571. package/build-style/editor.css +15 -40
  572. package/build-style/elements-rtl.css +82 -0
  573. package/build-style/elements.css +82 -0
  574. package/build-style/embed/style-rtl.css +0 -1
  575. package/build-style/embed/style.css +0 -1
  576. package/build-style/file/style-rtl.css +11 -12
  577. package/build-style/file/style.css +11 -12
  578. package/build-style/gallery/style-rtl.css +2 -4
  579. package/build-style/gallery/style.css +2 -4
  580. package/build-style/image/style-rtl.css +0 -3
  581. package/build-style/image/style.css +0 -3
  582. package/build-style/navigation/style-rtl.css +9 -1
  583. package/build-style/navigation/style.css +9 -1
  584. package/build-style/post-comments/style-rtl.css +2 -1
  585. package/build-style/post-comments/style.css +2 -1
  586. package/build-style/post-comments-form/editor-rtl.css +3 -0
  587. package/build-style/post-comments-form/editor.css +3 -0
  588. package/build-style/post-featured-image/editor-rtl.css +0 -27
  589. package/build-style/post-featured-image/editor.css +0 -27
  590. package/build-style/post-template/style-rtl.css +9 -18
  591. package/build-style/post-template/style.css +9 -18
  592. package/build-style/query/editor-rtl.css +1 -1
  593. package/build-style/query/editor.css +1 -1
  594. package/build-style/search/style-rtl.css +9 -11
  595. package/build-style/search/style.css +9 -11
  596. package/build-style/search/theme-rtl.css +5 -0
  597. package/build-style/search/theme.css +5 -0
  598. package/build-style/site-logo/editor-rtl.css +0 -12
  599. package/build-style/site-logo/editor.css +0 -12
  600. package/build-style/style-rtl.css +69 -70
  601. package/build-style/style.css +69 -70
  602. package/build-style/table/style-rtl.css +0 -1
  603. package/build-style/table/style.css +0 -1
  604. package/build-style/theme-rtl.css +5 -0
  605. package/build-style/theme.css +5 -0
  606. package/build-style/video/style-rtl.css +1 -5
  607. package/build-style/video/style.css +1 -5
  608. package/package.json +30 -29
  609. package/src/audio/block.json +6 -1
  610. package/src/audio/edit.js +4 -0
  611. package/src/audio/index.js +1 -2
  612. package/src/audio/save.js +12 -2
  613. package/src/audio/style.scss +0 -2
  614. package/src/avatar/hooks.js +2 -2
  615. package/src/block/edit.js +4 -6
  616. package/src/block/edit.native.js +12 -16
  617. package/src/block/test/edit.native.js +5 -8
  618. package/src/button/deprecated.js +10 -46
  619. package/src/button/edit.js +6 -12
  620. package/src/button/edit.native.js +2 -3
  621. package/src/button/save.js +4 -12
  622. package/src/button/style.scss +10 -5
  623. package/src/buttons/deprecated.js +4 -6
  624. package/src/buttons/edit.js +3 -3
  625. package/src/buttons/edit.native.js +7 -11
  626. package/src/column/deprecated.js +2 -1
  627. package/src/column/edit.js +2 -3
  628. package/src/column/edit.native.js +2 -2
  629. package/src/columns/deprecated.js +4 -2
  630. package/src/columns/edit.js +6 -7
  631. package/src/columns/edit.native.js +12 -16
  632. package/src/columns/index.js +1 -2
  633. package/src/columns/utils.js +5 -3
  634. package/src/columns/variations.js +2 -2
  635. package/src/comment-author-name/block.json +0 -4
  636. package/src/comment-author-name/edit.js +3 -12
  637. package/src/comment-date/block.json +0 -4
  638. package/src/comment-date/edit.js +10 -14
  639. package/src/comment-date/index.php +0 -3
  640. package/src/comment-edit-link/block.json +0 -4
  641. package/src/comment-reply-link/block.json +0 -4
  642. package/src/comment-template/block.json +1 -1
  643. package/src/comment-template/style.scss +14 -0
  644. package/src/comments/block.json +1 -1
  645. package/src/comments/deprecated.js +53 -0
  646. package/src/comments/edit.js +24 -4
  647. package/src/comments/index.js +2 -0
  648. package/src/comments-pagination/block.json +1 -1
  649. package/src/comments-title/block.json +1 -1
  650. package/src/comments-title/deprecated.js +0 -2
  651. package/src/comments-title/edit.js +1 -1
  652. package/src/comments-title/index.php +1 -1
  653. package/src/cover/block.json +1 -0
  654. package/src/cover/controls.native.js +2 -4
  655. package/src/cover/deprecated.js +10 -15
  656. package/src/cover/edit/block-controls.js +15 -40
  657. package/src/cover/edit/cover-placeholder.js +2 -0
  658. package/src/cover/edit/index.js +74 -55
  659. package/src/cover/edit/inspector-controls.js +38 -7
  660. package/src/cover/edit.native.js +8 -13
  661. package/src/cover/editor.scss +13 -0
  662. package/src/cover/index.php +21 -8
  663. package/src/cover/save.js +2 -3
  664. package/src/cover/test/edit.native.js +4 -7
  665. package/src/cover/transforms.js +2 -7
  666. package/src/elements.scss +6 -0
  667. package/src/embed/block.json +6 -1
  668. package/src/embed/edit.js +38 -40
  669. package/src/embed/edit.native.js +46 -49
  670. package/src/embed/embed-controls.native.js +2 -3
  671. package/src/embed/embed-preview.js +8 -1
  672. package/src/embed/icons.js +25 -0
  673. package/src/embed/save.js +10 -2
  674. package/src/embed/style.scss +0 -1
  675. package/src/embed/test/__snapshots__/index.native.js.snap +1 -1
  676. package/src/embed/test/index.native.js +24 -50
  677. package/src/embed/variations.js +10 -0
  678. package/src/file/edit.js +6 -6
  679. package/src/file/edit.native.js +14 -25
  680. package/src/file/index.js +1 -2
  681. package/src/file/save.js +2 -2
  682. package/src/file/style.scss +16 -15
  683. package/src/freeform/editor.scss +0 -2
  684. package/src/gallery/edit.js +16 -27
  685. package/src/gallery/gallery.js +9 -2
  686. package/src/gallery/gallery.native.js +2 -4
  687. package/src/gallery/index.js +2 -4
  688. package/src/gallery/index.php +5 -1
  689. package/src/gallery/save.js +5 -1
  690. package/src/gallery/shared.js +22 -9
  691. package/src/gallery/test/__snapshots__/index.native.js.snap +2 -2
  692. package/src/gallery/test/helpers.native.js +11 -198
  693. package/src/gallery/test/index.native.js +37 -63
  694. package/src/gallery/transforms.js +28 -13
  695. package/src/gallery/use-get-media.js +11 -28
  696. package/src/gallery/v1/edit.js +18 -24
  697. package/src/gallery/v1/gallery-image.js +10 -11
  698. package/src/gallery/v1/gallery-image.native.js +8 -17
  699. package/src/gallery/v1/gallery.js +8 -2
  700. package/src/gallery/v1/save.js +20 -3
  701. package/src/group/block.json +1 -0
  702. package/src/group/edit.js +1 -3
  703. package/src/heading/autogenerate-anchors.js +8 -5
  704. package/src/heading/deprecated.js +6 -21
  705. package/src/heading/edit.js +2 -3
  706. package/src/heading/heading-level-dropdown.js +1 -0
  707. package/src/heading/index.js +8 -2
  708. package/src/html/edit.js +10 -40
  709. package/src/html/preview.js +46 -0
  710. package/src/image/block.json +5 -0
  711. package/src/image/deprecated.js +6 -29
  712. package/src/image/edit.native.js +15 -26
  713. package/src/image/image.js +33 -38
  714. package/src/image/save.js +10 -2
  715. package/src/image/style.scss +0 -2
  716. package/src/image/test/edit.native.js +51 -19
  717. package/src/image/transforms.js +4 -3
  718. package/src/image/utils.js +2 -2
  719. package/src/index.js +1 -1
  720. package/src/latest-comments/edit.js +2 -6
  721. package/src/latest-posts/edit.js +7 -12
  722. package/src/latest-posts/edit.native.js +10 -15
  723. package/src/list/index.js +1 -2
  724. package/src/list/test/migrate.js +1 -2
  725. package/src/list/v2/edit.js +6 -9
  726. package/src/list/v2/transforms.js +22 -7
  727. package/src/list-item/hooks/use-backspace.js +2 -3
  728. package/src/list-item/hooks/use-enter.js +11 -9
  729. package/src/list-item/hooks/use-indent-list-item.js +2 -3
  730. package/src/list-item/hooks/use-outdent-list-item.js +50 -24
  731. package/src/list-item/hooks/use-space.js +2 -3
  732. package/src/media-text/deprecated.js +6 -3
  733. package/src/media-text/edit.native.js +2 -5
  734. package/src/media-text/media-container.js +1 -1
  735. package/src/media-text/media-container.native.js +6 -9
  736. package/src/media-text/save.js +2 -1
  737. package/src/missing/edit.native.js +2 -3
  738. package/src/missing/test/edit-integration.native.js +2 -3
  739. package/src/missing/test/edit.native.js +6 -9
  740. package/src/more/edit.js +9 -11
  741. package/src/navigation/block.json +9 -0
  742. package/src/navigation/deprecated.js +2 -5
  743. package/src/navigation/edit/index.js +25 -36
  744. package/src/navigation/edit/navigation-menu-delete-control.js +2 -3
  745. package/src/navigation/edit/unsaved-inner-blocks.js +31 -30
  746. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -3
  747. package/src/navigation/style.scss +11 -2
  748. package/src/navigation/test/use-navigation-menu.js +241 -0
  749. package/src/navigation/use-navigation-entities.js +11 -13
  750. package/src/navigation/use-navigation-menu.js +95 -82
  751. package/src/navigation/use-template-part-area-label.js +8 -7
  752. package/src/navigation/view.js +6 -1
  753. package/src/navigation-link/edit.js +24 -20
  754. package/src/navigation-link/hooks.js +0 -14
  755. package/src/navigation-link/index.js +1 -1
  756. package/src/navigation-link/test/__snapshots__/hooks.js.snap +0 -93
  757. package/src/navigation-link/test/edit.js +2 -4
  758. package/src/navigation-link/test/hooks.js +0 -12
  759. package/src/navigation-submenu/edit.js +10 -20
  760. package/src/navigation-submenu/view.js +6 -1
  761. package/src/nextpage/edit.js +1 -3
  762. package/src/page-list/convert-to-links-modal.js +51 -54
  763. package/src/page-list/edit.js +9 -11
  764. package/src/page-list/test/convert-to-links-modal.js +6 -12
  765. package/src/paragraph/deprecated.js +2 -2
  766. package/src/pattern/edit.js +2 -4
  767. package/src/post-author/edit.js +2 -3
  768. package/src/post-comments/index.php +1 -1
  769. package/src/post-comments/style.scss +7 -3
  770. package/src/post-comments-form/edit.js +24 -10
  771. package/src/post-comments-form/editor.scss +4 -0
  772. package/src/post-comments-form/form.js +2 -2
  773. package/src/post-comments-form/index.php +1 -1
  774. package/src/post-content/edit.js +2 -3
  775. package/src/post-featured-image/edit.js +14 -30
  776. package/src/post-featured-image/editor.scss +0 -29
  777. package/src/post-featured-image/index.php +4 -2
  778. package/src/post-navigation-link/block.json +4 -0
  779. package/src/post-template/index.php +23 -17
  780. package/src/post-template/style.scss +1 -7
  781. package/src/post-terms/index.js +1 -1
  782. package/src/post-title/block.json +1 -0
  783. package/src/pullquote/deprecated.js +2 -1
  784. package/src/query/edit/index.js +10 -10
  785. package/src/query/edit/inspector-controls/index.js +1 -1
  786. package/src/query/edit/inspector-controls/parent-control.js +2 -3
  787. package/src/query/edit/query-toolbar.js +25 -5
  788. package/src/query/editor.scss +1 -1
  789. package/src/query/index.js +1 -1
  790. package/src/query-no-results/index.php +10 -8
  791. package/src/quote/v2/edit.js +4 -6
  792. package/src/quote/v2/test/migrate.js +1 -2
  793. package/src/search/edit.js +8 -14
  794. package/src/search/edit.native.js +4 -6
  795. package/src/search/index.php +12 -10
  796. package/src/search/style.scss +11 -9
  797. package/src/search/theme.scss +5 -0
  798. package/src/separator/use-deprecated-opacity.js +2 -4
  799. package/src/shortcode/edit.native.js +4 -3
  800. package/src/shortcode/test/edit.native.js +2 -5
  801. package/src/site-logo/edit.js +5 -28
  802. package/src/site-logo/editor.scss +0 -14
  803. package/src/site-title/edit/level-toolbar.js +1 -0
  804. package/src/social-link/index.php +16 -0
  805. package/src/social-links/deprecated.js +4 -2
  806. package/src/social-links/edit.native.js +3 -5
  807. package/src/spacer/controls.js +2 -3
  808. package/src/spacer/test/index.native.js +10 -21
  809. package/src/style.scss +1 -0
  810. package/src/table/block.json +6 -1
  811. package/src/table/deprecated.js +4 -8
  812. package/src/table/edit.js +2 -0
  813. package/src/table/save.js +6 -1
  814. package/src/table/state.js +2 -4
  815. package/src/table/style.scss +0 -1
  816. package/src/table-of-contents/edit.js +6 -10
  817. package/src/tag-cloud/edit.js +4 -7
  818. package/src/template-part/edit/advanced-controls.js +4 -4
  819. package/src/template-part/edit/index.js +6 -10
  820. package/src/template-part/edit/utils/hooks.js +8 -7
  821. package/src/template-part/index.js +1 -1
  822. package/src/template-part/variations.js +0 -11
  823. package/src/transformationCategories.native.js +3 -3
  824. package/src/utils/clean-empty-object.js +8 -2
  825. package/src/video/block.json +6 -1
  826. package/src/video/edit-common-settings.js +2 -8
  827. package/src/video/edit.js +4 -0
  828. package/src/video/edit.native.js +38 -16
  829. package/src/video/index.js +1 -2
  830. package/src/video/save.js +10 -2
  831. package/src/video/style.scss +0 -2
  832. package/src/video/tracks-editor.js +1 -1
  833. package/build/gallery/use-short-code-transform.js +0 -64
  834. package/build/gallery/use-short-code-transform.js.map +0 -1
  835. package/build/navigation-link/fallback-variations.js +0 -75
  836. package/build/navigation-link/fallback-variations.js.map +0 -1
  837. package/build/template-part/fallback-variations.js +0 -59
  838. package/build/template-part/fallback-variations.js.map +0 -1
  839. package/build-module/gallery/use-short-code-transform.js +0 -54
  840. package/build-module/gallery/use-short-code-transform.js.map +0 -1
  841. package/build-module/navigation-link/fallback-variations.js +0 -65
  842. package/build-module/navigation-link/fallback-variations.js.map +0 -1
  843. package/build-module/template-part/fallback-variations.js +0 -47
  844. package/build-module/template-part/fallback-variations.js.map +0 -1
  845. package/src/gallery/use-short-code-transform.js +0 -55
  846. package/src/navigation-link/fallback-variations.js +0 -65
  847. package/src/template-part/fallback-variations.js +0 -51
@@ -16,6 +16,7 @@ import Clipboard from '@react-native-clipboard/clipboard';
16
16
  */
17
17
  import { getBlockTypes, unregisterBlockType } from '@wordpress/blocks';
18
18
  import {
19
+ requestMediaPicker,
19
20
  setFeaturedImage,
20
21
  sendMediaUpload,
21
22
  subscribeMediaUpload,
@@ -49,6 +50,10 @@ jest.mock( 'lodash', () => {
49
50
  return { ...actual, delay: ( cb ) => cb() };
50
51
  } );
51
52
 
53
+ function mockGetMedia( media ) {
54
+ jest.spyOn( select( coreStore ), 'getMedia' ).mockReturnValue( media );
55
+ }
56
+
52
57
  const apiFetchPromise = Promise.resolve( {} );
53
58
 
54
59
  const clipboardPromise = Promise.resolve( '' );
@@ -79,7 +84,7 @@ describe( 'Image Block', () => {
79
84
  <a href="https://cldup.com/cXyG__fTLN.jpg">
80
85
  <img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/>
81
86
  </a>
82
- <figcaption>Mountain</figcaption></figure>
87
+ <figcaption class="wp-element-caption">Mountain</figcaption></figure>
83
88
  <!-- /wp:image -->`;
84
89
  const screen = await initializeEditor( { initialHtml } );
85
90
  // We must await the image fetch via `getMedia`
@@ -95,7 +100,7 @@ describe( 'Image Block', () => {
95
100
  fireEvent.press( screen.getByText( 'None' ) );
96
101
 
97
102
  const expectedHtml = `<!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
98
- <figure class="wp-block-image size-large is-style-default"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/><figcaption>Mountain</figcaption></figure>
103
+ <figure class="wp-block-image size-large is-style-default"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/><figcaption class="wp-element-caption">Mountain</figcaption></figure>
99
104
  <!-- /wp:image -->`;
100
105
  expect( getEditorHtml() ).toBe( expectedHtml );
101
106
  } );
@@ -105,7 +110,7 @@ describe( 'Image Block', () => {
105
110
  <!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
106
111
  <figure class="wp-block-image size-large is-style-default">
107
112
  <img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/>
108
- <figcaption>Mountain</figcaption></figure>
113
+ <figcaption class="wp-element-caption">Mountain</figcaption></figure>
109
114
  <!-- /wp:image -->`;
110
115
  const screen = await initializeEditor( { initialHtml } );
111
116
  // We must await the image fetch via `getMedia`
@@ -121,7 +126,7 @@ describe( 'Image Block', () => {
121
126
  fireEvent.press( screen.getByText( 'Media File' ) );
122
127
 
123
128
  const expectedHtml = `<!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"media","className":"is-style-default"} -->
124
- <figure class="wp-block-image size-large is-style-default"><a href="https://cldup.com/cXyG__fTLN.jpg"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption>Mountain</figcaption></figure>
129
+ <figure class="wp-block-image size-large is-style-default"><a href="https://cldup.com/cXyG__fTLN.jpg"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption class="wp-element-caption">Mountain</figcaption></figure>
125
130
  <!-- /wp:image -->`;
126
131
  expect( getEditorHtml() ).toBe( expectedHtml );
127
132
  } );
@@ -131,7 +136,7 @@ describe( 'Image Block', () => {
131
136
  <!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
132
137
  <figure class="wp-block-image size-large is-style-default">
133
138
  <img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/>
134
- <figcaption>Mountain</figcaption></figure>
139
+ <figcaption class="wp-element-caption">Mountain</figcaption></figure>
135
140
  <!-- /wp:image -->`;
136
141
  const screen = await initializeEditor( { initialHtml } );
137
142
  // We must await the image fetch via `getMedia`
@@ -154,7 +159,7 @@ describe( 'Image Block', () => {
154
159
  fireEvent.press( screen.getByA11yLabel( 'Apply' ) );
155
160
 
156
161
  const expectedHtml = `<!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"custom","className":"is-style-default"} -->
157
- <figure class="wp-block-image size-large is-style-default"><a href="http://wordpress.org"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption>Mountain</figcaption></figure>
162
+ <figure class="wp-block-image size-large is-style-default"><a href="http://wordpress.org"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption class="wp-element-caption">Mountain</figcaption></figure>
158
163
  <!-- /wp:image -->`;
159
164
  expect( getEditorHtml() ).toBe( expectedHtml );
160
165
  } );
@@ -164,7 +169,7 @@ describe( 'Image Block', () => {
164
169
  <!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
165
170
  <figure class="wp-block-image size-large is-style-default">
166
171
  <img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/>
167
- <figcaption>Mountain</figcaption></figure>
172
+ <figcaption class="wp-element-caption">Mountain</figcaption></figure>
168
173
  <!-- /wp:image -->`;
169
174
  const screen = await initializeEditor( { initialHtml } );
170
175
  // We must await the image fetch via `getMedia`
@@ -192,7 +197,7 @@ describe( 'Image Block', () => {
192
197
  fireEvent.press( screen.getByText( 'Media File' ) );
193
198
 
194
199
  const expectedHtml = `<!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"media","className":"is-style-default"} -->
195
- <figure class="wp-block-image size-large is-style-default"><a href="https://cldup.com/cXyG__fTLN.jpg"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption>Mountain</figcaption></figure>
200
+ <figure class="wp-block-image size-large is-style-default"><a href="https://cldup.com/cXyG__fTLN.jpg"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption class="wp-element-caption">Mountain</figcaption></figure>
196
201
  <!-- /wp:image -->`;
197
202
  expect( getEditorHtml() ).toBe( expectedHtml );
198
203
  } );
@@ -204,7 +209,7 @@ describe( 'Image Block', () => {
204
209
  <a href="https://cldup.com/cXyG__fTLN.jpg">
205
210
  <img src="https://cldup.com/cXyG__fTLN.jpg?w=683" alt="" class="wp-image-1"/>
206
211
  </a>
207
- <figcaption>Mountain</figcaption></figure>
212
+ <figcaption class="wp-element-caption">Mountain</figcaption></figure>
208
213
  <!-- /wp:image -->`;
209
214
  const screen = await initializeEditor( { initialHtml } );
210
215
  // We must await the image fetch via `getMedia`
@@ -228,7 +233,7 @@ describe( 'Image Block', () => {
228
233
  <a href="https://wordpress.org">
229
234
  <img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/>
230
235
  </a>
231
- <figcaption>Mountain</figcaption></figure>
236
+ <figcaption class="wp-element-caption">Mountain</figcaption></figure>
232
237
  <!-- /wp:image -->`;
233
238
  const screen = await initializeEditor( { initialHtml } );
234
239
  // We must await the image fetch via `getMedia`
@@ -246,7 +251,7 @@ describe( 'Image Block', () => {
246
251
  fireEvent.press( linkTargetButton );
247
252
 
248
253
  const expectedHtml = `<!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"custom","className":"is-style-default"} -->
249
- <figure class="wp-block-image size-large is-style-default"><a href="https://wordpress.org" target="_blank" rel="noreferrer noopener"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption>Mountain</figcaption></figure>
254
+ <figure class="wp-block-image size-large is-style-default"><a href="https://wordpress.org" target="_blank" rel="noreferrer noopener"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption class="wp-element-caption">Mountain</figcaption></figure>
250
255
  <!-- /wp:image -->`;
251
256
  expect( getEditorHtml() ).toBe( expectedHtml );
252
257
  } );
@@ -258,7 +263,7 @@ describe( 'Image Block', () => {
258
263
  <a href="https://wordpress.org" target="_blank" rel="noreferrer noopener">
259
264
  <img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/>
260
265
  </a>
261
- <figcaption>Mountain</figcaption>
266
+ <figcaption class="wp-element-caption">Mountain</figcaption>
262
267
  </figure>
263
268
  <!-- /wp:image -->`;
264
269
  const screen = await initializeEditor( { initialHtml } );
@@ -277,7 +282,7 @@ describe( 'Image Block', () => {
277
282
  fireEvent.press( linkTargetButton );
278
283
 
279
284
  const expectedHtml = `<!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"custom","className":"is-style-default"} -->
280
- <figure class="wp-block-image size-large is-style-default"><a href="https://wordpress.org"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption>Mountain</figcaption></figure>
285
+ <figure class="wp-block-image size-large is-style-default"><a href="https://wordpress.org"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption class="wp-element-caption">Mountain</figcaption></figure>
281
286
  <!-- /wp:image -->`;
282
287
  expect( getEditorHtml() ).toBe( expectedHtml );
283
288
  } );
@@ -292,12 +297,6 @@ describe( 'Image Block', () => {
292
297
  );
293
298
  }
294
299
 
295
- function mockGetMedia( media ) {
296
- jest.spyOn( select( coreStore ), 'getMedia' ).mockReturnValueOnce(
297
- media
298
- );
299
- }
300
-
301
300
  it( 'does not prompt to replace featured image during a new image upload', () => {
302
301
  // Arrange
303
302
  const INITIAL_IMAGE = { id: 1, url: 'mock-url-1' };
@@ -406,4 +405,37 @@ describe( 'Image Block', () => {
406
405
  );
407
406
  } );
408
407
  } );
408
+
409
+ it( 'sets src and alt attributes when selecting media', async () => {
410
+ const IMAGE = { id: 1, url: 'mock-image', alt: 'A beautiful mountain' };
411
+ requestMediaPicker.mockImplementationOnce(
412
+ ( source, filter, multiple, callback ) => {
413
+ callback( {
414
+ id: IMAGE.id,
415
+ url: IMAGE.url,
416
+ alt: IMAGE.alt,
417
+ } );
418
+ }
419
+ );
420
+ mockGetMedia( {
421
+ id: IMAGE.id,
422
+ source_url: IMAGE.url,
423
+ } );
424
+
425
+ const initialHtml = `
426
+ <!-- wp:image -->
427
+ <figure class="wp-block-image">
428
+ <img alt="" />
429
+ </figure>
430
+ <!-- /wp:image -->`;
431
+ const screen = await initializeEditor( { initialHtml } );
432
+
433
+ fireEvent.press( screen.getByText( 'ADD IMAGE' ) );
434
+ fireEvent.press( screen.getByText( 'WordPress Media Library' ) );
435
+
436
+ const expectedHtml = `<!-- wp:image {"id":${ IMAGE.id },"sizeSlug":"large","linkDestination":"none"} -->
437
+ <figure class="wp-block-image size-large"><img src="${ IMAGE.url }" alt="${ IMAGE.alt }" class="wp-image-${ IMAGE.id }"/></figure>
438
+ <!-- /wp:image -->`;
439
+ expect( getEditorHtml() ).toBe( expectedHtml );
440
+ } );
409
441
  } );
@@ -90,9 +90,10 @@ const transforms = {
90
90
  node.className +
91
91
  ' ' +
92
92
  node.querySelector( 'img' ).className;
93
- const alignMatches = /(?:^|\s)align(left|center|right)(?:$|\s)/.exec(
94
- className
95
- );
93
+ const alignMatches =
94
+ /(?:^|\s)align(left|center|right)(?:$|\s)/.exec(
95
+ className
96
+ );
96
97
  const anchor = node.id === '' ? undefined : node.id;
97
98
  const align = alignMatches ? alignMatches[ 1 ] : undefined;
98
99
  const idMatches = /(?:^|\s)wp-image-(\d+)(?:$|\s)/.exec(
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { isEmpty, each, get } from 'lodash';
4
+ import { isEmpty, get } from 'lodash';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -13,7 +13,7 @@ export function removeNewTabRel( currentRel ) {
13
13
 
14
14
  if ( currentRel !== undefined && ! isEmpty( newRel ) ) {
15
15
  if ( ! isEmpty( newRel ) ) {
16
- each( NEW_TAB_REL, ( relVal ) => {
16
+ NEW_TAB_REL.forEach( ( relVal ) => {
17
17
  const regExp = new RegExp( '\\b' + relVal + '\\b', 'gi' );
18
18
  newRel = newRel.replace( regExp, '' );
19
19
  } );
package/src/index.js CHANGED
@@ -153,7 +153,7 @@ const getAllBlocks = () => [
153
153
  buttons,
154
154
  calendar,
155
155
  categories,
156
- window.wp && window.wp.oldEditor ? classic : null, // Only add the classic block in WP Context.
156
+ ...( window.wp && window.wp.oldEditor ? [ classic ] : [] ), // Only add the classic block in WP Context.
157
157
  code,
158
158
  column,
159
159
  columns,
@@ -25,12 +25,8 @@ const MIN_COMMENTS = 1;
25
25
  const MAX_COMMENTS = 100;
26
26
 
27
27
  export default function LatestComments( { attributes, setAttributes } ) {
28
- const {
29
- commentsToShow,
30
- displayAvatar,
31
- displayDate,
32
- displayExcerpt,
33
- } = attributes;
28
+ const { commentsToShow, displayAvatar, displayDate, displayExcerpt } =
29
+ attributes;
34
30
 
35
31
  return (
36
32
  <div { ...useBlockProps() }>
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { get, includes, invoke, isUndefined, pickBy } from 'lodash';
4
+ import { get, includes, pickBy } from 'lodash';
5
5
  import classnames from 'classnames';
6
6
 
7
7
  /**
@@ -113,7 +113,7 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
113
113
  per_page: postsToShow,
114
114
  _embed: 'wp:featuredmedia',
115
115
  },
116
- ( value ) => ! isUndefined( value )
116
+ ( value ) => typeof value !== 'undefined'
117
117
  );
118
118
 
119
119
  return {
@@ -432,11 +432,7 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
432
432
  </BlockControls>
433
433
  <ul { ...blockProps }>
434
434
  { displayPosts.map( ( post, i ) => {
435
- const titleTrimmed = invoke( post, [
436
- 'title',
437
- 'rendered',
438
- 'trim',
439
- ] );
435
+ const titleTrimmed = post.title.rendered.trim();
440
436
  let excerpt = post.excerpt.rendered;
441
437
  const currentAuthor = authorList?.find(
442
438
  ( author ) => author.id === post.author
@@ -450,13 +446,12 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
450
446
  excerptElement.innerText ||
451
447
  '';
452
448
 
453
- const {
454
- url: imageSourceUrl,
455
- alt: featuredImageAlt,
456
- } = getFeaturedImageDetails( post, featuredImageSizeSlug );
449
+ const { url: imageSourceUrl, alt: featuredImageAlt } =
450
+ getFeaturedImageDetails( post, featuredImageSizeSlug );
457
451
  const imageClasses = classnames( {
458
452
  'wp-block-latest-posts__featured-image': true,
459
- [ `align${ featuredImageAlign }` ]: !! featuredImageAlign,
453
+ [ `align${ featuredImageAlign }` ]:
454
+ !! featuredImageAlign,
460
455
  } );
461
456
  const renderFeaturedImage =
462
457
  displayFeaturedImage && imageSourceUrl;
@@ -38,23 +38,18 @@ class LatestPostsEdit extends Component {
38
38
  this.state = {
39
39
  categoriesList: [],
40
40
  };
41
- this.onSetDisplayPostContent = this.onSetDisplayPostContent.bind(
42
- this
43
- );
44
- this.onSetDisplayPostContentRadio = this.onSetDisplayPostContentRadio.bind(
45
- this
46
- );
41
+ this.onSetDisplayPostContent =
42
+ this.onSetDisplayPostContent.bind( this );
43
+ this.onSetDisplayPostContentRadio =
44
+ this.onSetDisplayPostContentRadio.bind( this );
47
45
  this.onSetExcerptLength = this.onSetExcerptLength.bind( this );
48
46
  this.onSetDisplayPostDate = this.onSetDisplayPostDate.bind( this );
49
- this.onSetDisplayFeaturedImage = this.onSetDisplayFeaturedImage.bind(
50
- this
51
- );
52
- this.onSetFeaturedImageAlign = this.onSetFeaturedImageAlign.bind(
53
- this
54
- );
55
- this.onSetAddLinkToFeaturedImage = this.onSetAddLinkToFeaturedImage.bind(
56
- this
57
- );
47
+ this.onSetDisplayFeaturedImage =
48
+ this.onSetDisplayFeaturedImage.bind( this );
49
+ this.onSetFeaturedImageAlign =
50
+ this.onSetFeaturedImageAlign.bind( this );
51
+ this.onSetAddLinkToFeaturedImage =
52
+ this.onSetAddLinkToFeaturedImage.bind( this );
58
53
  this.onSetOrder = this.onSetOrder.bind( this );
59
54
  this.onSetOrderBy = this.onSetOrderBy.bind( this );
60
55
  this.onSetPostsToShow = this.onSetPostsToShow.bind( this );
package/src/list/index.js CHANGED
@@ -21,8 +21,7 @@ const settingsV1 = {
21
21
  icon,
22
22
  example: {
23
23
  attributes: {
24
- values:
25
- '<li>Alice.</li><li>The White Rabbit.</li><li>The Cheshire Cat.</li><li>The Mad Hatter.</li><li>The Queen of Hearts.</li>',
24
+ values: '<li>Alice.</li><li>The White Rabbit.</li><li>The Cheshire Cat.</li><li>The Mad Hatter.</li><li>The Queen of Hearts.</li>',
26
25
  },
27
26
  },
28
27
  transforms,
@@ -27,8 +27,7 @@ describe( 'Migrate list block', () => {
27
27
 
28
28
  it( 'should migrate the values attribute to inner blocks', () => {
29
29
  const [ updatedAttributes, updatedInnerBlocks ] = migrateToListV2( {
30
- values:
31
- '<li>test</li><li>test</li><li>test<ol><li>test test</li><li>test est eesssss</li></ol></li>',
30
+ values: '<li>test</li><li>test</li><li>test<ol><li>test test</li><li>test est eesssss</li></ol></li>',
32
31
  ordered: false,
33
32
  } );
34
33
 
@@ -45,9 +45,8 @@ const TEMPLATE = [ [ 'core/list-item' ] ];
45
45
  */
46
46
  function useMigrateOnLoad( attributes, clientId ) {
47
47
  const registry = useRegistry();
48
- const { updateBlockAttributes, replaceInnerBlocks } = useDispatch(
49
- blockEditorStore
50
- );
48
+ const { updateBlockAttributes, replaceInnerBlocks } =
49
+ useDispatch( blockEditorStore );
51
50
 
52
51
  useEffect( () => {
53
52
  // As soon as the block is loaded, migrate it to the new version.
@@ -74,9 +73,8 @@ function useMigrateOnLoad( attributes, clientId ) {
74
73
  function useOutdentList( clientId ) {
75
74
  const { canOutdent } = useSelect(
76
75
  ( innerSelect ) => {
77
- const { getBlockRootClientId, getBlock } = innerSelect(
78
- blockEditorStore
79
- );
76
+ const { getBlockRootClientId, getBlock } =
77
+ innerSelect( blockEditorStore );
80
78
  const parentId = getBlockRootClientId( clientId );
81
79
  return {
82
80
  canOutdent:
@@ -87,9 +85,8 @@ function useOutdentList( clientId ) {
87
85
  [ clientId ]
88
86
  );
89
87
  const { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );
90
- const { getBlockRootClientId, getBlockAttributes, getBlock } = useSelect(
91
- blockEditorStore
92
- );
88
+ const { getBlockRootClientId, getBlockAttributes, getBlock } =
89
+ useSelect( blockEditorStore );
93
90
 
94
91
  return [
95
92
  canOutdent,
@@ -1,3 +1,11 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ /**
5
+ * External dependencies
6
+ */
7
+ import { flatMap } from 'lodash';
8
+
1
9
  /**
2
10
  * WordPress dependencies
3
11
  */
@@ -35,6 +43,15 @@ function getListContentSchema( { phrasingContentSchema } ) {
35
43
  return listContentSchema;
36
44
  }
37
45
 
46
+ function getListContentFlat( blocks ) {
47
+ return flatMap( blocks, ( { name, attributes, innerBlocks = [] } ) => {
48
+ if ( name === 'core/list-item' ) {
49
+ return [ attributes.content, ...getListContentFlat( innerBlocks ) ];
50
+ }
51
+ return getListContentFlat( innerBlocks );
52
+ } );
53
+ }
54
+
38
55
  const transforms = {
39
56
  from: [
40
57
  {
@@ -123,13 +140,11 @@ const transforms = {
123
140
  type: 'block',
124
141
  blocks: [ block ],
125
142
  transform: ( _attributes, childBlocks ) => {
126
- return childBlocks
127
- .filter( ( { name } ) => name === 'core/list-item' )
128
- .map( ( { attributes } ) =>
129
- createBlock( block, {
130
- content: attributes.content,
131
- } )
132
- );
143
+ return getListContentFlat( childBlocks ).map( ( content ) =>
144
+ createBlock( block, {
145
+ content,
146
+ } )
147
+ );
133
148
  },
134
149
  } ) ),
135
150
  ...[ 'core/quote', 'core/pullquote' ].map( ( block ) => ( {
@@ -13,9 +13,8 @@ import { store as blockEditorStore } from '@wordpress/block-editor';
13
13
  import useOutdentListItem from './use-outdent-list-item';
14
14
 
15
15
  export default function useBackspace( props ) {
16
- const { getSelectionStart, getSelectionEnd } = useSelect(
17
- blockEditorStore
18
- );
16
+ const { getSelectionStart, getSelectionEnd } =
17
+ useSelect( blockEditorStore );
19
18
  const propsRef = useRef( props );
20
19
  propsRef.current = props;
21
20
  const [ canOutdent, outdentListItem ] = useOutdentListItem(
@@ -18,10 +18,9 @@ import { store as blockEditorStore } from '@wordpress/block-editor';
18
18
  import useOutdentListItem from './use-outdent-list-item';
19
19
 
20
20
  export default function useEnter( props ) {
21
- const { replaceBlocks } = useDispatch( blockEditorStore );
22
- const { getBlock, getBlockRootClientId, getBlockIndex } = useSelect(
23
- blockEditorStore
24
- );
21
+ const { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );
22
+ const { getBlock, getBlockRootClientId, getBlockIndex } =
23
+ useSelect( blockEditorStore );
25
24
  const propsRef = useRef( props );
26
25
  propsRef.current = props;
27
26
  const [ canOutdent, outdentListItem ] = useOutdentListItem(
@@ -43,8 +42,9 @@ export default function useEnter( props ) {
43
42
  return;
44
43
  }
45
44
  // Here we are in top level list so we need to split.
46
- const blockRootClientId = getBlockRootClientId( clientId );
47
- const topParentListBlock = getBlock( blockRootClientId );
45
+ const topParentListBlock = getBlock(
46
+ getBlockRootClientId( clientId )
47
+ );
48
48
  const blockIndex = getBlockIndex( clientId );
49
49
  const head = cloneBlock( {
50
50
  ...topParentListBlock,
@@ -70,11 +70,13 @@ export default function useEnter( props ) {
70
70
  ]
71
71
  : [];
72
72
  replaceBlocks(
73
- blockRootClientId,
73
+ topParentListBlock.clientId,
74
74
  [ head, middle, ...tail ],
75
- 1,
76
- 0
75
+ 1
77
76
  );
77
+ // We manually change the selection here because we are replacing
78
+ // a different block than the selected one.
79
+ selectionChange( middle.clientId );
78
80
  }
79
81
 
80
82
  element.addEventListener( 'keydown', onKeyDown );
@@ -11,9 +11,8 @@ export default function useIndentListItem( clientId ) {
11
11
  ( select ) => select( blockEditorStore ).getBlockIndex( clientId ) > 0,
12
12
  [ clientId ]
13
13
  );
14
- const { replaceBlocks, selectionChange, multiSelect } = useDispatch(
15
- blockEditorStore
16
- );
14
+ const { replaceBlocks, selectionChange, multiSelect } =
15
+ useDispatch( blockEditorStore );
17
16
  const {
18
17
  getBlock,
19
18
  getPreviousBlockClientId,
@@ -1,9 +1,15 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { first, last } from 'lodash';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
4
9
  import { useCallback } from '@wordpress/element';
5
10
  import { useSelect, useDispatch } from '@wordpress/data';
6
11
  import { store as blockEditorStore } from '@wordpress/block-editor';
12
+ import { cloneBlock } from '@wordpress/blocks';
7
13
 
8
14
  /**
9
15
  * Internal dependencies
@@ -23,7 +29,8 @@ export default function useOutdentListItem( clientId ) {
23
29
  },
24
30
  [ clientId ]
25
31
  );
26
- const { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );
32
+ const { replaceBlocks, selectionChange, multiSelect } =
33
+ useDispatch( blockEditorStore );
27
34
  const {
28
35
  getBlockRootClientId,
29
36
  getBlockAttributes,
@@ -31,65 +38,84 @@ export default function useOutdentListItem( clientId ) {
31
38
  getBlockIndex,
32
39
  getSelectionStart,
33
40
  getSelectionEnd,
41
+ hasMultiSelection,
42
+ getMultiSelectedBlockClientIds,
34
43
  } = useSelect( blockEditorStore );
35
44
 
36
45
  return [
37
46
  canOutdent,
38
47
  useCallback( () => {
48
+ const _hasMultiSelection = hasMultiSelection();
49
+ const clientIds = _hasMultiSelection
50
+ ? getMultiSelectedBlockClientIds()
51
+ : [ clientId ];
52
+
39
53
  const selectionStart = getSelectionStart();
40
54
  const selectionEnd = getSelectionEnd();
41
55
 
42
56
  const listParentId = getBlockRootClientId( clientId );
43
57
  const listAttributes = getBlockAttributes( listParentId );
44
58
  const listItemParentId = getBlockRootClientId( listParentId );
45
- const listItemParentAttributes = getBlockAttributes(
46
- listItemParentId
47
- );
59
+ const listItemParentAttributes =
60
+ getBlockAttributes( listItemParentId );
48
61
 
49
- const index = getBlockIndex( clientId );
62
+ const firstIndex = getBlockIndex( first( clientIds ) );
63
+ const lastIndex = getBlockIndex( last( clientIds ) );
50
64
  const siblingBlocks = getBlock( listParentId ).innerBlocks;
51
- const previousSiblings = siblingBlocks.slice( 0, index );
52
- const afterSiblings = siblingBlocks.slice( index + 1 );
65
+ const previousSiblings = siblingBlocks.slice( 0, firstIndex );
66
+ const afterSiblings = siblingBlocks.slice( lastIndex + 1 );
53
67
 
54
68
  // Create a new parent list item block with just the siblings
55
- // that existed before the child item being outdent.
69
+ // that existed before the first child item being outdent.
56
70
  const newListItemParent = createListItem(
57
71
  listItemParentAttributes,
58
72
  listAttributes,
59
73
  previousSiblings
60
74
  );
61
75
 
62
- const block = getBlock( clientId );
63
- const childList = block.innerBlocks[ 0 ];
76
+ const lastBlock = getBlock( last( clientIds ) );
77
+ const childList = lastBlock.innerBlocks[ 0 ];
64
78
  const childItems = childList?.innerBlocks || [];
65
79
  const hasChildItems = !! childItems.length;
66
80
 
81
+ const newBlocksExcludingLast = clientIds
82
+ .slice( 0, -1 )
83
+ .map( ( _clientId ) => cloneBlock( getBlock( _clientId ) ) );
84
+
67
85
  // Create a new list item block whose attributes are equal to the
68
- // block being outdent and whose children are the children that it had (if any)
86
+ // last block being outdent and whose children are the children that it had (if any)
69
87
  // followed by the siblings that existed after it.
70
- const newItem = createListItem(
71
- block.attributes,
88
+ const newLastItem = createListItem(
89
+ lastBlock.attributes,
72
90
  hasChildItems ? childList.attributes : listAttributes,
73
91
  [ ...childItems, ...afterSiblings ]
74
92
  );
75
93
 
76
94
  // Replace the parent list item block, with a new block containing
77
- // the previous siblings, followed by another block containing after siblings
78
- // in relation to the block being outdent.
95
+ // the previous siblings before the first block being outdent,
96
+ // followed by the blocks being outdent with the after siblings added
97
+ // as children of the last block.
79
98
  replaceBlocks(
80
99
  [ listItemParentId ],
81
- [ newListItemParent, newItem ]
100
+ [ newListItemParent, ...newBlocksExcludingLast, newLastItem ]
82
101
  );
83
102
 
84
103
  // Restore the selection state.
85
- selectionChange(
86
- newItem.clientId,
87
- selectionEnd.attributeKey,
88
- selectionEnd.clientId === selectionStart.clientId
89
- ? selectionStart.offset
90
- : selectionEnd.offset,
91
- selectionEnd.offset
92
- );
104
+ if ( ! _hasMultiSelection ) {
105
+ selectionChange(
106
+ newLastItem.clientId,
107
+ selectionEnd.attributeKey,
108
+ selectionEnd.clientId === selectionStart.clientId
109
+ ? selectionStart.offset
110
+ : selectionEnd.offset,
111
+ selectionEnd.offset
112
+ );
113
+ } else {
114
+ multiSelect(
115
+ first( newBlocksExcludingLast ).clientId,
116
+ newLastItem.clientId
117
+ );
118
+ }
93
119
  }, [ clientId ] ),
94
120
  ];
95
121
  }
@@ -12,9 +12,8 @@ import { useSelect } from '@wordpress/data';
12
12
  import useIndentListItem from './use-indent-list-item';
13
13
 
14
14
  export default function useSpace( clientId ) {
15
- const { getSelectionStart, getSelectionEnd } = useSelect(
16
- blockEditorStore
17
- );
15
+ const { getSelectionStart, getSelectionEnd } =
16
+ useSelect( blockEditorStore );
18
17
  const [ canIndent, indentListItem ] = useIndentListItem( clientId );
19
18
 
20
19
  return useRefEffect(