@wordpress/block-library 8.5.0 → 8.7.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 (427) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/buttons/edit.native.js +1 -1
  3. package/build/buttons/edit.native.js.map +1 -1
  4. package/build/buttons/index.js +1 -0
  5. package/build/buttons/index.js.map +1 -1
  6. package/build/buttons/transforms.js +1 -0
  7. package/build/buttons/transforms.js.map +1 -1
  8. package/build/columns/edit.js +14 -10
  9. package/build/columns/edit.js.map +1 -1
  10. package/build/columns/edit.native.js +1 -1
  11. package/build/columns/edit.native.js.map +1 -1
  12. package/build/columns/index.js +4 -0
  13. package/build/columns/index.js.map +1 -1
  14. package/build/comments/edit/placeholder.js +8 -5
  15. package/build/comments/edit/placeholder.js.map +1 -1
  16. package/build/cover/edit/inspector-controls.js +2 -2
  17. package/build/cover/edit/inspector-controls.js.map +1 -1
  18. package/build/cover/index.js +13 -4
  19. package/build/cover/index.js.map +1 -1
  20. package/build/cover/variations.js +29 -0
  21. package/build/cover/variations.js.map +1 -0
  22. package/build/embed/edit.js +13 -14
  23. package/build/embed/edit.js.map +1 -1
  24. package/build/embed/edit.native.js +18 -14
  25. package/build/embed/edit.native.js.map +1 -1
  26. package/build/embed/util.js +39 -12
  27. package/build/embed/util.js.map +1 -1
  28. package/build/gallery/edit.js +9 -5
  29. package/build/gallery/edit.js.map +1 -1
  30. package/build/gallery/use-image-sizes.js +1 -1
  31. package/build/gallery/use-image-sizes.js.map +1 -1
  32. package/build/group/deprecated.js +4 -2
  33. package/build/group/deprecated.js.map +1 -1
  34. package/build/group/edit.js +22 -5
  35. package/build/group/edit.js.map +1 -1
  36. package/build/group/placeholder.js +11 -1
  37. package/build/group/placeholder.js.map +1 -1
  38. package/build/group/variations.js +23 -3
  39. package/build/group/variations.js.map +1 -1
  40. package/build/image/edit.js +1 -1
  41. package/build/image/edit.js.map +1 -1
  42. package/build/image/edit.native.js +1 -1
  43. package/build/image/edit.native.js.map +1 -1
  44. package/build/image/image.js +8 -6
  45. package/build/image/image.js.map +1 -1
  46. package/build/image/index.js +7 -2
  47. package/build/image/index.js.map +1 -1
  48. package/build/latest-posts/edit.js +11 -10
  49. package/build/latest-posts/edit.js.map +1 -1
  50. package/build/latest-posts/edit.native.js +3 -3
  51. package/build/latest-posts/edit.native.js.map +1 -1
  52. package/build/media-text/constants.js +17 -1
  53. package/build/media-text/constants.js.map +1 -1
  54. package/build/media-text/deprecated.js +228 -18
  55. package/build/media-text/deprecated.js.map +1 -1
  56. package/build/media-text/edit.js +10 -22
  57. package/build/media-text/edit.js.map +1 -1
  58. package/build/media-text/edit.native.js +6 -5
  59. package/build/media-text/edit.native.js.map +1 -1
  60. package/build/media-text/index.js +1 -1
  61. package/build/media-text/transforms.js +32 -44
  62. package/build/media-text/transforms.js.map +1 -1
  63. package/build/navigation/edit/index.js +55 -96
  64. package/build/navigation/edit/index.js.map +1 -1
  65. package/build/navigation/edit/menu-inspector-controls.js +2 -5
  66. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  67. package/build/navigation/edit/navigation-menu-selector.js +26 -22
  68. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  69. package/build/navigation/edit/unsaved-inner-blocks.js +14 -1
  70. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  71. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -4
  72. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  73. package/build/navigation/edit/use-create-navigation-menu.js +1 -1
  74. package/build/navigation/edit/use-create-navigation-menu.js.map +1 -1
  75. package/build/navigation/edit/use-navigation-notice.js +1 -1
  76. package/build/navigation/edit/use-navigation-notice.js.map +1 -1
  77. package/build/navigation/index.js +0 -1
  78. package/build/navigation/index.js.map +1 -1
  79. package/build/navigation-link/edit.js +0 -11
  80. package/build/navigation-link/edit.js.map +1 -1
  81. package/build/navigation-link/link-ui.js +0 -1
  82. package/build/navigation-link/link-ui.js.map +1 -1
  83. package/build/navigation-submenu/edit.js +1 -13
  84. package/build/navigation-submenu/edit.js.map +1 -1
  85. package/build/page-list/edit.js +59 -45
  86. package/build/page-list/edit.js.map +1 -1
  87. package/build/page-list-item/edit.js +3 -2
  88. package/build/page-list-item/edit.js.map +1 -1
  89. package/build/post-content/edit.js +6 -1
  90. package/build/post-content/edit.js.map +1 -1
  91. package/build/post-date/edit.js +2 -1
  92. package/build/post-date/edit.js.map +1 -1
  93. package/build/post-date/index.js +4 -1
  94. package/build/post-date/index.js.map +1 -1
  95. package/build/post-date/variations.js +28 -0
  96. package/build/post-date/variations.js.map +1 -0
  97. package/build/post-excerpt/edit.js +39 -10
  98. package/build/post-excerpt/edit.js.map +1 -1
  99. package/build/post-featured-image/dimension-controls.js +2 -8
  100. package/build/post-featured-image/dimension-controls.js.map +1 -1
  101. package/build/post-featured-image/edit.js +1 -1
  102. package/build/post-featured-image/edit.js.map +1 -1
  103. package/build/post-template/index.js +1 -1
  104. package/build/post-time-to-read/index.js +17 -1
  105. package/build/post-time-to-read/index.js.map +1 -1
  106. package/build/pullquote/deprecated.js +3 -3
  107. package/build/pullquote/deprecated.js.map +1 -1
  108. package/build/query/edit/query-placeholder.js +3 -2
  109. package/build/query/edit/query-placeholder.js.map +1 -1
  110. package/build/query/utils.js +26 -9
  111. package/build/query/utils.js.map +1 -1
  112. package/build/quote/index.js +1 -0
  113. package/build/quote/index.js.map +1 -1
  114. package/build/spacer/edit.js +16 -6
  115. package/build/spacer/edit.js.map +1 -1
  116. package/build/table/state.js +12 -4
  117. package/build/table/state.js.map +1 -1
  118. package/build/template-part/edit/import-controls.js +4 -24
  119. package/build/template-part/edit/import-controls.js.map +1 -1
  120. package/build/template-part/edit/utils/transformers.js +69 -19
  121. package/build/template-part/edit/utils/transformers.js.map +1 -1
  122. package/build/text-columns/edit.js +3 -7
  123. package/build/text-columns/edit.js.map +1 -1
  124. package/build/text-columns/save.js +11 -13
  125. package/build/text-columns/save.js.map +1 -1
  126. package/build-module/buttons/edit.native.js +1 -1
  127. package/build-module/buttons/edit.native.js.map +1 -1
  128. package/build-module/buttons/index.js +1 -0
  129. package/build-module/buttons/index.js.map +1 -1
  130. package/build-module/buttons/transforms.js +1 -0
  131. package/build-module/buttons/transforms.js.map +1 -1
  132. package/build-module/columns/edit.js +14 -9
  133. package/build-module/columns/edit.js.map +1 -1
  134. package/build-module/columns/edit.native.js +1 -1
  135. package/build-module/columns/edit.native.js.map +1 -1
  136. package/build-module/columns/index.js +4 -0
  137. package/build-module/columns/index.js.map +1 -1
  138. package/build-module/comments/edit/placeholder.js +9 -5
  139. package/build-module/comments/edit/placeholder.js.map +1 -1
  140. package/build-module/cover/edit/inspector-controls.js +2 -2
  141. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  142. package/build-module/cover/index.js +12 -4
  143. package/build-module/cover/index.js.map +1 -1
  144. package/build-module/cover/variations.js +19 -0
  145. package/build-module/cover/variations.js.map +1 -0
  146. package/build-module/embed/edit.js +14 -15
  147. package/build-module/embed/edit.js.map +1 -1
  148. package/build-module/embed/edit.native.js +19 -15
  149. package/build-module/embed/edit.native.js.map +1 -1
  150. package/build-module/embed/util.js +34 -10
  151. package/build-module/embed/util.js.map +1 -1
  152. package/build-module/gallery/edit.js +9 -5
  153. package/build-module/gallery/edit.js.map +1 -1
  154. package/build-module/gallery/use-image-sizes.js +1 -1
  155. package/build-module/gallery/use-image-sizes.js.map +1 -1
  156. package/build-module/group/deprecated.js +4 -2
  157. package/build-module/group/deprecated.js.map +1 -1
  158. package/build-module/group/edit.js +21 -5
  159. package/build-module/group/edit.js.map +1 -1
  160. package/build-module/group/placeholder.js +11 -1
  161. package/build-module/group/placeholder.js.map +1 -1
  162. package/build-module/group/variations.js +24 -1
  163. package/build-module/group/variations.js.map +1 -1
  164. package/build-module/image/edit.js +1 -1
  165. package/build-module/image/edit.js.map +1 -1
  166. package/build-module/image/edit.native.js +1 -1
  167. package/build-module/image/edit.native.js.map +1 -1
  168. package/build-module/image/image.js +8 -6
  169. package/build-module/image/image.js.map +1 -1
  170. package/build-module/image/index.js +7 -2
  171. package/build-module/image/index.js.map +1 -1
  172. package/build-module/latest-posts/edit.js +11 -9
  173. package/build-module/latest-posts/edit.js.map +1 -1
  174. package/build-module/latest-posts/edit.native.js +3 -3
  175. package/build-module/latest-posts/edit.native.js.map +1 -1
  176. package/build-module/media-text/constants.js +10 -0
  177. package/build-module/media-text/constants.js.map +1 -1
  178. package/build-module/media-text/deprecated.js +227 -18
  179. package/build-module/media-text/deprecated.js.map +1 -1
  180. package/build-module/media-text/edit.js +5 -17
  181. package/build-module/media-text/edit.js.map +1 -1
  182. package/build-module/media-text/edit.native.js +4 -3
  183. package/build-module/media-text/edit.native.js.map +1 -1
  184. package/build-module/media-text/index.js +1 -1
  185. package/build-module/media-text/transforms.js +32 -44
  186. package/build-module/media-text/transforms.js.map +1 -1
  187. package/build-module/navigation/edit/index.js +57 -98
  188. package/build-module/navigation/edit/index.js.map +1 -1
  189. package/build-module/navigation/edit/menu-inspector-controls.js +2 -5
  190. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  191. package/build-module/navigation/edit/navigation-menu-selector.js +25 -22
  192. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  193. package/build-module/navigation/edit/unsaved-inner-blocks.js +14 -1
  194. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  195. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -4
  196. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  197. package/build-module/navigation/edit/use-create-navigation-menu.js +1 -1
  198. package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -1
  199. package/build-module/navigation/edit/use-navigation-notice.js +1 -1
  200. package/build-module/navigation/edit/use-navigation-notice.js.map +1 -1
  201. package/build-module/navigation/index.js +0 -1
  202. package/build-module/navigation/index.js.map +1 -1
  203. package/build-module/navigation-link/edit.js +0 -11
  204. package/build-module/navigation-link/edit.js.map +1 -1
  205. package/build-module/navigation-link/link-ui.js +0 -1
  206. package/build-module/navigation-link/link-ui.js.map +1 -1
  207. package/build-module/navigation-submenu/edit.js +1 -13
  208. package/build-module/navigation-submenu/edit.js.map +1 -1
  209. package/build-module/page-list/edit.js +61 -47
  210. package/build-module/page-list/edit.js.map +1 -1
  211. package/build-module/page-list-item/edit.js +3 -2
  212. package/build-module/page-list-item/edit.js.map +1 -1
  213. package/build-module/post-content/edit.js +6 -1
  214. package/build-module/post-content/edit.js.map +1 -1
  215. package/build-module/post-date/edit.js +2 -1
  216. package/build-module/post-date/edit.js.map +1 -1
  217. package/build-module/post-date/index.js +3 -1
  218. package/build-module/post-date/index.js.map +1 -1
  219. package/build-module/post-date/variations.js +18 -0
  220. package/build-module/post-date/variations.js.map +1 -0
  221. package/build-module/post-excerpt/edit.js +38 -11
  222. package/build-module/post-excerpt/edit.js.map +1 -1
  223. package/build-module/post-featured-image/dimension-controls.js +2 -8
  224. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  225. package/build-module/post-featured-image/edit.js +1 -1
  226. package/build-module/post-featured-image/edit.js.map +1 -1
  227. package/build-module/post-template/index.js +1 -1
  228. package/build-module/post-time-to-read/index.js +17 -1
  229. package/build-module/post-time-to-read/index.js.map +1 -1
  230. package/build-module/pullquote/deprecated.js +3 -2
  231. package/build-module/pullquote/deprecated.js.map +1 -1
  232. package/build-module/query/edit/query-placeholder.js +4 -3
  233. package/build-module/query/edit/query-placeholder.js.map +1 -1
  234. package/build-module/query/utils.js +21 -6
  235. package/build-module/query/utils.js.map +1 -1
  236. package/build-module/quote/index.js +1 -0
  237. package/build-module/quote/index.js.map +1 -1
  238. package/build-module/spacer/edit.js +16 -6
  239. package/build-module/spacer/edit.js.map +1 -1
  240. package/build-module/table/state.js +13 -5
  241. package/build-module/table/state.js.map +1 -1
  242. package/build-module/template-part/edit/import-controls.js +4 -23
  243. package/build-module/template-part/edit/import-controls.js.map +1 -1
  244. package/build-module/template-part/edit/utils/transformers.js +69 -20
  245. package/build-module/template-part/edit/utils/transformers.js.map +1 -1
  246. package/build-module/text-columns/edit.js +3 -6
  247. package/build-module/text-columns/edit.js.map +1 -1
  248. package/build-module/text-columns/save.js +11 -12
  249. package/build-module/text-columns/save.js.map +1 -1
  250. package/build-style/categories/editor-rtl.css +5 -0
  251. package/build-style/categories/editor.css +5 -0
  252. package/build-style/categories/style-rtl.css +4 -0
  253. package/build-style/categories/style.css +4 -0
  254. package/build-style/cover/style-rtl.css +11 -5
  255. package/build-style/cover/style.css +11 -5
  256. package/build-style/editor-rtl.css +11 -1
  257. package/build-style/editor.css +11 -1
  258. package/build-style/navigation/editor-rtl.css +1 -1
  259. package/build-style/navigation/editor.css +1 -1
  260. package/build-style/navigation/style-rtl.css +2 -0
  261. package/build-style/navigation/style.css +2 -0
  262. package/build-style/page-list/editor-rtl.css +4 -0
  263. package/build-style/page-list/editor.css +4 -0
  264. package/build-style/post-featured-image/editor-rtl.css +1 -0
  265. package/build-style/post-featured-image/editor.css +1 -0
  266. package/build-style/post-featured-image/style-rtl.css +1 -0
  267. package/build-style/post-featured-image/style.css +1 -0
  268. package/build-style/post-template/style-rtl.css +1 -1
  269. package/build-style/post-template/style.css +1 -1
  270. package/build-style/post-time-to-read/style-rtl.css +91 -0
  271. package/build-style/post-time-to-read/style.css +91 -0
  272. package/build-style/search/style-rtl.css +8 -7
  273. package/build-style/search/style.css +8 -7
  274. package/build-style/style-rtl.css +31 -13
  275. package/build-style/style.css +31 -13
  276. package/package.json +31 -31
  277. package/src/audio/test/__snapshots__/edit.native.js.snap +44 -4
  278. package/src/audio/test/__snapshots__/transforms.native.js.snap +25 -0
  279. package/src/audio/test/transforms.native.js +42 -0
  280. package/src/block/test/__snapshots__/transforms.native.js.snap +15 -0
  281. package/src/block/test/transforms.native.js +40 -0
  282. package/src/buttons/block.json +1 -0
  283. package/src/buttons/edit.native.js +1 -1
  284. package/src/buttons/test/__snapshots__/transforms.native.js.snap +31 -0
  285. package/src/buttons/test/transforms.native.js +48 -0
  286. package/src/categories/editor.scss +5 -0
  287. package/src/categories/style.scss +4 -0
  288. package/src/columns/block.json +4 -0
  289. package/src/columns/edit.js +30 -18
  290. package/src/columns/edit.native.js +1 -1
  291. package/src/columns/test/__snapshots__/transforms.native.js.snap +61 -0
  292. package/src/columns/test/transforms.native.js +91 -0
  293. package/src/comment-template/index.php +1 -2
  294. package/src/comments/edit/placeholder.js +16 -4
  295. package/src/comments/index.php +1 -0
  296. package/src/cover/block.json +9 -3
  297. package/src/cover/edit/inspector-controls.js +4 -5
  298. package/src/cover/index.js +2 -0
  299. package/src/cover/style.scss +16 -7
  300. package/src/cover/test/__snapshots__/transforms.native.js.snap +73 -0
  301. package/src/cover/test/edit.js +324 -0
  302. package/src/cover/test/transforms.native.js +112 -0
  303. package/src/cover/variations.js +20 -0
  304. package/src/embed/edit.js +16 -12
  305. package/src/embed/edit.native.js +28 -18
  306. package/src/embed/test/__snapshots__/transforms.native.js.snap +23 -0
  307. package/src/embed/test/index.js +12 -0
  308. package/src/embed/test/transforms.native.js +44 -0
  309. package/src/embed/util.js +29 -8
  310. package/src/file/test/__snapshots__/edit.native.js.snap +18 -2
  311. package/src/file/test/__snapshots__/transforms.native.js.snap +19 -0
  312. package/src/file/test/transforms.native.js +42 -0
  313. package/src/freeform/test/__snapshots__/transforms.native.js.snap +19 -0
  314. package/src/freeform/test/transforms.native.js +39 -0
  315. package/src/gallery/edit.js +8 -2
  316. package/src/gallery/test/__snapshots__/transforms.native.js.snap +53 -0
  317. package/src/gallery/test/transforms.native.js +52 -0
  318. package/src/gallery/use-image-sizes.js +1 -1
  319. package/src/group/deprecated.js +4 -2
  320. package/src/group/edit.js +27 -9
  321. package/src/group/placeholder.js +13 -1
  322. package/src/group/test/__snapshots__/transforms.native.js.snap +35 -0
  323. package/src/group/test/transforms.native.js +75 -0
  324. package/src/group/variations.js +14 -1
  325. package/src/heading/test/__snapshots__/transforms.native.js.snap +47 -0
  326. package/src/heading/test/transforms.native.js +46 -0
  327. package/src/home-link/index.php +2 -2
  328. package/src/image/block.json +7 -2
  329. package/src/image/edit.js +1 -1
  330. package/src/image/edit.native.js +1 -1
  331. package/src/image/image.js +15 -7
  332. package/src/image/index.php +7 -2
  333. package/src/image/test/__snapshots__/transforms.native.js.snap +49 -0
  334. package/src/image/test/transforms.native.js +48 -0
  335. package/src/latest-comments/style.scss +1 -1
  336. package/src/latest-posts/edit.js +14 -16
  337. package/src/latest-posts/edit.native.js +3 -3
  338. package/src/latest-posts/test/__snapshots__/transforms.native.js.snap +15 -0
  339. package/src/latest-posts/test/transforms.native.js +61 -0
  340. package/src/list/test/__snapshots__/transforms.native.js.snap +85 -0
  341. package/src/list/test/transforms.native.js +56 -0
  342. package/src/media-text/block.json +1 -1
  343. package/src/media-text/constants.js +16 -0
  344. package/src/media-text/deprecated.js +235 -3
  345. package/src/media-text/edit.js +15 -24
  346. package/src/media-text/edit.native.js +3 -9
  347. package/src/media-text/test/__snapshots__/transforms.native.js.snap +73 -0
  348. package/src/media-text/test/transforms.native.js +112 -0
  349. package/src/media-text/transforms.js +24 -51
  350. package/src/missing/test/__snapshots__/edit.native.js.snap +20 -2
  351. package/src/more/test/__snapshots__/transforms.native.js.snap +19 -0
  352. package/src/more/test/transforms.native.js +42 -0
  353. package/src/navigation/block.json +0 -1
  354. package/src/navigation/edit/index.js +99 -115
  355. package/src/navigation/edit/menu-inspector-controls.js +2 -7
  356. package/src/navigation/edit/navigation-menu-selector.js +41 -25
  357. package/src/navigation/edit/unsaved-inner-blocks.js +46 -33
  358. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +82 -83
  359. package/src/navigation/edit/use-create-navigation-menu.js +1 -1
  360. package/src/navigation/edit/use-navigation-notice.js +1 -1
  361. package/src/navigation/editor.scss +23 -20
  362. package/src/navigation/index.php +18 -39
  363. package/src/navigation/style.scss +6 -4
  364. package/src/navigation-link/edit.js +0 -9
  365. package/src/navigation-link/index.php +7 -9
  366. package/src/navigation-link/link-ui.js +0 -1
  367. package/src/navigation-submenu/edit.js +0 -10
  368. package/src/navigation-submenu/index.php +45 -74
  369. package/src/nextpage/test/__snapshots__/transforms.native.js.snap +19 -0
  370. package/src/nextpage/test/transforms.native.js +42 -0
  371. package/src/page-list/edit.js +78 -44
  372. package/src/page-list/editor.scss +6 -0
  373. package/src/page-list-item/edit.js +2 -3
  374. package/src/paragraph/test/__snapshots__/transforms.native.js.snap +59 -0
  375. package/src/paragraph/test/transforms.native.js +50 -0
  376. package/src/post-author/index.php +1 -1
  377. package/src/post-content/edit.js +5 -1
  378. package/src/post-date/edit.js +4 -1
  379. package/src/post-date/index.js +2 -0
  380. package/src/post-date/variations.js +20 -0
  381. package/src/post-excerpt/edit.js +48 -16
  382. package/src/post-excerpt/index.php +1 -2
  383. package/src/post-featured-image/dimension-controls.js +2 -10
  384. package/src/post-featured-image/edit.js +1 -1
  385. package/src/post-featured-image/editor.scss +1 -0
  386. package/src/post-featured-image/style.scss +1 -0
  387. package/src/post-template/block.json +1 -1
  388. package/src/post-template/style.scss +1 -1
  389. package/src/post-time-to-read/block.json +17 -1
  390. package/src/post-time-to-read/style.scss +4 -0
  391. package/src/preformatted/test/__snapshots__/transforms.native.js.snap +31 -0
  392. package/src/preformatted/test/transforms.native.js +42 -0
  393. package/src/pullquote/deprecated.js +2 -6
  394. package/src/pullquote/test/__snapshots__/transforms.native.js.snap +47 -0
  395. package/src/pullquote/test/transforms.native.js +46 -0
  396. package/src/query/edit/query-placeholder.js +10 -5
  397. package/src/query/test/utils.js +33 -1
  398. package/src/query/utils.js +19 -6
  399. package/src/query-title/index.php +2 -5
  400. package/src/quote/block.json +1 -0
  401. package/src/quote/test/__snapshots__/transforms.native.js.snap +39 -0
  402. package/src/quote/test/transforms.native.js +67 -0
  403. package/src/search/style.scss +16 -12
  404. package/src/search/test/__snapshots__/edit.native.js.snap +11 -1
  405. package/src/search/test/__snapshots__/transforms.native.js.snap +15 -0
  406. package/src/search/test/transforms.native.js +40 -0
  407. package/src/separator/test/__snapshots__/transforms.native.js.snap +19 -0
  408. package/src/separator/test/transforms.native.js +42 -0
  409. package/src/shortcode/test/__snapshots__/transforms.native.js.snap +19 -0
  410. package/src/shortcode/test/transforms.native.js +42 -0
  411. package/src/social-links/test/__snapshots__/transforms.native.js.snap +31 -0
  412. package/src/social-links/test/transforms.native.js +53 -0
  413. package/src/spacer/edit.js +18 -5
  414. package/src/spacer/test/__snapshots__/transforms.native.js.snap +19 -0
  415. package/src/spacer/test/transforms.native.js +42 -0
  416. package/src/style.scss +1 -0
  417. package/src/table/state.js +8 -17
  418. package/src/template-part/edit/import-controls.js +2 -29
  419. package/src/template-part/edit/utils/transformers.js +96 -19
  420. package/src/text-columns/edit.js +1 -6
  421. package/src/text-columns/save.js +1 -6
  422. package/src/verse/test/__snapshots__/transforms.native.js.snap +25 -0
  423. package/src/verse/test/transforms.native.js +42 -0
  424. package/src/video/test/__snapshots__/transforms.native.js.snap +41 -0
  425. package/src/video/test/transforms.native.js +48 -0
  426. package/tsconfig.tsbuildinfo +1 -1
  427. package/src/cover/test/block-controls.js +0 -62
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __, _x } from '@wordpress/i18n';
5
- import { group, row, stack } from '@wordpress/icons';
5
+ import { group, row, stack, grid } from '@wordpress/icons';
6
6
 
7
7
  const variations = [
8
8
  {
@@ -44,4 +44,17 @@ const variations = [
44
44
  },
45
45
  ];
46
46
 
47
+ if ( window?.__experimentalEnableGroupGridVariation ) {
48
+ variations.push( {
49
+ name: 'group-grid',
50
+ title: __( 'Grid' ),
51
+ description: __( 'Arrange blocks in a grid.' ),
52
+ attributes: { layout: { type: 'grid' } },
53
+ scope: [ 'block', 'inserter', 'transform' ],
54
+ isActive: ( blockAttributes ) =>
55
+ blockAttributes.layout?.type === 'grid',
56
+ icon: grid,
57
+ } );
58
+ }
59
+
47
60
  export default variations;
@@ -0,0 +1,47 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Heading block transforms to Columns block 1`] = `
4
+ "<!-- wp:columns -->
5
+ <div class="wp-block-columns"><!-- wp:column {"width":"100%"} -->
6
+ <div class="wp-block-column" style="flex-basis:100%"><!-- wp:heading -->
7
+ <h2 class="wp-block-heading">Example text</h2>
8
+ <!-- /wp:heading --></div>
9
+ <!-- /wp:column --></div>
10
+ <!-- /wp:columns -->"
11
+ `;
12
+
13
+ exports[`Heading block transforms to Group block 1`] = `
14
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
15
+ <div class="wp-block-group"><!-- wp:heading -->
16
+ <h2 class="wp-block-heading">Example text</h2>
17
+ <!-- /wp:heading --></div>
18
+ <!-- /wp:group -->"
19
+ `;
20
+
21
+ exports[`Heading block transforms to List block 1`] = `
22
+ "<!-- wp:list -->
23
+ <ul><!-- wp:list-item -->
24
+ <li>Example text</li>
25
+ <!-- /wp:list-item --></ul>
26
+ <!-- /wp:list -->"
27
+ `;
28
+
29
+ exports[`Heading block transforms to Paragraph block 1`] = `
30
+ "<!-- wp:paragraph -->
31
+ <p>Example text</p>
32
+ <!-- /wp:paragraph -->"
33
+ `;
34
+
35
+ exports[`Heading block transforms to Pullquote block 1`] = `
36
+ "<!-- wp:pullquote -->
37
+ <figure class="wp-block-pullquote"><blockquote><p>Example text</p></blockquote></figure>
38
+ <!-- /wp:pullquote -->"
39
+ `;
40
+
41
+ exports[`Heading block transforms to Quote block 1`] = `
42
+ "<!-- wp:quote -->
43
+ <blockquote class="wp-block-quote"><!-- wp:heading -->
44
+ <h2 class="wp-block-heading">Example text</h2>
45
+ <!-- /wp:heading --></blockquote>
46
+ <!-- /wp:quote -->"
47
+ `;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ getEditorHtml,
6
+ initializeEditor,
7
+ setupCoreBlocks,
8
+ transformBlock,
9
+ getBlockTransformOptions,
10
+ } from 'test/helpers';
11
+
12
+ const block = 'Heading';
13
+ const initialHtml = `
14
+ <!-- wp:heading -->
15
+ <h2 class="wp-block-heading">Example text</h2>
16
+ <!-- /wp:heading -->`;
17
+
18
+ const transformsWithInnerBlocks = [ 'List', 'Quote', 'Columns', 'Group' ];
19
+ const blockTransforms = [
20
+ 'Paragraph',
21
+ 'Pullquote',
22
+ ...transformsWithInnerBlocks,
23
+ ];
24
+
25
+ setupCoreBlocks();
26
+
27
+ describe( `${ block } block transforms`, () => {
28
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
29
+ const screen = await initializeEditor( { initialHtml } );
30
+ const newBlock = await transformBlock( screen, block, blockTransform, {
31
+ hasInnerBlocks:
32
+ transformsWithInnerBlocks.includes( blockTransform ),
33
+ } );
34
+ expect( newBlock ).toBeVisible();
35
+ expect( getEditorHtml() ).toMatchSnapshot();
36
+ } );
37
+
38
+ it( 'matches expected transformation options', async () => {
39
+ const screen = await initializeEditor( { initialHtml } );
40
+ const transformOptions = await getBlockTransformOptions(
41
+ screen,
42
+ block
43
+ );
44
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
45
+ } );
46
+ } );
@@ -98,12 +98,12 @@ function block_core_home_link_build_li_wrapper_attributes( $context ) {
98
98
  $colors['css_classes'],
99
99
  $font_sizes['css_classes']
100
100
  );
101
+ $classes[] = 'wp-block-navigation-item';
101
102
  $style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] );
102
- $css_classes = trim( implode( ' ', $classes ) ) . ' wp-block-navigation-item';
103
103
 
104
104
  $wrapper_attributes = get_block_wrapper_attributes(
105
105
  array(
106
- 'class' => $css_classes,
106
+ 'class' => implode( ' ', $classes ),
107
107
  'style' => $style_attribute,
108
108
  )
109
109
  );
@@ -85,7 +85,7 @@
85
85
  "supports": {
86
86
  "anchor": true,
87
87
  "color": {
88
- "__experimentalDuotone": "img, .components-placeholder",
88
+ "__experimentalDuotone": true,
89
89
  "text": false,
90
90
  "background": false
91
91
  },
@@ -93,7 +93,6 @@
93
93
  "color": true,
94
94
  "radius": true,
95
95
  "width": true,
96
- "__experimentalSelector": "img, .wp-block-image__crop-area",
97
96
  "__experimentalSkipSerialization": true,
98
97
  "__experimentalDefaultControls": {
99
98
  "color": true,
@@ -102,6 +101,12 @@
102
101
  }
103
102
  }
104
103
  },
104
+ "selectors": {
105
+ "border": ".wp-block-image img, .wp-block-image .wp-block-image__crop-area",
106
+ "filter": {
107
+ "duotone": "img, .components-placeholder"
108
+ }
109
+ },
105
110
  "styles": [
106
111
  {
107
112
  "name": "default",
package/src/image/edit.js CHANGED
@@ -211,7 +211,7 @@ export function ImageEdit( {
211
211
  : 'full',
212
212
  };
213
213
  } else {
214
- // Keep the same url when selecting the same file, so "Image Size"
214
+ // Keep the same url when selecting the same file, so "Resolution"
215
215
  // option is not changed.
216
216
  additionalAttributes = { url };
217
217
  }
@@ -578,7 +578,7 @@ export class ImageEdit extends Component {
578
578
  footerNote={
579
579
  <>
580
580
  { __(
581
- 'Describe the purpose of the image. Leave empty if the image is purely decorative.'
581
+ 'Describe the purpose of the image. Leave empty if decorative.'
582
582
  ) }{ ' ' }
583
583
  <FooterMessageLink
584
584
  href={
@@ -170,12 +170,18 @@ export default function Image( {
170
170
  ( { slug } ) => image?.media_details?.sizes?.[ slug ]?.source_url
171
171
  )
172
172
  .map( ( { name, slug } ) => ( { value: slug, label: name } ) );
173
+ const canUploadMedia = !! mediaUpload;
173
174
 
174
175
  // If an image is externally hosted, try to fetch the image data. This may
175
176
  // fail if the image host doesn't allow CORS with the domain. If it works,
176
177
  // we can enable a button in the toolbar to upload the image.
177
178
  useEffect( () => {
178
- if ( ! isExternalImage( id, url ) || ! isSelected || externalBlob ) {
179
+ if (
180
+ ! isExternalImage( id, url ) ||
181
+ ! isSelected ||
182
+ ! canUploadMedia ||
183
+ externalBlob
184
+ ) {
179
185
  return;
180
186
  }
181
187
 
@@ -185,7 +191,7 @@ export default function Image( {
185
191
  .then( ( blob ) => setExternalBlob( blob ) )
186
192
  // Do nothing, cannot upload.
187
193
  .catch( () => {} );
188
- }, [ id, url, isSelected, externalBlob ] );
194
+ }, [ id, url, isSelected, externalBlob, canUploadMedia ] );
189
195
 
190
196
  // We need to show the caption when changes come from
191
197
  // history navigation(undo/redo).
@@ -401,19 +407,18 @@ export default function Image( {
401
407
  { ! multiImageSelection && (
402
408
  <TextareaControl
403
409
  __nextHasNoMarginBottom
404
- label={ __( 'Alt text (alternative text)' ) }
410
+ label={ __( 'Alternative text' ) }
405
411
  value={ alt }
406
412
  onChange={ updateAlt }
407
413
  help={
408
414
  <>
409
415
  <ExternalLink href="https://www.w3.org/WAI/tutorials/images/decision-tree">
410
416
  { __(
411
- 'Describe the purpose of the image'
417
+ 'Describe the purpose of the image.'
412
418
  ) }
413
419
  </ExternalLink>
414
- { __(
415
- 'Leave empty if the image is purely decorative.'
416
- ) }
420
+ <br />
421
+ { __( 'Leave empty if decorative.' ) }
417
422
  </>
418
423
  }
419
424
  />
@@ -428,6 +433,9 @@ export default function Image( {
428
433
  isResizable={ isResizable }
429
434
  imageWidth={ naturalWidth }
430
435
  imageHeight={ naturalHeight }
436
+ imageSizeHelp={ __(
437
+ 'Select the size of the source image.'
438
+ ) }
431
439
  />
432
440
  </PanelBody>
433
441
  </InspectorControls>
@@ -14,13 +14,18 @@
14
14
  * @return string Returns the block content with the data-id attribute added.
15
15
  */
16
16
  function render_block_core_image( $attributes, $content ) {
17
+ $processor = new WP_HTML_Tag_Processor( $content );
18
+ $processor->next_tag( 'img' );
19
+
20
+ if ( $processor->get_attribute( 'src' ) === null ) {
21
+ return '';
22
+ }
23
+
17
24
  if ( isset( $attributes['data-id'] ) ) {
18
25
  // Add the data-id="$id" attribute to the img element
19
26
  // to provide backwards compatibility for the Gallery Block,
20
27
  // which now wraps Image Blocks within innerBlocks.
21
28
  // The data-id attribute is added in a core/gallery `render_block_data` hook.
22
- $processor = new WP_HTML_Tag_Processor( $content );
23
- $processor->next_tag( 'img' );
24
29
  $processor->set_attribute( 'data-id', $attributes['data-id'] );
25
30
  $content = $processor->get_updated_html();
26
31
  }
@@ -0,0 +1,49 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Image block transformations to Columns block 1`] = `
4
+ "<!-- wp:columns -->
5
+ <div class="wp-block-columns"><!-- wp:column {"width":"100%"} -->
6
+ <div class="wp-block-column" style="flex-basis:100%"><!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"media","className":"is-style-default"} -->
7
+ <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>
8
+ <!-- /wp:image --></div>
9
+ <!-- /wp:column --></div>
10
+ <!-- /wp:columns -->"
11
+ `;
12
+
13
+ exports[`Image block transformations to Cover block 1`] = `
14
+ "<!-- wp:cover {"url":"https://cldup.com/cXyG__fTLN.jpg","id":1,"dimRatio":50,"style":{"color":{}}} -->
15
+ <div class="wp-block-cover"><span aria-hidden="true" class="wp-block-cover__background has-background-dim"></span><img class="wp-block-cover__image-background wp-image-1" alt="" src="https://cldup.com/cXyG__fTLN.jpg" data-object-fit="cover"/><div class="wp-block-cover__inner-container"><!-- wp:paragraph {"align":"center","fontSize":"large"} -->
16
+ <p class="has-text-align-center has-large-font-size">Mountain</p>
17
+ <!-- /wp:paragraph --></div></div>
18
+ <!-- /wp:cover -->"
19
+ `;
20
+
21
+ exports[`Image block transformations to File block 1`] = `
22
+ "<!-- wp:file {"id":1,"href":"https://cldup.com/cXyG__fTLN.jpg"} -->
23
+ <div class="wp-block-file"><a href="https://cldup.com/cXyG__fTLN.jpg">Mountain</a><a href="https://cldup.com/cXyG__fTLN.jpg" class="wp-block-file__button wp-element-button" download>Download</a></div>
24
+ <!-- /wp:file -->"
25
+ `;
26
+
27
+ exports[`Image block transformations to Gallery block 1`] = `
28
+ "<!-- wp:gallery {"linkTo":"none"} -->
29
+ <figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"media","className":"is-style-default"} -->
30
+ <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>
31
+ <!-- /wp:image --></figure>
32
+ <!-- /wp:gallery -->"
33
+ `;
34
+
35
+ exports[`Image block transformations to Group block 1`] = `
36
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
37
+ <div class="wp-block-group"><!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"media","className":"is-style-default"} -->
38
+ <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>
39
+ <!-- /wp:image --></div>
40
+ <!-- /wp:group -->"
41
+ `;
42
+
43
+ exports[`Image block transformations to Media & Text block 1`] = `
44
+ "<!-- wp:media-text {"mediaId":1,"mediaType":"image"} -->
45
+ <div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1 size-full"/></figure><div class="wp-block-media-text__content"><!-- wp:paragraph -->
46
+ <p></p>
47
+ <!-- /wp:paragraph --></div></div>
48
+ <!-- /wp:media-text -->"
49
+ `;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ getEditorHtml,
6
+ initializeEditor,
7
+ setupCoreBlocks,
8
+ transformBlock,
9
+ getBlockTransformOptions,
10
+ } from 'test/helpers';
11
+
12
+ const block = 'Image';
13
+ const initialHtml = `
14
+ <!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"media","className":"is-style-default"} -->
15
+ <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>
16
+ <!-- /wp:image -->`;
17
+
18
+ const tranformsWithInnerBlocks = [ 'Gallery', 'Columns', 'Group' ];
19
+ const nonMediaTransforms = [ 'File' ];
20
+ const blockTransforms = [
21
+ 'Cover',
22
+ 'Media & Text',
23
+ ...tranformsWithInnerBlocks,
24
+ ...nonMediaTransforms,
25
+ ];
26
+
27
+ setupCoreBlocks();
28
+
29
+ describe( `${ block } block transformations`, () => {
30
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
31
+ const screen = await initializeEditor( { initialHtml } );
32
+ const newBlock = await transformBlock( screen, block, blockTransform, {
33
+ isMediaBlock: ! nonMediaTransforms.includes( blockTransform ),
34
+ hasInnerBlocks: tranformsWithInnerBlocks.includes( blockTransform ),
35
+ } );
36
+ expect( newBlock ).toBeVisible();
37
+ expect( getEditorHtml() ).toMatchSnapshot();
38
+ } );
39
+
40
+ it( 'matches expected transformation options', async () => {
41
+ const screen = await initializeEditor( { initialHtml } );
42
+ const transformOptions = await getBlockTransformOptions(
43
+ screen,
44
+ block
45
+ );
46
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
47
+ } );
48
+ } );
@@ -1,7 +1,7 @@
1
1
  // Lower specificity - target list element.
2
2
  ol.wp-block-latest-comments {
3
3
  // Removes left spacing in Customizer Widgets screen.
4
- // Due to low specificity this will be safely overriden
4
+ // Due to low specificity this will be safely overridden
5
5
  // by default wp-block layout styles in the Post/Site editor
6
6
  margin-left: 0;
7
7
 
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { get } from 'lodash';
5
4
  import classnames from 'classnames';
6
5
 
7
6
  /**
@@ -57,7 +56,7 @@ const USERS_LIST_QUERY = {
57
56
  };
58
57
 
59
58
  function getFeaturedImageDetails( post, size ) {
60
- const image = get( post, [ '_embedded', 'wp:featuredmedia', '0' ] );
59
+ const image = post._embedded?.[ 'wp:featuredmedia' ]?.[ '0' ];
61
60
 
62
61
  return {
63
62
  url:
@@ -116,16 +115,12 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
116
115
  );
117
116
 
118
117
  return {
119
- defaultImageWidth: get(
120
- settings.imageDimensions,
121
- [ featuredImageSizeSlug, 'width' ],
122
- 0
123
- ),
124
- defaultImageHeight: get(
125
- settings.imageDimensions,
126
- [ featuredImageSizeSlug, 'height' ],
127
- 0
128
- ),
118
+ defaultImageWidth:
119
+ settings.imageDimensions?.[ featuredImageSizeSlug ]
120
+ ?.width ?? 0,
121
+ defaultImageHeight:
122
+ settings.imageDimensions?.[ featuredImageSizeSlug ]
123
+ ?.height ?? 0,
129
124
  imageSizes: settings.imageSizes,
130
125
  latestPosts: getEntityRecords(
131
126
  'postType',
@@ -204,7 +199,7 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
204
199
  const hasPosts = !! latestPosts?.length;
205
200
  const inspectorControls = (
206
201
  <InspectorControls>
207
- <PanelBody title={ __( 'Post content settings' ) }>
202
+ <PanelBody title={ __( 'Post content' ) }>
208
203
  <ToggleControl
209
204
  label={ __( 'Post content' ) }
210
205
  checked={ displayPostContent }
@@ -234,7 +229,7 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
234
229
  displayPostContentRadio === 'excerpt' && (
235
230
  <RangeControl
236
231
  __nextHasNoMarginBottom
237
- label={ __( 'Max number of words in excerpt' ) }
232
+ label={ __( 'Max number of words' ) }
238
233
  value={ excerptLength }
239
234
  onChange={ ( value ) =>
240
235
  setAttributes( { excerptLength: value } )
@@ -245,7 +240,7 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
245
240
  ) }
246
241
  </PanelBody>
247
242
 
248
- <PanelBody title={ __( 'Post meta settings' ) }>
243
+ <PanelBody title={ __( 'Post meta' ) }>
249
244
  <ToggleControl
250
245
  __nextHasNoMarginBottom
251
246
  label={ __( 'Display author name' ) }
@@ -264,7 +259,7 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
264
259
  />
265
260
  </PanelBody>
266
261
 
267
- <PanelBody title={ __( 'Featured image settings' ) }>
262
+ <PanelBody title={ __( 'Featured image' ) }>
268
263
  <ToggleControl
269
264
  __nextHasNoMarginBottom
270
265
  label={ __( 'Display featured image' ) }
@@ -294,6 +289,9 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
294
289
  imageWidth={ defaultImageWidth }
295
290
  imageHeight={ defaultImageHeight }
296
291
  imageSizeOptions={ imageSizeOptions }
292
+ imageSizeHelp={ __(
293
+ 'Select the size of the source image.'
294
+ ) }
297
295
  onChangeImage={ ( value ) =>
298
296
  setAttributes( {
299
297
  featuredImageSizeSlug: value,
@@ -160,7 +160,7 @@ class LatestPostsEdit extends Component {
160
160
 
161
161
  return (
162
162
  <InspectorControls>
163
- <PanelBody title={ __( 'Post content settings' ) }>
163
+ <PanelBody title={ __( 'Post content' ) }>
164
164
  <ToggleControl
165
165
  label={ __( 'Show post content' ) }
166
166
  checked={ displayPostContent }
@@ -184,7 +184,7 @@ class LatestPostsEdit extends Component {
184
184
  ) }
185
185
  </PanelBody>
186
186
 
187
- <PanelBody title={ __( 'Post meta settings' ) }>
187
+ <PanelBody title={ __( 'Post meta' ) }>
188
188
  <ToggleControl
189
189
  label={ __( 'Display post date' ) }
190
190
  checked={ displayPostDate }
@@ -192,7 +192,7 @@ class LatestPostsEdit extends Component {
192
192
  />
193
193
  </PanelBody>
194
194
 
195
- <PanelBody title={ __( 'Featured image settings' ) }>
195
+ <PanelBody title={ __( 'Featured image' ) }>
196
196
  <ToggleControl
197
197
  label={ __( 'Display featured image' ) }
198
198
  checked={ displayFeaturedImage }
@@ -0,0 +1,15 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Latest Posts block transforms to Columns block 1`] = `
4
+ "<!-- wp:columns -->
5
+ <div class="wp-block-columns"><!-- wp:column {"width":"100%"} -->
6
+ <div class="wp-block-column" style="flex-basis:100%"><!-- wp:latest-posts {"displayPostContent":true,"displayPostDate":true} /--></div>
7
+ <!-- /wp:column --></div>
8
+ <!-- /wp:columns -->"
9
+ `;
10
+
11
+ exports[`Latest Posts block transforms to Group block 1`] = `
12
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
13
+ <div class="wp-block-group"><!-- wp:latest-posts {"displayPostContent":true,"displayPostDate":true} /--></div>
14
+ <!-- /wp:group -->"
15
+ `;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ getEditorHtml,
6
+ initializeEditor,
7
+ setupCoreBlocks,
8
+ transformBlock,
9
+ getBlockTransformOptions,
10
+ } from 'test/helpers';
11
+ /**
12
+ * WordPress dependencies
13
+ */
14
+ import apiFetch from '@wordpress/api-fetch';
15
+
16
+ const block = 'Latest Posts';
17
+ const initialHtml = `
18
+ <!-- wp:latest-posts {"displayPostContent":true,"displayPostDate":true} /-->`;
19
+
20
+ const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
21
+ const blockTransforms = [ ...transformsWithInnerBlocks ];
22
+
23
+ setupCoreBlocks();
24
+
25
+ describe( `${ block } block transforms`, () => {
26
+ beforeAll( () => {
27
+ // Mock response of the request made from Latest Posts block to path "/wp/v2/categories".
28
+ apiFetch.mockResolvedValue( [
29
+ {
30
+ slug: 'uncategorized',
31
+ parent: 0,
32
+ id: 1,
33
+ count: 6,
34
+ link: '',
35
+ meta: [],
36
+ description: '',
37
+ name: 'Uncategorized',
38
+ taxonomy: 'category',
39
+ },
40
+ ] );
41
+ } );
42
+
43
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
44
+ const screen = await initializeEditor( { initialHtml } );
45
+ const newBlock = await transformBlock( screen, block, blockTransform, {
46
+ hasInnerBlocks:
47
+ transformsWithInnerBlocks.includes( blockTransform ),
48
+ } );
49
+ expect( newBlock ).toBeVisible();
50
+ expect( getEditorHtml() ).toMatchSnapshot();
51
+ } );
52
+
53
+ it( 'matches expected transformation options', async () => {
54
+ const screen = await initializeEditor( { initialHtml } );
55
+ const transformOptions = await getBlockTransformOptions(
56
+ screen,
57
+ block
58
+ );
59
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
60
+ } );
61
+ } );
@@ -0,0 +1,85 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`List block transforms to Columns block 1`] = `
4
+ "<!-- wp:columns -->
5
+ <div class="wp-block-columns"><!-- wp:column {"width":"100%"} -->
6
+ <div class="wp-block-column" style="flex-basis:100%"><!-- wp:list -->
7
+ <ul><!-- wp:list-item -->
8
+ <li>First Item</li>
9
+ <!-- /wp:list-item -->
10
+
11
+ <!-- wp:list-item -->
12
+ <li>Second Item</li>
13
+ <!-- /wp:list-item -->
14
+
15
+ <!-- wp:list-item -->
16
+ <li>Third Item</li>
17
+ <!-- /wp:list-item --></ul>
18
+ <!-- /wp:list --></div>
19
+ <!-- /wp:column --></div>
20
+ <!-- /wp:columns -->"
21
+ `;
22
+
23
+ exports[`List block transforms to Group block 1`] = `
24
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
25
+ <div class="wp-block-group"><!-- wp:list -->
26
+ <ul><!-- wp:list-item -->
27
+ <li>First Item</li>
28
+ <!-- /wp:list-item -->
29
+
30
+ <!-- wp:list-item -->
31
+ <li>Second Item</li>
32
+ <!-- /wp:list-item -->
33
+
34
+ <!-- wp:list-item -->
35
+ <li>Third Item</li>
36
+ <!-- /wp:list-item --></ul>
37
+ <!-- /wp:list --></div>
38
+ <!-- /wp:group -->"
39
+ `;
40
+
41
+ exports[`List block transforms to Heading block 1`] = `
42
+ "<!-- wp:heading -->
43
+ <h2 class="wp-block-heading">First Item</h2>
44
+ <!-- /wp:heading -->
45
+
46
+ <!-- wp:heading -->
47
+ <h2 class="wp-block-heading">Second Item</h2>
48
+ <!-- /wp:heading -->
49
+
50
+ <!-- wp:heading -->
51
+ <h2 class="wp-block-heading">Third Item</h2>
52
+ <!-- /wp:heading -->"
53
+ `;
54
+
55
+ exports[`List block transforms to Paragraph block 1`] = `
56
+ "<!-- wp:paragraph -->
57
+ <p>First Item</p>
58
+ <!-- /wp:paragraph -->
59
+
60
+ <!-- wp:paragraph -->
61
+ <p>Second Item</p>
62
+ <!-- /wp:paragraph -->
63
+
64
+ <!-- wp:paragraph -->
65
+ <p>Third Item</p>
66
+ <!-- /wp:paragraph -->"
67
+ `;
68
+
69
+ exports[`List block transforms to Quote block 1`] = `
70
+ "<!-- wp:quote -->
71
+ <blockquote class="wp-block-quote"><!-- wp:list -->
72
+ <ul><!-- wp:list-item -->
73
+ <li>First Item</li>
74
+ <!-- /wp:list-item -->
75
+
76
+ <!-- wp:list-item -->
77
+ <li>Second Item</li>
78
+ <!-- /wp:list-item -->
79
+
80
+ <!-- wp:list-item -->
81
+ <li>Third Item</li>
82
+ <!-- /wp:list-item --></ul>
83
+ <!-- /wp:list --></blockquote>
84
+ <!-- /wp:quote -->"
85
+ `;