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