@wordpress/block-library 9.48.0 → 10.0.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 (1102) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/build/audio/edit.cjs +8 -1
  3. package/build/audio/edit.cjs.map +2 -2
  4. package/build/breadcrumbs/edit.cjs +1 -2
  5. package/build/breadcrumbs/edit.cjs.map +2 -2
  6. package/build/button/edit.cjs +1 -2
  7. package/build/button/edit.cjs.map +2 -2
  8. package/build/categories/edit.cjs +1 -1
  9. package/build/categories/edit.cjs.map +1 -1
  10. package/build/code/edit.cjs +1 -1
  11. package/build/code/edit.cjs.map +2 -2
  12. package/build/code/index.cjs +1 -1
  13. package/build/code/index.cjs.map +1 -1
  14. package/build/columns/transforms.cjs +65 -0
  15. package/build/columns/transforms.cjs.map +2 -2
  16. package/build/columns/utils.cjs.map +1 -1
  17. package/build/comments/edit/comments-legacy.cjs +1 -1
  18. package/build/comments/edit/comments-legacy.cjs.map +1 -1
  19. package/build/comments/edit/placeholder.cjs +4 -4
  20. package/build/comments/edit/placeholder.cjs.map +1 -1
  21. package/build/comments-pagination-next/edit.cjs +2 -2
  22. package/build/comments-pagination-next/edit.cjs.map +1 -1
  23. package/build/comments-pagination-previous/edit.cjs +2 -2
  24. package/build/comments-pagination-previous/edit.cjs.map +1 -1
  25. package/build/cover/deprecated.cjs +3 -3
  26. package/build/cover/deprecated.cjs.map +2 -2
  27. package/build/cover/edit/block-controls.cjs +13 -0
  28. package/build/cover/edit/block-controls.cjs.map +2 -2
  29. package/build/cover/edit/embed-video-url-input.cjs +0 -1
  30. package/build/cover/edit/embed-video-url-input.cjs.map +2 -2
  31. package/build/cover/edit/index.cjs +61 -2
  32. package/build/cover/edit/index.cjs.map +3 -3
  33. package/build/cover/edit/inspector-controls.cjs +93 -35
  34. package/build/cover/edit/inspector-controls.cjs.map +2 -2
  35. package/build/details/edit.cjs +1 -2
  36. package/build/details/edit.cjs.map +2 -2
  37. package/build/embed/embed-placeholder.cjs +1 -1
  38. package/build/embed/embed-placeholder.cjs.map +2 -2
  39. package/build/file/edit.cjs +3 -11
  40. package/build/file/edit.cjs.map +2 -2
  41. package/build/file/index.cjs +3 -1
  42. package/build/file/index.cjs.map +3 -3
  43. package/build/file/transforms.cjs +11 -32
  44. package/build/file/transforms.cjs.map +2 -2
  45. package/build/{freeform/convert-to-blocks-button.cjs → file/variations.cjs} +16 -18
  46. package/build/file/variations.cjs.map +7 -0
  47. package/build/footnotes/edit.cjs +1 -1
  48. package/build/footnotes/edit.cjs.map +2 -2
  49. package/build/form/edit.cjs +0 -2
  50. package/build/form/edit.cjs.map +2 -2
  51. package/build/form-input/edit.cjs +1 -3
  52. package/build/form-input/edit.cjs.map +2 -2
  53. package/build/freeform/edit.cjs +6 -15
  54. package/build/freeform/edit.cjs.map +3 -3
  55. package/build/freeform/migration-notice.cjs.map +2 -2
  56. package/build/gallery/edit.cjs +212 -331
  57. package/build/gallery/edit.cjs.map +2 -2
  58. package/build/gallery/transforms.cjs +43 -0
  59. package/build/gallery/transforms.cjs.map +2 -2
  60. package/build/heading/edit.cjs +0 -1
  61. package/build/heading/edit.cjs.map +2 -2
  62. package/build/home-link/edit.cjs +1 -2
  63. package/build/home-link/edit.cjs.map +2 -2
  64. package/build/html/index.cjs +1 -1
  65. package/build/html/index.cjs.map +2 -2
  66. package/build/html/modal.cjs +9 -6
  67. package/build/html/modal.cjs.map +2 -2
  68. package/build/icon/block.json +12 -0
  69. package/build/icon/edit.cjs +90 -41
  70. package/build/icon/edit.cjs.map +3 -3
  71. package/build/icon/index.cjs +3 -1
  72. package/build/icon/index.cjs.map +3 -3
  73. package/build/{tab/save.cjs → icon/variations.cjs} +14 -15
  74. package/build/icon/variations.cjs.map +7 -0
  75. package/build/image/block.json +1 -0
  76. package/build/image/edit.cjs +4 -3
  77. package/build/image/edit.cjs.map +2 -2
  78. package/build/image/image.cjs +91 -29
  79. package/build/image/image.cjs.map +2 -2
  80. package/build/image/index.cjs +1 -1
  81. package/build/image/index.cjs.map +2 -2
  82. package/build/image/transforms.cjs +9 -3
  83. package/build/image/transforms.cjs.map +2 -2
  84. package/build/image/use-open-image-media-editor-modal.cjs +5 -25
  85. package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
  86. package/build/index.cjs +1 -3
  87. package/build/index.cjs.map +2 -2
  88. package/build/latest-posts/edit.cjs +1 -1
  89. package/build/latest-posts/edit.cjs.map +1 -1
  90. package/build/list/edit.cjs +1 -8
  91. package/build/list/edit.cjs.map +2 -2
  92. package/build/list/ordered-list-settings.cjs +1 -45
  93. package/build/list/ordered-list-settings.cjs.map +2 -2
  94. package/build/list-item/hooks/use-merge.cjs +47 -24
  95. package/build/list-item/hooks/use-merge.cjs.map +2 -2
  96. package/build/math/edit.cjs +1 -1
  97. package/build/math/index.cjs +1 -1
  98. package/build/math/index.cjs.map +1 -1
  99. package/build/media-text/constants.cjs +1 -1
  100. package/build/media-text/constants.cjs.map +2 -2
  101. package/build/media-text/index.cjs +1 -1
  102. package/build/media-text/index.cjs.map +2 -2
  103. package/build/missing/edit.cjs +2 -2
  104. package/build/missing/edit.cjs.map +1 -1
  105. package/build/navigation/edit/index.cjs +34 -39
  106. package/build/navigation/edit/index.cjs.map +2 -2
  107. package/build/navigation/edit/navigation-menu-name-control.cjs +0 -1
  108. package/build/navigation/edit/navigation-menu-name-control.cjs.map +2 -2
  109. package/build/navigation/edit/navigation-menu-selector.cjs +1 -1
  110. package/build/navigation/edit/navigation-menu-selector.cjs.map +2 -2
  111. package/build/navigation/edit/placeholder/index.cjs +1 -1
  112. package/build/navigation/edit/placeholder/index.cjs.map +2 -2
  113. package/build/navigation-link/block.json +1 -1
  114. package/build/navigation-link/edit.cjs +1 -2
  115. package/build/navigation-link/edit.cjs.map +2 -2
  116. package/build/navigation-link/link-ui/page-creator.cjs +0 -1
  117. package/build/navigation-link/link-ui/page-creator.cjs.map +2 -2
  118. package/build/navigation-link/shared/controls.cjs +0 -2
  119. package/build/navigation-link/shared/controls.cjs.map +2 -2
  120. package/build/navigation-submenu/block.json +7 -0
  121. package/build/navigation-submenu/edit.cjs +3 -2
  122. package/build/navigation-submenu/edit.cjs.map +2 -2
  123. package/build/page-list/block.json +2 -5
  124. package/build/page-list/edit.cjs +1 -11
  125. package/build/page-list/edit.cjs.map +2 -2
  126. package/build/paragraph/deprecated.cjs +1 -0
  127. package/build/paragraph/deprecated.cjs.map +2 -2
  128. package/build/paragraph/edit.cjs +10 -1
  129. package/build/paragraph/edit.cjs.map +3 -3
  130. package/build/playlist/block.json +12 -0
  131. package/build/playlist/edit.cjs +27 -1
  132. package/build/playlist/edit.cjs.map +2 -2
  133. package/build/playlist/save.cjs +8 -1
  134. package/build/playlist/save.cjs.map +2 -2
  135. package/build/playlist/view.cjs +1 -0
  136. package/build/playlist/view.cjs.map +2 -2
  137. package/build/playlist-track/edit.cjs +0 -3
  138. package/build/playlist-track/edit.cjs.map +2 -2
  139. package/build/post-author/edit.cjs +1 -1
  140. package/build/post-author/edit.cjs.map +2 -2
  141. package/build/post-author/utils.cjs +1 -1
  142. package/build/post-author/utils.cjs.map +2 -2
  143. package/build/post-comment/edit.cjs +0 -1
  144. package/build/post-comment/edit.cjs.map +2 -2
  145. package/build/post-date/edit.cjs +2 -2
  146. package/build/post-date/edit.cjs.map +2 -2
  147. package/build/post-excerpt/edit.cjs +2 -2
  148. package/build/post-excerpt/edit.cjs.map +2 -2
  149. package/build/post-featured-image/block.json +1 -0
  150. package/build/post-featured-image/dimension-controls.cjs +90 -178
  151. package/build/post-featured-image/dimension-controls.cjs.map +3 -3
  152. package/build/post-featured-image/edit.cjs +47 -18
  153. package/build/post-featured-image/edit.cjs.map +2 -2
  154. package/build/post-navigation-link/edit.cjs +2 -2
  155. package/build/post-navigation-link/edit.cjs.map +2 -2
  156. package/build/post-terms/edit.cjs +0 -1
  157. package/build/post-terms/edit.cjs.map +2 -2
  158. package/build/post-time-to-read/edit.cjs +1 -1
  159. package/build/post-time-to-read/edit.cjs.map +1 -1
  160. package/build/post-time-to-read/index.cjs +1 -1
  161. package/build/post-time-to-read/index.cjs.map +2 -2
  162. package/build/post-time-to-read/variations.cjs +1 -1
  163. package/build/post-time-to-read/variations.cjs.map +2 -2
  164. package/build/post-title/edit.cjs +0 -1
  165. package/build/post-title/edit.cjs.map +2 -2
  166. package/build/preformatted/edit.cjs +1 -1
  167. package/build/preformatted/edit.cjs.map +2 -2
  168. package/build/pullquote/block.json +1 -3
  169. package/build/pullquote/deprecated.cjs +114 -9
  170. package/build/pullquote/deprecated.cjs.map +3 -3
  171. package/build/pullquote/edit.cjs +43 -66
  172. package/build/pullquote/edit.cjs.map +3 -3
  173. package/build/pullquote/save.cjs +5 -26
  174. package/build/pullquote/save.cjs.map +3 -3
  175. package/build/query/edit/enhanced-pagination-modal.cjs +10 -1
  176. package/build/query/edit/enhanced-pagination-modal.cjs.map +3 -3
  177. package/build/query/edit/inspector-controls/enhanced-pagination-control.cjs +1 -1
  178. package/build/query/edit/inspector-controls/enhanced-pagination-control.cjs.map +1 -1
  179. package/build/query/edit/inspector-controls/index.cjs +0 -1
  180. package/build/query/edit/inspector-controls/index.cjs.map +2 -2
  181. package/build/query/edit/inspector-controls/order-control.cjs +2 -2
  182. package/build/query/edit/inspector-controls/order-control.cjs.map +2 -2
  183. package/build/query/utils.cjs +2 -2
  184. package/build/query/utils.cjs.map +2 -2
  185. package/build/query-pagination-next/edit.cjs +2 -2
  186. package/build/query-pagination-next/edit.cjs.map +1 -1
  187. package/build/query-pagination-previous/edit.cjs +2 -2
  188. package/build/query-pagination-previous/edit.cjs.map +1 -1
  189. package/build/query-title/edit.cjs +1 -1
  190. package/build/query-title/edit.cjs.map +2 -2
  191. package/build/query-total/edit.cjs +1 -1
  192. package/build/query-total/edit.cjs.map +2 -2
  193. package/build/quote/edit.cjs +4 -9
  194. package/build/quote/edit.cjs.map +2 -2
  195. package/build/quote/index.cjs +1 -1
  196. package/build/quote/index.cjs.map +2 -2
  197. package/build/read-more/edit.cjs +1 -1
  198. package/build/read-more/edit.cjs.map +2 -2
  199. package/build/rss/edit.cjs +1 -2
  200. package/build/rss/edit.cjs.map +2 -2
  201. package/build/search/block.json +4 -0
  202. package/build/search/edit.cjs +244 -206
  203. package/build/search/edit.cjs.map +2 -2
  204. package/build/shortcode/edit.cjs +1 -1
  205. package/build/shortcode/edit.cjs.map +2 -2
  206. package/build/shortcode/transforms.cjs +2 -2
  207. package/build/shortcode/transforms.cjs.map +2 -2
  208. package/build/site-logo/edit.cjs +2 -1
  209. package/build/site-logo/edit.cjs.map +2 -2
  210. package/build/site-tagline/edit.cjs +1 -1
  211. package/build/site-tagline/edit.cjs.map +2 -2
  212. package/build/site-title/edit.cjs +1 -1
  213. package/build/site-title/edit.cjs.map +2 -2
  214. package/build/social-link/edit.cjs +0 -3
  215. package/build/social-link/edit.cjs.map +2 -2
  216. package/build/tab-list/block.json +33 -20
  217. package/build/tab-list/edit.cjs +122 -12
  218. package/build/tab-list/edit.cjs.map +3 -3
  219. package/build/tab-list/init.cjs +28 -0
  220. package/build/tab-list/init.cjs.map +7 -0
  221. package/build/tab-list/save.cjs +33 -3
  222. package/build/tab-list/save.cjs.map +3 -3
  223. package/build/tab-panel/add-tab-toolbar-control.cjs +19 -8
  224. package/build/tab-panel/add-tab-toolbar-control.cjs.map +2 -2
  225. package/build/tab-panel/block.json +2 -6
  226. package/build/tab-panel/edit.cjs +0 -9
  227. package/build/tab-panel/edit.cjs.map +2 -2
  228. package/build/tab-panel/remove-tab-toolbar-control.cjs +9 -14
  229. package/build/tab-panel/remove-tab-toolbar-control.cjs.map +2 -2
  230. package/build/tab-panel/save.cjs +2 -1
  231. package/build/tab-panel/save.cjs.map +2 -2
  232. package/build/tab-panels/block.json +2 -28
  233. package/build/tab-panels/init.cjs +28 -0
  234. package/build/tab-panels/init.cjs.map +7 -0
  235. package/build/table/edit.cjs +0 -2
  236. package/build/table/edit.cjs.map +2 -2
  237. package/build/table/index.cjs +1 -1
  238. package/build/table/index.cjs.map +2 -2
  239. package/build/tabs/block.json +3 -17
  240. package/build/tabs/edit.cjs +7 -21
  241. package/build/tabs/edit.cjs.map +3 -3
  242. package/build/tabs/index.cjs +6 -10
  243. package/build/tabs/index.cjs.map +2 -2
  244. package/build/tabs/use-tab-list-items-sync.cjs +53 -0
  245. package/build/tabs/use-tab-list-items-sync.cjs.map +7 -0
  246. package/build/tabs/view.cjs +22 -104
  247. package/build/tabs/view.cjs.map +2 -2
  248. package/build/template-part/edit/advanced-controls.cjs +0 -1
  249. package/build/template-part/edit/advanced-controls.cjs.map +2 -2
  250. package/build/template-part/edit/title-modal.cjs +1 -2
  251. package/build/template-part/edit/title-modal.cjs.map +2 -2
  252. package/build/terms-query/edit/inspector-controls/order-control.cjs +2 -2
  253. package/build/terms-query/edit/inspector-controls/order-control.cjs.map +2 -2
  254. package/build/utils/style-state.cjs +164 -0
  255. package/build/utils/style-state.cjs.map +7 -0
  256. package/build/utils/waveform-player.cjs +42 -9
  257. package/build/utils/waveform-player.cjs.map +2 -2
  258. package/build/utils/waveform-utils.cjs +6 -4
  259. package/build/utils/waveform-utils.cjs.map +2 -2
  260. package/build/verse/edit.cjs +1 -1
  261. package/build/verse/edit.cjs.map +2 -2
  262. package/build/video/edit-common-settings.cjs +3 -6
  263. package/build/video/edit-common-settings.cjs.map +2 -2
  264. package/build/video/edit.cjs +3 -2
  265. package/build/video/edit.cjs.map +2 -2
  266. package/build/video/tracks-editor.cjs +0 -2
  267. package/build/video/tracks-editor.cjs.map +2 -2
  268. package/build-module/audio/edit.mjs +8 -2
  269. package/build-module/audio/edit.mjs.map +2 -2
  270. package/build-module/breadcrumbs/edit.mjs +1 -2
  271. package/build-module/breadcrumbs/edit.mjs.map +2 -2
  272. package/build-module/button/edit.mjs +1 -2
  273. package/build-module/button/edit.mjs.map +2 -2
  274. package/build-module/categories/edit.mjs +1 -1
  275. package/build-module/categories/edit.mjs.map +1 -1
  276. package/build-module/code/edit.mjs +1 -1
  277. package/build-module/code/edit.mjs.map +2 -2
  278. package/build-module/code/index.mjs +1 -1
  279. package/build-module/code/index.mjs.map +1 -1
  280. package/build-module/columns/transforms.mjs +65 -0
  281. package/build-module/columns/transforms.mjs.map +2 -2
  282. package/build-module/columns/utils.mjs.map +1 -1
  283. package/build-module/comments/edit/comments-legacy.mjs +1 -1
  284. package/build-module/comments/edit/comments-legacy.mjs.map +1 -1
  285. package/build-module/comments/edit/placeholder.mjs +4 -4
  286. package/build-module/comments/edit/placeholder.mjs.map +1 -1
  287. package/build-module/comments-pagination-next/edit.mjs +2 -2
  288. package/build-module/comments-pagination-next/edit.mjs.map +1 -1
  289. package/build-module/comments-pagination-previous/edit.mjs +2 -2
  290. package/build-module/comments-pagination-previous/edit.mjs.map +1 -1
  291. package/build-module/cover/deprecated.mjs +3 -3
  292. package/build-module/cover/deprecated.mjs.map +2 -2
  293. package/build-module/cover/edit/block-controls.mjs +15 -2
  294. package/build-module/cover/edit/block-controls.mjs.map +2 -2
  295. package/build-module/cover/edit/embed-video-url-input.mjs +0 -1
  296. package/build-module/cover/edit/embed-video-url-input.mjs.map +2 -2
  297. package/build-module/cover/edit/index.mjs +64 -3
  298. package/build-module/cover/edit/index.mjs.map +2 -2
  299. package/build-module/cover/edit/inspector-controls.mjs +98 -35
  300. package/build-module/cover/edit/inspector-controls.mjs.map +2 -2
  301. package/build-module/details/edit.mjs +1 -2
  302. package/build-module/details/edit.mjs.map +2 -2
  303. package/build-module/embed/embed-placeholder.mjs +1 -1
  304. package/build-module/embed/embed-placeholder.mjs.map +2 -2
  305. package/build-module/file/edit.mjs +5 -13
  306. package/build-module/file/edit.mjs.map +2 -2
  307. package/build-module/file/index.mjs +3 -1
  308. package/build-module/file/index.mjs.map +2 -2
  309. package/build-module/file/transforms.mjs +11 -32
  310. package/build-module/file/transforms.mjs.map +2 -2
  311. package/build-module/file/variations.mjs +17 -0
  312. package/build-module/file/variations.mjs.map +7 -0
  313. package/build-module/footnotes/edit.mjs +1 -1
  314. package/build-module/footnotes/edit.mjs.map +2 -2
  315. package/build-module/form/edit.mjs +0 -2
  316. package/build-module/form/edit.mjs.map +2 -2
  317. package/build-module/form-input/edit.mjs +1 -3
  318. package/build-module/form-input/edit.mjs.map +2 -2
  319. package/build-module/freeform/edit.mjs +6 -15
  320. package/build-module/freeform/edit.mjs.map +2 -2
  321. package/build-module/freeform/migration-notice.mjs.map +2 -2
  322. package/build-module/gallery/edit.mjs +214 -334
  323. package/build-module/gallery/edit.mjs.map +2 -2
  324. package/build-module/gallery/transforms.mjs +43 -0
  325. package/build-module/gallery/transforms.mjs.map +2 -2
  326. package/build-module/heading/edit.mjs +1 -2
  327. package/build-module/heading/edit.mjs.map +2 -2
  328. package/build-module/home-link/edit.mjs +1 -2
  329. package/build-module/home-link/edit.mjs.map +2 -2
  330. package/build-module/html/index.mjs +1 -1
  331. package/build-module/html/index.mjs.map +2 -2
  332. package/build-module/html/modal.mjs +9 -6
  333. package/build-module/html/modal.mjs.map +2 -2
  334. package/build-module/icon/block.json +12 -0
  335. package/build-module/icon/edit.mjs +94 -42
  336. package/build-module/icon/edit.mjs.map +2 -2
  337. package/build-module/icon/index.mjs +3 -1
  338. package/build-module/icon/index.mjs.map +2 -2
  339. package/build-module/icon/variations.mjs +13 -0
  340. package/build-module/icon/variations.mjs.map +7 -0
  341. package/build-module/image/block.json +1 -0
  342. package/build-module/image/edit.mjs +4 -3
  343. package/build-module/image/edit.mjs.map +2 -2
  344. package/build-module/image/image.mjs +96 -29
  345. package/build-module/image/image.mjs.map +2 -2
  346. package/build-module/image/index.mjs +1 -1
  347. package/build-module/image/index.mjs.map +2 -2
  348. package/build-module/image/transforms.mjs +9 -3
  349. package/build-module/image/transforms.mjs.map +2 -2
  350. package/build-module/image/use-open-image-media-editor-modal.mjs +5 -25
  351. package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
  352. package/build-module/index.mjs +1 -3
  353. package/build-module/index.mjs.map +2 -2
  354. package/build-module/latest-posts/edit.mjs +1 -1
  355. package/build-module/latest-posts/edit.mjs.map +1 -1
  356. package/build-module/list/edit.mjs +2 -9
  357. package/build-module/list/edit.mjs.map +2 -2
  358. package/build-module/list/ordered-list-settings.mjs +1 -46
  359. package/build-module/list/ordered-list-settings.mjs.map +2 -2
  360. package/build-module/list-item/hooks/use-merge.mjs +48 -25
  361. package/build-module/list-item/hooks/use-merge.mjs.map +2 -2
  362. package/build-module/math/edit.mjs +1 -1
  363. package/build-module/math/index.mjs +1 -1
  364. package/build-module/math/index.mjs.map +1 -1
  365. package/build-module/media-text/constants.mjs +1 -1
  366. package/build-module/media-text/constants.mjs.map +2 -2
  367. package/build-module/media-text/index.mjs +1 -1
  368. package/build-module/media-text/index.mjs.map +2 -2
  369. package/build-module/missing/edit.mjs +2 -2
  370. package/build-module/missing/edit.mjs.map +1 -1
  371. package/build-module/navigation/edit/index.mjs +35 -46
  372. package/build-module/navigation/edit/index.mjs.map +2 -2
  373. package/build-module/navigation/edit/navigation-menu-name-control.mjs +0 -1
  374. package/build-module/navigation/edit/navigation-menu-name-control.mjs.map +2 -2
  375. package/build-module/navigation/edit/navigation-menu-selector.mjs +1 -1
  376. package/build-module/navigation/edit/navigation-menu-selector.mjs.map +2 -2
  377. package/build-module/navigation/edit/placeholder/index.mjs +1 -1
  378. package/build-module/navigation/edit/placeholder/index.mjs.map +2 -2
  379. package/build-module/navigation-link/block.json +1 -1
  380. package/build-module/navigation-link/edit.mjs +1 -2
  381. package/build-module/navigation-link/edit.mjs.map +2 -2
  382. package/build-module/navigation-link/link-ui/page-creator.mjs +0 -1
  383. package/build-module/navigation-link/link-ui/page-creator.mjs.map +2 -2
  384. package/build-module/navigation-link/shared/controls.mjs +0 -2
  385. package/build-module/navigation-link/shared/controls.mjs.map +2 -2
  386. package/build-module/navigation-submenu/block.json +7 -0
  387. package/build-module/navigation-submenu/edit.mjs +3 -2
  388. package/build-module/navigation-submenu/edit.mjs.map +2 -2
  389. package/build-module/page-list/block.json +2 -5
  390. package/build-module/page-list/edit.mjs +1 -11
  391. package/build-module/page-list/edit.mjs.map +2 -2
  392. package/build-module/paragraph/deprecated.mjs +1 -0
  393. package/build-module/paragraph/deprecated.mjs.map +2 -2
  394. package/build-module/paragraph/edit.mjs +12 -2
  395. package/build-module/paragraph/edit.mjs.map +2 -2
  396. package/build-module/playlist/block.json +12 -0
  397. package/build-module/playlist/edit.mjs +27 -1
  398. package/build-module/playlist/edit.mjs.map +2 -2
  399. package/build-module/playlist/save.mjs +8 -1
  400. package/build-module/playlist/save.mjs.map +2 -2
  401. package/build-module/playlist/view.mjs +1 -0
  402. package/build-module/playlist/view.mjs.map +2 -2
  403. package/build-module/playlist-track/edit.mjs +0 -3
  404. package/build-module/playlist-track/edit.mjs.map +2 -2
  405. package/build-module/post-author/edit.mjs +1 -1
  406. package/build-module/post-author/edit.mjs.map +2 -2
  407. package/build-module/post-author/utils.mjs +1 -1
  408. package/build-module/post-author/utils.mjs.map +2 -2
  409. package/build-module/post-comment/edit.mjs +0 -1
  410. package/build-module/post-comment/edit.mjs.map +2 -2
  411. package/build-module/post-date/edit.mjs +2 -2
  412. package/build-module/post-date/edit.mjs.map +2 -2
  413. package/build-module/post-excerpt/edit.mjs +2 -2
  414. package/build-module/post-excerpt/edit.mjs.map +2 -2
  415. package/build-module/post-featured-image/block.json +1 -0
  416. package/build-module/post-featured-image/dimension-controls.mjs +99 -187
  417. package/build-module/post-featured-image/dimension-controls.mjs.map +2 -2
  418. package/build-module/post-featured-image/edit.mjs +47 -18
  419. package/build-module/post-featured-image/edit.mjs.map +2 -2
  420. package/build-module/post-navigation-link/edit.mjs +2 -2
  421. package/build-module/post-navigation-link/edit.mjs.map +2 -2
  422. package/build-module/post-terms/edit.mjs +0 -1
  423. package/build-module/post-terms/edit.mjs.map +2 -2
  424. package/build-module/post-time-to-read/edit.mjs +1 -1
  425. package/build-module/post-time-to-read/edit.mjs.map +1 -1
  426. package/build-module/post-time-to-read/index.mjs +1 -1
  427. package/build-module/post-time-to-read/index.mjs.map +2 -2
  428. package/build-module/post-time-to-read/variations.mjs +2 -2
  429. package/build-module/post-time-to-read/variations.mjs.map +2 -2
  430. package/build-module/post-title/edit.mjs +0 -1
  431. package/build-module/post-title/edit.mjs.map +2 -2
  432. package/build-module/preformatted/edit.mjs +1 -1
  433. package/build-module/preformatted/edit.mjs.map +2 -2
  434. package/build-module/pullquote/block.json +1 -3
  435. package/build-module/pullquote/deprecated.mjs +114 -9
  436. package/build-module/pullquote/deprecated.mjs.map +2 -2
  437. package/build-module/pullquote/edit.mjs +44 -72
  438. package/build-module/pullquote/edit.mjs.map +2 -2
  439. package/build-module/pullquote/save.mjs +5 -16
  440. package/build-module/pullquote/save.mjs.map +2 -2
  441. package/build-module/query/edit/enhanced-pagination-modal.mjs +10 -1
  442. package/build-module/query/edit/enhanced-pagination-modal.mjs.map +2 -2
  443. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.mjs +1 -1
  444. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.mjs.map +1 -1
  445. package/build-module/query/edit/inspector-controls/index.mjs +0 -1
  446. package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
  447. package/build-module/query/edit/inspector-controls/order-control.mjs +2 -2
  448. package/build-module/query/edit/inspector-controls/order-control.mjs.map +2 -2
  449. package/build-module/query/utils.mjs +2 -2
  450. package/build-module/query/utils.mjs.map +2 -2
  451. package/build-module/query-pagination-next/edit.mjs +2 -2
  452. package/build-module/query-pagination-next/edit.mjs.map +1 -1
  453. package/build-module/query-pagination-previous/edit.mjs +2 -2
  454. package/build-module/query-pagination-previous/edit.mjs.map +1 -1
  455. package/build-module/query-title/edit.mjs +1 -1
  456. package/build-module/query-title/edit.mjs.map +2 -2
  457. package/build-module/query-total/edit.mjs +1 -1
  458. package/build-module/query-total/edit.mjs.map +2 -2
  459. package/build-module/quote/edit.mjs +5 -10
  460. package/build-module/quote/edit.mjs.map +2 -2
  461. package/build-module/quote/index.mjs +1 -1
  462. package/build-module/quote/index.mjs.map +2 -2
  463. package/build-module/read-more/edit.mjs +1 -1
  464. package/build-module/read-more/edit.mjs.map +2 -2
  465. package/build-module/rss/edit.mjs +1 -2
  466. package/build-module/rss/edit.mjs.map +2 -2
  467. package/build-module/search/block.json +4 -0
  468. package/build-module/search/edit.mjs +244 -206
  469. package/build-module/search/edit.mjs.map +2 -2
  470. package/build-module/shortcode/edit.mjs +1 -1
  471. package/build-module/shortcode/edit.mjs.map +2 -2
  472. package/build-module/shortcode/transforms.mjs +2 -2
  473. package/build-module/shortcode/transforms.mjs.map +2 -2
  474. package/build-module/site-logo/edit.mjs +2 -1
  475. package/build-module/site-logo/edit.mjs.map +2 -2
  476. package/build-module/site-tagline/edit.mjs +1 -1
  477. package/build-module/site-tagline/edit.mjs.map +2 -2
  478. package/build-module/site-title/edit.mjs +1 -1
  479. package/build-module/site-title/edit.mjs.map +2 -2
  480. package/build-module/social-link/edit.mjs +0 -3
  481. package/build-module/social-link/edit.mjs.map +2 -2
  482. package/build-module/tab-list/block.json +33 -20
  483. package/build-module/tab-list/edit.mjs +128 -15
  484. package/build-module/tab-list/edit.mjs.map +2 -2
  485. package/build-module/tab-list/init.mjs +7 -0
  486. package/build-module/tab-list/init.mjs.map +7 -0
  487. package/build-module/tab-list/save.mjs +29 -4
  488. package/build-module/tab-list/save.mjs.map +2 -2
  489. package/build-module/tab-panel/add-tab-toolbar-control.mjs +19 -8
  490. package/build-module/tab-panel/add-tab-toolbar-control.mjs.map +2 -2
  491. package/build-module/tab-panel/block.json +2 -6
  492. package/build-module/tab-panel/edit.mjs +1 -10
  493. package/build-module/tab-panel/edit.mjs.map +2 -2
  494. package/build-module/tab-panel/remove-tab-toolbar-control.mjs +9 -14
  495. package/build-module/tab-panel/remove-tab-toolbar-control.mjs.map +2 -2
  496. package/build-module/tab-panel/save.mjs +2 -1
  497. package/build-module/tab-panel/save.mjs.map +2 -2
  498. package/build-module/tab-panels/block.json +2 -28
  499. package/build-module/tab-panels/init.mjs +7 -0
  500. package/build-module/tab-panels/init.mjs.map +7 -0
  501. package/build-module/table/edit.mjs +0 -2
  502. package/build-module/table/edit.mjs.map +2 -2
  503. package/build-module/table/index.mjs +1 -1
  504. package/build-module/table/index.mjs.map +2 -2
  505. package/build-module/tabs/block.json +3 -17
  506. package/build-module/tabs/edit.mjs +7 -21
  507. package/build-module/tabs/edit.mjs.map +2 -2
  508. package/build-module/tabs/index.mjs +6 -10
  509. package/build-module/tabs/index.mjs.map +2 -2
  510. package/build-module/tabs/use-tab-list-items-sync.mjs +32 -0
  511. package/build-module/tabs/use-tab-list-items-sync.mjs.map +7 -0
  512. package/build-module/tabs/view.mjs +22 -104
  513. package/build-module/tabs/view.mjs.map +2 -2
  514. package/build-module/template-part/edit/advanced-controls.mjs +0 -1
  515. package/build-module/template-part/edit/advanced-controls.mjs.map +2 -2
  516. package/build-module/template-part/edit/title-modal.mjs +1 -2
  517. package/build-module/template-part/edit/title-modal.mjs.map +2 -2
  518. package/build-module/terms-query/edit/inspector-controls/order-control.mjs +2 -2
  519. package/build-module/terms-query/edit/inspector-controls/order-control.mjs.map +2 -2
  520. package/build-module/utils/style-state.mjs +132 -0
  521. package/build-module/utils/style-state.mjs.map +7 -0
  522. package/build-module/utils/waveform-player.mjs +44 -11
  523. package/build-module/utils/waveform-player.mjs.map +2 -2
  524. package/build-module/utils/waveform-utils.mjs +6 -4
  525. package/build-module/utils/waveform-utils.mjs.map +2 -2
  526. package/build-module/verse/edit.mjs +1 -1
  527. package/build-module/verse/edit.mjs.map +2 -2
  528. package/build-module/video/edit-common-settings.mjs +4 -7
  529. package/build-module/video/edit-common-settings.mjs.map +2 -2
  530. package/build-module/video/edit.mjs +3 -3
  531. package/build-module/video/edit.mjs.map +2 -2
  532. package/build-module/video/tracks-editor.mjs +0 -2
  533. package/build-module/video/tracks-editor.mjs.map +2 -2
  534. package/build-style/comment-template/style-rtl.css +1 -0
  535. package/build-style/comment-template/style.css +1 -0
  536. package/build-style/common-rtl.css +30 -10
  537. package/build-style/common.css +30 -10
  538. package/build-style/cover/style-rtl.css +2 -1
  539. package/build-style/cover/style.css +2 -1
  540. package/build-style/editor-rtl.css +22 -30
  541. package/build-style/editor.css +22 -30
  542. package/build-style/form-input/style-rtl.css +2 -0
  543. package/build-style/form-input/style.css +2 -0
  544. package/build-style/gallery/style-rtl.css +4 -2
  545. package/build-style/gallery/style.css +4 -2
  546. package/build-style/icon/style-rtl.css +9 -0
  547. package/build-style/icon/style.css +9 -0
  548. package/build-style/media-text/style-rtl.css +2 -1
  549. package/build-style/media-text/style.css +2 -1
  550. package/build-style/playlist/style-rtl.css +3 -0
  551. package/build-style/playlist/style.css +3 -0
  552. package/build-style/query/editor-rtl.css +8 -4
  553. package/build-style/query/editor.css +8 -4
  554. package/build-style/read-more/style-rtl.css +1 -0
  555. package/build-style/read-more/style.css +1 -0
  556. package/build-style/reset-rtl.css +3 -1
  557. package/build-style/reset.css +3 -1
  558. package/build-style/search/style-rtl.css +3 -1
  559. package/build-style/search/style.css +3 -1
  560. package/build-style/site-logo/editor-rtl.css +2 -1
  561. package/build-style/site-logo/editor.css +2 -1
  562. package/build-style/style-rtl.css +64 -41
  563. package/build-style/style.css +64 -41
  564. package/build-style/{tab → tab-list}/style-rtl.css +5 -3
  565. package/build-style/{tab → tab-list}/style.css +5 -3
  566. package/build-style/tab-panel/style-rtl.css +0 -17
  567. package/build-style/tab-panel/style.css +0 -17
  568. package/build-style/template-part/editor-rtl.css +8 -4
  569. package/build-style/template-part/editor.css +8 -4
  570. package/build-style/video/style-rtl.css +2 -1
  571. package/build-style/video/style.css +2 -1
  572. package/package.json +55 -48
  573. package/src/accordion/README.md +97 -0
  574. package/src/accordion-heading/README.md +81 -0
  575. package/src/accordion-item/README.md +85 -0
  576. package/src/accordion-panel/README.md +74 -0
  577. package/src/archives/README.md +56 -0
  578. package/src/audio/README.md +55 -0
  579. package/src/audio/edit.js +5 -9
  580. package/src/avatar/README.md +74 -0
  581. package/src/avatar/index.php +2 -2
  582. package/src/block/README.md +56 -0
  583. package/src/block/index.php +2 -26
  584. package/src/breadcrumbs/README.md +67 -0
  585. package/src/breadcrumbs/edit.js +0 -1
  586. package/src/button/README.md +93 -0
  587. package/src/button/edit.js +0 -1
  588. package/src/buttons/README.md +80 -0
  589. package/src/calendar/README.md +51 -0
  590. package/src/categories/README.md +69 -0
  591. package/src/code/README.md +55 -0
  592. package/src/column/README.md +72 -0
  593. package/src/columns/README.md +90 -0
  594. package/src/columns/test/transforms.js +164 -0
  595. package/src/columns/transforms.js +74 -0
  596. package/src/comment-author-avatar/README.md +63 -0
  597. package/src/comment-author-avatar/index.php +3 -3
  598. package/src/comment-author-name/README.md +67 -0
  599. package/src/comment-author-name/index.php +1 -1
  600. package/src/comment-content/README.md +61 -0
  601. package/src/comment-date/README.md +67 -0
  602. package/src/comment-date/index.php +1 -1
  603. package/src/comment-edit-link/README.md +67 -0
  604. package/src/comment-reply-link/README.md +63 -0
  605. package/src/comment-template/README.md +60 -0
  606. package/src/comments/README.md +88 -0
  607. package/src/comments-pagination/README.md +77 -0
  608. package/src/comments-pagination-next/README.md +64 -0
  609. package/src/comments-pagination-numbers/README.md +64 -0
  610. package/src/comments-pagination-previous/README.md +64 -0
  611. package/src/comments-title/README.md +70 -0
  612. package/src/common.scss +63 -10
  613. package/src/cover/README.md +111 -0
  614. package/src/cover/edit/block-controls.js +14 -2
  615. package/src/cover/edit/embed-video-url-input.js +0 -1
  616. package/src/cover/edit/index.js +86 -0
  617. package/src/cover/edit/inspector-controls.js +124 -54
  618. package/src/cover/test/edit.js +51 -2
  619. package/src/details/README.md +65 -0
  620. package/src/details/edit.js +0 -1
  621. package/src/editor.scss +0 -2
  622. package/src/embed/README.md +56 -0
  623. package/src/file/README.md +60 -0
  624. package/src/file/edit.js +3 -16
  625. package/src/file/index.js +2 -0
  626. package/src/file/transforms.js +12 -31
  627. package/src/file/variations.js +17 -0
  628. package/src/footnotes/README.md +64 -0
  629. package/src/form/README.md +90 -0
  630. package/src/form/edit.js +0 -2
  631. package/src/form-input/README.md +74 -0
  632. package/src/form-input/edit.js +0 -2
  633. package/src/form-submission-notification/README.md +50 -0
  634. package/src/form-submit-button/README.md +54 -0
  635. package/src/freeform/README.md +49 -0
  636. package/src/freeform/edit.js +6 -29
  637. package/src/freeform/migration-notice.js +2 -4
  638. package/src/gallery/README.md +115 -0
  639. package/src/gallery/edit.js +214 -351
  640. package/src/gallery/test/transforms.js +155 -0
  641. package/src/gallery/transforms.js +47 -0
  642. package/src/group/README.md +80 -0
  643. package/src/heading/README.md +60 -0
  644. package/src/heading/edit.js +1 -2
  645. package/src/home-link/README.md +66 -0
  646. package/src/home-link/edit.js +0 -1
  647. package/src/home-link/index.php +3 -15
  648. package/src/html/README.md +48 -0
  649. package/src/html/modal.js +3 -0
  650. package/src/icon/README.md +66 -0
  651. package/src/icon/block.json +12 -0
  652. package/src/icon/edit.js +85 -37
  653. package/src/icon/index.js +3 -1
  654. package/src/icon/index.php +23 -0
  655. package/src/icon/style.scss +12 -0
  656. package/src/icon/variations.js +9 -0
  657. package/src/image/README.md +103 -0
  658. package/src/image/block.json +1 -0
  659. package/src/image/edit.js +8 -3
  660. package/src/image/image.js +120 -56
  661. package/src/image/index.php +4 -5
  662. package/src/image/test/use-open-image-media-editor-modal.js +20 -26
  663. package/src/image/transforms.js +34 -8
  664. package/src/image/use-open-image-media-editor-modal.js +24 -42
  665. package/src/index.js +4 -11
  666. package/src/latest-comments/README.md +57 -0
  667. package/src/latest-posts/README.md +71 -0
  668. package/src/list/README.md +70 -0
  669. package/src/list/edit.js +2 -9
  670. package/src/list/ordered-list-settings.js +46 -93
  671. package/src/list-item/README.md +71 -0
  672. package/src/list-item/hooks/use-merge.js +53 -46
  673. package/src/loginout/README.md +56 -0
  674. package/src/math/README.md +50 -0
  675. package/src/media-text/README.md +92 -0
  676. package/src/missing/README.md +55 -0
  677. package/src/more/README.md +49 -0
  678. package/src/navigation/README.md +115 -0
  679. package/src/navigation/edit/index.js +35 -46
  680. package/src/navigation/edit/navigation-menu-name-control.js +0 -1
  681. package/src/navigation/index.php +58 -0
  682. package/src/navigation-link/README.md +93 -0
  683. package/src/navigation-link/block.json +1 -1
  684. package/src/navigation-link/edit.js +0 -1
  685. package/src/navigation-link/index.php +1 -15
  686. package/src/navigation-link/link-ui/page-creator.js +0 -1
  687. package/src/navigation-link/shared/controls.js +0 -2
  688. package/src/navigation-link/test/__snapshots__/hooks.js.snap +5 -0
  689. package/src/navigation-overlay-close/README.md +48 -0
  690. package/src/navigation-submenu/README.md +89 -0
  691. package/src/navigation-submenu/block.json +7 -0
  692. package/src/navigation-submenu/edit.js +1 -0
  693. package/src/navigation-submenu/index.php +1 -17
  694. package/src/nextpage/README.md +50 -0
  695. package/src/page-list/README.md +84 -0
  696. package/src/page-list/block.json +2 -5
  697. package/src/page-list/edit.js +0 -11
  698. package/src/page-list/index.php +4 -16
  699. package/src/page-list-item/README.md +77 -0
  700. package/src/paragraph/README.md +70 -0
  701. package/src/paragraph/deprecated.js +1 -0
  702. package/src/paragraph/edit.js +13 -1
  703. package/src/pattern/README.md +45 -0
  704. package/src/playlist/README.md +86 -0
  705. package/src/playlist/block.json +12 -0
  706. package/src/playlist/edit.js +27 -0
  707. package/src/playlist/index.php +10 -3
  708. package/src/playlist/save.js +9 -1
  709. package/src/playlist/style.scss +7 -0
  710. package/src/playlist/view.js +1 -0
  711. package/src/playlist-track/README.md +69 -0
  712. package/src/playlist-track/edit.js +0 -3
  713. package/src/post-author/README.md +78 -0
  714. package/src/post-author-biography/README.md +59 -0
  715. package/src/post-author-name/README.md +63 -0
  716. package/src/post-author-name/index.php +1 -1
  717. package/src/post-comment/README.md +61 -0
  718. package/src/post-comment/edit.js +0 -1
  719. package/src/post-comments-count/README.md +58 -0
  720. package/src/post-comments-form/README.md +59 -0
  721. package/src/post-comments-link/README.md +60 -0
  722. package/src/post-content/README.md +71 -0
  723. package/src/post-date/README.md +65 -0
  724. package/src/post-date/edit.js +2 -2
  725. package/src/post-date/index.php +1 -1
  726. package/src/post-excerpt/README.md +66 -0
  727. package/src/post-featured-image/README.md +86 -0
  728. package/src/post-featured-image/block.json +1 -0
  729. package/src/post-featured-image/dimension-controls.js +105 -184
  730. package/src/post-featured-image/edit.js +53 -22
  731. package/src/post-featured-image/index.php +25 -23
  732. package/src/post-navigation-link/README.md +63 -0
  733. package/src/post-template/README.md +71 -0
  734. package/src/post-terms/README.md +65 -0
  735. package/src/post-terms/edit.js +0 -1
  736. package/src/post-time-to-read/README.md +63 -0
  737. package/src/post-time-to-read/index.js +1 -1
  738. package/src/post-time-to-read/variations.js +2 -2
  739. package/src/post-title/README.md +69 -0
  740. package/src/post-title/edit.js +0 -1
  741. package/src/preformatted/README.md +50 -0
  742. package/src/pullquote/README.md +64 -0
  743. package/src/pullquote/block.json +1 -3
  744. package/src/pullquote/deprecated.js +121 -9
  745. package/src/pullquote/edit.js +8 -38
  746. package/src/pullquote/save.js +2 -13
  747. package/src/query/README.md +64 -0
  748. package/src/query/edit/enhanced-pagination-modal.js +11 -1
  749. package/src/query/edit/inspector-controls/index.js +0 -1
  750. package/src/query-no-results/README.md +65 -0
  751. package/src/query-pagination/README.md +79 -0
  752. package/src/query-pagination-next/README.md +67 -0
  753. package/src/query-pagination-numbers/README.md +65 -0
  754. package/src/query-pagination-previous/README.md +67 -0
  755. package/src/query-title/README.md +65 -0
  756. package/src/query-total/README.md +66 -0
  757. package/src/quote/README.md +75 -0
  758. package/src/quote/edit.js +3 -9
  759. package/src/read-more/README.md +61 -0
  760. package/src/read-more/index.php +2 -2
  761. package/src/rss/README.md +62 -0
  762. package/src/rss/edit.js +0 -1
  763. package/src/search/README.md +67 -0
  764. package/src/search/block.json +4 -0
  765. package/src/search/edit.js +106 -55
  766. package/src/search/index.php +25 -1
  767. package/src/separator/README.md +62 -0
  768. package/src/shortcode/README.md +44 -0
  769. package/src/shortcode/transforms.js +2 -2
  770. package/src/site-logo/README.md +72 -0
  771. package/src/site-logo/edit.js +3 -1
  772. package/src/site-tagline/README.md +56 -0
  773. package/src/site-title/README.md +57 -0
  774. package/src/social-link/README.md +64 -0
  775. package/src/social-link/edit.js +0 -3
  776. package/src/social-links/README.md +98 -0
  777. package/src/spacer/README.md +53 -0
  778. package/src/style.scss +1 -2
  779. package/src/tab-list/README.md +81 -0
  780. package/src/tab-list/block.json +33 -20
  781. package/src/tab-list/edit.js +153 -15
  782. package/src/tab-list/index.php +24 -33
  783. package/src/tab-list/init.js +6 -0
  784. package/src/tab-list/save.js +39 -4
  785. package/src/{tab → tab-list}/style.scss +2 -3
  786. package/src/tab-panel/README.md +72 -0
  787. package/src/tab-panel/add-tab-toolbar-control.js +24 -11
  788. package/src/tab-panel/block.json +2 -6
  789. package/src/tab-panel/edit.js +1 -14
  790. package/src/tab-panel/index.php +2 -25
  791. package/src/tab-panel/remove-tab-toolbar-control.js +10 -14
  792. package/src/tab-panel/save.js +1 -0
  793. package/src/tab-panel/style.scss +0 -17
  794. package/src/tab-panels/README.md +59 -0
  795. package/src/tab-panels/block.json +2 -28
  796. package/src/tab-panels/init.js +6 -0
  797. package/src/table/README.md +71 -0
  798. package/src/table/edit.js +0 -2
  799. package/src/table-of-contents/README.md +61 -0
  800. package/src/tabs/README.md +77 -0
  801. package/src/tabs/block.json +3 -17
  802. package/src/tabs/edit.js +8 -19
  803. package/src/tabs/index.js +6 -10
  804. package/src/tabs/index.php +12 -32
  805. package/src/tabs/use-tab-list-items-sync.js +49 -0
  806. package/src/tabs/view.js +22 -110
  807. package/src/tag-cloud/README.md +62 -0
  808. package/src/template-part/README.md +48 -0
  809. package/src/template-part/edit/advanced-controls.js +0 -1
  810. package/src/template-part/edit/title-modal.js +0 -1
  811. package/src/term-count/README.md +59 -0
  812. package/src/term-description/README.md +60 -0
  813. package/src/term-name/README.md +65 -0
  814. package/src/term-template/README.md +65 -0
  815. package/src/terms-query/README.md +58 -0
  816. package/src/text-columns/README.md +51 -0
  817. package/src/utils/style-state.js +151 -0
  818. package/src/utils/test/style-state.js +307 -0
  819. package/src/utils/test/waveform-player.js +254 -0
  820. package/src/utils/waveform-player.js +90 -18
  821. package/src/utils/waveform-utils.js +15 -11
  822. package/src/verse/README.md +58 -0
  823. package/src/video/README.md +58 -0
  824. package/src/video/edit-common-settings.js +4 -7
  825. package/src/video/edit.js +9 -16
  826. package/src/video/tracks-editor.js +0 -2
  827. package/babel-plugin.cjs +0 -150
  828. package/build/freeform/convert-to-blocks-button.cjs.map +0 -7
  829. package/build/list-item/utils.cjs +0 -57
  830. package/build/list-item/utils.cjs.map +0 -7
  831. package/build/tab/block.json +0 -56
  832. package/build/tab/controls.cjs +0 -46
  833. package/build/tab/controls.cjs.map +0 -7
  834. package/build/tab/edit.cjs +0 -135
  835. package/build/tab/edit.cjs.map +0 -7
  836. package/build/tab/index.cjs +0 -58
  837. package/build/tab/index.cjs.map +0 -7
  838. package/build/tab/save.cjs.map +0 -7
  839. package/build/tabs/use-tab-list-sync.cjs +0 -190
  840. package/build/tabs/use-tab-list-sync.cjs.map +0 -7
  841. package/build-module/freeform/convert-to-blocks-button.mjs +0 -19
  842. package/build-module/freeform/convert-to-blocks-button.mjs.map +0 -7
  843. package/build-module/list-item/utils.mjs +0 -32
  844. package/build-module/list-item/utils.mjs.map +0 -7
  845. package/build-module/tab/block.json +0 -56
  846. package/build-module/tab/controls.mjs +0 -15
  847. package/build-module/tab/controls.mjs.map +0 -7
  848. package/build-module/tab/edit.mjs +0 -108
  849. package/build-module/tab/edit.mjs.map +0 -7
  850. package/build-module/tab/index.mjs +0 -20
  851. package/build-module/tab/index.mjs.map +0 -7
  852. package/build-module/tab/save.mjs +0 -14
  853. package/build-module/tab/save.mjs.map +0 -7
  854. package/build-module/tabs/use-tab-list-sync.mjs +0 -169
  855. package/build-module/tabs/use-tab-list-sync.mjs.map +0 -7
  856. package/build-style/tab/editor-rtl.css +0 -11
  857. package/build-style/tab/editor.css +0 -11
  858. package/build-style/tab-list/editor-rtl.css +0 -6
  859. package/build-style/tab-list/editor.css +0 -6
  860. package/build-style/tab-panels/style-rtl.css +0 -4
  861. package/build-style/tab-panels/style.css +0 -4
  862. package/src/audio/edit.native.js +0 -250
  863. package/src/audio/style.native.scss +0 -13
  864. package/src/audio/test/__snapshots__/edit.native.js.snap +0 -546
  865. package/src/audio/test/__snapshots__/transforms.native.js.snap +0 -25
  866. package/src/audio/test/edit.native.js +0 -132
  867. package/src/audio/test/transforms.native.js +0 -43
  868. package/src/audio/transforms.native.js +0 -12
  869. package/src/block/edit-title.native.js +0 -67
  870. package/src/block/edit.native.js +0 -247
  871. package/src/block/editor.native.scss +0 -125
  872. package/src/block/test/__snapshots__/transforms.native.js.snap +0 -15
  873. package/src/block/test/edit.native.js +0 -262
  874. package/src/block/test/transforms.native.js +0 -40
  875. package/src/button/color-background.native.js +0 -41
  876. package/src/button/edit.native.js +0 -567
  877. package/src/button/editor.native.scss +0 -70
  878. package/src/button/rich-text.android.scss +0 -6
  879. package/src/button/rich-text.ios.scss +0 -6
  880. package/src/buttons/edit.native.js +0 -157
  881. package/src/buttons/editor.native.scss +0 -11
  882. package/src/buttons/test/__snapshots__/edit.native.js.snap +0 -99
  883. package/src/buttons/test/__snapshots__/transforms.native.js.snap +0 -31
  884. package/src/buttons/test/edit.native.js +0 -485
  885. package/src/buttons/test/transforms.native.js +0 -48
  886. package/src/buttons/transforms.native.js +0 -12
  887. package/src/code/edit.native.js +0 -70
  888. package/src/code/test/__snapshots__/edit.native.js.snap +0 -13
  889. package/src/code/test/edit.native.js +0 -65
  890. package/src/code/theme.native.scss +0 -22
  891. package/src/code/transforms.native.js +0 -12
  892. package/src/column/column-preview.native.js +0 -58
  893. package/src/column/edit.native.js +0 -273
  894. package/src/column/editor.native.scss +0 -75
  895. package/src/columns/columnCalculations.native.js +0 -178
  896. package/src/columns/edit.native.js +0 -507
  897. package/src/columns/editor.native.scss +0 -17
  898. package/src/columns/test/__snapshots__/edit.native.js.snap +0 -305
  899. package/src/columns/test/__snapshots__/transforms.native.js.snap +0 -61
  900. package/src/columns/test/edit.native.js +0 -496
  901. package/src/columns/test/transforms.native.js +0 -89
  902. package/src/columns/transforms.native.js +0 -12
  903. package/src/cover/controls.native.js +0 -307
  904. package/src/cover/edit.native.js +0 -708
  905. package/src/cover/focal-point-settings-button.native.js +0 -53
  906. package/src/cover/overlay-color-settings.native.js +0 -106
  907. package/src/cover/style.native.scss +0 -220
  908. package/src/cover/test/__snapshots__/edit.native.js.snap +0 -105
  909. package/src/cover/test/__snapshots__/transforms.native.js.snap +0 -73
  910. package/src/cover/test/edit.native.js +0 -701
  911. package/src/cover/test/transforms.native.js +0 -116
  912. package/src/cover/transforms.native.js +0 -12
  913. package/src/cover/use-cover-is-dark.native.js +0 -51
  914. package/src/embed/edit.native.js +0 -345
  915. package/src/embed/embed-controls.native.js +0 -65
  916. package/src/embed/embed-link-settings.native.js +0 -99
  917. package/src/embed/embed-loading.native.js +0 -29
  918. package/src/embed/embed-no-preview.native.js +0 -230
  919. package/src/embed/embed-placeholder.native.js +0 -178
  920. package/src/embed/embed-preview.native.js +0 -157
  921. package/src/embed/styles.native.scss +0 -196
  922. package/src/embed/test/__snapshots__/index.native.js.snap +0 -191
  923. package/src/embed/test/__snapshots__/transforms.native.js.snap +0 -23
  924. package/src/embed/test/index.native.js +0 -1125
  925. package/src/embed/test/transforms.native.js +0 -44
  926. package/src/embed/transforms.native.js +0 -12
  927. package/src/embed/wp-embed-preview.native.js +0 -80
  928. package/src/file/edit.native.js +0 -605
  929. package/src/file/style.native.scss +0 -79
  930. package/src/file/test/__snapshots__/edit.native.js.snap +0 -580
  931. package/src/file/test/__snapshots__/transforms.native.js.snap +0 -19
  932. package/src/file/test/edit.native.js +0 -93
  933. package/src/file/test/transforms.native.js +0 -43
  934. package/src/file/transforms.native.js +0 -12
  935. package/src/freeform/convert-to-blocks-button.js +0 -18
  936. package/src/freeform/edit.native.js +0 -13
  937. package/src/freeform/test/__snapshots__/index.native.js.snap +0 -7
  938. package/src/freeform/test/__snapshots__/transforms.native.js.snap +0 -19
  939. package/src/freeform/test/index.native.js +0 -57
  940. package/src/freeform/test/transforms.native.js +0 -39
  941. package/src/gallery/gallery-styles.native.scss +0 -8
  942. package/src/gallery/gallery.native.js +0 -124
  943. package/src/gallery/styles.native.scss +0 -7
  944. package/src/gallery/test/__snapshots__/index.native.js.snap +0 -177
  945. package/src/gallery/test/__snapshots__/transforms.native.js.snap +0 -53
  946. package/src/gallery/test/helpers.native.js +0 -106
  947. package/src/gallery/test/index.native.js +0 -700
  948. package/src/gallery/test/transforms.native.js +0 -53
  949. package/src/gallery/test/use-get-media.native.js +0 -24
  950. package/src/gallery/transforms.native.js +0 -12
  951. package/src/gallery/use-get-media.native.js +0 -49
  952. package/src/group/edit.native.js +0 -137
  953. package/src/group/editor.native.scss +0 -56
  954. package/src/group/test/__snapshots__/edit.native.js.snap +0 -19
  955. package/src/group/test/__snapshots__/transforms.native.js.snap +0 -35
  956. package/src/group/test/edit.native.js +0 -100
  957. package/src/group/test/transforms.native.js +0 -73
  958. package/src/heading/edit.native.js +0 -159
  959. package/src/heading/test/__snapshots__/index.native.js.snap +0 -43
  960. package/src/heading/test/__snapshots__/transforms.native.js.snap +0 -47
  961. package/src/heading/test/index.native.js +0 -257
  962. package/src/heading/test/transforms.native.js +0 -46
  963. package/src/heading/transforms.native.js +0 -12
  964. package/src/html/transforms.native.js +0 -11
  965. package/src/image/edit.native.js +0 -959
  966. package/src/image/styles.native.scss +0 -70
  967. package/src/image/test/__snapshots__/transforms.native.js.snap +0 -49
  968. package/src/image/test/edit.native.js +0 -459
  969. package/src/image/test/transforms.native.js +0 -49
  970. package/src/image/transforms.native.js +0 -12
  971. package/src/index.native.js +0 -274
  972. package/src/latest-posts/edit.native.js +0 -294
  973. package/src/latest-posts/style.native.scss +0 -47
  974. package/src/latest-posts/test/__snapshots__/edit.native.js.snap +0 -3
  975. package/src/latest-posts/test/__snapshots__/transforms.native.js.snap +0 -15
  976. package/src/latest-posts/test/edit.native.js +0 -49
  977. package/src/latest-posts/test/transforms.native.js +0 -61
  978. package/src/list/tag-name.native.js +0 -12
  979. package/src/list/test/__snapshots__/edit.native.js.snap +0 -121
  980. package/src/list/test/__snapshots__/transforms.native.js.snap +0 -85
  981. package/src/list/test/edit.native.js +0 -602
  982. package/src/list/test/transforms.native.js +0 -56
  983. package/src/list/transforms.native.js +0 -12
  984. package/src/list-item/edit.native.js +0 -175
  985. package/src/list-item/hooks/use-enter.native.js +0 -81
  986. package/src/list-item/icons.native.js +0 -34
  987. package/src/list-item/list-style-type.native.js +0 -146
  988. package/src/list-item/style.native.scss +0 -57
  989. package/src/list-item/utils.js +0 -34
  990. package/src/media-text/edit.native.js +0 -417
  991. package/src/media-text/icon-retry.native.js +0 -11
  992. package/src/media-text/media-container.native.js +0 -393
  993. package/src/media-text/style.native.scss +0 -191
  994. package/src/media-text/test/__snapshots__/transforms.native.js.snap +0 -73
  995. package/src/media-text/test/edit.native.js +0 -58
  996. package/src/media-text/test/transforms.native.js +0 -116
  997. package/src/media-text/transforms.native.js +0 -12
  998. package/src/missing/edit.native.js +0 -294
  999. package/src/missing/style.native.scss +0 -79
  1000. package/src/missing/test/__snapshots__/edit.native.js.snap +0 -110
  1001. package/src/missing/test/edit-integration.native.js +0 -168
  1002. package/src/missing/test/edit.native.js +0 -81
  1003. package/src/more/edit.native.js +0 -36
  1004. package/src/more/editor.native.scss +0 -21
  1005. package/src/more/test/__snapshots__/edit.native.js.snap +0 -7
  1006. package/src/more/test/__snapshots__/transforms.native.js.snap +0 -19
  1007. package/src/more/test/edit.native.js +0 -41
  1008. package/src/more/test/transforms.native.js +0 -42
  1009. package/src/more/transforms.native.js +0 -12
  1010. package/src/navigation-link/shared/build-css-font-sizes.php +0 -43
  1011. package/src/nextpage/edit.native.js +0 -58
  1012. package/src/nextpage/editor.native.scss +0 -21
  1013. package/src/nextpage/test/__snapshots__/transforms.native.js.snap +0 -19
  1014. package/src/nextpage/test/transforms.native.js +0 -42
  1015. package/src/nextpage/transforms.native.js +0 -12
  1016. package/src/paragraph/edit.native.js +0 -116
  1017. package/src/paragraph/test/__snapshots__/edit.native.js.snap +0 -88
  1018. package/src/paragraph/test/__snapshots__/transforms.native.js.snap +0 -65
  1019. package/src/paragraph/test/edit.native.js +0 -999
  1020. package/src/paragraph/test/transforms.native.js +0 -51
  1021. package/src/paragraph/transforms.native.js +0 -12
  1022. package/src/preformatted/edit.native.js +0 -48
  1023. package/src/preformatted/styles.native.scss +0 -30
  1024. package/src/preformatted/test/__snapshots__/edit.native.js.snap +0 -95
  1025. package/src/preformatted/test/__snapshots__/transforms.native.js.snap +0 -37
  1026. package/src/preformatted/test/edit.native.js +0 -111
  1027. package/src/preformatted/test/transforms.native.js +0 -47
  1028. package/src/preformatted/transforms.native.js +0 -12
  1029. package/src/pullquote/blockquote.native.js +0 -39
  1030. package/src/pullquote/blockquote.native.scss +0 -8
  1031. package/src/pullquote/edit.native.js +0 -128
  1032. package/src/pullquote/figure.native.js +0 -33
  1033. package/src/pullquote/figure.native.scss +0 -16
  1034. package/src/pullquote/test/__snapshots__/transforms.native.js.snap +0 -47
  1035. package/src/pullquote/test/edit.native.js +0 -73
  1036. package/src/pullquote/test/transforms.native.js +0 -46
  1037. package/src/pullquote/transforms.native.js +0 -12
  1038. package/src/quote/test/__snapshots__/transforms.native.js.snap +0 -49
  1039. package/src/quote/test/edit.native.js +0 -94
  1040. package/src/quote/test/transforms.native.js +0 -69
  1041. package/src/quote/transforms.native.js +0 -12
  1042. package/src/search/edit.native.js +0 -486
  1043. package/src/search/style.native.scss +0 -99
  1044. package/src/search/test/__snapshots__/edit.native.js.snap +0 -827
  1045. package/src/search/test/__snapshots__/transforms.native.js.snap +0 -15
  1046. package/src/search/test/edit.native.js +0 -170
  1047. package/src/search/test/transforms.native.js +0 -40
  1048. package/src/separator/separator-settings.native.js +0 -3
  1049. package/src/separator/test/__snapshots__/edit.native.js.snap +0 -7
  1050. package/src/separator/test/__snapshots__/transforms.native.js.snap +0 -25
  1051. package/src/separator/test/edit.native.js +0 -41
  1052. package/src/separator/test/transforms.native.js +0 -42
  1053. package/src/separator/transforms.native.js +0 -12
  1054. package/src/shortcode/edit.native.js +0 -77
  1055. package/src/shortcode/style.native.scss +0 -44
  1056. package/src/shortcode/test/__snapshots__/edit.native.js.snap +0 -9
  1057. package/src/shortcode/test/__snapshots__/transforms.native.js.snap +0 -19
  1058. package/src/shortcode/test/edit.native.js +0 -70
  1059. package/src/shortcode/test/transforms.native.js +0 -42
  1060. package/src/shortcode/transforms.native.js +0 -12
  1061. package/src/social-link/edit.native.js +0 -219
  1062. package/src/social-link/editor.native.scss +0 -18
  1063. package/src/social-links/edit.native.js +0 -147
  1064. package/src/social-links/editor.native.scss +0 -25
  1065. package/src/social-links/test/__snapshots__/edit.native.js.snap +0 -57
  1066. package/src/social-links/test/__snapshots__/transforms.native.js.snap +0 -31
  1067. package/src/social-links/test/edit.native.js +0 -266
  1068. package/src/social-links/test/transforms.native.js +0 -53
  1069. package/src/spacer/controls.native.js +0 -86
  1070. package/src/spacer/edit.native.js +0 -110
  1071. package/src/spacer/editor.native.scss +0 -18
  1072. package/src/spacer/save.native.js +0 -18
  1073. package/src/spacer/test/__snapshots__/index.native.js.snap +0 -43
  1074. package/src/spacer/test/__snapshots__/transforms.native.js.snap +0 -25
  1075. package/src/spacer/test/index.native.js +0 -257
  1076. package/src/spacer/test/transforms.native.js +0 -42
  1077. package/src/tab/block.json +0 -56
  1078. package/src/tab/controls.js +0 -19
  1079. package/src/tab/edit.js +0 -141
  1080. package/src/tab/editor.scss +0 -14
  1081. package/src/tab/index.js +0 -24
  1082. package/src/tab/index.php +0 -70
  1083. package/src/tab/save.js +0 -13
  1084. package/src/tab-list/editor.scss +0 -10
  1085. package/src/tab-panels/style.scss +0 -4
  1086. package/src/table/transforms.native.js +0 -11
  1087. package/src/tabs/use-tab-list-sync.js +0 -237
  1088. package/src/text-columns/transforms.native.js +0 -12
  1089. package/src/utils/init-block.native.js +0 -40
  1090. package/src/utils/transformation-categories.native.js +0 -47
  1091. package/src/verse/test/__snapshots__/edit.native.js.snap +0 -13
  1092. package/src/verse/test/__snapshots__/transforms.native.js.snap +0 -31
  1093. package/src/verse/test/edit.native.js +0 -118
  1094. package/src/verse/test/transforms.native.js +0 -46
  1095. package/src/verse/transforms.native.js +0 -12
  1096. package/src/video/edit.native.js +0 -406
  1097. package/src/video/icon-retry.native.js +0 -11
  1098. package/src/video/style.native.scss +0 -81
  1099. package/src/video/test/__snapshots__/transforms.native.js.snap +0 -41
  1100. package/src/video/test/edit.native.js +0 -53
  1101. package/src/video/test/transforms.native.js +0 -49
  1102. package/src/video/transforms.native.js +0 -12
@@ -1,1125 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import {
5
- getEditorHtml,
6
- initializeEditor,
7
- fireEvent,
8
- waitFor,
9
- waitForModalVisible,
10
- within,
11
- } from 'test/helpers';
12
- import { Platform } from 'react-native';
13
- import Clipboard from '@react-native-clipboard/clipboard';
14
-
15
- /**
16
- * WordPress dependencies
17
- */
18
- import {
19
- getBlockTypes,
20
- setDefaultBlockName,
21
- unregisterBlockType,
22
- } from '@wordpress/blocks';
23
- import fetchRequest from '@wordpress/api-fetch';
24
- import { store as coreStore } from '@wordpress/core-data';
25
- import { dispatch } from '@wordpress/data';
26
- import { requestPreview } from '@wordpress/react-native-bridge';
27
-
28
- /**
29
- * Internal dependencies
30
- */
31
- import { WebView } from 'react-native-webview';
32
-
33
- import * as paragraph from '../../paragraph';
34
- import * as embed from '..';
35
-
36
- // Override modal mock to prevent unmounting it when is not visible.
37
- // This is required to be able to trigger onClose and onDismiss events when
38
- // the modal is dismissed.
39
- jest.mock( 'react-native-modal', () => {
40
- const mockComponent = require( 'react-native/jest/mockComponent' );
41
- return mockComponent( 'react-native-modal' );
42
- } );
43
-
44
- // Mock debounce to prevent potentially belated state updates.
45
- jest.mock( '@wordpress/compose/src/utils/debounce', () => ( {
46
- debounce: ( fn ) => {
47
- fn.cancel = jest.fn();
48
- return fn;
49
- },
50
- } ) );
51
-
52
- const MODAL_DISMISS_EVENT = Platform.OS === 'ios' ? 'onDismiss' : 'onModalHide';
53
-
54
- // OEmbed response mocks.
55
- const RICH_TEXT_EMBED_SUCCESS_RESPONSE = {
56
- url: 'https://twitter.com/notnownikki',
57
- html: '<p>Mock success response.</p>',
58
- type: 'rich',
59
- provider_name: 'Twitter',
60
- provider_url: 'https://twitter.com',
61
- version: '1.0',
62
- };
63
- const VIDEO_EMBED_SUCCESS_RESPONSE = {
64
- url: 'https://www.youtube.com/watch?v=lXMskKTw3Bc',
65
- html: '<iframe width="16" height="9"></iframe>',
66
- type: 'video',
67
- provider_name: 'YouTube',
68
- provider_url: 'https://youtube.com',
69
- version: '1.0',
70
- };
71
- const MOCK_EMBED_PHOTO_SUCCESS_RESPONSE = {
72
- url: 'https://cloudup.com/cQFlxqtY4ob',
73
- html: '<p>Mock success response.</p>',
74
- type: 'photo',
75
- provider_name: 'Cloudup',
76
- provider_url: 'https://cloudup.com',
77
- version: '1.0',
78
- };
79
- const MOCK_BAD_WORDPRESS_RESPONSE = {
80
- code: 'oembed_invalid_url',
81
- message: 'Not Found',
82
- data: {
83
- status: 404,
84
- },
85
- html: false,
86
- };
87
- const MOCK_BAD_EMBED_PROVIDER_RESPONSE = {
88
- url: 'https://youtu.be/BAD_URL',
89
- html: '<p>Mock bad response.</p>',
90
- provider_name: 'Embed Provider',
91
- version: '1.0',
92
- };
93
- const EMBED_NULL_RESPONSE = null;
94
-
95
- // Embed block HTML examples.
96
- const EMPTY_EMBED_HTML = '<!-- wp:embed /-->';
97
- const RICH_TEXT_EMBED_HTML = `<!-- wp:embed {"url":"https://twitter.com/notnownikki","type":"rich","providerNameSlug":"twitter","responsive":true} -->
98
- <figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
99
- https://twitter.com/notnownikki
100
- </div></figure>
101
- <!-- /wp:embed -->`;
102
- const RICH_TEXT_ERROR_EMBED_HTML = `<!-- wp:embed {"url":"https://twitter.com/testing","type":"rich","providerNameSlug":"twitter","responsive":true} -->
103
- <figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
104
- https://twitter.com/testing
105
- </div></figure>
106
- <!-- /wp:embed -->`;
107
- const PHOTO_EMBED_HTML = `<!-- wp:embed {"url":"https://cloudup.com/cQFlxqtY4ob","type":"photo","providerNameSlug":"cloudup","responsive":true} -->
108
- <figure class="wp-block-embed is-type-photo is-provider-cloudup wp-block-embed-cloudup"><div class="wp-block-embed__wrapper">
109
- https://cloudup.com/cQFlxqtY4ob
110
- </div></figure>
111
- <!-- /wp:embed -->`;
112
- const WP_EMBED_HTML = `<!-- wp:embed {"url":"https://wordpress.org/news/2021/07/tatum/","type":"wp-embed","providerNameSlug":"wordpress-news"} -->
113
- <figure class="wp-block-embed is-type-wp-embed is-provider-wordpress-news wp-block-embed-wordpress-news"><div class="wp-block-embed__wrapper">
114
- https://wordpress.org/news/2021/07/tatum/
115
- </div></figure>
116
- <!-- /wp:embed -->`;
117
-
118
- const EMPTY_PARAGRAPH_HTML =
119
- '<!-- wp:paragraph --><p></p><!-- /wp:paragraph -->';
120
-
121
- const MOST_USED_PROVIDERS = embed.settings.variations.filter( ( { name } ) =>
122
- [ 'youtube', 'twitter', 'wordpress', 'vimeo' ].includes( name )
123
- );
124
-
125
- // Return specified mocked responses for the oembed endpoint.
126
- const mockEmbedResponses = ( mockedResponses ) => {
127
- fetchRequest.mockImplementation( async ( req ) => {
128
- const matchedEmbedResponse = mockedResponses.find(
129
- ( mockedResponse ) =>
130
- req.path ===
131
- `/oembed/1.0/proxy?url=${ encodeURIComponent(
132
- mockedResponse.url
133
- ) }`
134
- );
135
-
136
- return matchedEmbedResponse || mockOtherResponses( req );
137
- } );
138
- };
139
-
140
- async function mockOtherResponses( { path } ) {
141
- if ( path.startsWith( '/wp/v2/themes' ) ) {
142
- return [
143
- {
144
- stylesheet: 'test-theme',
145
- theme_supports: { 'responsive-embeds': true },
146
- },
147
- ];
148
- }
149
-
150
- if ( path.startsWith( '/wp/v2/block-patterns/patterns' ) ) {
151
- return [];
152
- }
153
-
154
- if ( path.startsWith( '/wp/v2/block-patterns/categories' ) ) {
155
- return [];
156
- }
157
-
158
- return {};
159
- }
160
-
161
- const insertEmbedBlock = async ( blockTitle = 'Embed' ) => {
162
- const editor = await initializeEditor( { initialHtml: '' } );
163
-
164
- // Open inserter menu.
165
- fireEvent.press( await editor.findByLabelText( 'Add block' ) );
166
-
167
- // Insert embed block.
168
- fireEvent.press( await editor.findByText( blockTitle ) );
169
-
170
- // Return the embed block.
171
- const [ block ] = await editor.findAllByLabelText( /Embed Block\. Row 1/ );
172
-
173
- return { ...editor, block };
174
- };
175
-
176
- const initializeWithEmbedBlock = async ( initialHtml, selectBlock = true ) => {
177
- const editor = await initializeEditor( { initialHtml } );
178
-
179
- const [ block ] = await editor.findAllByLabelText( /Embed Block\. Row 1/ );
180
-
181
- if ( selectBlock ) {
182
- // Select block.
183
- fireEvent.press( block );
184
- }
185
-
186
- return { ...editor, block };
187
- };
188
-
189
- beforeAll( () => {
190
- // Paragraph block needs to be registered because by default a paragraph
191
- // block is added to empty posts.
192
- paragraph.init();
193
- embed.init();
194
- setDefaultBlockName( paragraph.name );
195
- } );
196
-
197
- beforeEach( () => {
198
- // Invalidate all resolutions of core-data to prevent
199
- // caching embed preview and theme supports requests.
200
- dispatch( coreStore ).invalidateResolutionForStore();
201
-
202
- // Mock embed responses.
203
- mockEmbedResponses( [
204
- RICH_TEXT_EMBED_SUCCESS_RESPONSE,
205
- VIDEO_EMBED_SUCCESS_RESPONSE,
206
- MOCK_EMBED_PHOTO_SUCCESS_RESPONSE,
207
- MOCK_BAD_EMBED_PROVIDER_RESPONSE,
208
- ] );
209
-
210
- // Intentionally suppress the expected console logs to reduce noise in the
211
- // test output.
212
- jest.spyOn( console, 'log' ).mockImplementation( () => {} );
213
- } );
214
-
215
- afterAll( () => {
216
- // Clean up registered blocks.
217
- getBlockTypes().forEach( ( block ) => {
218
- unregisterBlockType( block.name );
219
- } );
220
- } );
221
-
222
- describe( 'Embed block', () => {
223
- describe( 'insertion', () => {
224
- it( 'inserts generic embed block', async () => {
225
- const { block } = await insertEmbedBlock();
226
-
227
- const blockName = within( block ).getByText( 'Embed' );
228
-
229
- expect( blockName ).toBeDefined();
230
- expect( getEditorHtml() ).toMatchSnapshot();
231
- } );
232
-
233
- MOST_USED_PROVIDERS.forEach( ( { title } ) =>
234
- it( `inserts ${ title } block`, async () => {
235
- const { block } = await insertEmbedBlock( title );
236
- const blockName = within( block ).getByText( title );
237
-
238
- expect( blockName ).toBeDefined();
239
- expect( getEditorHtml() ).toMatchSnapshot();
240
- } )
241
- );
242
- } );
243
-
244
- describe( 'set URL upon block insertion', () => {
245
- it( 'sets empty URL when dismissing edit URL modal', async () => {
246
- const editor = await insertEmbedBlock();
247
-
248
- // Wait for edit URL modal to be visible.
249
- const embedEditURLModal = editor.getByTestId(
250
- 'link-settings-navigation'
251
- );
252
- await waitForModalVisible( embedEditURLModal );
253
-
254
- // Dismiss the edit URL modal.
255
- fireEvent( embedEditURLModal, 'backdropPress' );
256
- fireEvent( embedEditURLModal, MODAL_DISMISS_EVENT );
257
-
258
- expect( getEditorHtml() ).toMatchSnapshot();
259
- } );
260
-
261
- it( 'sets a valid URL when dismissing edit URL modal', async () => {
262
- const expectedURL = 'https://twitter.com/notnownikki';
263
-
264
- const editor = await insertEmbedBlock();
265
-
266
- // Wait for edit URL modal to be visible.
267
- const embedEditURLModal = editor.getByTestId(
268
- 'link-settings-navigation'
269
- );
270
- await waitForModalVisible( embedEditURLModal );
271
-
272
- // Set an URL.
273
- const linkTextInput = editor.getByPlaceholderText( 'Add link' );
274
- fireEvent( linkTextInput, 'focus' );
275
- fireEvent.changeText( linkTextInput, expectedURL );
276
-
277
- // Dismiss the edit URL modal.
278
- fireEvent( embedEditURLModal, 'backdropPress' );
279
- fireEvent( embedEditURLModal, MODAL_DISMISS_EVENT );
280
-
281
- // Wait until the WebView with the rich preview appears
282
- await waitFor( () => editor.UNSAFE_getByType( WebView ) );
283
- // Wait until responsiveness settings appear, driven by `theme_supports.responsive-embeds`
284
- await editor.findByText( 'Media settings' );
285
-
286
- const blockSettingsModal = await editor.findByTestId(
287
- 'block-settings-modal'
288
- );
289
- // Get Twitter Embed link field.
290
- const twitterLinkField = within(
291
- blockSettingsModal
292
- ).getByLabelText( `Twitter Embed link, ${ expectedURL }` );
293
-
294
- expect( twitterLinkField ).toBeDefined();
295
- expect( getEditorHtml() ).toMatchSnapshot();
296
- } );
297
-
298
- it( 'auto-pastes the URL from clipboard', async () => {
299
- const clipboardURL = 'https://twitter.com/notnownikki';
300
-
301
- // Mock clipboard.
302
- Clipboard.getString.mockResolvedValue( clipboardURL );
303
-
304
- const editor = await insertEmbedBlock();
305
-
306
- // Wait for edit URL modal to be visible.
307
- const embedEditURLModal = editor.getByTestId(
308
- 'link-settings-navigation'
309
- );
310
- await waitForModalVisible( embedEditURLModal );
311
-
312
- // Get embed link with auto-pasted URL.
313
- const autopastedLinkField = await editor.findByText( clipboardURL );
314
-
315
- // Dismiss the edit URL modal.
316
- fireEvent( embedEditURLModal, 'backdropPress' );
317
- fireEvent( embedEditURLModal, MODAL_DISMISS_EVENT );
318
-
319
- await waitFor( () => editor.UNSAFE_getByType( WebView ) );
320
- await editor.findByText( 'Media settings' );
321
-
322
- const blockSettingsModal = await editor.findByTestId(
323
- 'block-settings-modal'
324
- );
325
- // Get Twitter Embed link field.
326
- const twitterLinkField = within(
327
- blockSettingsModal
328
- ).getByLabelText( `Twitter Embed link, ${ clipboardURL }` );
329
-
330
- expect( autopastedLinkField ).toBeDefined();
331
- expect( twitterLinkField ).toBeDefined();
332
- expect( getEditorHtml() ).toMatchSnapshot();
333
-
334
- Clipboard.getString.mockReset();
335
- } );
336
- } );
337
-
338
- describe( 'set URL when empty block', () => {
339
- it( 'sets empty URL when dismissing edit URL modal', async () => {
340
- const editor = await initializeWithEmbedBlock( EMPTY_EMBED_HTML );
341
-
342
- // Edit URL.
343
- fireEvent.press( await editor.findByText( 'Add link' ) );
344
-
345
- // Wait for edit URL modal to be visible.
346
- const embedEditURLModal = editor.getByTestId(
347
- 'link-settings-navigation'
348
- );
349
- await waitForModalVisible( embedEditURLModal );
350
-
351
- // Dismiss the edit URL modal.
352
- fireEvent( embedEditURLModal, 'backdropPress' );
353
- fireEvent( embedEditURLModal, MODAL_DISMISS_EVENT );
354
-
355
- expect( getEditorHtml() ).toMatchSnapshot();
356
- } );
357
-
358
- it( 'sets a valid URL when dismissing edit URL modal', async () => {
359
- const expectedURL = 'https://twitter.com/notnownikki';
360
-
361
- const editor = await initializeWithEmbedBlock( EMPTY_EMBED_HTML );
362
-
363
- // Edit URL.
364
- fireEvent.press( editor.getByText( 'Add link' ) );
365
-
366
- // Wait for edit URL modal to be visible.
367
- const embedEditURLModal = editor.getByTestId(
368
- 'link-settings-navigation'
369
- );
370
- await waitForModalVisible( embedEditURLModal );
371
-
372
- // Set an URL.
373
- const linkTextInput = editor.getByPlaceholderText( 'Add link' );
374
- fireEvent( linkTextInput, 'focus' );
375
- fireEvent.changeText( linkTextInput, expectedURL );
376
-
377
- // Dismiss the edit URL modal.
378
- fireEvent( embedEditURLModal, 'backdropPress' );
379
- fireEvent( embedEditURLModal, MODAL_DISMISS_EVENT );
380
-
381
- await waitFor( () => editor.UNSAFE_getByType( WebView ) );
382
- await editor.findByText( 'Media settings' );
383
-
384
- const blockSettingsModal = await editor.findByTestId(
385
- 'block-settings-modal'
386
- );
387
- // Get Twitter Embed link field.
388
- const twitterLinkField = within(
389
- blockSettingsModal
390
- ).getByLabelText( `Twitter Embed link, ${ expectedURL }` );
391
-
392
- expect( twitterLinkField ).toBeDefined();
393
- expect( getEditorHtml() ).toMatchSnapshot();
394
- } );
395
-
396
- it( 'auto-pastes the URL from clipboard', async () => {
397
- const clipboardURL = 'https://twitter.com/notnownikki';
398
-
399
- // Mock clipboard.
400
- Clipboard.getString.mockResolvedValue( clipboardURL );
401
-
402
- const editor = await initializeWithEmbedBlock( EMPTY_EMBED_HTML );
403
-
404
- // Edit URL.
405
- fireEvent.press( editor.getByText( 'Add link' ) );
406
-
407
- // Wait for edit URL modal to be visible.
408
- const embedEditURLModal = editor.getByTestId(
409
- 'link-settings-navigation'
410
- );
411
- await waitForModalVisible( embedEditURLModal );
412
-
413
- // Get embed link.
414
- const embedLink = await editor.findByText( clipboardURL );
415
-
416
- // Dismiss the edit URL modal.
417
- fireEvent( embedEditURLModal, 'backdropPress' );
418
- fireEvent( embedEditURLModal, MODAL_DISMISS_EVENT );
419
-
420
- await waitFor( () => editor.UNSAFE_getByType( WebView ) );
421
- await editor.findByText( 'Media settings' );
422
-
423
- const blockSettingsModal = await editor.findByTestId(
424
- 'block-settings-modal'
425
- );
426
- // Get Twitter Embed link field.
427
- const twitterLinkField = within(
428
- blockSettingsModal
429
- ).getByLabelText( `Twitter Embed link, ${ clipboardURL }` );
430
-
431
- expect( embedLink ).toBeDefined();
432
- expect( twitterLinkField ).toBeDefined();
433
- expect( getEditorHtml() ).toMatchSnapshot();
434
-
435
- Clipboard.getString.mockReset();
436
- } );
437
- } );
438
-
439
- describe( 'edit URL', () => {
440
- it( 'keeps the previous URL if no URL is set', async () => {
441
- const editor =
442
- await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
443
-
444
- // Open Block Settings.
445
- fireEvent.press( await editor.findByLabelText( 'Open Settings' ) );
446
-
447
- // Wait for Block Settings to be visible.
448
- const blockSettingsModal = editor.getByTestId(
449
- 'block-settings-modal'
450
- );
451
- await waitForModalVisible( blockSettingsModal );
452
-
453
- // Dismiss the Block Settings modal.
454
- fireEvent( blockSettingsModal, 'backdropPress' );
455
- fireEvent( blockSettingsModal, MODAL_DISMISS_EVENT );
456
-
457
- expect( getEditorHtml() ).toMatchSnapshot();
458
- } );
459
-
460
- it( 'replaces URL', async () => {
461
- const initialURL = 'https://twitter.com/notnownikki';
462
- const expectedURL = 'https://www.youtube.com/watch?v=lXMskKTw3Bc';
463
-
464
- const editor =
465
- await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
466
-
467
- // Open Block Settings.
468
- fireEvent.press( await editor.findByLabelText( 'Open Settings' ) );
469
-
470
- // Wait for Block Settings to be visible.
471
- const blockSettingsModal = editor.getByTestId(
472
- 'block-settings-modal'
473
- );
474
- await waitForModalVisible( blockSettingsModal );
475
-
476
- // Start editing Embed link.
477
- fireEvent.press(
478
- within( blockSettingsModal ).getByLabelText(
479
- `Twitter Embed link, ${ initialURL }`
480
- )
481
- );
482
-
483
- // Replace URL.
484
- const linkTextInput = editor.getByDisplayValue( initialURL );
485
- fireEvent( linkTextInput, 'focus' );
486
- fireEvent.changeText( linkTextInput, expectedURL );
487
-
488
- // Dismiss the Block Settings modal.
489
- fireEvent( blockSettingsModal, 'backdropPress' );
490
- fireEvent( blockSettingsModal, MODAL_DISMISS_EVENT );
491
-
492
- await waitFor( () => editor.UNSAFE_getByType( WebView ) );
493
- await editor.findByText( 'Media settings' );
494
-
495
- // Get YouTube Embed link field.
496
- const youtubeLinkField = await within(
497
- blockSettingsModal
498
- ).findByLabelText( `YouTube Embed link, ${ expectedURL }` );
499
-
500
- expect( youtubeLinkField ).toBeDefined();
501
- expect( getEditorHtml() ).toMatchSnapshot();
502
- } );
503
-
504
- it( 'keeps the previous URL if an invalid URL is set', async () => {
505
- const previousURL = 'https://twitter.com/notnownikki';
506
- const invalidURL = 'http://';
507
-
508
- const editor =
509
- await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
510
-
511
- // Open Block Settings.
512
- fireEvent.press( await editor.findByLabelText( 'Open Settings' ) );
513
-
514
- // Wait for Block Settings to be visible.
515
- const blockSettingsModal = editor.getByTestId(
516
- 'block-settings-modal'
517
- );
518
- await waitForModalVisible( blockSettingsModal );
519
-
520
- // Start editing link.
521
- fireEvent.press(
522
- within( blockSettingsModal ).getByLabelText(
523
- `Twitter Embed link, ${ previousURL }`
524
- )
525
- );
526
-
527
- // Replace URL.
528
- const linkTextInput = editor.getByDisplayValue( previousURL );
529
- fireEvent( linkTextInput, 'focus' );
530
- fireEvent.changeText( linkTextInput, invalidURL );
531
-
532
- // Dismiss the Block Settings modal.
533
- fireEvent( blockSettingsModal, 'backdropPress' );
534
- fireEvent( blockSettingsModal, MODAL_DISMISS_EVENT );
535
-
536
- const errorNotice = await editor.findByText(
537
- 'Invalid URL. Please enter a valid URL.'
538
- );
539
-
540
- expect( errorNotice ).toBeDefined();
541
- expect( getEditorHtml() ).toMatchSnapshot();
542
- } );
543
-
544
- it( 'sets empty state when setting an empty URL', async () => {
545
- const previousURL = 'https://twitter.com/notnownikki';
546
-
547
- const editor =
548
- await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
549
-
550
- // Open Block Settings.
551
- fireEvent.press( await editor.findByLabelText( 'Open Settings' ) );
552
-
553
- // Get Block Settings modal.
554
- const blockSettingsModal = editor.getByTestId(
555
- 'block-settings-modal'
556
- );
557
-
558
- // Start editing link.
559
- fireEvent.press(
560
- within( blockSettingsModal ).getByLabelText(
561
- `Twitter Embed link, ${ previousURL }`
562
- )
563
- );
564
-
565
- // Replace URL with empty value.
566
- const linkTextInput = editor.getByDisplayValue( previousURL );
567
- fireEvent( linkTextInput, 'focus' );
568
- fireEvent.changeText( linkTextInput, '' );
569
-
570
- // Dismiss the Block Settings modal.
571
- fireEvent( blockSettingsModal, 'backdropPress' );
572
- fireEvent( blockSettingsModal, MODAL_DISMISS_EVENT );
573
-
574
- // Get empty embed link.
575
- const emptyLinkTextInput =
576
- await editor.findByPlaceholderText( 'Add link' );
577
-
578
- expect( emptyLinkTextInput ).toBeDefined();
579
- expect( getEditorHtml() ).toMatchSnapshot();
580
- } );
581
-
582
- // This test case covers the bug fixed in PR #35460.
583
- it( 'edits URL after dismissing two times the edit URL bottom sheet with empty value', async () => {
584
- const editor = await insertEmbedBlock();
585
-
586
- // Wait for edit URL modal to be visible.
587
- const embedEditURLModal = editor.getByTestId(
588
- 'link-settings-navigation'
589
- );
590
- await waitForModalVisible( embedEditURLModal );
591
-
592
- // Dismiss the edit URL modal.
593
- fireEvent( embedEditURLModal, 'backdropPress' );
594
- fireEvent( embedEditURLModal, MODAL_DISMISS_EVENT );
595
-
596
- // Select block.
597
- fireEvent.press( editor.block );
598
-
599
- // Edit URL.
600
- fireEvent.press( editor.getByText( 'Add link' ) );
601
-
602
- // Wait for edit URL modal to be visible.
603
- await waitForModalVisible( embedEditURLModal );
604
-
605
- // Dismiss the edit URL modal.
606
- fireEvent( embedEditURLModal, 'backdropPress' );
607
- fireEvent( embedEditURLModal, MODAL_DISMISS_EVENT );
608
-
609
- // Edit URL.
610
- fireEvent.press( editor.getByText( 'Add link' ) );
611
-
612
- // Wait for edit URL modal to be visible.
613
- await waitForModalVisible( embedEditURLModal );
614
-
615
- expect( embedEditURLModal.props.isVisible ).toBe( true );
616
- } );
617
-
618
- // This test case covers the bug fixed in PR #35013.
619
- it( 'edits URL when edited after setting a bad URL of a provider', async () => {
620
- const badURL = 'https://youtu.be/BAD_URL';
621
- const expectedURL = 'https://twitter.com/notnownikki';
622
-
623
- const editor = await insertEmbedBlock();
624
-
625
- // Wait for edit URL modal to be visible.
626
- const embedEditURLModal = editor.getByTestId(
627
- 'link-settings-navigation'
628
- );
629
- await waitForModalVisible( embedEditURLModal );
630
-
631
- // Set an bad URL.
632
- let linkTextInput = editor.getByPlaceholderText( 'Add link' );
633
- fireEvent( linkTextInput, 'focus' );
634
- fireEvent.changeText( linkTextInput, badURL );
635
-
636
- // Dismiss the edit URL modal.
637
- fireEvent( embedEditURLModal, 'backdropPress' );
638
- fireEvent( embedEditURLModal, MODAL_DISMISS_EVENT );
639
-
640
- // Open Block Settings.
641
- fireEvent.press( await editor.findByLabelText( 'Open Settings' ) );
642
-
643
- // Wait for Block Settings to be visible.
644
- const blockSettingsModal = editor.getByTestId(
645
- 'block-settings-modal'
646
- );
647
- await waitForModalVisible( blockSettingsModal );
648
-
649
- // Start editing link.
650
- fireEvent.press(
651
- within( blockSettingsModal ).getByLabelText(
652
- `Embed link, ${ badURL }`
653
- )
654
- );
655
-
656
- // Replace URL.
657
- linkTextInput = editor.getByDisplayValue( badURL );
658
- fireEvent( linkTextInput, 'focus' );
659
- fireEvent.changeText( linkTextInput, expectedURL );
660
-
661
- // Dismiss the Block Settings modal.
662
- fireEvent( blockSettingsModal, 'backdropPress' );
663
- fireEvent( blockSettingsModal, MODAL_DISMISS_EVENT );
664
-
665
- // Get Twitter Embed link field.
666
- const twitterLinkField = await within(
667
- blockSettingsModal
668
- ).findByLabelText( `Twitter Embed link, ${ expectedURL }` );
669
-
670
- expect( twitterLinkField ).toBeDefined();
671
- expect( getEditorHtml() ).toMatchSnapshot();
672
- } );
673
- } );
674
-
675
- describe( 'alignment options', () => {
676
- [
677
- 'Align left',
678
- 'Align center',
679
- 'Align right',
680
- 'Wide width',
681
- 'Full width',
682
- ].forEach( ( alignmentOption ) =>
683
- it( `sets ${ alignmentOption } option`, async () => {
684
- const editor =
685
- await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
686
-
687
- // Open alignment options.
688
- fireEvent.press( await editor.findByLabelText( 'Align' ) );
689
-
690
- // Select alignment option.
691
- fireEvent.press( await editor.findByText( alignmentOption ) );
692
-
693
- expect( getEditorHtml() ).toMatchSnapshot();
694
- } )
695
- );
696
- } );
697
-
698
- describe( 'retry', () => {
699
- it( 'retries loading the preview if initial request failed', async () => {
700
- const expectedURL = 'https://twitter.com/notnownikki';
701
-
702
- // Return bad response for the first request to oembed endpoint
703
- // and success response for the rest of requests.
704
- let isFirstEmbedRequest = true;
705
- fetchRequest.mockImplementation( async ( req ) => {
706
- if ( req.path.startsWith( '/oembed/1.0/proxy' ) ) {
707
- if ( isFirstEmbedRequest ) {
708
- isFirstEmbedRequest = false;
709
- return MOCK_BAD_WORDPRESS_RESPONSE;
710
- }
711
- return RICH_TEXT_EMBED_SUCCESS_RESPONSE;
712
- }
713
-
714
- return mockOtherResponses( req );
715
- } );
716
-
717
- const editor =
718
- await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
719
-
720
- await editor.findByText( 'Unable to embed media' );
721
-
722
- // Retry request.
723
- fireEvent.press( editor.getByText( 'More options' ) );
724
- fireEvent.press( editor.getByText( 'Retry' ) );
725
-
726
- await waitFor( () => editor.UNSAFE_getByType( WebView ) );
727
- await editor.findByText( 'Media settings' );
728
-
729
- const blockSettingsModal = await editor.findByTestId(
730
- 'block-settings-modal'
731
- );
732
- // Get Twitter Embed link field.
733
- const twitterLinkField = within(
734
- blockSettingsModal
735
- ).getByLabelText( `Twitter Embed link, ${ expectedURL }` );
736
-
737
- expect( twitterLinkField ).toBeDefined();
738
- expect( getEditorHtml() ).toMatchSnapshot();
739
- } );
740
-
741
- it( 'converts to link if preview request failed', async () => {
742
- // Return bad response for requests to oembed endpoint.
743
- fetchRequest.mockImplementation( async ( req ) => {
744
- if ( req.path.startsWith( '/oembed/1.0/proxy' ) ) {
745
- return MOCK_BAD_WORDPRESS_RESPONSE;
746
- }
747
-
748
- return mockOtherResponses( req );
749
- } );
750
-
751
- const editor =
752
- await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
753
-
754
- // Convert embed to link.
755
- fireEvent.press( editor.getByText( 'More options' ) );
756
- fireEvent.press( editor.getByText( 'Convert to link' ) );
757
-
758
- // Get paragraph block where the link is created.
759
- const [ paragraphBlock ] = await editor.findAllByLabelText(
760
- /Paragraph Block\. Row 1/
761
- );
762
-
763
- expect( paragraphBlock ).toBeDefined();
764
- expect( getEditorHtml() ).toMatchSnapshot();
765
- } );
766
-
767
- it( 'allows editing link if request failed', async () => {
768
- const failURL = 'https://wordpress.org/news/2021/07/tatum/';
769
- const successURL = 'https://twitter.com/notnownikki';
770
-
771
- // Return bad response for WordPress URL and success for Twitter URL.
772
- fetchRequest.mockImplementation( async ( req ) => {
773
- const matchesPath = ( url ) =>
774
- req.path ===
775
- `/oembed/1.0/proxy?url=${ encodeURIComponent( url ) }`;
776
-
777
- if ( matchesPath( failURL ) ) {
778
- return MOCK_BAD_WORDPRESS_RESPONSE;
779
- }
780
-
781
- if ( matchesPath( successURL ) ) {
782
- return RICH_TEXT_EMBED_SUCCESS_RESPONSE;
783
- }
784
-
785
- return mockOtherResponses( req );
786
- } );
787
-
788
- const editor = await initializeWithEmbedBlock( WP_EMBED_HTML );
789
-
790
- fireEvent.press( editor.getByText( 'More options' ) );
791
- fireEvent.press( editor.getByText( 'Edit link' ) );
792
-
793
- // Start editing link.
794
- fireEvent.press(
795
- editor.getByLabelText( `WordPress link, ${ failURL }` )
796
- );
797
-
798
- // Set an URL.
799
- const linkTextInput = editor.getByDisplayValue( failURL );
800
- fireEvent( linkTextInput, 'focus' );
801
- fireEvent.changeText( linkTextInput, successURL );
802
-
803
- // Dismiss the edit URL modal.
804
- const embedEditURLModal = editor.getByTestId(
805
- 'link-settings-navigation'
806
- );
807
- fireEvent( embedEditURLModal, 'backdropPress' );
808
- fireEvent( embedEditURLModal, MODAL_DISMISS_EVENT );
809
-
810
- await waitFor( () => editor.UNSAFE_getByType( WebView ) );
811
-
812
- const blockSettingsModal = await editor.findByTestId(
813
- 'block-settings-modal'
814
- );
815
- // Get Twitter embed link field.
816
- const twitterLinkField = within(
817
- blockSettingsModal
818
- ).getByLabelText( `Twitter Embed link, ${ successURL }` );
819
-
820
- expect( twitterLinkField ).toBeDefined();
821
- expect( getEditorHtml() ).toMatchSnapshot();
822
- } );
823
- } );
824
-
825
- describe( 'preview coming soon', () => {
826
- it( 'previews post for providers which embed preview is not available yet', async () => {
827
- const { getByText, getByTestId } =
828
- await initializeWithEmbedBlock( PHOTO_EMBED_HTML );
829
-
830
- // Try to preview the post.
831
- fireEvent.press( getByText( 'PREVIEW POST' ) );
832
-
833
- // Wait for no preview modal to be visible.
834
- const noPreviewModal = getByTestId( 'embed-no-preview-modal' );
835
- await waitForModalVisible( noPreviewModal );
836
-
837
- // Preview post.
838
- fireEvent.press( getByText( 'Preview post' ) );
839
-
840
- // Dismiss the no preview modal.
841
- fireEvent( noPreviewModal, 'backdropPress' );
842
- fireEvent( noPreviewModal, MODAL_DISMISS_EVENT );
843
-
844
- expect( requestPreview ).toHaveBeenCalled();
845
- } );
846
-
847
- it( 'dismisses no preview modal', async () => {
848
- const { getByText, getByTestId } =
849
- await initializeWithEmbedBlock( PHOTO_EMBED_HTML );
850
-
851
- // Try to preview the post.
852
- fireEvent.press( getByText( 'PREVIEW POST' ) );
853
-
854
- // Wait for no preview modal to be visible.
855
- const noPreviewModal = getByTestId( 'embed-no-preview-modal' );
856
- await waitForModalVisible( noPreviewModal );
857
-
858
- // Dismiss modal.
859
- fireEvent.press( getByText( 'Dismiss' ) );
860
-
861
- // Wait for no preview modal to be not visible.
862
- await waitFor( () =>
863
- expect( noPreviewModal.props.isVisible ).toBe( false )
864
- );
865
-
866
- expect( requestPreview ).not.toHaveBeenCalled();
867
- } );
868
- } );
869
-
870
- describe( 'create by pasting URL', () => {
871
- it( 'creates embed block when pasting URL in paragraph block', async () => {
872
- const expectedURL = 'https://www.youtube.com/watch?v=lXMskKTw3Bc';
873
-
874
- const editor = await initializeEditor( {
875
- initialHtml: EMPTY_PARAGRAPH_HTML,
876
- } );
877
-
878
- // Paste URL in paragraph block.
879
- const paragraphText =
880
- editor.getByPlaceholderText( 'Start writing…' );
881
- fireEvent( paragraphText, 'focus' );
882
- fireEvent( paragraphText, 'paste', {
883
- preventDefault: jest.fn(),
884
- nativeEvent: {
885
- eventCount: 1,
886
- target: undefined,
887
- files: [],
888
- pastedHtml: expectedURL,
889
- pastedText: expectedURL,
890
- },
891
- } );
892
-
893
- // Wait for embed handler picker to be visible.
894
- const embedHandlerPicker = editor.getByTestId(
895
- 'embed-handler-picker'
896
- );
897
- await waitForModalVisible( embedHandlerPicker );
898
-
899
- // Select create embed option.
900
- fireEvent.press( editor.getByText( 'Create embed' ) );
901
- expect( console ).toHaveLoggedWith(
902
- 'Processed HTML piece:\n\n',
903
- `<p>${ expectedURL }</p>`
904
- );
905
-
906
- // Get the created embed block.
907
- const [ embedBlock ] =
908
- await editor.findAllByLabelText( /Embed Block\. Row 1/ );
909
-
910
- expect( embedBlock ).toBeDefined();
911
-
912
- await waitFor( () => editor.UNSAFE_getByType( WebView ) );
913
- await editor.findByText( 'Media settings' );
914
-
915
- expect( getEditorHtml() ).toMatchSnapshot();
916
- } );
917
-
918
- it( 'creates link when pasting URL in paragraph block', async () => {
919
- const expectedURL = 'https://www.youtube.com/watch?v=lXMskKTw3Bc';
920
-
921
- const editor = await initializeEditor( {
922
- initialHtml: EMPTY_PARAGRAPH_HTML,
923
- } );
924
-
925
- // Paste URL in paragraph block.
926
- const paragraphText =
927
- editor.getByPlaceholderText( 'Start writing…' );
928
- fireEvent( paragraphText, 'focus' );
929
- fireEvent( paragraphText, 'paste', {
930
- preventDefault: jest.fn(),
931
- nativeEvent: {
932
- eventCount: 1,
933
- target: undefined,
934
- files: [],
935
- pastedHtml: expectedURL,
936
- pastedText: expectedURL,
937
- },
938
- } );
939
-
940
- // Wait for embed handler picker to be visible.
941
- const embedHandlerPicker = editor.getByTestId(
942
- 'embed-handler-picker'
943
- );
944
- await waitForModalVisible( embedHandlerPicker );
945
-
946
- // Select create link option.
947
- fireEvent.press( editor.getByText( 'Create link' ) );
948
- expect( console ).toHaveLoggedWith(
949
- 'Processed HTML piece:\n\n',
950
- `<p>${ expectedURL }</p>`
951
- );
952
-
953
- // Get the link text.
954
- const linkText = await editor.findByDisplayValue(
955
- `<p><a href="${ expectedURL }">${ expectedURL }</a></p>`
956
- );
957
-
958
- expect( linkText ).toBeDefined();
959
- expect( getEditorHtml() ).toMatchSnapshot();
960
- } );
961
- } );
962
-
963
- describe( 'insert via slash inserter', () => {
964
- it( 'insert generic embed block', async () => {
965
- const embedBlockSlashInserter = '/Embed';
966
- const editor = await initializeEditor( {
967
- initialHtml: EMPTY_PARAGRAPH_HTML,
968
- } );
969
-
970
- const paragraphText =
971
- editor.getByPlaceholderText( 'Start writing…' );
972
- fireEvent( paragraphText, 'focus' );
973
- // Trigger onSelectionChange to update both the current text and text selection.
974
- // This event is required by the autocompleter, as it only displays the slash inserter
975
- // if the text selection is located at the end of the text, for this reason,
976
- // the start and end arguments match the text length.
977
- fireEvent(
978
- paragraphText,
979
- 'onSelectionChange',
980
- embedBlockSlashInserter.length,
981
- embedBlockSlashInserter.length,
982
- embedBlockSlashInserter,
983
- {
984
- nativeEvent: {
985
- eventCount: 1,
986
- target: undefined,
987
- text: embedBlockSlashInserter,
988
- },
989
- }
990
- );
991
-
992
- fireEvent.press( await editor.findByText( 'Embed' ) );
993
-
994
- const [ block ] =
995
- await editor.findAllByLabelText( /Embed Block\. Row 1/ );
996
-
997
- const blockName = within( block ).getByText( 'Embed' );
998
-
999
- expect( blockName ).toBeDefined();
1000
- expect( getEditorHtml() ).toMatchSnapshot();
1001
- } );
1002
-
1003
- MOST_USED_PROVIDERS.forEach( ( { title } ) =>
1004
- it( `inserts ${ title } block`, async () => {
1005
- // Get just the first word of the title ("Twitter") as the full title ("Twitter Embed") breaks the test.
1006
- const embedBlockSlashInserter = `/${ title.split( ' ' )[ 0 ] }`;
1007
- const editor = await initializeEditor( {
1008
- initialHtml: EMPTY_PARAGRAPH_HTML,
1009
- } );
1010
-
1011
- const paragraphText =
1012
- editor.getByPlaceholderText( 'Start writing…' );
1013
- fireEvent( paragraphText, 'focus' );
1014
- // Trigger onSelectionChange to update both the current text and text selection.
1015
- // This event is required by the autocompleter, as it only displays the slash inserter
1016
- // if the text selection is located at the end of the text, for this reason,
1017
- // the start and end arguments match the text length.
1018
- fireEvent(
1019
- paragraphText,
1020
- 'onSelectionChange',
1021
- embedBlockSlashInserter.length,
1022
- embedBlockSlashInserter.length,
1023
- embedBlockSlashInserter,
1024
- {
1025
- nativeEvent: {
1026
- eventCount: 1,
1027
- target: undefined,
1028
- text: embedBlockSlashInserter,
1029
- },
1030
- }
1031
- );
1032
-
1033
- fireEvent.press( await editor.findByText( title ) );
1034
-
1035
- const [ block ] =
1036
- await editor.findAllByLabelText( /Embed Block\. Row 1/ );
1037
-
1038
- const blockName = within( block ).getByText( title );
1039
-
1040
- expect( blockName ).toBeDefined();
1041
- expect( getEditorHtml() ).toMatchSnapshot();
1042
- } )
1043
- );
1044
- } );
1045
-
1046
- it( 'sets block caption', async () => {
1047
- const expectedCaption = 'Caption';
1048
-
1049
- const screen = await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
1050
-
1051
- // Set a caption.
1052
- const captionField = screen.getByPlaceholderText( 'Add caption' );
1053
- fireEvent( captionField, 'focus' );
1054
- fireEvent( captionField, 'onChange', {
1055
- nativeEvent: {
1056
- eventCount: 1,
1057
- target: undefined,
1058
- text: expectedCaption,
1059
- },
1060
- } );
1061
-
1062
- // Get current caption.
1063
- const caption = await screen.findByDisplayValue(
1064
- `<p>${ expectedCaption }</p>`
1065
- );
1066
-
1067
- expect( caption ).toBeDefined();
1068
- expect( getEditorHtml() ).toMatchSnapshot();
1069
- } );
1070
-
1071
- it( 'displays cannot embed on the placeholder if preview data is null', async () => {
1072
- // Return null response for requests to oembed endpoint.
1073
- fetchRequest.mockImplementation( async ( req ) => {
1074
- if ( req.path.startsWith( '/oembed/1.0/proxy' ) ) {
1075
- return EMBED_NULL_RESPONSE;
1076
- }
1077
-
1078
- return mockOtherResponses( req );
1079
- } );
1080
-
1081
- const { getByText } = await initializeWithEmbedBlock(
1082
- RICH_TEXT_ERROR_EMBED_HTML
1083
- );
1084
-
1085
- const cannotEmbedText = getByText( 'Unable to embed media' );
1086
-
1087
- expect( cannotEmbedText ).toBeDefined();
1088
- expect( getEditorHtml() ).toMatchSnapshot();
1089
- } );
1090
-
1091
- describe( 'block settings', () => {
1092
- it( 'toggles resize for smaller devices media settings', async () => {
1093
- const screen =
1094
- await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
1095
-
1096
- // Open Block Settings.
1097
- fireEvent.press( await screen.findByLabelText( 'Open Settings' ) );
1098
-
1099
- // Untoggle resize for smaller devices.
1100
- fireEvent.press(
1101
- await screen.findByText( /Resize for smaller devices/ )
1102
- );
1103
-
1104
- expect( getEditorHtml() ).toMatchSnapshot();
1105
- } );
1106
-
1107
- it( 'does not show media settings panel if responsive is not supported', async () => {
1108
- const screen = await initializeWithEmbedBlock( WP_EMBED_HTML );
1109
-
1110
- // Open Block Settings.
1111
- fireEvent.press( await screen.findByLabelText( 'Open Settings' ) );
1112
-
1113
- // Wait for media settings panel.
1114
- let mediaSettingsPanel;
1115
- try {
1116
- mediaSettingsPanel =
1117
- await screen.findByText( 'Media settings' );
1118
- } catch {
1119
- // NOOP.
1120
- }
1121
-
1122
- expect( mediaSettingsPanel ).not.toBeDefined();
1123
- } );
1124
- } );
1125
- } );