@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
@@ -19,7 +19,7 @@ import { __ } from '@wordpress/i18n';
19
19
  /**
20
20
  * Internal dependencies
21
21
  */
22
- import { useScopedBlockVariations } from '../utils';
22
+ import { useScopedBlockVariations, useBlockNameForPatterns } from '../utils';
23
23
 
24
24
  export default function QueryPlaceholder( {
25
25
  attributes,
@@ -30,6 +30,10 @@ export default function QueryPlaceholder( {
30
30
  } ) {
31
31
  const [ isStartingBlank, setIsStartingBlank ] = useState( false );
32
32
  const blockProps = useBlockProps();
33
+ const blockNameForPatterns = useBlockNameForPatterns(
34
+ clientId,
35
+ attributes
36
+ );
33
37
 
34
38
  const { blockType, allVariations, hasPatterns } = useSelect(
35
39
  ( select ) => {
@@ -37,15 +41,16 @@ export default function QueryPlaceholder( {
37
41
  const { getBlockRootClientId, getPatternsByBlockTypes } =
38
42
  select( blockEditorStore );
39
43
  const rootClientId = getBlockRootClientId( clientId );
40
-
41
44
  return {
42
45
  blockType: getBlockType( name ),
43
46
  allVariations: getBlockVariations( name ),
44
- hasPatterns: !! getPatternsByBlockTypes( name, rootClientId )
45
- .length,
47
+ hasPatterns: !! getPatternsByBlockTypes(
48
+ blockNameForPatterns,
49
+ rootClientId
50
+ ).length,
46
51
  };
47
52
  },
48
- [ name, clientId ]
53
+ [ name, blockNameForPatterns, clientId ]
49
54
  );
50
55
 
51
56
  const matchingVariation = getMatchingVariation( attributes, allVariations );
@@ -2,7 +2,7 @@
2
2
  * Internal dependencies
3
3
  */
4
4
  import { terms } from './fixtures';
5
- import { getEntitiesInfo } from '../utils';
5
+ import { getEntitiesInfo, getValueFromObjectPath } from '../utils';
6
6
 
7
7
  describe( 'Query block utils', () => {
8
8
  describe( 'getEntitiesInfo', () => {
@@ -29,4 +29,36 @@ describe( 'Query block utils', () => {
29
29
  );
30
30
  } );
31
31
  } );
32
+
33
+ describe( 'getValueFromObjectPath', () => {
34
+ it( 'should return undefined when path is empty', () => {
35
+ const object = { foo: 'bar' };
36
+ const result = getValueFromObjectPath( object, '' );
37
+ expect( result ).toBeUndefined();
38
+ } );
39
+
40
+ it( 'should return undefined when path does not exist', () => {
41
+ const object = { foo: 'bar' };
42
+ const result = getValueFromObjectPath( object, 'baz' );
43
+ expect( result ).toBeUndefined();
44
+ } );
45
+
46
+ it( 'should return undefined when a deeper path does not exist', () => {
47
+ const object = { foo: { bar: 'baz' } };
48
+ const result = getValueFromObjectPath( object, 'foo.test' );
49
+ expect( result ).toBeUndefined();
50
+ } );
51
+
52
+ it( 'should return the corresponding value of a single level path', () => {
53
+ const object = { foo: 'bar' };
54
+ const result = getValueFromObjectPath( object, 'foo' );
55
+ expect( result ).toBe( 'bar' );
56
+ } );
57
+
58
+ it( 'should return the value of a deeper path', () => {
59
+ const object = { foo: { bar: { baz: 'test' } } };
60
+ const result = getValueFromObjectPath( object, 'foo.bar.baz' );
61
+ expect( result ).toBe( 'test' );
62
+ } );
63
+ } );
32
64
  } );
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { get } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -62,6 +57,24 @@ export const getEntitiesInfo = ( entities ) => {
62
57
  };
63
58
  };
64
59
 
60
+ /**
61
+ * Helper util to return a value from a certain path of the object.
62
+ * Path is specified as a string of properties, separated by dots,
63
+ * for example: "parent.child".
64
+ *
65
+ * @param {Object} object Input object.
66
+ * @param {string} path Path to the object property.
67
+ * @return {*} Value of the object property at the specified path.
68
+ */
69
+ export const getValueFromObjectPath = ( object, path ) => {
70
+ const normalizedPath = path.split( '.' );
71
+ let value = object;
72
+ normalizedPath.forEach( ( fieldName ) => {
73
+ value = value?.[ fieldName ];
74
+ } );
75
+ return value;
76
+ };
77
+
65
78
  /**
66
79
  * Helper util to map records to add a `name` prop from a
67
80
  * provided path, in order to handle all entities in the same
@@ -74,7 +87,7 @@ export const getEntitiesInfo = ( entities ) => {
74
87
  export const mapToIHasNameAndId = ( entities, path ) => {
75
88
  return ( entities || [] ).map( ( entity ) => ( {
76
89
  ...entity,
77
- name: decodeEntities( get( entity, path ) ),
90
+ name: decodeEntities( getValueFromObjectPath( entity, path ) ),
78
91
  } ) );
79
92
  };
80
93
 
@@ -28,12 +28,9 @@ function render_block_core_query_title( $attributes ) {
28
28
  if ( $is_archive ) {
29
29
  $show_prefix = isset( $attributes['showPrefix'] ) ? $attributes['showPrefix'] : true;
30
30
  if ( ! $show_prefix ) {
31
- $filter_title = function( $title, $original_title ) {
32
- return $original_title;
33
- };
34
- add_filter( 'get_the_archive_title', $filter_title, 10, 2 );
31
+ add_filter( 'get_the_archive_title_prefix', '__return_empty_string', 1 );
35
32
  $title = get_the_archive_title();
36
- remove_filter( 'get_the_archive_title', $filter_title, 10, 2 );
33
+ remove_filter( 'get_the_archive_title_prefix', '__return_empty_string', 1 );
37
34
  } else {
38
35
  $title = get_the_archive_title();
39
36
  }
@@ -29,6 +29,7 @@
29
29
  },
30
30
  "supports": {
31
31
  "anchor": true,
32
+ "html": false,
32
33
  "__experimentalOnEnter": true,
33
34
  "typography": {
34
35
  "fontSize": true,
@@ -0,0 +1,39 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Quote 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:quote {"align":"left","className":"is-style-large"} -->
7
+ <blockquote class="wp-block-quote has-text-align-left is-style-large"><!-- wp:paragraph -->
8
+ <p>"This will make running your own blog a viable alternative again."</p>
9
+ <!-- /wp:paragraph --><cite>— <a href="https://twitter.com/azumbrunnen_/status/1019347243084800005">Adrian Zumbrunnen</a></cite></blockquote>
10
+ <!-- /wp:quote --></div>
11
+ <!-- /wp:column --></div>
12
+ <!-- /wp:columns -->"
13
+ `;
14
+
15
+ exports[`Quote block transforms to Group block 1`] = `
16
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
17
+ <div class="wp-block-group"><!-- wp:quote {"align":"left","className":"is-style-large"} -->
18
+ <blockquote class="wp-block-quote has-text-align-left is-style-large"><!-- wp:paragraph -->
19
+ <p>"This will make running your own blog a viable alternative again."</p>
20
+ <!-- /wp:paragraph --><cite>— <a href="https://twitter.com/azumbrunnen_/status/1019347243084800005">Adrian Zumbrunnen</a></cite></blockquote>
21
+ <!-- /wp:quote --></div>
22
+ <!-- /wp:group -->"
23
+ `;
24
+
25
+ exports[`Quote block transforms to Pullquote block 1`] = `
26
+ "<!-- wp:pullquote -->
27
+ <figure class="wp-block-pullquote"><blockquote><p>"This will make running your own blog a viable alternative again."</p><cite>— <a href="https://twitter.com/azumbrunnen_/status/1019347243084800005">Adrian Zumbrunnen</a></cite></blockquote></figure>
28
+ <!-- /wp:pullquote -->"
29
+ `;
30
+
31
+ exports[`Quote block transforms unwraps content 1`] = `
32
+ "<!-- wp:paragraph -->
33
+ <p>"This will make running your own blog a viable alternative again."</p>
34
+ <!-- /wp:paragraph -->
35
+
36
+ <!-- wp:paragraph -->
37
+ <p>— <a href="https://twitter.com/azumbrunnen_/status/1019347243084800005">Adrian Zumbrunnen</a></p>
38
+ <!-- /wp:paragraph -->"
39
+ `;
@@ -0,0 +1,67 @@
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 = 'Quote';
16
+ const initialHtml = `
17
+ <!-- wp:quote {"align":"left","className":"is-style-large"} -->
18
+ <blockquote class="wp-block-quote has-text-align-left is-style-large"><!-- wp:paragraph -->
19
+ <p>"This will make running your own blog a viable alternative again."</p>
20
+ <!-- /wp:paragraph --><cite>— <a href="https://twitter.com/azumbrunnen_/status/1019347243084800005">Adrian Zumbrunnen</a></cite></blockquote>
21
+ <!-- /wp:quote -->`;
22
+
23
+ const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
24
+ const blockTransforms = [ 'Pullquote', ...transformsWithInnerBlocks ];
25
+
26
+ setupCoreBlocks();
27
+
28
+ describe( `${ block } block transforms`, () => {
29
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
30
+ const screen = await initializeEditor( { initialHtml } );
31
+ const newBlock = await transformBlock( screen, block, blockTransform, {
32
+ hasInnerBlocks:
33
+ transformsWithInnerBlocks.includes( blockTransform ),
34
+ } );
35
+ expect( newBlock ).toBeVisible();
36
+ expect( getEditorHtml() ).toMatchSnapshot();
37
+ } );
38
+
39
+ it( 'unwraps content', async () => {
40
+ const screen = await initializeEditor( { initialHtml } );
41
+ const { getByText } = screen;
42
+ fireEvent.press( getBlock( screen, block ) );
43
+
44
+ await openBlockActionsMenu( screen );
45
+ fireEvent.press( getByText( 'Transform block…' ) );
46
+ fireEvent.press( getByText( 'Unwrap' ) );
47
+
48
+ // The first block created is the content of the Paragraph block.
49
+ const paragraph = getBlock( screen, 'Paragraph', 0 );
50
+ expect( paragraph ).toBeVisible();
51
+ // The second block created is the content of the citation element.
52
+ const citation = getBlock( screen, 'Paragraph', 1 );
53
+ expect( citation ).toBeVisible();
54
+
55
+ expect( getEditorHtml() ).toMatchSnapshot();
56
+ } );
57
+
58
+ it( 'matches expected transformation options', async () => {
59
+ const screen = await initializeEditor( { initialHtml } );
60
+ const transformOptions = await getBlockTransformOptions(
61
+ screen,
62
+ block,
63
+ { canUnwrap: true }
64
+ );
65
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
66
+ } );
67
+ } );
@@ -1,5 +1,8 @@
1
+ $button-spacing-x: $grid-unit-10 + math.div($grid-unit-05, 2); // 10px
2
+ $button-spacing-y: math.div($grid-unit-15, 2); // 6px
3
+
1
4
  .wp-block-search__button {
2
- margin-left: 0.625em;
5
+ margin-left: $button-spacing-x;
3
6
  word-break: normal;
4
7
 
5
8
  &.has-icon {
@@ -7,8 +10,8 @@
7
10
  }
8
11
 
9
12
  svg {
10
- min-width: 1.5em;
11
- min-height: 1.5em;
13
+ min-width: $grid-unit-30;
14
+ min-height: $grid-unit-30;
12
15
  fill: currentColor;
13
16
  vertical-align: text-bottom;
14
17
  }
@@ -17,8 +20,8 @@
17
20
  // These rules are set to zero specificity to keep the default styles for search buttons.
18
21
  // They are needed for backwards compatibility.
19
22
  :where(.wp-block-search__button) {
20
- border: 1px solid #ccc;
21
- padding: 0.375em 0.625em;
23
+ border: 1px solid $gray-400;
24
+ padding: $button-spacing-y $button-spacing-x;
22
25
  }
23
26
 
24
27
  .wp-block-search__inside-wrapper {
@@ -33,12 +36,12 @@
33
36
  }
34
37
 
35
38
  .wp-block-search__input {
36
- padding: 8px;
39
+ padding: $grid-unit-10;
37
40
  flex-grow: 1;
38
41
  margin-left: 0;
39
42
  margin-right: 0;
40
- min-width: 3em;
41
- border: 1px solid #949494;
43
+ min-width: 3rem;
44
+ border: 1px solid $gray-600;
42
45
  // !important used to forcibly prevent undesired application of
43
46
  // text-decoration styles on the input field.
44
47
  text-decoration: unset !important;
@@ -52,13 +55,14 @@
52
55
 
53
56
  // We are lowering the specificity so that the button element can override the rule for the button inside the search block.
54
57
  :where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) {
55
- padding: 4px;
56
- border: 1px solid #949494;
58
+ padding: $grid-unit-05;
59
+ border: 1px solid $gray-600;
60
+ box-sizing: border-box;
57
61
 
58
62
  .wp-block-search__input {
59
63
  border-radius: 0;
60
64
  border: none;
61
- padding: 0 0 0 0.25em;
65
+ padding: 0 $grid-unit-05;
62
66
 
63
67
  &:focus {
64
68
  outline: none;
@@ -67,7 +71,7 @@
67
71
 
68
72
  // For lower specificity.
69
73
  :where(.wp-block-search__button) {
70
- padding: 0.125em 0.5em;
74
+ padding: $grid-unit-05 $grid-unit-10;
71
75
  }
72
76
  }
73
77
 
@@ -314,7 +314,17 @@ exports[`Search Block renders block with icon button option matches snapshot 1`]
314
314
  ]
315
315
  }
316
316
  >
317
- Svg
317
+ <Svg
318
+ fill="gray"
319
+ height={24}
320
+ onLayout={[Function]}
321
+ style={{}}
322
+ viewBox="0 0 24 24"
323
+ width={24}
324
+ xmlns="http://www.w3.org/2000/svg"
325
+ >
326
+ Path
327
+ </Svg>
318
328
  </View>
319
329
  </View>
320
330
  </View>
@@ -0,0 +1,15 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Search 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:search {"label":"Search","buttonText":"Search"} /--></div>
7
+ <!-- /wp:column --></div>
8
+ <!-- /wp:columns -->"
9
+ `;
10
+
11
+ exports[`Search block transforms to Group block 1`] = `
12
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
13
+ <div class="wp-block-group"><!-- wp:search {"label":"Search","buttonText":"Search"} /--></div>
14
+ <!-- /wp:group -->"
15
+ `;
@@ -0,0 +1,40 @@
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 = 'Search';
13
+ const initialHtml = `
14
+ <!-- wp:search {"label":"Search","buttonText":"Search"} /-->`;
15
+
16
+ const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
17
+ const blockTransforms = [ ...transformsWithInnerBlocks ];
18
+
19
+ setupCoreBlocks();
20
+
21
+ describe( `${ block } block transforms`, () => {
22
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
23
+ const screen = await initializeEditor( { initialHtml } );
24
+ const newBlock = await transformBlock( screen, block, blockTransform, {
25
+ hasInnerBlocks:
26
+ transformsWithInnerBlocks.includes( blockTransform ),
27
+ } );
28
+ expect( newBlock ).toBeVisible();
29
+ expect( getEditorHtml() ).toMatchSnapshot();
30
+ } );
31
+
32
+ it( 'matches expected transformation options', async () => {
33
+ const screen = await initializeEditor( { initialHtml } );
34
+ const transformOptions = await getBlockTransformOptions(
35
+ screen,
36
+ block
37
+ );
38
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
39
+ } );
40
+ } );
@@ -0,0 +1,19 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Separator 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:separator -->
7
+ <hr class="wp-block-separator has-alpha-channel-opacity"/>
8
+ <!-- /wp:separator --></div>
9
+ <!-- /wp:column --></div>
10
+ <!-- /wp:columns -->"
11
+ `;
12
+
13
+ exports[`Separator block transforms to Group block 1`] = `
14
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
15
+ <div class="wp-block-group"><!-- wp:separator -->
16
+ <hr class="wp-block-separator has-alpha-channel-opacity"/>
17
+ <!-- /wp:separator --></div>
18
+ <!-- /wp:group -->"
19
+ `;
@@ -0,0 +1,42 @@
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 = 'Separator';
13
+ const initialHtml = `
14
+ <!-- wp:separator -->
15
+ <hr class="wp-block-separator has-alpha-channel-opacity"/>
16
+ <!-- /wp:separator -->`;
17
+
18
+ const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
19
+ const blockTransforms = [ ...transformsWithInnerBlocks ];
20
+
21
+ setupCoreBlocks();
22
+
23
+ describe( `${ block } block transforms`, () => {
24
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
25
+ const screen = await initializeEditor( { initialHtml } );
26
+ const newBlock = await transformBlock( screen, block, blockTransform, {
27
+ hasInnerBlocks:
28
+ transformsWithInnerBlocks.includes( blockTransform ),
29
+ } );
30
+ expect( newBlock ).toBeVisible();
31
+ expect( getEditorHtml() ).toMatchSnapshot();
32
+ } );
33
+
34
+ it( 'matches expected transformation options', async () => {
35
+ const screen = await initializeEditor( { initialHtml } );
36
+ const transformOptions = await getBlockTransformOptions(
37
+ screen,
38
+ block
39
+ );
40
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
41
+ } );
42
+ } );
@@ -0,0 +1,19 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Shortcode 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:shortcode -->
7
+ [youtube https://www.youtube.com/watch?v=ssfHW5lwFZg]
8
+ <!-- /wp:shortcode --></div>
9
+ <!-- /wp:column --></div>
10
+ <!-- /wp:columns -->"
11
+ `;
12
+
13
+ exports[`Shortcode block transforms to Group block 1`] = `
14
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
15
+ <div class="wp-block-group"><!-- wp:shortcode -->
16
+ [youtube https://www.youtube.com/watch?v=ssfHW5lwFZg]
17
+ <!-- /wp:shortcode --></div>
18
+ <!-- /wp:group -->"
19
+ `;
@@ -0,0 +1,42 @@
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 = 'Shortcode';
13
+ const initialHtml = `
14
+ <!-- wp:shortcode -->
15
+ [youtube https://www.youtube.com/watch?v=ssfHW5lwFZg]
16
+ <!-- /wp:shortcode -->`;
17
+
18
+ const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
19
+ const blockTransforms = [ ...transformsWithInnerBlocks ];
20
+
21
+ setupCoreBlocks();
22
+
23
+ describe( `${ block } block transforms`, () => {
24
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
25
+ const screen = await initializeEditor( { initialHtml } );
26
+ const newBlock = await transformBlock( screen, block, blockTransform, {
27
+ hasInnerBlocks:
28
+ transformsWithInnerBlocks.includes( blockTransform ),
29
+ } );
30
+ expect( newBlock ).toBeVisible();
31
+ expect( getEditorHtml() ).toMatchSnapshot();
32
+ } );
33
+
34
+ it( 'matches expected transformation options', async () => {
35
+ const screen = await initializeEditor( { initialHtml } );
36
+ const transformOptions = await getBlockTransformOptions(
37
+ screen,
38
+ block
39
+ );
40
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
41
+ } );
42
+ } );
@@ -0,0 +1,31 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Social Icons 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:social-links -->
7
+ <ul class="wp-block-social-links"><!-- wp:social-link {"url":"https://wordpress.org","service":"wordpress"} /-->
8
+
9
+ <!-- wp:social-link {"service":"facebook"} /-->
10
+
11
+ <!-- wp:social-link {"service":"twitter"} /-->
12
+
13
+ <!-- wp:social-link {"service":"instagram"} /--></ul>
14
+ <!-- /wp:social-links --></div>
15
+ <!-- /wp:column --></div>
16
+ <!-- /wp:columns -->"
17
+ `;
18
+
19
+ exports[`Social Icons block transforms to Group block 1`] = `
20
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
21
+ <div class="wp-block-group"><!-- wp:social-links -->
22
+ <ul class="wp-block-social-links"><!-- wp:social-link {"url":"https://wordpress.org","service":"wordpress"} /-->
23
+
24
+ <!-- wp:social-link {"service":"facebook"} /-->
25
+
26
+ <!-- wp:social-link {"service":"twitter"} /-->
27
+
28
+ <!-- wp:social-link {"service":"instagram"} /--></ul>
29
+ <!-- /wp:social-links --></div>
30
+ <!-- /wp:group -->"
31
+ `;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ getEditorHtml,
6
+ initializeEditor,
7
+ setupCoreBlocks,
8
+ transformBlock,
9
+ getBlockTransformOptions,
10
+ } from 'test/helpers';
11
+ import { Animated } from 'react-native';
12
+
13
+ const block = 'Social Icons';
14
+ const initialHtml = `
15
+ <!-- wp:social-links -->
16
+ <ul class="wp-block-social-links"><!-- wp:social-link {"url":"https://wordpress.org","service":"wordpress"} /-->
17
+ <!-- wp:social-link {"service":"facebook"} /-->
18
+ <!-- wp:social-link {"service":"twitter"} /-->
19
+ <!-- wp:social-link {"service":"instagram"} /--></ul>
20
+ <!-- /wp:social-links -->`;
21
+
22
+ const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
23
+ const blockTransforms = [ ...transformsWithInnerBlocks ];
24
+
25
+ setupCoreBlocks();
26
+
27
+ describe( `${ block } block transforms`, () => {
28
+ beforeAll( () => {
29
+ // Mock call to Animated.sequence for animating colors.
30
+ jest.spyOn( Animated, 'sequence' ).mockImplementation( () => ( {
31
+ start: ( cb ) => cb(),
32
+ } ) );
33
+ } );
34
+
35
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
36
+ const screen = await initializeEditor( { initialHtml } );
37
+ const newBlock = await transformBlock( screen, block, blockTransform, {
38
+ hasInnerBlocks:
39
+ transformsWithInnerBlocks.includes( blockTransform ),
40
+ } );
41
+ expect( newBlock ).toBeVisible();
42
+ expect( getEditorHtml() ).toMatchSnapshot();
43
+ } );
44
+
45
+ it( 'matches expected transformation options', async () => {
46
+ const screen = await initializeEditor( { initialHtml } );
47
+ const transformOptions = await getBlockTransformOptions(
48
+ screen,
49
+ block
50
+ );
51
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
52
+ } );
53
+ } );