@wordpress/block-library 8.5.0 → 8.6.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 (287) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/buttons/edit.native.js +1 -1
  3. package/build/buttons/edit.native.js.map +1 -1
  4. package/build/columns/edit.js +10 -8
  5. package/build/columns/edit.js.map +1 -1
  6. package/build/columns/edit.native.js +1 -1
  7. package/build/columns/edit.native.js.map +1 -1
  8. package/build/comments/edit/placeholder.js +8 -5
  9. package/build/comments/edit/placeholder.js.map +1 -1
  10. package/build/cover/index.js +13 -4
  11. package/build/cover/index.js.map +1 -1
  12. package/build/cover/variations.js +29 -0
  13. package/build/cover/variations.js.map +1 -0
  14. package/build/embed/edit.js +13 -14
  15. package/build/embed/edit.js.map +1 -1
  16. package/build/embed/edit.native.js +18 -14
  17. package/build/embed/edit.native.js.map +1 -1
  18. package/build/embed/util.js +39 -12
  19. package/build/embed/util.js.map +1 -1
  20. package/build/gallery/edit.js +1 -0
  21. package/build/gallery/edit.js.map +1 -1
  22. package/build/latest-posts/edit.js +10 -10
  23. package/build/latest-posts/edit.js.map +1 -1
  24. package/build/latest-posts/edit.native.js +3 -3
  25. package/build/latest-posts/edit.native.js.map +1 -1
  26. package/build/media-text/constants.js +17 -1
  27. package/build/media-text/constants.js.map +1 -1
  28. package/build/media-text/edit.js +7 -19
  29. package/build/media-text/edit.js.map +1 -1
  30. package/build/media-text/edit.native.js +6 -5
  31. package/build/media-text/edit.native.js.map +1 -1
  32. package/build/media-text/transforms.js +32 -44
  33. package/build/media-text/transforms.js.map +1 -1
  34. package/build/navigation/edit/index.js +56 -86
  35. package/build/navigation/edit/index.js.map +1 -1
  36. package/build/navigation/edit/inner-blocks.js +4 -1
  37. package/build/navigation/edit/inner-blocks.js.map +1 -1
  38. package/build/navigation/edit/menu-inspector-controls.js +2 -5
  39. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  40. package/build/navigation/edit/navigation-menu-selector.js +26 -22
  41. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  42. package/build/navigation/edit/unsaved-inner-blocks.js +14 -1
  43. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  44. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -4
  45. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  46. package/build/navigation/edit/use-create-navigation-menu.js +1 -1
  47. package/build/navigation/edit/use-create-navigation-menu.js.map +1 -1
  48. package/build/navigation/edit/use-navigation-notice.js +1 -1
  49. package/build/navigation/edit/use-navigation-notice.js.map +1 -1
  50. package/build/navigation-link/edit.js +0 -11
  51. package/build/navigation-link/edit.js.map +1 -1
  52. package/build/navigation-link/link-ui.js +0 -1
  53. package/build/navigation-link/link-ui.js.map +1 -1
  54. package/build/navigation-submenu/edit.js +1 -13
  55. package/build/navigation-submenu/edit.js.map +1 -1
  56. package/build/page-list/edit.js +59 -45
  57. package/build/page-list/edit.js.map +1 -1
  58. package/build/page-list-item/edit.js +3 -2
  59. package/build/page-list-item/edit.js.map +1 -1
  60. package/build/post-content/edit.js +6 -1
  61. package/build/post-content/edit.js.map +1 -1
  62. package/build/post-featured-image/dimension-controls.js +0 -6
  63. package/build/post-featured-image/dimension-controls.js.map +1 -1
  64. package/build/post-featured-image/edit.js +1 -1
  65. package/build/post-featured-image/edit.js.map +1 -1
  66. package/build/pullquote/deprecated.js +3 -3
  67. package/build/pullquote/deprecated.js.map +1 -1
  68. package/build/query/edit/query-placeholder.js +3 -2
  69. package/build/query/edit/query-placeholder.js.map +1 -1
  70. package/build/query/utils.js +26 -9
  71. package/build/query/utils.js.map +1 -1
  72. package/build/table/state.js +12 -4
  73. package/build/table/state.js.map +1 -1
  74. package/build/template-part/edit/import-controls.js +4 -24
  75. package/build/template-part/edit/import-controls.js.map +1 -1
  76. package/build/template-part/edit/utils/transformers.js +69 -19
  77. package/build/template-part/edit/utils/transformers.js.map +1 -1
  78. package/build/text-columns/edit.js +3 -7
  79. package/build/text-columns/edit.js.map +1 -1
  80. package/build/text-columns/save.js +11 -13
  81. package/build/text-columns/save.js.map +1 -1
  82. package/build-module/buttons/edit.native.js +1 -1
  83. package/build-module/buttons/edit.native.js.map +1 -1
  84. package/build-module/columns/edit.js +10 -7
  85. package/build-module/columns/edit.js.map +1 -1
  86. package/build-module/columns/edit.native.js +1 -1
  87. package/build-module/columns/edit.native.js.map +1 -1
  88. package/build-module/comments/edit/placeholder.js +9 -5
  89. package/build-module/comments/edit/placeholder.js.map +1 -1
  90. package/build-module/cover/index.js +12 -4
  91. package/build-module/cover/index.js.map +1 -1
  92. package/build-module/cover/variations.js +19 -0
  93. package/build-module/cover/variations.js.map +1 -0
  94. package/build-module/embed/edit.js +14 -15
  95. package/build-module/embed/edit.js.map +1 -1
  96. package/build-module/embed/edit.native.js +19 -15
  97. package/build-module/embed/edit.native.js.map +1 -1
  98. package/build-module/embed/util.js +34 -10
  99. package/build-module/embed/util.js.map +1 -1
  100. package/build-module/gallery/edit.js +1 -0
  101. package/build-module/gallery/edit.js.map +1 -1
  102. package/build-module/latest-posts/edit.js +10 -9
  103. package/build-module/latest-posts/edit.js.map +1 -1
  104. package/build-module/latest-posts/edit.native.js +3 -3
  105. package/build-module/latest-posts/edit.native.js.map +1 -1
  106. package/build-module/media-text/constants.js +10 -0
  107. package/build-module/media-text/constants.js.map +1 -1
  108. package/build-module/media-text/edit.js +2 -14
  109. package/build-module/media-text/edit.js.map +1 -1
  110. package/build-module/media-text/edit.native.js +4 -3
  111. package/build-module/media-text/edit.native.js.map +1 -1
  112. package/build-module/media-text/transforms.js +32 -44
  113. package/build-module/media-text/transforms.js.map +1 -1
  114. package/build-module/navigation/edit/index.js +58 -88
  115. package/build-module/navigation/edit/index.js.map +1 -1
  116. package/build-module/navigation/edit/inner-blocks.js +4 -1
  117. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  118. package/build-module/navigation/edit/menu-inspector-controls.js +2 -5
  119. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  120. package/build-module/navigation/edit/navigation-menu-selector.js +25 -22
  121. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  122. package/build-module/navigation/edit/unsaved-inner-blocks.js +14 -1
  123. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  124. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -4
  125. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  126. package/build-module/navigation/edit/use-create-navigation-menu.js +1 -1
  127. package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -1
  128. package/build-module/navigation/edit/use-navigation-notice.js +1 -1
  129. package/build-module/navigation/edit/use-navigation-notice.js.map +1 -1
  130. package/build-module/navigation-link/edit.js +0 -11
  131. package/build-module/navigation-link/edit.js.map +1 -1
  132. package/build-module/navigation-link/link-ui.js +0 -1
  133. package/build-module/navigation-link/link-ui.js.map +1 -1
  134. package/build-module/navigation-submenu/edit.js +1 -13
  135. package/build-module/navigation-submenu/edit.js.map +1 -1
  136. package/build-module/page-list/edit.js +61 -47
  137. package/build-module/page-list/edit.js.map +1 -1
  138. package/build-module/page-list-item/edit.js +3 -2
  139. package/build-module/page-list-item/edit.js.map +1 -1
  140. package/build-module/post-content/edit.js +6 -1
  141. package/build-module/post-content/edit.js.map +1 -1
  142. package/build-module/post-featured-image/dimension-controls.js +0 -6
  143. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  144. package/build-module/post-featured-image/edit.js +1 -1
  145. package/build-module/post-featured-image/edit.js.map +1 -1
  146. package/build-module/pullquote/deprecated.js +3 -2
  147. package/build-module/pullquote/deprecated.js.map +1 -1
  148. package/build-module/query/edit/query-placeholder.js +4 -3
  149. package/build-module/query/edit/query-placeholder.js.map +1 -1
  150. package/build-module/query/utils.js +21 -6
  151. package/build-module/query/utils.js.map +1 -1
  152. package/build-module/table/state.js +13 -5
  153. package/build-module/table/state.js.map +1 -1
  154. package/build-module/template-part/edit/import-controls.js +4 -23
  155. package/build-module/template-part/edit/import-controls.js.map +1 -1
  156. package/build-module/template-part/edit/utils/transformers.js +69 -20
  157. package/build-module/template-part/edit/utils/transformers.js.map +1 -1
  158. package/build-module/text-columns/edit.js +3 -6
  159. package/build-module/text-columns/edit.js.map +1 -1
  160. package/build-module/text-columns/save.js +11 -12
  161. package/build-module/text-columns/save.js.map +1 -1
  162. package/build-style/cover/style-rtl.css +11 -5
  163. package/build-style/cover/style.css +11 -5
  164. package/build-style/editor-rtl.css +5 -1
  165. package/build-style/editor.css +5 -1
  166. package/build-style/navigation/editor-rtl.css +1 -1
  167. package/build-style/navigation/editor.css +1 -1
  168. package/build-style/page-list/editor-rtl.css +4 -0
  169. package/build-style/page-list/editor.css +4 -0
  170. package/build-style/post-featured-image/style-rtl.css +1 -0
  171. package/build-style/post-featured-image/style.css +1 -0
  172. package/build-style/style-rtl.css +12 -5
  173. package/build-style/style.css +12 -5
  174. package/package.json +31 -31
  175. package/src/audio/test/__snapshots__/edit.native.js.snap +44 -4
  176. package/src/audio/test/__snapshots__/transforms.native.js.snap +25 -0
  177. package/src/audio/test/transforms.native.js +42 -0
  178. package/src/block/test/__snapshots__/transforms.native.js.snap +15 -0
  179. package/src/block/test/transforms.native.js +40 -0
  180. package/src/buttons/edit.native.js +1 -1
  181. package/src/buttons/test/__snapshots__/transforms.native.js.snap +31 -0
  182. package/src/buttons/test/transforms.native.js +48 -0
  183. package/src/columns/edit.js +28 -17
  184. package/src/columns/edit.native.js +1 -1
  185. package/src/columns/test/__snapshots__/transforms.native.js.snap +61 -0
  186. package/src/columns/test/transforms.native.js +91 -0
  187. package/src/comment-template/index.php +1 -2
  188. package/src/comments/edit/placeholder.js +16 -4
  189. package/src/cover/block.json +9 -3
  190. package/src/cover/index.js +2 -0
  191. package/src/cover/style.scss +16 -7
  192. package/src/cover/test/__snapshots__/transforms.native.js.snap +73 -0
  193. package/src/cover/test/transforms.native.js +112 -0
  194. package/src/cover/variations.js +20 -0
  195. package/src/embed/edit.js +16 -12
  196. package/src/embed/edit.native.js +28 -18
  197. package/src/embed/test/__snapshots__/transforms.native.js.snap +23 -0
  198. package/src/embed/test/index.js +12 -0
  199. package/src/embed/test/transforms.native.js +44 -0
  200. package/src/embed/util.js +29 -8
  201. package/src/file/test/__snapshots__/edit.native.js.snap +18 -2
  202. package/src/file/test/__snapshots__/transforms.native.js.snap +19 -0
  203. package/src/file/test/transforms.native.js +42 -0
  204. package/src/freeform/test/__snapshots__/transforms.native.js.snap +19 -0
  205. package/src/freeform/test/transforms.native.js +39 -0
  206. package/src/gallery/edit.js +3 -0
  207. package/src/gallery/test/__snapshots__/transforms.native.js.snap +53 -0
  208. package/src/gallery/test/transforms.native.js +52 -0
  209. package/src/group/test/__snapshots__/transforms.native.js.snap +35 -0
  210. package/src/group/test/transforms.native.js +75 -0
  211. package/src/heading/test/__snapshots__/transforms.native.js.snap +47 -0
  212. package/src/heading/test/transforms.native.js +46 -0
  213. package/src/image/test/__snapshots__/transforms.native.js.snap +49 -0
  214. package/src/image/test/transforms.native.js +48 -0
  215. package/src/latest-posts/edit.js +11 -16
  216. package/src/latest-posts/edit.native.js +3 -3
  217. package/src/latest-posts/test/__snapshots__/transforms.native.js.snap +15 -0
  218. package/src/latest-posts/test/transforms.native.js +61 -0
  219. package/src/list/test/__snapshots__/transforms.native.js.snap +85 -0
  220. package/src/list/test/transforms.native.js +56 -0
  221. package/src/media-text/constants.js +16 -0
  222. package/src/media-text/edit.js +8 -18
  223. package/src/media-text/edit.native.js +3 -9
  224. package/src/media-text/test/__snapshots__/transforms.native.js.snap +73 -0
  225. package/src/media-text/test/transforms.native.js +112 -0
  226. package/src/media-text/transforms.js +24 -51
  227. package/src/missing/test/__snapshots__/edit.native.js.snap +20 -2
  228. package/src/more/test/__snapshots__/transforms.native.js.snap +19 -0
  229. package/src/more/test/transforms.native.js +42 -0
  230. package/src/navigation/edit/index.js +104 -107
  231. package/src/navigation/edit/inner-blocks.js +3 -0
  232. package/src/navigation/edit/menu-inspector-controls.js +2 -7
  233. package/src/navigation/edit/navigation-menu-selector.js +41 -25
  234. package/src/navigation/edit/unsaved-inner-blocks.js +46 -33
  235. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +82 -83
  236. package/src/navigation/edit/use-create-navigation-menu.js +1 -1
  237. package/src/navigation/edit/use-navigation-notice.js +1 -1
  238. package/src/navigation/editor.scss +23 -20
  239. package/src/navigation/index.php +18 -39
  240. package/src/navigation-link/edit.js +0 -9
  241. package/src/navigation-link/index.php +5 -8
  242. package/src/navigation-link/link-ui.js +0 -1
  243. package/src/navigation-submenu/edit.js +0 -10
  244. package/src/navigation-submenu/index.php +23 -6
  245. package/src/nextpage/test/__snapshots__/transforms.native.js.snap +19 -0
  246. package/src/nextpage/test/transforms.native.js +42 -0
  247. package/src/page-list/edit.js +78 -44
  248. package/src/page-list/editor.scss +6 -0
  249. package/src/page-list-item/edit.js +2 -3
  250. package/src/paragraph/test/__snapshots__/transforms.native.js.snap +59 -0
  251. package/src/paragraph/test/transforms.native.js +50 -0
  252. package/src/post-content/edit.js +5 -1
  253. package/src/post-excerpt/index.php +1 -2
  254. package/src/post-featured-image/dimension-controls.js +0 -8
  255. package/src/post-featured-image/edit.js +1 -1
  256. package/src/post-featured-image/style.scss +1 -0
  257. package/src/preformatted/test/__snapshots__/transforms.native.js.snap +31 -0
  258. package/src/preformatted/test/transforms.native.js +42 -0
  259. package/src/pullquote/deprecated.js +2 -6
  260. package/src/pullquote/test/__snapshots__/transforms.native.js.snap +47 -0
  261. package/src/pullquote/test/transforms.native.js +46 -0
  262. package/src/query/edit/query-placeholder.js +10 -5
  263. package/src/query/test/utils.js +33 -1
  264. package/src/query/utils.js +19 -6
  265. package/src/quote/test/__snapshots__/transforms.native.js.snap +39 -0
  266. package/src/quote/test/transforms.native.js +67 -0
  267. package/src/search/test/__snapshots__/edit.native.js.snap +11 -1
  268. package/src/search/test/__snapshots__/transforms.native.js.snap +15 -0
  269. package/src/search/test/transforms.native.js +40 -0
  270. package/src/separator/test/__snapshots__/transforms.native.js.snap +19 -0
  271. package/src/separator/test/transforms.native.js +42 -0
  272. package/src/shortcode/test/__snapshots__/transforms.native.js.snap +19 -0
  273. package/src/shortcode/test/transforms.native.js +42 -0
  274. package/src/social-links/test/__snapshots__/transforms.native.js.snap +31 -0
  275. package/src/social-links/test/transforms.native.js +53 -0
  276. package/src/spacer/test/__snapshots__/transforms.native.js.snap +19 -0
  277. package/src/spacer/test/transforms.native.js +42 -0
  278. package/src/table/state.js +8 -17
  279. package/src/template-part/edit/import-controls.js +2 -29
  280. package/src/template-part/edit/utils/transformers.js +96 -19
  281. package/src/text-columns/edit.js +1 -6
  282. package/src/text-columns/save.js +1 -6
  283. package/src/verse/test/__snapshots__/transforms.native.js.snap +25 -0
  284. package/src/verse/test/transforms.native.js +42 -0
  285. package/src/video/test/__snapshots__/transforms.native.js.snap +41 -0
  286. package/src/video/test/transforms.native.js +48 -0
  287. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,53 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Gallery 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:gallery {"columns":8,"linkTo":"none","className":"alignfull"} -->
7
+ <figure class="wp-block-gallery has-nested-images columns-8 is-cropped alignfull"><!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
8
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon.png" alt=""/><figcaption class="wp-element-caption">Paragraph</figcaption></figure>
9
+ <!-- /wp:image -->
10
+
11
+ <!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
12
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon-Heading.png" alt=""/><figcaption class="wp-element-caption">Heading</figcaption></figure>
13
+ <!-- /wp:image -->
14
+
15
+ <!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
16
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon-Subheading.png" alt=""/><figcaption class="wp-element-caption">Subheading</figcaption></figure>
17
+ <!-- /wp:image --></figure>
18
+ <!-- /wp:gallery --></div>
19
+ <!-- /wp:column --></div>
20
+ <!-- /wp:columns -->"
21
+ `;
22
+
23
+ exports[`Gallery block transformations to Group block 1`] = `
24
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
25
+ <div class="wp-block-group"><!-- wp:gallery {"columns":8,"linkTo":"none","className":"alignfull"} -->
26
+ <figure class="wp-block-gallery has-nested-images columns-8 is-cropped alignfull"><!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
27
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon.png" alt=""/><figcaption class="wp-element-caption">Paragraph</figcaption></figure>
28
+ <!-- /wp:image -->
29
+
30
+ <!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
31
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon-Heading.png" alt=""/><figcaption class="wp-element-caption">Heading</figcaption></figure>
32
+ <!-- /wp:image -->
33
+
34
+ <!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
35
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon-Subheading.png" alt=""/><figcaption class="wp-element-caption">Subheading</figcaption></figure>
36
+ <!-- /wp:image --></figure>
37
+ <!-- /wp:gallery --></div>
38
+ <!-- /wp:group -->"
39
+ `;
40
+
41
+ exports[`Gallery block transformations to Image block 1`] = `
42
+ "<!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
43
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon.png" alt=""/><figcaption class="wp-element-caption">Paragraph</figcaption></figure>
44
+ <!-- /wp:image -->
45
+
46
+ <!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
47
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon-Heading.png" alt=""/><figcaption class="wp-element-caption">Heading</figcaption></figure>
48
+ <!-- /wp:image -->
49
+
50
+ <!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
51
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon-Subheading.png" alt=""/><figcaption class="wp-element-caption">Subheading</figcaption></figure>
52
+ <!-- /wp:image -->"
53
+ `;
@@ -0,0 +1,52 @@
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 = 'Gallery';
13
+ const initialHtml = `
14
+ <!-- wp:gallery {"columns":8,"linkTo":"none","className":"alignfull"} -->
15
+ <figure class="wp-block-gallery has-nested-images columns-8 is-cropped alignfull"><!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
16
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon.png" alt=""/><figcaption class="wp-element-caption">Paragraph</figcaption></figure>
17
+ <!-- /wp:image -->
18
+
19
+ <!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
20
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon-Heading.png" alt=""/><figcaption class="wp-element-caption">Heading</figcaption></figure>
21
+ <!-- /wp:image -->
22
+
23
+ <!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
24
+ <figure class="wp-block-image size-large"><img src="https://wordpress.org/gutenberg/files/2018/07/Block-Icon-Subheading.png" alt=""/><figcaption class="wp-element-caption">Subheading</figcaption></figure>
25
+ <!-- /wp:image --></figure>
26
+ <!-- /wp:gallery -->`;
27
+
28
+ const tranformsWithInnerBlocks = [ 'Columns', 'Group' ];
29
+ const blockTransforms = [ 'Image', ...tranformsWithInnerBlocks ];
30
+
31
+ setupCoreBlocks();
32
+
33
+ describe( `${ block } block transformations`, () => {
34
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
35
+ const screen = await initializeEditor( { initialHtml } );
36
+ const newBlock = await transformBlock( screen, block, blockTransform, {
37
+ isMediaBlock: true,
38
+ hasInnerBlocks: tranformsWithInnerBlocks.includes( blockTransform ),
39
+ } );
40
+ expect( newBlock ).toBeVisible();
41
+ expect( getEditorHtml() ).toMatchSnapshot();
42
+ } );
43
+
44
+ it( 'matches expected transformation options', async () => {
45
+ const screen = await initializeEditor( { initialHtml } );
46
+ const transformOptions = await getBlockTransformOptions(
47
+ screen,
48
+ block
49
+ );
50
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
51
+ } );
52
+ } );
@@ -0,0 +1,35 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Group 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:group -->
7
+ <div id="this-is-another-anchor" class="wp-block-group"><!-- wp:paragraph -->
8
+ <p>One.</p>
9
+ <!-- /wp:paragraph -->
10
+
11
+ <!-- wp:paragraph -->
12
+ <p>Two</p>
13
+ <!-- /wp:paragraph -->
14
+
15
+ <!-- wp:paragraph -->
16
+ <p>Three.</p>
17
+ <!-- /wp:paragraph --></div>
18
+ <!-- /wp:group --></div>
19
+ <!-- /wp:column --></div>
20
+ <!-- /wp:columns -->"
21
+ `;
22
+
23
+ exports[`Group block transforms unwraps content 1`] = `
24
+ "<!-- wp:paragraph -->
25
+ <p>One.</p>
26
+ <!-- /wp:paragraph -->
27
+
28
+ <!-- wp:paragraph -->
29
+ <p>Two</p>
30
+ <!-- /wp:paragraph -->
31
+
32
+ <!-- wp:paragraph -->
33
+ <p>Three.</p>
34
+ <!-- /wp:paragraph -->"
35
+ `;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ getEditorHtml,
6
+ initializeEditor,
7
+ setupCoreBlocks,
8
+ transformBlock,
9
+ getBlock,
10
+ openBlockActionsMenu,
11
+ fireEvent,
12
+ getBlockTransformOptions,
13
+ } from 'test/helpers';
14
+
15
+ const block = 'Group';
16
+ const initialHtml = `
17
+ <!-- wp:group -->
18
+ <div id="this-is-another-anchor" class="wp-block-group"><!-- wp:paragraph -->
19
+ <p>One.</p>
20
+ <!-- /wp:paragraph -->
21
+
22
+ <!-- wp:paragraph -->
23
+ <p>Two</p>
24
+ <!-- /wp:paragraph -->
25
+
26
+ <!-- wp:paragraph -->
27
+ <p>Three.</p>
28
+ <!-- /wp:paragraph --></div>
29
+ <!-- /wp:group -->`;
30
+
31
+ const transformsWithInnerBlocks = [ 'Columns' ];
32
+ const blockTransforms = [ ...transformsWithInnerBlocks ];
33
+
34
+ setupCoreBlocks();
35
+
36
+ describe( `${ block } block transforms`, () => {
37
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
38
+ const screen = await initializeEditor( { initialHtml } );
39
+ const newBlock = await transformBlock( screen, block, blockTransform, {
40
+ hasInnerBlocks:
41
+ transformsWithInnerBlocks.includes( blockTransform ),
42
+ } );
43
+ expect( newBlock ).toBeVisible();
44
+ expect( getEditorHtml() ).toMatchSnapshot();
45
+ } );
46
+
47
+ it( 'unwraps content', async () => {
48
+ const screen = await initializeEditor( { initialHtml } );
49
+ const { getByText } = screen;
50
+ fireEvent.press( getBlock( screen, block ) );
51
+
52
+ await openBlockActionsMenu( screen );
53
+ fireEvent.press( getByText( 'Transform block…' ) );
54
+ fireEvent.press( getByText( 'Unwrap' ) );
55
+
56
+ // The first block created is the content of the Paragraph block.
57
+ const paragraph = getBlock( screen, 'Paragraph', 0 );
58
+ expect( paragraph ).toBeVisible();
59
+ // The second block created is the content of the citation element.
60
+ const citation = getBlock( screen, 'Paragraph', 1 );
61
+ expect( citation ).toBeVisible();
62
+
63
+ expect( getEditorHtml() ).toMatchSnapshot();
64
+ } );
65
+
66
+ it( 'matches expected transformation options', async () => {
67
+ const screen = await initializeEditor( { initialHtml } );
68
+ const transformOptions = await getBlockTransformOptions(
69
+ screen,
70
+ block,
71
+ { canUnwrap: true }
72
+ );
73
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
74
+ } );
75
+ } );
@@ -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
+ } );
@@ -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 alignwide 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,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' ) }
@@ -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
+ } );