@wordpress/block-library 7.2.0 → 7.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -1
  3. package/build/archives/edit.js +21 -1
  4. package/build/archives/edit.js.map +1 -1
  5. package/build/archives/index.js +5 -1
  6. package/build/archives/index.js.map +1 -1
  7. package/build/audio/edit.js +1 -1
  8. package/build/audio/edit.js.map +1 -1
  9. package/build/audio/edit.native.js +0 -5
  10. package/build/audio/edit.native.js.map +1 -1
  11. package/build/avatar/edit.js +17 -11
  12. package/build/avatar/edit.js.map +1 -1
  13. package/build/block/edit.js +2 -1
  14. package/build/block/edit.js.map +1 -1
  15. package/build/column/index.js +1 -0
  16. package/build/column/index.js.map +1 -1
  17. package/build/comment-author-avatar/index.js +3 -3
  18. package/build/comment-author-name/index.js +7 -3
  19. package/build/comment-author-name/index.js.map +1 -1
  20. package/build/comment-content/index.js +1 -1
  21. package/build/comment-date/index.js +7 -3
  22. package/build/comment-date/index.js.map +1 -1
  23. package/build/comment-edit-link/index.js +5 -1
  24. package/build/comment-edit-link/index.js.map +1 -1
  25. package/build/comment-reply-link/index.js +5 -1
  26. package/build/comment-reply-link/index.js.map +1 -1
  27. package/build/comment-template/edit.js +10 -15
  28. package/build/comment-template/edit.js.map +1 -1
  29. package/build/comment-template/hooks.js +10 -24
  30. package/build/comment-template/hooks.js.map +1 -1
  31. package/build/comment-template/index.js +2 -2
  32. package/build/comments-pagination-next/index.js +2 -2
  33. package/build/comments-pagination-numbers/index.js +1 -1
  34. package/build/comments-pagination-previous/index.js +1 -1
  35. package/build/comments-query-loop/edit/comments-inspector-controls.js +2 -69
  36. package/build/comments-query-loop/edit/comments-inspector-controls.js.map +1 -1
  37. package/build/comments-query-loop/edit.js +22 -1
  38. package/build/comments-query-loop/edit.js.map +1 -1
  39. package/build/comments-query-loop/index.js +1 -23
  40. package/build/comments-query-loop/index.js.map +1 -1
  41. package/build/cover/edit.js +35 -6
  42. package/build/cover/edit.js.map +1 -1
  43. package/build/cover/index.js +5 -0
  44. package/build/cover/index.js.map +1 -1
  45. package/build/cover/save.js +3 -2
  46. package/build/cover/save.js.map +1 -1
  47. package/build/cover/transforms.js +33 -32
  48. package/build/cover/transforms.js.map +1 -1
  49. package/build/gallery/gap-styles.js +8 -2
  50. package/build/gallery/gap-styles.js.map +1 -1
  51. package/build/gallery/index.js +1 -0
  52. package/build/gallery/index.js.map +1 -1
  53. package/build/group/edit.js +3 -1
  54. package/build/group/edit.js.map +1 -1
  55. package/build/group/index.js +2 -4
  56. package/build/group/index.js.map +1 -1
  57. package/build/group/variations.js +31 -9
  58. package/build/group/variations.js.map +1 -1
  59. package/build/heading/edit.js +1 -1
  60. package/build/heading/edit.js.map +1 -1
  61. package/build/html/edit.js +3 -2
  62. package/build/html/edit.js.map +1 -1
  63. package/build/image/edit.native.js +8 -10
  64. package/build/image/edit.native.js.map +1 -1
  65. package/build/index.js +4 -4
  66. package/build/index.js.map +1 -1
  67. package/build/list/deprecated.js +2 -2
  68. package/build/list/deprecated.js.map +1 -1
  69. package/build/list/index.js +13 -2
  70. package/build/list/index.js.map +1 -1
  71. package/build/list/v2/deprecated.js +117 -0
  72. package/build/list/v2/deprecated.js.map +1 -0
  73. package/build/list/v2/edit.js +106 -3
  74. package/build/list/v2/edit.js.map +1 -1
  75. package/build/list/v2/index.js +4 -1
  76. package/build/list/v2/index.js.map +1 -1
  77. package/build/list/v2/migrate.js +85 -0
  78. package/build/list/v2/migrate.js.map +1 -0
  79. package/build/list-item/edit.js +59 -10
  80. package/build/list-item/edit.js.map +1 -1
  81. package/build/list-item/hooks/index.js +32 -0
  82. package/build/list-item/hooks/index.js.map +1 -0
  83. package/build/list-item/hooks/use-enter.js +93 -0
  84. package/build/list-item/hooks/use-enter.js.map +1 -0
  85. package/build/list-item/hooks/use-indent-list-item.js +74 -0
  86. package/build/list-item/hooks/use-indent-list-item.js.map +1 -0
  87. package/build/list-item/hooks/use-outdent-list-item.js +77 -0
  88. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -0
  89. package/build/list-item/index.js +1 -1
  90. package/build/list-item/index.js.map +1 -1
  91. package/build/list-item/utils.js +16 -0
  92. package/build/list-item/utils.js.map +1 -0
  93. package/build/media-text/media-container.native.js +1 -16
  94. package/build/media-text/media-container.native.js.map +1 -1
  95. package/build/navigation/edit/index.js +36 -17
  96. package/build/navigation/edit/index.js.map +1 -1
  97. package/build/navigation/edit/navigation-menu-delete-control.js +1 -1
  98. package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  99. package/build/navigation/edit/unsaved-inner-blocks.js +34 -7
  100. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  101. package/build/navigation/index.js +9 -1
  102. package/build/navigation/index.js.map +1 -1
  103. package/build/navigation/use-navigation-menu.js +1 -0
  104. package/build/navigation/use-navigation-menu.js.map +1 -1
  105. package/build/navigation-link/edit.js +9 -5
  106. package/build/navigation-link/edit.js.map +1 -1
  107. package/build/navigation-link/index.js +1 -1
  108. package/build/navigation-submenu/edit.js +5 -9
  109. package/build/navigation-submenu/edit.js.map +1 -1
  110. package/build/navigation-submenu/index.js +1 -1
  111. package/build/post-comment/edit.js +2 -2
  112. package/build/post-comment/edit.js.map +1 -1
  113. package/build/post-comments/index.js +4 -3
  114. package/build/post-comments/index.js.map +1 -1
  115. package/build/post-comments-form/edit.js +3 -2
  116. package/build/post-comments-form/edit.js.map +1 -1
  117. package/build/post-featured-image/edit.js +19 -7
  118. package/build/post-featured-image/edit.js.map +1 -1
  119. package/build/post-featured-image/index.js +1 -1
  120. package/build/post-template/edit.js +7 -2
  121. package/build/post-template/edit.js.map +1 -1
  122. package/build/post-terms/edit.js +3 -1
  123. package/build/post-terms/edit.js.map +1 -1
  124. package/build/post-terms/variations.js +1 -1
  125. package/build/post-terms/variations.js.map +1 -1
  126. package/build/query/edit/index.js +84 -22
  127. package/build/query/edit/index.js.map +1 -1
  128. package/build/query/edit/query-placeholder.js +7 -14
  129. package/build/query/edit/query-placeholder.js.map +1 -1
  130. package/build/query/edit/query-toolbar.js +6 -1
  131. package/build/query/edit/query-toolbar.js.map +1 -1
  132. package/build/query-pagination/edit.js +1 -1
  133. package/build/query-pagination/edit.js.map +1 -1
  134. package/build/query-pagination-numbers/index.js +19 -1
  135. package/build/query-pagination-numbers/index.js.map +1 -1
  136. package/build/quote/index.js +20 -2
  137. package/build/quote/index.js.map +1 -1
  138. package/build/quote/v2/deprecated.js +133 -0
  139. package/build/quote/v2/deprecated.js.map +1 -0
  140. package/build/quote/v2/edit.js +131 -0
  141. package/build/quote/v2/edit.js.map +1 -0
  142. package/build/quote/v2/index.js +49 -0
  143. package/build/quote/v2/index.js.map +1 -0
  144. package/build/quote/v2/save.js +43 -0
  145. package/build/quote/v2/save.js.map +1 -0
  146. package/build/quote/v2/transforms.js +156 -0
  147. package/build/quote/v2/transforms.js.map +1 -0
  148. package/build/read-more/index.js +1 -1
  149. package/build/rss/edit.js +6 -1
  150. package/build/rss/edit.js.map +1 -1
  151. package/build/site-logo/edit.js +3 -2
  152. package/build/site-logo/edit.js.map +1 -1
  153. package/build/site-logo/index.js +1 -1
  154. package/build/social-links/index.js +1 -0
  155. package/build/social-links/index.js.map +1 -1
  156. package/build/spacer/controls.native.js +1 -1
  157. package/build/spacer/controls.native.js.map +1 -1
  158. package/build/template-part/edit/utils/hooks.js +5 -2
  159. package/build/template-part/edit/utils/hooks.js.map +1 -1
  160. package/build-module/archives/edit.js +22 -2
  161. package/build-module/archives/edit.js.map +1 -1
  162. package/build-module/archives/index.js +5 -1
  163. package/build-module/archives/index.js.map +1 -1
  164. package/build-module/audio/edit.js +1 -1
  165. package/build-module/audio/edit.js.map +1 -1
  166. package/build-module/audio/edit.native.js +0 -5
  167. package/build-module/audio/edit.native.js.map +1 -1
  168. package/build-module/avatar/edit.js +16 -11
  169. package/build-module/avatar/edit.js.map +1 -1
  170. package/build-module/block/edit.js +4 -3
  171. package/build-module/block/edit.js.map +1 -1
  172. package/build-module/column/index.js +1 -0
  173. package/build-module/column/index.js.map +1 -1
  174. package/build-module/comment-author-avatar/index.js +3 -3
  175. package/build-module/comment-author-name/index.js +7 -3
  176. package/build-module/comment-author-name/index.js.map +1 -1
  177. package/build-module/comment-content/index.js +1 -1
  178. package/build-module/comment-date/index.js +7 -3
  179. package/build-module/comment-date/index.js.map +1 -1
  180. package/build-module/comment-edit-link/index.js +5 -1
  181. package/build-module/comment-edit-link/index.js.map +1 -1
  182. package/build-module/comment-reply-link/index.js +5 -1
  183. package/build-module/comment-reply-link/index.js.map +1 -1
  184. package/build-module/comment-template/edit.js +10 -15
  185. package/build-module/comment-template/edit.js.map +1 -1
  186. package/build-module/comment-template/hooks.js +10 -24
  187. package/build-module/comment-template/hooks.js.map +1 -1
  188. package/build-module/comment-template/index.js +2 -2
  189. package/build-module/comments-pagination-next/index.js +2 -2
  190. package/build-module/comments-pagination-numbers/index.js +1 -1
  191. package/build-module/comments-pagination-previous/index.js +1 -1
  192. package/build-module/comments-query-loop/edit/comments-inspector-controls.js +4 -70
  193. package/build-module/comments-query-loop/edit/comments-inspector-controls.js.map +1 -1
  194. package/build-module/comments-query-loop/edit.js +22 -1
  195. package/build-module/comments-query-loop/edit.js.map +1 -1
  196. package/build-module/comments-query-loop/index.js +1 -23
  197. package/build-module/comments-query-loop/index.js.map +1 -1
  198. package/build-module/cover/edit.js +36 -8
  199. package/build-module/cover/edit.js.map +1 -1
  200. package/build-module/cover/index.js +5 -0
  201. package/build-module/cover/index.js.map +1 -1
  202. package/build-module/cover/save.js +3 -2
  203. package/build-module/cover/save.js.map +1 -1
  204. package/build-module/cover/transforms.js +33 -32
  205. package/build-module/cover/transforms.js.map +1 -1
  206. package/build-module/gallery/gap-styles.js +8 -2
  207. package/build-module/gallery/gap-styles.js.map +1 -1
  208. package/build-module/gallery/index.js +1 -0
  209. package/build-module/gallery/index.js.map +1 -1
  210. package/build-module/group/edit.js +3 -1
  211. package/build-module/group/edit.js.map +1 -1
  212. package/build-module/group/index.js +2 -4
  213. package/build-module/group/index.js.map +1 -1
  214. package/build-module/group/variations.js +30 -9
  215. package/build-module/group/variations.js.map +1 -1
  216. package/build-module/heading/edit.js +1 -1
  217. package/build-module/heading/edit.js.map +1 -1
  218. package/build-module/html/edit.js +4 -3
  219. package/build-module/html/edit.js.map +1 -1
  220. package/build-module/image/edit.native.js +8 -10
  221. package/build-module/image/edit.native.js.map +1 -1
  222. package/build-module/index.js +4 -4
  223. package/build-module/index.js.map +1 -1
  224. package/build-module/list/deprecated.js +2 -2
  225. package/build-module/list/deprecated.js.map +1 -1
  226. package/build-module/list/index.js +9 -3
  227. package/build-module/list/index.js.map +1 -1
  228. package/build-module/list/v2/deprecated.js +104 -0
  229. package/build-module/list/v2/deprecated.js.map +1 -0
  230. package/build-module/list/v2/edit.js +104 -5
  231. package/build-module/list/v2/edit.js.map +1 -1
  232. package/build-module/list/v2/index.js +3 -1
  233. package/build-module/list/v2/index.js.map +1 -1
  234. package/build-module/list/v2/migrate.js +77 -0
  235. package/build-module/list/v2/migrate.js.map +1 -0
  236. package/build-module/list-item/edit.js +59 -13
  237. package/build-module/list-item/edit.js.map +1 -1
  238. package/build-module/list-item/hooks/index.js +4 -0
  239. package/build-module/list-item/hooks/index.js.map +1 -0
  240. package/build-module/list-item/hooks/use-enter.js +77 -0
  241. package/build-module/list-item/hooks/use-enter.js.map +1 -0
  242. package/build-module/list-item/hooks/use-indent-list-item.js +62 -0
  243. package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -0
  244. package/build-module/list-item/hooks/use-outdent-list-item.js +66 -0
  245. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -0
  246. package/build-module/list-item/index.js +1 -1
  247. package/build-module/list-item/index.js.map +1 -1
  248. package/build-module/list-item/utils.js +8 -0
  249. package/build-module/list-item/utils.js.map +1 -0
  250. package/build-module/media-text/media-container.native.js +1 -14
  251. package/build-module/media-text/media-container.native.js.map +1 -1
  252. package/build-module/navigation/edit/index.js +37 -17
  253. package/build-module/navigation/edit/index.js.map +1 -1
  254. package/build-module/navigation/edit/navigation-menu-delete-control.js +1 -1
  255. package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  256. package/build-module/navigation/edit/unsaved-inner-blocks.js +35 -8
  257. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  258. package/build-module/navigation/index.js +9 -1
  259. package/build-module/navigation/index.js.map +1 -1
  260. package/build-module/navigation/use-navigation-menu.js +1 -0
  261. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  262. package/build-module/navigation-link/edit.js +9 -5
  263. package/build-module/navigation-link/edit.js.map +1 -1
  264. package/build-module/navigation-link/index.js +1 -1
  265. package/build-module/navigation-submenu/edit.js +6 -10
  266. package/build-module/navigation-submenu/edit.js.map +1 -1
  267. package/build-module/navigation-submenu/index.js +1 -1
  268. package/build-module/post-comment/edit.js +2 -2
  269. package/build-module/post-comment/edit.js.map +1 -1
  270. package/build-module/post-comments/index.js +4 -3
  271. package/build-module/post-comments/index.js.map +1 -1
  272. package/build-module/post-comments-form/edit.js +3 -2
  273. package/build-module/post-comments-form/edit.js.map +1 -1
  274. package/build-module/post-featured-image/edit.js +19 -7
  275. package/build-module/post-featured-image/edit.js.map +1 -1
  276. package/build-module/post-featured-image/index.js +1 -1
  277. package/build-module/post-template/edit.js +7 -2
  278. package/build-module/post-template/edit.js.map +1 -1
  279. package/build-module/post-terms/edit.js +4 -2
  280. package/build-module/post-terms/edit.js.map +1 -1
  281. package/build-module/post-terms/variations.js +3 -3
  282. package/build-module/post-terms/variations.js.map +1 -1
  283. package/build-module/query/edit/index.js +87 -26
  284. package/build-module/query/edit/index.js.map +1 -1
  285. package/build-module/query/edit/query-placeholder.js +8 -15
  286. package/build-module/query/edit/query-placeholder.js.map +1 -1
  287. package/build-module/query/edit/query-toolbar.js +6 -1
  288. package/build-module/query/edit/query-toolbar.js.map +1 -1
  289. package/build-module/query-pagination/edit.js +1 -1
  290. package/build-module/query-pagination/edit.js.map +1 -1
  291. package/build-module/query-pagination-numbers/index.js +19 -1
  292. package/build-module/query-pagination-numbers/index.js.map +1 -1
  293. package/build-module/quote/index.js +19 -1
  294. package/build-module/quote/index.js.map +1 -1
  295. package/build-module/quote/v2/deprecated.js +116 -0
  296. package/build-module/quote/v2/deprecated.js.map +1 -0
  297. package/build-module/quote/v2/edit.js +115 -0
  298. package/build-module/quote/v2/edit.js.map +1 -0
  299. package/build-module/quote/v2/index.js +33 -0
  300. package/build-module/quote/v2/index.js.map +1 -0
  301. package/build-module/quote/v2/save.js +30 -0
  302. package/build-module/quote/v2/save.js.map +1 -0
  303. package/build-module/quote/v2/transforms.js +147 -0
  304. package/build-module/quote/v2/transforms.js.map +1 -0
  305. package/build-module/read-more/index.js +1 -1
  306. package/build-module/rss/edit.js +5 -1
  307. package/build-module/rss/edit.js.map +1 -1
  308. package/build-module/site-logo/edit.js +3 -2
  309. package/build-module/site-logo/edit.js.map +1 -1
  310. package/build-module/site-logo/index.js +1 -1
  311. package/build-module/social-links/index.js +1 -0
  312. package/build-module/social-links/index.js.map +1 -1
  313. package/build-module/spacer/controls.native.js +1 -1
  314. package/build-module/spacer/controls.native.js.map +1 -1
  315. package/build-module/template-part/edit/utils/hooks.js +5 -2
  316. package/build-module/template-part/edit/utils/hooks.js.map +1 -1
  317. package/build-style/avatar/editor-rtl.css +4 -0
  318. package/build-style/avatar/editor.css +4 -0
  319. package/build-style/avatar/style-rtl.css +79 -0
  320. package/build-style/avatar/style.css +79 -0
  321. package/build-style/editor-rtl.css +69 -9
  322. package/build-style/editor.css +69 -9
  323. package/build-style/group/editor-rtl.css +26 -0
  324. package/build-style/group/editor.css +26 -0
  325. package/build-style/heading/style-rtl.css +0 -8
  326. package/build-style/heading/style.css +0 -8
  327. package/build-style/list/style-rtl.css +1 -1
  328. package/build-style/list/style.css +1 -1
  329. package/build-style/navigation/style-rtl.css +11 -9
  330. package/build-style/navigation/style.css +11 -9
  331. package/build-style/navigation-link/style-rtl.css +3 -0
  332. package/build-style/navigation-link/style.css +3 -0
  333. package/build-style/paragraph/style-rtl.css +0 -4
  334. package/build-style/paragraph/style.css +0 -4
  335. package/build-style/query/editor-rtl.css +39 -0
  336. package/build-style/query/editor.css +39 -0
  337. package/build-style/quote/style-rtl.css +1 -0
  338. package/build-style/quote/style.css +1 -0
  339. package/build-style/reset-rtl.css +1 -1
  340. package/build-style/reset.css +1 -1
  341. package/build-style/style-rtl.css +20 -22
  342. package/build-style/style.css +20 -22
  343. package/build-style/template-part/editor-rtl.css +0 -9
  344. package/build-style/template-part/editor.css +0 -9
  345. package/package.json +28 -28
  346. package/src/archives/block.json +5 -1
  347. package/src/archives/edit.js +20 -2
  348. package/src/archives/index.php +4 -4
  349. package/src/audio/edit.js +1 -1
  350. package/src/audio/edit.native.js +0 -5
  351. package/src/avatar/edit.js +21 -13
  352. package/src/avatar/editor.scss +6 -0
  353. package/src/avatar/index.php +2 -2
  354. package/src/avatar/style.scss +5 -0
  355. package/src/block/edit.js +21 -11
  356. package/src/column/block.json +1 -0
  357. package/src/comment-author-avatar/block.json +3 -3
  358. package/src/comment-author-name/block.json +7 -3
  359. package/src/comment-author-name/index.php +3 -0
  360. package/src/comment-content/block.json +1 -1
  361. package/src/comment-date/block.json +7 -3
  362. package/src/comment-date/index.php +6 -1
  363. package/src/comment-edit-link/block.json +5 -1
  364. package/src/comment-edit-link/index.php +3 -0
  365. package/src/comment-reply-link/block.json +5 -1
  366. package/src/comment-reply-link/index.php +4 -1
  367. package/src/comment-template/block.json +2 -8
  368. package/src/comment-template/edit.js +17 -22
  369. package/src/comment-template/hooks.js +10 -25
  370. package/src/comment-template/index.php +15 -5
  371. package/src/comments-pagination-next/block.json +2 -9
  372. package/src/comments-pagination-numbers/block.json +2 -8
  373. package/src/comments-pagination-previous/block.json +2 -2
  374. package/src/comments-query-loop/block.json +1 -23
  375. package/src/comments-query-loop/edit/comments-inspector-controls.js +2 -83
  376. package/src/comments-query-loop/edit.js +54 -1
  377. package/src/cover/block.json +5 -0
  378. package/src/cover/edit.js +77 -29
  379. package/src/cover/index.php +85 -0
  380. package/src/cover/save.js +18 -14
  381. package/src/cover/transforms.js +51 -28
  382. package/src/gallery/block.json +1 -0
  383. package/src/gallery/gap-styles.js +9 -4
  384. package/src/gallery/index.php +7 -6
  385. package/src/group/block.json +2 -4
  386. package/src/group/edit.js +4 -1
  387. package/src/group/editor.scss +31 -0
  388. package/src/group/variations.js +21 -4
  389. package/src/heading/edit.js +1 -1
  390. package/src/heading/style.scss +0 -3
  391. package/src/html/edit.js +22 -30
  392. package/src/image/edit.native.js +7 -11
  393. package/src/index.js +19 -16
  394. package/src/list/deprecated.js +2 -2
  395. package/src/list/index.js +7 -3
  396. package/src/list/style.scss +1 -2
  397. package/src/list/test/migrate.js +159 -0
  398. package/src/list/v2/deprecated.js +89 -0
  399. package/src/list/v2/edit.js +110 -1
  400. package/src/list/v2/index.js +2 -0
  401. package/src/list/v2/migrate.js +87 -0
  402. package/src/list-item/edit.js +69 -23
  403. package/src/list-item/hooks/index.js +3 -0
  404. package/src/list-item/hooks/use-enter.js +94 -0
  405. package/src/list-item/hooks/use-indent-list-item.js +89 -0
  406. package/src/list-item/hooks/use-outdent-list-item.js +95 -0
  407. package/src/list-item/index.js +1 -1
  408. package/src/list-item/utils.js +14 -0
  409. package/src/media-text/media-container.native.js +1 -14
  410. package/src/navigation/block.json +9 -1
  411. package/src/navigation/edit/index.js +50 -14
  412. package/src/navigation/edit/navigation-menu-delete-control.js +1 -1
  413. package/src/navigation/edit/unsaved-inner-blocks.js +57 -8
  414. package/src/navigation/index.php +6 -1
  415. package/src/navigation/style.scss +15 -13
  416. package/src/navigation/use-navigation-menu.js +4 -0
  417. package/src/navigation-link/block.json +1 -0
  418. package/src/navigation-link/edit.js +43 -35
  419. package/src/navigation-link/index.php +8 -0
  420. package/src/navigation-link/style.scss +6 -0
  421. package/src/navigation-submenu/block.json +1 -0
  422. package/src/navigation-submenu/edit.js +7 -9
  423. package/src/paragraph/style.scss +0 -5
  424. package/src/post-author/index.php +0 -1
  425. package/src/post-comment/edit.js +2 -2
  426. package/src/post-comments/block.json +4 -3
  427. package/src/post-comments-form/edit.js +6 -3
  428. package/src/post-comments-form/index.php +12 -4
  429. package/src/post-featured-image/block.json +1 -1
  430. package/src/post-featured-image/edit.js +24 -12
  431. package/src/post-template/edit.js +7 -1
  432. package/src/post-terms/edit.js +4 -1
  433. package/src/post-terms/variations.js +3 -3
  434. package/src/query/edit/index.js +125 -26
  435. package/src/query/edit/query-placeholder.js +3 -13
  436. package/src/query/edit/query-toolbar.js +6 -0
  437. package/src/query/editor.scss +38 -0
  438. package/src/query-pagination/edit.js +1 -1
  439. package/src/query-pagination/index.php +9 -2
  440. package/src/query-pagination-numbers/block.json +19 -1
  441. package/src/quote/block.json +8 -0
  442. package/src/quote/index.js +10 -1
  443. package/src/quote/style.scss +1 -0
  444. package/src/quote/v2/deprecated.js +107 -0
  445. package/src/quote/v2/edit.js +136 -0
  446. package/src/quote/v2/index.js +36 -0
  447. package/src/quote/v2/save.js +26 -0
  448. package/src/quote/v2/test/migrate.js +92 -0
  449. package/src/quote/v2/transforms.js +155 -0
  450. package/src/read-more/block.json +1 -1
  451. package/src/reset.scss +1 -1
  452. package/src/rss/edit.js +3 -1
  453. package/src/rss/index.php +14 -1
  454. package/src/site-logo/block.json +1 -1
  455. package/src/site-logo/edit.js +2 -1
  456. package/src/site-logo/index.php +0 -4
  457. package/src/social-link/index.php +1 -2
  458. package/src/social-links/block.json +1 -0
  459. package/src/spacer/controls.native.js +1 -1
  460. package/src/spacer/test/__snapshots__/index.native.js.snap +31 -0
  461. package/src/spacer/test/index.native.js +180 -0
  462. package/src/style.scss +1 -0
  463. package/src/template-part/edit/utils/hooks.js +6 -1
  464. package/src/template-part/editor.scss +0 -10
  465. package/build/navigation/edit/use-list-view-modal.js +0 -73
  466. package/build/navigation/edit/use-list-view-modal.js.map +0 -1
  467. package/build-module/navigation/edit/use-list-view-modal.js +0 -63
  468. package/build-module/navigation/edit/use-list-view-modal.js.map +0 -1
  469. package/src/navigation/edit/use-list-view-modal.js +0 -72
package/src/html/edit.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
- import { useState } from '@wordpress/element';
5
+ import { useContext, useState } from '@wordpress/element';
6
6
  import {
7
7
  BlockControls,
8
8
  PlainText,
@@ -20,6 +20,7 @@ import { useSelect } from '@wordpress/data';
20
20
 
21
21
  export default function HTMLEdit( { attributes, setAttributes, isSelected } ) {
22
22
  const [ isPreview, setIsPreview ] = useState();
23
+ const isDisabled = useContext( Disabled.Context );
23
24
 
24
25
  const styles = useSelect( ( select ) => {
25
26
  // Default styles used to unset some of the styles
@@ -69,35 +70,26 @@ export default function HTMLEdit( { attributes, setAttributes, isSelected } ) {
69
70
  </ToolbarButton>
70
71
  </ToolbarGroup>
71
72
  </BlockControls>
72
- <Disabled.Consumer>
73
- { ( isDisabled ) =>
74
- isPreview || isDisabled ? (
75
- <>
76
- <SandBox
77
- html={ attributes.content }
78
- styles={ styles }
79
- />
80
- { /*
81
- An overlay is added when the block is not selected in order to register click events.
82
- Some browsers do not bubble up the clicks from the sandboxed iframe, which makes it
83
- difficult to reselect the block.
84
- */ }
85
- { ! isSelected && (
86
- <div className="block-library-html__preview-overlay"></div>
87
- ) }
88
- </>
89
- ) : (
90
- <PlainText
91
- value={ attributes.content }
92
- onChange={ ( content ) =>
93
- setAttributes( { content } )
94
- }
95
- placeholder={ __( 'Write HTML…' ) }
96
- aria-label={ __( 'HTML' ) }
97
- />
98
- )
99
- }
100
- </Disabled.Consumer>
73
+ { isPreview || isDisabled ? (
74
+ <>
75
+ <SandBox html={ attributes.content } styles={ styles } />
76
+ { /*
77
+ An overlay is added when the block is not selected in order to register click events.
78
+ Some browsers do not bubble up the clicks from the sandboxed iframe, which makes it
79
+ difficult to reselect the block.
80
+ */ }
81
+ { ! isSelected && (
82
+ <div className="block-library-html__preview-overlay"></div>
83
+ ) }
84
+ </>
85
+ ) : (
86
+ <PlainText
87
+ value={ attributes.content }
88
+ onChange={ ( content ) => setAttributes( { content } ) }
89
+ placeholder={ __( 'Write HTML…' ) }
90
+ aria-label={ __( 'HTML' ) }
91
+ />
92
+ ) }
101
93
  </div>
102
94
  );
103
95
  }
@@ -186,7 +186,6 @@ export class ImageEdit extends Component {
186
186
  this.state = {
187
187
  isCaptionSelected: false,
188
188
  uploadStatus: UPLOAD_STATE_IDLE,
189
- isAnimatedGif: false,
190
189
  };
191
190
 
192
191
  this.replacedFeaturedImage = false;
@@ -364,10 +363,6 @@ export class ImageEdit extends Component {
364
363
 
365
364
  setAttributes( { url: payload.mediaUrl, id: payload.mediaServerId } );
366
365
  this.setState( { uploadStatus: UPLOAD_STATE_SUCCEEDED } );
367
-
368
- this.setState( {
369
- isAnimatedGif: payload.mediaUrl.toLowerCase().includes( '.gif' ),
370
- } );
371
366
  }
372
367
 
373
368
  finishMediaUploadWithFailure( payload ) {
@@ -464,10 +459,6 @@ export class ImageEdit extends Component {
464
459
  ...mediaAttributes,
465
460
  ...additionalAttributes,
466
461
  } );
467
-
468
- this.setState( {
469
- isAnimatedGif: media.url.toLowerCase().includes( '.gif' ),
470
- } );
471
462
  }
472
463
 
473
464
  onFocusCaption() {
@@ -615,6 +606,10 @@ export class ImageEdit extends Component {
615
606
  );
616
607
  }
617
608
 
609
+ isGif( url ) {
610
+ return url.toLowerCase().includes( '.gif' );
611
+ }
612
+
618
613
  render() {
619
614
  const { isCaptionSelected } = this.state;
620
615
  const {
@@ -748,11 +743,12 @@ export class ImageEdit extends Component {
748
743
  context?.fixedHeight && styles.fixedHeight,
749
744
  ];
750
745
 
751
- const badgeLabelShown = isFeaturedImage || this.state.isAnimatedGif;
746
+ const isGif = this.isGif( url );
747
+ const badgeLabelShown = isFeaturedImage || isGif;
752
748
  let badgeLabelText = '';
753
749
  if ( isFeaturedImage ) {
754
750
  badgeLabelText = __( 'Featured' );
755
- } else if ( this.state.isAnimatedGif ) {
751
+ } else if ( isGif ) {
756
752
  badgeLabelText = __( 'GIF' );
757
753
  }
758
754
 
package/src/index.js CHANGED
@@ -138,7 +138,6 @@ export const __experimentalGetCoreBlocks = () => [
138
138
  heading,
139
139
  gallery,
140
140
  list,
141
- listItem,
142
141
  quote,
143
142
 
144
143
  // Register all remaining core blocks.
@@ -191,6 +190,7 @@ export const __experimentalGetCoreBlocks = () => [
191
190
  siteTagline,
192
191
  query,
193
192
  templatePart,
193
+ avatar,
194
194
  postTitle,
195
195
  postExcerpt,
196
196
  postFeaturedImage,
@@ -204,7 +204,21 @@ export const __experimentalGetCoreBlocks = () => [
204
204
  queryPaginationNext,
205
205
  queryPaginationNumbers,
206
206
  queryPaginationPrevious,
207
+ queryNoResults,
208
+ readMore,
209
+ commentAuthorName,
210
+ commentContent,
211
+ commentDate,
212
+ commentEditLink,
213
+ commentReplyLink,
214
+ commentTemplate,
215
+ commentsQueryLoop,
216
+ commentsPagination,
217
+ commentsPaginationNext,
218
+ commentsPaginationNumbers,
219
+ commentsPaginationPrevious,
207
220
  postComments,
221
+ homeLink,
208
222
  logInOut,
209
223
  termDescription,
210
224
  queryTitle,
@@ -252,31 +266,20 @@ export const __experimentalRegisterExperimentalCoreBlocks = process.env
252
266
  ? ( { enableFSEBlocks } = {} ) => {
253
267
  [
254
268
  // Experimental blocks.
255
- avatar,
256
- homeLink,
257
269
  postAuthorName,
258
- queryNoResults,
270
+ ...( window.__experimentalEnableListBlockV2
271
+ ? [ listItem ]
272
+ : [] ),
273
+
259
274
  // Full Site Editing blocks.
260
275
  ...( enableFSEBlocks
261
276
  ? [
262
277
  commentAuthorAvatar,
263
- commentAuthorName,
264
- commentContent,
265
- commentDate,
266
- commentEditLink,
267
- commentReplyLink,
268
- commentTemplate,
269
- commentsQueryLoop,
270
- commentsPagination,
271
- commentsPaginationNext,
272
- commentsPaginationNumbers,
273
- commentsPaginationPrevious,
274
278
  navigationArea,
275
279
  postComment,
276
280
  postCommentsCount,
277
281
  postCommentsForm,
278
282
  postCommentsLink,
279
- readMore,
280
283
  ]
281
284
  : [] ),
282
285
  ].forEach( registerBlock );
@@ -8,7 +8,7 @@ import { RichText, useBlockProps } from '@wordpress/block-editor';
8
8
  */
9
9
  import migrateFontFamily from '../utils/migrate-font-family';
10
10
 
11
- const v1 = {
11
+ const v0 = {
12
12
  attributes: {
13
13
  ordered: {
14
14
  type: 'boolean',
@@ -76,4 +76,4 @@ const v1 = {
76
76
  *
77
77
  * See block-deprecation.md
78
78
  */
79
- export default [ v1 ];
79
+ export default [ v0 ];
package/src/list/index.js CHANGED
@@ -43,6 +43,10 @@ const settingsV1 = {
43
43
  deprecated,
44
44
  };
45
45
 
46
- export const settings = window?.__experimentalEnableListBlockV2
47
- ? settingsV2
48
- : settingsV1;
46
+ let settings = settingsV1;
47
+ if ( process.env.IS_GUTENBERG_PLUGIN ) {
48
+ settings = window?.__experimentalEnableListBlockV2
49
+ ? settingsV2
50
+ : settingsV1;
51
+ }
52
+ export { settings };
@@ -1,7 +1,6 @@
1
1
  ol,
2
2
  ul {
3
- // Break long strings of text without spaces so they don't overflow the block.
4
- overflow-wrap: break-word;
3
+ box-sizing: border-box;
5
4
 
6
5
  &.has-background {
7
6
  padding: $block-bg-padding--v $block-bg-padding--h;
@@ -0,0 +1,159 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { registerBlockType, serialize } from '@wordpress/blocks';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { migrateToListV2 } from '../v2/migrate';
10
+ import * as listItem from '../../list-item';
11
+ import * as list from '../../list';
12
+ import listV2 from '../../list/v2';
13
+
14
+ describe( 'Migrate list block', () => {
15
+ beforeAll( () => {
16
+ const prev = window.__experimentalEnableListBlockV2;
17
+
18
+ // force list and list item block registration.
19
+ registerBlockType(
20
+ { name: listItem.name, ...listItem.metadata },
21
+ listItem.settings
22
+ );
23
+ registerBlockType( { name: list.name, ...list.metadata }, listV2 );
24
+
25
+ window.__experimentalEnableListBlockV2 = prev;
26
+ } );
27
+
28
+ it( 'should migrate the values attribute to inner blocks', () => {
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>',
32
+ ordered: false,
33
+ } );
34
+
35
+ expect( updatedAttributes ).toEqual( {
36
+ ordered: false,
37
+ // Ideally the values attributes shouldn't be here
38
+ // but since we didn't enable v2 by default yet,
39
+ // we're keeping the old default value in block.json
40
+ values: '',
41
+ } );
42
+ expect( serialize( updatedInnerBlocks ) )
43
+ .toEqual( `<!-- wp:list-item -->
44
+ <li>test</li>
45
+ <!-- /wp:list-item -->
46
+
47
+ <!-- wp:list-item -->
48
+ <li>test</li>
49
+ <!-- /wp:list-item -->
50
+
51
+ <!-- wp:list-item -->
52
+ <li>test<!-- wp:list {\"ordered\":true} -->
53
+ <ol><!-- wp:list-item -->
54
+ <li>test test</li>
55
+ <!-- /wp:list-item -->
56
+
57
+ <!-- wp:list-item -->
58
+ <li>test est eesssss</li>
59
+ <!-- /wp:list-item --></ol>
60
+ <!-- /wp:list --></li>
61
+ <!-- /wp:list-item -->` );
62
+ } );
63
+
64
+ it( 'should handle empty space properly', () => {
65
+ const [ updatedAttributes, updatedInnerBlocks ] = migrateToListV2( {
66
+ values: `<li>Europe</li>
67
+ <li>
68
+ \tAfrica
69
+ <ol>
70
+ <li>Algeria</li>
71
+ </ol>
72
+ \t
73
+ </li>`,
74
+ ordered: false,
75
+ } );
76
+
77
+ expect( updatedAttributes ).toEqual( {
78
+ ordered: false,
79
+ // Ideally the values attributes shouldn't be here
80
+ // but since we didn't enable v2 by default yet,
81
+ // we're keeping the old default value in block.json
82
+ values: '',
83
+ } );
84
+ expect( serialize( updatedInnerBlocks ) )
85
+ .toEqual( `<!-- wp:list-item -->
86
+ <li>Europe</li>
87
+ <!-- /wp:list-item -->
88
+
89
+ <!-- wp:list-item -->
90
+ <li>Africa<!-- wp:list {\"ordered\":true} -->
91
+ <ol><!-- wp:list-item -->
92
+ <li>Algeria</li>
93
+ <!-- /wp:list-item --></ol>
94
+ <!-- /wp:list --></li>
95
+ <!-- /wp:list-item -->` );
96
+ } );
97
+
98
+ it( 'should handle formats properly', () => {
99
+ const [ updatedAttributes, updatedInnerBlocks ] = migrateToListV2( {
100
+ values: `<li>Europe<ul><li>France<ul><li>Lyon <strong>Rhone</strong>s</li><li>Paris <em>Ile de france</em><ul><li><em>1er</em></li></ul></li></ul></li></ul></li></ul></li>`,
101
+ ordered: false,
102
+ } );
103
+
104
+ expect( updatedAttributes ).toEqual( {
105
+ ordered: false,
106
+ // Ideally the values attributes shouldn't be here
107
+ // but since we didn't enable v2 by default yet,
108
+ // we're keeping the old default value in block.json
109
+ values: '',
110
+ } );
111
+ expect( serialize( updatedInnerBlocks ) )
112
+ .toEqual( `<!-- wp:list-item -->
113
+ <li>Europe<!-- wp:list -->
114
+ <ul><!-- wp:list-item -->
115
+ <li>France<!-- wp:list -->
116
+ <ul><!-- wp:list-item -->
117
+ <li>Lyon <strong>Rhone</strong>s</li>
118
+ <!-- /wp:list-item -->
119
+
120
+ <!-- wp:list-item -->
121
+ <li>Paris <em>Ile de france</em><!-- wp:list -->
122
+ <ul><!-- wp:list-item -->
123
+ <li><em>1er</em></li>
124
+ <!-- /wp:list-item --></ul>
125
+ <!-- /wp:list --></li>
126
+ <!-- /wp:list-item --></ul>
127
+ <!-- /wp:list --></li>
128
+ <!-- /wp:list-item --></ul>
129
+ <!-- /wp:list --></li>
130
+ <!-- /wp:list-item -->` );
131
+ } );
132
+
133
+ it( 'should not add random space', () => {
134
+ const [ updatedAttributes, updatedInnerBlocks ] = migrateToListV2( {
135
+ values: `<li>Europe<ul><li>F<strong>ranc</strong>e<ul><li>Paris</li></ul></li></ul></li>`,
136
+ ordered: false,
137
+ } );
138
+
139
+ expect( updatedAttributes ).toEqual( {
140
+ ordered: false,
141
+ // Ideally the values attributes shouldn't be here
142
+ // but since we didn't enable v2 by default yet,
143
+ // we're keeping the old default value in block.json
144
+ values: '',
145
+ } );
146
+ expect( serialize( updatedInnerBlocks ) )
147
+ .toEqual( `<!-- wp:list-item -->
148
+ <li>Europe<!-- wp:list -->
149
+ <ul><!-- wp:list-item -->
150
+ <li>F<strong>ranc</strong>e<!-- wp:list -->
151
+ <ul><!-- wp:list-item -->
152
+ <li>Paris</li>
153
+ <!-- /wp:list-item --></ul>
154
+ <!-- /wp:list --></li>
155
+ <!-- /wp:list-item --></ul>
156
+ <!-- /wp:list --></li>
157
+ <!-- /wp:list-item -->` );
158
+ } );
159
+ } );
@@ -0,0 +1,89 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { RichText, useBlockProps } from '@wordpress/block-editor';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import initialDeprecations from '../deprecated';
10
+ import { migrateToListV2 } from './migrate';
11
+
12
+ const v1 = {
13
+ attributes: {
14
+ ordered: {
15
+ type: 'boolean',
16
+ default: false,
17
+ __experimentalRole: 'content',
18
+ },
19
+ values: {
20
+ type: 'string',
21
+ source: 'html',
22
+ selector: 'ol,ul',
23
+ multiline: 'li',
24
+ __unstableMultilineWrapperTags: [ 'ol', 'ul' ],
25
+ default: '',
26
+ __experimentalRole: 'content',
27
+ },
28
+ type: {
29
+ type: 'string',
30
+ },
31
+ start: {
32
+ type: 'number',
33
+ },
34
+ reversed: {
35
+ type: 'boolean',
36
+ },
37
+ placeholder: {
38
+ type: 'string',
39
+ },
40
+ },
41
+ supports: {
42
+ anchor: true,
43
+ className: false,
44
+ typography: {
45
+ fontSize: true,
46
+ __experimentalFontFamily: true,
47
+ lineHeight: true,
48
+ __experimentalFontStyle: true,
49
+ __experimentalFontWeight: true,
50
+ __experimentalLetterSpacing: true,
51
+ __experimentalTextTransform: true,
52
+ __experimentalDefaultControls: {
53
+ fontSize: true,
54
+ },
55
+ },
56
+ color: {
57
+ gradients: true,
58
+ link: true,
59
+ __experimentalDefaultControls: {
60
+ background: true,
61
+ text: true,
62
+ },
63
+ },
64
+ __unstablePasteTextInline: true,
65
+ __experimentalSelector: 'ol,ul',
66
+ __experimentalSlashInserter: true,
67
+ },
68
+ save( { attributes } ) {
69
+ const { ordered, values, type, reversed, start } = attributes;
70
+ const TagName = ordered ? 'ol' : 'ul';
71
+
72
+ return (
73
+ <TagName { ...useBlockProps.save( { type, reversed, start } ) }>
74
+ <RichText.Content value={ values } multiline="li" />
75
+ </TagName>
76
+ );
77
+ },
78
+ migrate: migrateToListV2,
79
+ };
80
+
81
+ /**
82
+ * New deprecations need to be placed first
83
+ * for them to have higher priority.
84
+ *
85
+ * Old deprecations may need to be updated as well.
86
+ *
87
+ * See block-deprecation.md
88
+ */
89
+ export default [ v1, ...initialDeprecations ];
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { last } from 'lodash';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -5,29 +10,132 @@ import {
5
10
  BlockControls,
6
11
  useBlockProps,
7
12
  useInnerBlocksProps,
13
+ store as blockEditorStore,
8
14
  } from '@wordpress/block-editor';
9
15
  import { ToolbarButton } from '@wordpress/components';
16
+ import { useDispatch, useSelect, useRegistry } from '@wordpress/data';
10
17
  import { isRTL, __ } from '@wordpress/i18n';
11
18
  import {
12
19
  formatListBullets,
13
20
  formatListBulletsRTL,
14
21
  formatListNumbered,
15
22
  formatListNumberedRTL,
23
+ formatOutdent,
24
+ formatOutdentRTL,
16
25
  } from '@wordpress/icons';
26
+ import { createBlock } from '@wordpress/blocks';
27
+ import { useCallback, useEffect } from '@wordpress/element';
28
+ import deprecated from '@wordpress/deprecated';
17
29
 
18
30
  /**
19
31
  * Internal dependencies
20
32
  */
21
33
  import OrderedListSettings from '../ordered-list-settings';
34
+ import { migrateToListV2 } from './migrate';
22
35
 
23
36
  const TEMPLATE = [ [ 'core/list-item' ] ];
24
37
 
25
- function Edit( { attributes, setAttributes } ) {
38
+ /**
39
+ * At the moment, deprecations don't handle create blocks from attributes
40
+ * (like when using CPT templates). For this reason, this hook is necessary
41
+ * to avoid breaking templates using the old list block format.
42
+ *
43
+ * @param {Object} attributes Block attributes.
44
+ * @param {string} clientId Block client ID.
45
+ */
46
+ function useMigrateOnLoad( attributes, clientId ) {
47
+ const registry = useRegistry();
48
+ const { updateBlockAttributes, replaceInnerBlocks } = useDispatch(
49
+ blockEditorStore
50
+ );
51
+
52
+ useEffect( () => {
53
+ // As soon as the block is loaded, migrate it to the new version.
54
+
55
+ if ( ! attributes.values ) {
56
+ return;
57
+ }
58
+
59
+ const [ newAttributes, newInnerBlocks ] = migrateToListV2( attributes );
60
+
61
+ deprecated( 'Value attribute on the list block', {
62
+ since: '6.0',
63
+ version: '6.5',
64
+ alternative: 'inner blocks',
65
+ } );
66
+
67
+ registry.batch( () => {
68
+ updateBlockAttributes( clientId, newAttributes );
69
+ replaceInnerBlocks( clientId, newInnerBlocks );
70
+ } );
71
+ }, [ attributes.values ] );
72
+ }
73
+
74
+ function useOutdentList( clientId ) {
75
+ const { canOutdent } = useSelect(
76
+ ( innerSelect ) => {
77
+ const { getBlockRootClientId, getBlock } = innerSelect(
78
+ blockEditorStore
79
+ );
80
+ const parentId = getBlockRootClientId( clientId );
81
+ return {
82
+ canOutdent:
83
+ !! parentId &&
84
+ getBlock( parentId ).name === 'core/list-item',
85
+ };
86
+ },
87
+ [ clientId ]
88
+ );
89
+ const { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );
90
+ const { getBlockRootClientId, getBlockAttributes, getBlock } = useSelect(
91
+ blockEditorStore
92
+ );
93
+
94
+ return [
95
+ canOutdent,
96
+ useCallback( () => {
97
+ const parentBlockId = getBlockRootClientId( clientId );
98
+ const parentBlockAttributes = getBlockAttributes( parentBlockId );
99
+ // Create a new parent block without the inner blocks.
100
+ const newParentBlock = createBlock(
101
+ 'core/list-item',
102
+ parentBlockAttributes
103
+ );
104
+ const { innerBlocks } = getBlock( clientId );
105
+ // Replace the parent block with a new parent block without inner blocks,
106
+ // and make the inner blocks siblings of the parent.
107
+ replaceBlocks(
108
+ [ parentBlockId ],
109
+ [ newParentBlock, ...innerBlocks ]
110
+ );
111
+ // Select the last child of the list being outdent.
112
+ selectionChange( last( innerBlocks ).clientId );
113
+ }, [ clientId ] ),
114
+ ];
115
+ }
116
+
117
+ function IndentUI( { clientId } ) {
118
+ const [ canOutdent, outdentList ] = useOutdentList( clientId );
119
+ return (
120
+ <>
121
+ <ToolbarButton
122
+ icon={ isRTL() ? formatOutdentRTL : formatOutdent }
123
+ title={ __( 'Outdent' ) }
124
+ describedBy={ __( 'Outdent list item' ) }
125
+ disabled={ ! canOutdent }
126
+ onClick={ outdentList }
127
+ />
128
+ </>
129
+ );
130
+ }
131
+
132
+ function Edit( { attributes, setAttributes, clientId } ) {
26
133
  const blockProps = useBlockProps();
27
134
  const innerBlocksProps = useInnerBlocksProps( blockProps, {
28
135
  allowedBlocks: [ 'core/list-item' ],
29
136
  template: TEMPLATE,
30
137
  } );
138
+ useMigrateOnLoad( attributes, clientId );
31
139
  const { ordered, reversed, start } = attributes;
32
140
  const TagName = ordered ? 'ol' : 'ul';
33
141
 
@@ -51,6 +159,7 @@ function Edit( { attributes, setAttributes } ) {
51
159
  setAttributes( { ordered: true } );
52
160
  } }
53
161
  />
162
+ <IndentUI clientId={ clientId } />
54
163
  </BlockControls>
55
164
  );
56
165
 
@@ -9,12 +9,14 @@ import { list as icon } from '@wordpress/icons';
9
9
  import edit from './edit';
10
10
  import save from './save';
11
11
  import transforms from './transforms';
12
+ import deprecated from './deprecated';
12
13
 
13
14
  const settings = {
14
15
  icon,
15
16
  edit,
16
17
  save,
17
18
  transforms,
19
+ deprecated,
18
20
  };
19
21
 
20
22
  export default settings;