@wordpress/block-library 8.29.0 → 8.31.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 (527) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/audio/edit.js +7 -17
  3. package/build/audio/edit.js.map +1 -1
  4. package/build/audio/edit.native.js.map +1 -1
  5. package/build/avatar/edit.js.map +1 -1
  6. package/build/block/deprecated.js +71 -11
  7. package/build/block/deprecated.js.map +1 -1
  8. package/build/block/edit.js +65 -31
  9. package/build/block/edit.js.map +1 -1
  10. package/build/button/edit.js +2 -2
  11. package/build/button/edit.js.map +1 -1
  12. package/build/buttons/edit.native.js.map +1 -1
  13. package/build/buttons/transforms.js +16 -2
  14. package/build/buttons/transforms.js.map +1 -1
  15. package/build/code/save.js +3 -1
  16. package/build/code/save.js.map +1 -1
  17. package/build/code/transforms.js +17 -6
  18. package/build/code/transforms.js.map +1 -1
  19. package/build/columns/edit.js +3 -2
  20. package/build/columns/edit.js.map +1 -1
  21. package/build/comment-author-avatar/edit.js +1 -1
  22. package/build/comment-author-avatar/edit.js.map +1 -1
  23. package/build/cover/edit/block-controls.js +14 -3
  24. package/build/cover/edit/block-controls.js.map +1 -1
  25. package/build/cover/edit/index.js +2 -1
  26. package/build/cover/edit/index.js.map +1 -1
  27. package/build/cover/edit/inspector-controls.js.map +1 -1
  28. package/build/cover/edit/resizable-cover-popover.js +0 -6
  29. package/build/cover/edit/resizable-cover-popover.js.map +1 -1
  30. package/build/cover/edit.native.js.map +1 -1
  31. package/build/details/edit.js +1 -0
  32. package/build/details/edit.js.map +1 -1
  33. package/build/file/deprecated.js.map +1 -1
  34. package/build/file/edit.js +8 -13
  35. package/build/file/edit.js.map +1 -1
  36. package/build/file/edit.native.js.map +1 -1
  37. package/build/file/save.js.map +1 -1
  38. package/build/form-input/edit.js +1 -1
  39. package/build/form-input/edit.js.map +1 -1
  40. package/build/gallery/edit.js.map +1 -1
  41. package/build/gallery/gallery.native.js.map +1 -1
  42. package/build/gallery/v1/edit.js.map +1 -1
  43. package/build/gallery/v1/gallery.native.js.map +1 -1
  44. package/build/heading/index.js +4 -3
  45. package/build/heading/index.js.map +1 -1
  46. package/build/heading/transforms.js +17 -4
  47. package/build/heading/transforms.js.map +1 -1
  48. package/build/image/edit.js +8 -4
  49. package/build/image/edit.js.map +1 -1
  50. package/build/image/edit.native.js.map +1 -1
  51. package/build/image/image.js +22 -8
  52. package/build/image/image.js.map +1 -1
  53. package/build/latest-posts/edit.native.js.map +1 -1
  54. package/build/list/ordered-list-settings.js +1 -1
  55. package/build/list/ordered-list-settings.js.map +1 -1
  56. package/build/list-item/edit.js +1 -3
  57. package/build/list-item/edit.js.map +1 -1
  58. package/build/list-item/edit.native.js.map +1 -1
  59. package/build/list-item/hooks/index.js +0 -7
  60. package/build/list-item/hooks/index.js.map +1 -1
  61. package/build/list-item/hooks/use-indent-list-item.js +1 -0
  62. package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
  63. package/build/list-item/hooks/use-outdent-list-item.js +1 -0
  64. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  65. package/build/list-item/hooks/use-space.js +16 -7
  66. package/build/list-item/hooks/use-space.js.map +1 -1
  67. package/build/list-item/index.js +4 -1
  68. package/build/list-item/index.js.map +1 -1
  69. package/build/media-text/edit.js +33 -9
  70. package/build/media-text/edit.js.map +1 -1
  71. package/build/media-text/index.js +5 -0
  72. package/build/media-text/index.js.map +1 -1
  73. package/build/media-text/media-container.js +30 -11
  74. package/build/media-text/media-container.js.map +1 -1
  75. package/build/media-text/media-container.native.js +1 -1
  76. package/build/media-text/media-container.native.js.map +1 -1
  77. package/build/media-text/save.js +2 -2
  78. package/build/media-text/save.js.map +1 -1
  79. package/build/navigation/edit/index.js +23 -29
  80. package/build/navigation/edit/index.js.map +1 -1
  81. package/build/navigation/edit/navigation-menu-delete-control.js +12 -20
  82. package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  83. package/build/navigation/edit/navigation-menu-selector.js +24 -23
  84. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  85. package/build/navigation/edit/placeholder/index.js +4 -4
  86. package/build/navigation/edit/placeholder/index.js.map +1 -1
  87. package/build/navigation/use-navigation-menu.js +15 -12
  88. package/build/navigation/use-navigation-menu.js.map +1 -1
  89. package/build/navigation-link/edit.js +12 -10
  90. package/build/navigation-link/edit.js.map +1 -1
  91. package/build/navigation-link/link-ui.js.map +1 -1
  92. package/build/navigation-submenu/edit.js +4 -0
  93. package/build/navigation-submenu/edit.js.map +1 -1
  94. package/build/paragraph/edit.native.js.map +1 -1
  95. package/build/pattern/edit.js +11 -0
  96. package/build/pattern/edit.js.map +1 -1
  97. package/build/post-author/edit.js +1 -0
  98. package/build/post-author/edit.js.map +1 -1
  99. package/build/post-excerpt/edit.js +1 -0
  100. package/build/post-excerpt/edit.js.map +1 -1
  101. package/build/post-featured-image/dimension-controls.js.map +1 -1
  102. package/build/post-featured-image/edit.js +12 -12
  103. package/build/post-featured-image/edit.js.map +1 -1
  104. package/build/post-featured-image/index.js +6 -0
  105. package/build/post-featured-image/index.js.map +1 -1
  106. package/build/post-navigation-link/edit.js +1 -0
  107. package/build/post-navigation-link/edit.js.map +1 -1
  108. package/build/post-terms/edit.js +2 -0
  109. package/build/post-terms/edit.js.map +1 -1
  110. package/build/post-title/edit.js +2 -2
  111. package/build/post-title/edit.js.map +1 -1
  112. package/build/query/edit/pattern-selection-modal.js.map +1 -1
  113. package/build/query/utils.js +7 -5
  114. package/build/query/utils.js.map +1 -1
  115. package/build/query-pagination-next/edit.js.map +1 -1
  116. package/build/query-pagination-previous/edit.js.map +1 -1
  117. package/build/quote/deprecated.js +111 -12
  118. package/build/quote/deprecated.js.map +1 -1
  119. package/build/quote/edit.js +7 -7
  120. package/build/quote/edit.js.map +1 -1
  121. package/build/quote/index.js +1 -1
  122. package/build/quote/index.js.map +1 -1
  123. package/build/quote/save.js +2 -2
  124. package/build/quote/save.js.map +1 -1
  125. package/build/read-more/edit.js +1 -0
  126. package/build/read-more/edit.js.map +1 -1
  127. package/build/search/edit.js +3 -1
  128. package/build/search/edit.js.map +1 -1
  129. package/build/search/edit.native.js +2 -2
  130. package/build/search/edit.native.js.map +1 -1
  131. package/build/site-logo/edit.js +7 -2
  132. package/build/site-logo/edit.js.map +1 -1
  133. package/build/site-title/{edit/index.js → edit.js} +1 -1
  134. package/build/site-title/edit.js.map +1 -0
  135. package/build/social-link/edit.js +1 -1
  136. package/build/social-link/edit.js.map +1 -1
  137. package/build/social-link/icons/medium.js +1 -1
  138. package/build/social-link/icons/medium.js.map +1 -1
  139. package/build/social-link/icons/reddit.js +1 -1
  140. package/build/social-link/icons/reddit.js.map +1 -1
  141. package/build/social-links/edit.native.js.map +1 -1
  142. package/build/spacer/edit.js.map +1 -1
  143. package/build/table/deprecated.js +285 -175
  144. package/build/table/deprecated.js.map +1 -1
  145. package/build/table/index.js +1 -1
  146. package/build/table-of-contents/edit.js.map +1 -1
  147. package/build/template-part/edit/index.js +53 -1
  148. package/build/template-part/edit/index.js.map +1 -1
  149. package/build/template-part/edit/selection-modal.js +2 -8
  150. package/build/template-part/edit/selection-modal.js.map +1 -1
  151. package/build/template-part/edit/utils/map-template-part-to-block-pattern.js +30 -0
  152. package/build/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
  153. package/build/utils/caption.js +15 -5
  154. package/build/utils/caption.js.map +1 -1
  155. package/build/utils/get-transformed-metadata.js +57 -0
  156. package/build/utils/get-transformed-metadata.js.map +1 -0
  157. package/build/utils/hooks.js +55 -4
  158. package/build/utils/hooks.js.map +1 -1
  159. package/build/video/edit-common-settings.js.map +1 -1
  160. package/build/video/edit.js +7 -16
  161. package/build/video/edit.js.map +1 -1
  162. package/build/video/edit.native.js +3 -8
  163. package/build/video/edit.native.js.map +1 -1
  164. package/build-module/audio/edit.js +10 -20
  165. package/build-module/audio/edit.js.map +1 -1
  166. package/build-module/audio/edit.native.js.map +1 -1
  167. package/build-module/avatar/edit.js.map +1 -1
  168. package/build-module/block/deprecated.js +71 -11
  169. package/build-module/block/deprecated.js.map +1 -1
  170. package/build-module/block/edit.js +66 -32
  171. package/build-module/block/edit.js.map +1 -1
  172. package/build-module/button/edit.js +3 -3
  173. package/build-module/button/edit.js.map +1 -1
  174. package/build-module/buttons/edit.native.js.map +1 -1
  175. package/build-module/buttons/transforms.js +16 -2
  176. package/build-module/buttons/transforms.js.map +1 -1
  177. package/build-module/code/save.js +3 -1
  178. package/build-module/code/save.js.map +1 -1
  179. package/build-module/code/transforms.js +17 -6
  180. package/build-module/code/transforms.js.map +1 -1
  181. package/build-module/columns/edit.js +3 -2
  182. package/build-module/columns/edit.js.map +1 -1
  183. package/build-module/comment-author-avatar/edit.js +1 -1
  184. package/build-module/comment-author-avatar/edit.js.map +1 -1
  185. package/build-module/cover/edit/block-controls.js +15 -4
  186. package/build-module/cover/edit/block-controls.js.map +1 -1
  187. package/build-module/cover/edit/index.js +2 -1
  188. package/build-module/cover/edit/index.js.map +1 -1
  189. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  190. package/build-module/cover/edit/resizable-cover-popover.js +1 -7
  191. package/build-module/cover/edit/resizable-cover-popover.js.map +1 -1
  192. package/build-module/cover/edit.native.js.map +1 -1
  193. package/build-module/details/edit.js +1 -0
  194. package/build-module/details/edit.js.map +1 -1
  195. package/build-module/file/deprecated.js.map +1 -1
  196. package/build-module/file/edit.js +9 -14
  197. package/build-module/file/edit.js.map +1 -1
  198. package/build-module/file/edit.native.js.map +1 -1
  199. package/build-module/file/save.js.map +1 -1
  200. package/build-module/form-input/edit.js +1 -1
  201. package/build-module/form-input/edit.js.map +1 -1
  202. package/build-module/gallery/edit.js.map +1 -1
  203. package/build-module/gallery/gallery.native.js.map +1 -1
  204. package/build-module/gallery/v1/edit.js.map +1 -1
  205. package/build-module/gallery/v1/gallery.native.js.map +1 -1
  206. package/build-module/heading/index.js +4 -3
  207. package/build-module/heading/index.js.map +1 -1
  208. package/build-module/heading/transforms.js +17 -4
  209. package/build-module/heading/transforms.js.map +1 -1
  210. package/build-module/image/edit.js +9 -5
  211. package/build-module/image/edit.js.map +1 -1
  212. package/build-module/image/edit.native.js.map +1 -1
  213. package/build-module/image/image.js +23 -9
  214. package/build-module/image/image.js.map +1 -1
  215. package/build-module/latest-posts/edit.native.js.map +1 -1
  216. package/build-module/list/ordered-list-settings.js +1 -1
  217. package/build-module/list/ordered-list-settings.js.map +1 -1
  218. package/build-module/list-item/edit.js +2 -4
  219. package/build-module/list-item/edit.js.map +1 -1
  220. package/build-module/list-item/edit.native.js.map +1 -1
  221. package/build-module/list-item/hooks/index.js +0 -1
  222. package/build-module/list-item/hooks/index.js.map +1 -1
  223. package/build-module/list-item/hooks/use-indent-list-item.js +1 -0
  224. package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
  225. package/build-module/list-item/hooks/use-outdent-list-item.js +1 -0
  226. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  227. package/build-module/list-item/hooks/use-space.js +17 -8
  228. package/build-module/list-item/hooks/use-space.js.map +1 -1
  229. package/build-module/list-item/index.js +4 -1
  230. package/build-module/list-item/index.js.map +1 -1
  231. package/build-module/media-text/edit.js +34 -10
  232. package/build-module/media-text/edit.js.map +1 -1
  233. package/build-module/media-text/index.js +5 -0
  234. package/build-module/media-text/index.js.map +1 -1
  235. package/build-module/media-text/media-container.js +31 -12
  236. package/build-module/media-text/media-container.js.map +1 -1
  237. package/build-module/media-text/media-container.native.js +1 -1
  238. package/build-module/media-text/media-container.native.js.map +1 -1
  239. package/build-module/media-text/save.js +2 -2
  240. package/build-module/media-text/save.js.map +1 -1
  241. package/build-module/navigation/edit/index.js +24 -30
  242. package/build-module/navigation/edit/index.js.map +1 -1
  243. package/build-module/navigation/edit/navigation-menu-delete-control.js +15 -23
  244. package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  245. package/build-module/navigation/edit/navigation-menu-selector.js +24 -23
  246. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  247. package/build-module/navigation/edit/placeholder/index.js +4 -4
  248. package/build-module/navigation/edit/placeholder/index.js.map +1 -1
  249. package/build-module/navigation/use-navigation-menu.js +15 -12
  250. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  251. package/build-module/navigation-link/edit.js +13 -11
  252. package/build-module/navigation-link/edit.js.map +1 -1
  253. package/build-module/navigation-link/link-ui.js.map +1 -1
  254. package/build-module/navigation-submenu/edit.js +4 -0
  255. package/build-module/navigation-submenu/edit.js.map +1 -1
  256. package/build-module/paragraph/edit.native.js.map +1 -1
  257. package/build-module/pattern/edit.js +11 -0
  258. package/build-module/pattern/edit.js.map +1 -1
  259. package/build-module/post-author/edit.js +1 -0
  260. package/build-module/post-author/edit.js.map +1 -1
  261. package/build-module/post-excerpt/edit.js +1 -0
  262. package/build-module/post-excerpt/edit.js.map +1 -1
  263. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  264. package/build-module/post-featured-image/edit.js +13 -13
  265. package/build-module/post-featured-image/edit.js.map +1 -1
  266. package/build-module/post-featured-image/index.js +6 -0
  267. package/build-module/post-featured-image/index.js.map +1 -1
  268. package/build-module/post-navigation-link/edit.js +1 -0
  269. package/build-module/post-navigation-link/edit.js.map +1 -1
  270. package/build-module/post-terms/edit.js +2 -0
  271. package/build-module/post-terms/edit.js.map +1 -1
  272. package/build-module/post-title/edit.js +2 -2
  273. package/build-module/post-title/edit.js.map +1 -1
  274. package/build-module/query/edit/pattern-selection-modal.js.map +1 -1
  275. package/build-module/query/utils.js +7 -5
  276. package/build-module/query/utils.js.map +1 -1
  277. package/build-module/query-pagination-next/edit.js.map +1 -1
  278. package/build-module/query-pagination-previous/edit.js.map +1 -1
  279. package/build-module/quote/deprecated.js +112 -13
  280. package/build-module/quote/deprecated.js.map +1 -1
  281. package/build-module/quote/edit.js +7 -7
  282. package/build-module/quote/edit.js.map +1 -1
  283. package/build-module/quote/index.js +1 -1
  284. package/build-module/quote/index.js.map +1 -1
  285. package/build-module/quote/save.js +2 -2
  286. package/build-module/quote/save.js.map +1 -1
  287. package/build-module/read-more/edit.js +1 -0
  288. package/build-module/read-more/edit.js.map +1 -1
  289. package/build-module/search/edit.js +3 -1
  290. package/build-module/search/edit.js.map +1 -1
  291. package/build-module/search/edit.native.js +2 -2
  292. package/build-module/search/edit.native.js.map +1 -1
  293. package/build-module/site-logo/edit.js +7 -2
  294. package/build-module/site-logo/edit.js.map +1 -1
  295. package/build-module/site-title/{edit/index.js → edit.js} +1 -1
  296. package/build-module/site-title/edit.js.map +1 -0
  297. package/build-module/social-link/edit.js +1 -1
  298. package/build-module/social-link/edit.js.map +1 -1
  299. package/build-module/social-link/icons/medium.js +1 -1
  300. package/build-module/social-link/icons/medium.js.map +1 -1
  301. package/build-module/social-link/icons/reddit.js +1 -1
  302. package/build-module/social-link/icons/reddit.js.map +1 -1
  303. package/build-module/social-links/edit.native.js.map +1 -1
  304. package/build-module/spacer/edit.js.map +1 -1
  305. package/build-module/table/deprecated.js +286 -176
  306. package/build-module/table/deprecated.js.map +1 -1
  307. package/build-module/table/index.js +1 -1
  308. package/build-module/table-of-contents/edit.js.map +1 -1
  309. package/build-module/template-part/edit/index.js +57 -5
  310. package/build-module/template-part/edit/index.js.map +1 -1
  311. package/build-module/template-part/edit/selection-modal.js +2 -8
  312. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  313. package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js +24 -0
  314. package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
  315. package/build-module/utils/caption.js +13 -3
  316. package/build-module/utils/caption.js.map +1 -1
  317. package/build-module/utils/get-transformed-metadata.js +51 -0
  318. package/build-module/utils/get-transformed-metadata.js.map +1 -0
  319. package/build-module/utils/hooks.js +54 -3
  320. package/build-module/utils/hooks.js.map +1 -1
  321. package/build-module/video/edit-common-settings.js.map +1 -1
  322. package/build-module/video/edit.js +10 -19
  323. package/build-module/video/edit.js.map +1 -1
  324. package/build-module/video/edit.native.js +3 -8
  325. package/build-module/video/edit.native.js.map +1 -1
  326. package/build-style/common-rtl.css +1 -0
  327. package/build-style/common.css +1 -0
  328. package/build-style/cover/style-rtl.css +2 -1
  329. package/build-style/cover/style.css +2 -1
  330. package/build-style/editor-rtl.css +11 -2
  331. package/build-style/editor.css +11 -2
  332. package/build-style/file/editor-rtl.css +3 -0
  333. package/build-style/file/editor.css +3 -0
  334. package/build-style/group/editor-rtl.css +1 -1
  335. package/build-style/group/editor.css +1 -1
  336. package/build-style/media-text/editor-rtl.css +7 -1
  337. package/build-style/media-text/editor.css +7 -1
  338. package/build-style/search/style-rtl.css +2 -0
  339. package/build-style/search/style.css +2 -0
  340. package/build-style/social-links/style-rtl.css +2 -2
  341. package/build-style/social-links/style.css +2 -2
  342. package/build-style/style-rtl.css +6 -3
  343. package/build-style/style.css +6 -3
  344. package/package.json +34 -34
  345. package/src/archives/index.php +4 -0
  346. package/src/audio/edit.js +9 -19
  347. package/src/audio/edit.native.js +3 -3
  348. package/src/avatar/edit.js +1 -1
  349. package/src/avatar/index.php +6 -0
  350. package/src/block/deprecated.js +76 -11
  351. package/src/block/edit.js +100 -32
  352. package/src/block/index.php +27 -12
  353. package/src/block/test/edit.native.js +67 -0
  354. package/src/button/edit.js +4 -3
  355. package/src/buttons/edit.native.js +1 -1
  356. package/src/buttons/transforms.js +14 -4
  357. package/src/calendar/index.php +17 -0
  358. package/src/categories/index.php +6 -0
  359. package/src/code/save.js +7 -1
  360. package/src/code/transforms.js +20 -5
  361. package/src/columns/edit.js +3 -2
  362. package/src/comment-author-avatar/edit.js +1 -1
  363. package/src/comment-author-name/index.php +4 -0
  364. package/src/comment-content/index.php +4 -0
  365. package/src/comment-date/index.php +4 -0
  366. package/src/comment-edit-link/index.php +4 -0
  367. package/src/comment-reply-link/index.php +4 -0
  368. package/src/comment-template/index.php +4 -0
  369. package/src/comments/index.php +12 -0
  370. package/src/comments-pagination/index.php +4 -0
  371. package/src/comments-pagination-next/index.php +4 -0
  372. package/src/comments-pagination-numbers/index.php +4 -0
  373. package/src/comments-pagination-previous/index.php +4 -0
  374. package/src/comments-title/index.php +4 -0
  375. package/src/cover/edit/block-controls.js +16 -2
  376. package/src/cover/edit/index.js +6 -3
  377. package/src/cover/edit/inspector-controls.js +1 -1
  378. package/src/cover/edit/resizable-cover-popover.js +1 -6
  379. package/src/cover/edit.native.js +1 -1
  380. package/src/cover/index.php +4 -0
  381. package/src/cover/style.scss +3 -2
  382. package/src/details/edit.js +1 -0
  383. package/src/file/deprecated.js +3 -3
  384. package/src/file/edit.js +10 -15
  385. package/src/file/edit.native.js +4 -4
  386. package/src/file/editor.scss +3 -0
  387. package/src/file/index.php +4 -0
  388. package/src/file/save.js +1 -1
  389. package/src/footnotes/index.php +1 -1
  390. package/src/form-input/edit.js +1 -1
  391. package/src/gallery/edit.js +3 -3
  392. package/src/gallery/gallery.native.js +1 -1
  393. package/src/gallery/index.php +6 -0
  394. package/src/gallery/test/index.native.js +1 -1
  395. package/src/gallery/v1/edit.js +2 -2
  396. package/src/gallery/v1/gallery.native.js +1 -1
  397. package/src/group/editor.scss +1 -1
  398. package/src/heading/index.js +4 -3
  399. package/src/heading/index.php +4 -0
  400. package/src/heading/transforms.js +27 -8
  401. package/src/home-link/index.php +10 -0
  402. package/src/image/edit.js +13 -5
  403. package/src/image/edit.native.js +1 -1
  404. package/src/image/editor.scss +1 -0
  405. package/src/image/image.js +34 -22
  406. package/src/image/index.php +12 -1
  407. package/src/latest-comments/index.php +4 -0
  408. package/src/latest-posts/edit.native.js +1 -1
  409. package/src/latest-posts/index.php +8 -0
  410. package/src/list/ordered-list-settings.js +1 -1
  411. package/src/list-item/edit.js +1 -2
  412. package/src/list-item/edit.native.js +1 -1
  413. package/src/list-item/hooks/index.js +0 -1
  414. package/src/list-item/hooks/use-indent-list-item.js +2 -0
  415. package/src/list-item/hooks/use-outdent-list-item.js +2 -0
  416. package/src/list-item/hooks/use-space.js +16 -9
  417. package/src/list-item/index.js +3 -0
  418. package/src/loginout/index.php +4 -0
  419. package/src/media-text/block.json +5 -0
  420. package/src/media-text/edit.js +70 -19
  421. package/src/media-text/editor.scss +7 -1
  422. package/src/media-text/index.php +70 -0
  423. package/src/media-text/media-container.js +49 -9
  424. package/src/media-text/media-container.native.js +5 -3
  425. package/src/media-text/save.js +2 -2
  426. package/src/media-text/test/edit.native.js +58 -0
  427. package/src/missing/test/edit-integration.native.js +2 -1
  428. package/src/navigation/edit/index.js +68 -72
  429. package/src/navigation/edit/navigation-menu-delete-control.js +22 -49
  430. package/src/navigation/edit/navigation-menu-selector.js +39 -21
  431. package/src/navigation/edit/placeholder/index.js +4 -4
  432. package/src/navigation/edit/test/navigation-menu-selector.js +77 -55
  433. package/src/navigation/index.php +118 -34
  434. package/src/navigation/test/use-navigation-menu.js +21 -21
  435. package/src/navigation/use-navigation-menu.js +23 -9
  436. package/src/navigation-link/edit.js +12 -13
  437. package/src/navigation-link/index.php +14 -0
  438. package/src/navigation-link/link-ui.js +2 -2
  439. package/src/navigation-submenu/edit.js +4 -0
  440. package/src/navigation-submenu/index.php +8 -0
  441. package/src/page-list/index.php +12 -0
  442. package/src/page-list-item/index.php +2 -0
  443. package/src/paragraph/edit.native.js +1 -1
  444. package/src/paragraph/test/edit.native.js +36 -0
  445. package/src/pattern/edit.js +14 -0
  446. package/src/pattern/index.php +2 -0
  447. package/src/post-author/edit.js +1 -0
  448. package/src/post-author/index.php +4 -0
  449. package/src/post-author-biography/index.php +4 -0
  450. package/src/post-author-name/index.php +4 -0
  451. package/src/post-comments-form/index.php +6 -0
  452. package/src/post-content/index.php +4 -0
  453. package/src/post-date/index.php +4 -0
  454. package/src/post-excerpt/edit.js +2 -1
  455. package/src/post-excerpt/index.php +4 -0
  456. package/src/post-featured-image/block.json +6 -0
  457. package/src/post-featured-image/dimension-controls.js +4 -4
  458. package/src/post-featured-image/edit.js +14 -12
  459. package/src/post-featured-image/index.php +15 -0
  460. package/src/post-navigation-link/edit.js +2 -1
  461. package/src/post-navigation-link/index.php +4 -0
  462. package/src/post-template/index.php +6 -0
  463. package/src/post-terms/edit.js +2 -0
  464. package/src/post-terms/index.php +6 -0
  465. package/src/post-title/edit.js +49 -43
  466. package/src/post-title/index.php +2 -0
  467. package/src/query/edit/pattern-selection-modal.js +1 -1
  468. package/src/query/index.php +2 -0
  469. package/src/query/utils.js +6 -4
  470. package/src/query-no-results/index.php +4 -0
  471. package/src/query-pagination/index.php +4 -0
  472. package/src/query-pagination-next/edit.js +1 -1
  473. package/src/query-pagination-next/index.php +4 -0
  474. package/src/query-pagination-numbers/index.php +4 -0
  475. package/src/query-pagination-previous/edit.js +1 -1
  476. package/src/query-pagination-previous/index.php +4 -0
  477. package/src/query-title/index.php +4 -0
  478. package/src/quote/block.json +1 -1
  479. package/src/quote/deprecated.js +110 -15
  480. package/src/quote/edit.js +16 -10
  481. package/src/quote/save.js +2 -2
  482. package/src/quote/test/__snapshots__/transforms.native.js.snap +2 -2
  483. package/src/read-more/edit.js +2 -1
  484. package/src/read-more/index.php +4 -0
  485. package/src/rss/index.php +4 -0
  486. package/src/search/edit.js +3 -1
  487. package/src/search/edit.native.js +6 -6
  488. package/src/search/index.php +20 -2
  489. package/src/search/style.scss +2 -0
  490. package/src/shortcode/index.php +4 -0
  491. package/src/site-logo/edit.js +11 -6
  492. package/src/site-logo/index.php +20 -0
  493. package/src/site-tagline/index.php +4 -0
  494. package/src/site-title/index.php +4 -0
  495. package/src/social-link/edit.js +2 -2
  496. package/src/social-link/icons/medium.js +1 -1
  497. package/src/social-link/icons/reddit.js +1 -1
  498. package/src/social-link/index.php +22 -9
  499. package/src/social-link/socials-with-bg.scss +1 -1
  500. package/src/social-link/socials-without-bg.scss +1 -1
  501. package/src/social-links/edit.native.js +1 -1
  502. package/src/spacer/edit.js +1 -1
  503. package/src/table/block.json +1 -1
  504. package/src/table/deprecated.js +308 -175
  505. package/src/table-of-contents/edit.js +1 -1
  506. package/src/tag-cloud/index.php +4 -0
  507. package/src/template-part/edit/index.js +91 -4
  508. package/src/template-part/edit/selection-modal.js +4 -8
  509. package/src/template-part/edit/utils/map-template-part-to-block-pattern.js +23 -0
  510. package/src/template-part/index.php +10 -0
  511. package/src/term-description/index.php +4 -0
  512. package/src/utils/caption.js +10 -1
  513. package/src/utils/get-transformed-metadata.js +65 -0
  514. package/src/utils/hooks.js +53 -3
  515. package/src/video/edit-common-settings.js +1 -1
  516. package/src/video/edit.js +10 -18
  517. package/src/video/edit.native.js +7 -8
  518. package/src/video/test/edit.native.js +0 -14
  519. package/tsconfig.json +1 -0
  520. package/build/list-item/hooks/use-copy.js +0 -39
  521. package/build/list-item/hooks/use-copy.js.map +0 -1
  522. package/build/site-title/edit/index.js.map +0 -1
  523. package/build-module/list-item/hooks/use-copy.js +0 -32
  524. package/build-module/list-item/hooks/use-copy.js.map +0 -1
  525. package/build-module/site-title/edit/index.js.map +0 -1
  526. package/src/list-item/hooks/use-copy.js +0 -38
  527. /package/src/site-title/{edit/index.js → edit.js} +0 -0
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useRefEffect } from '@wordpress/compose';
5
- import { SPACE } from '@wordpress/keycodes';
5
+ import { SPACE, TAB } from '@wordpress/keycodes';
6
6
  import { store as blockEditorStore } from '@wordpress/block-editor';
7
7
  import { useSelect } from '@wordpress/data';
8
8
 
@@ -10,11 +10,13 @@ import { useSelect } from '@wordpress/data';
10
10
  * Internal dependencies
11
11
  */
12
12
  import useIndentListItem from './use-indent-list-item';
13
+ import useOutdentListItem from './use-outdent-list-item';
13
14
 
14
15
  export default function useSpace( clientId ) {
15
16
  const { getSelectionStart, getSelectionEnd, getBlockIndex } =
16
17
  useSelect( blockEditorStore );
17
18
  const indentListItem = useIndentListItem( clientId );
19
+ const outdentListItem = useOutdentListItem();
18
20
 
19
21
  return useRefEffect(
20
22
  ( element ) => {
@@ -23,9 +25,8 @@ export default function useSpace( clientId ) {
23
25
 
24
26
  if (
25
27
  event.defaultPrevented ||
26
- keyCode !== SPACE ||
28
+ ( keyCode !== SPACE && keyCode !== TAB ) ||
27
29
  // Only override when no modifiers are pressed.
28
- shiftKey ||
29
30
  altKey ||
30
31
  metaKey ||
31
32
  ctrlKey
@@ -33,18 +34,24 @@ export default function useSpace( clientId ) {
33
34
  return;
34
35
  }
35
36
 
36
- if ( getBlockIndex( clientId ) === 0 ) {
37
- return;
38
- }
39
-
40
37
  const selectionStart = getSelectionStart();
41
38
  const selectionEnd = getSelectionEnd();
42
39
  if (
43
40
  selectionStart.offset === 0 &&
44
41
  selectionEnd.offset === 0
45
42
  ) {
46
- event.preventDefault();
47
- indentListItem();
43
+ if ( shiftKey ) {
44
+ // Note that backspace behaviour in defined in onMerge.
45
+ if ( keyCode === TAB ) {
46
+ if ( outdentListItem() ) {
47
+ event.preventDefault();
48
+ }
49
+ }
50
+ } else if ( getBlockIndex( clientId ) !== 0 ) {
51
+ if ( indentListItem() ) {
52
+ event.preventDefault();
53
+ }
54
+ }
48
55
  }
49
56
  }
50
57
 
@@ -2,6 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { listItem as icon } from '@wordpress/icons';
5
+ import { privateApis } from '@wordpress/block-editor';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -11,6 +12,7 @@ import metadata from './block.json';
11
12
  import edit from './edit';
12
13
  import save from './save';
13
14
  import transforms from './transforms';
15
+ import { unlock } from '../lock-unlock';
14
16
 
15
17
  const { name } = metadata;
16
18
 
@@ -27,6 +29,7 @@ export const settings = {
27
29
  };
28
30
  },
29
31
  transforms,
32
+ [ unlock( privateApis ).requiresWrapperOnCopy ]: true,
30
33
  };
31
34
 
32
35
  export const init = () => initBlock( { name, metadata, settings } );
@@ -8,6 +8,8 @@
8
8
  /**
9
9
  * Renders the `core/loginout` block on server.
10
10
  *
11
+ * @since 5.8.0
12
+ *
11
13
  * @param array $attributes The block attributes.
12
14
  *
13
15
  * @return string Returns the login-out link or form.
@@ -39,6 +41,8 @@ function render_block_core_loginout( $attributes ) {
39
41
 
40
42
  /**
41
43
  * Registers the `core/loginout` block on server.
44
+ *
45
+ * @since 5.8.0
42
46
  */
43
47
  function register_block_core_loginout() {
44
48
  register_block_type_from_metadata(
@@ -92,8 +92,13 @@
92
92
  },
93
93
  "allowedBlocks": {
94
94
  "type": "array"
95
+ },
96
+ "useFeaturedImage": {
97
+ "type": "boolean",
98
+ "default": false
95
99
  }
96
100
  },
101
+ "usesContext": [ "postId", "postType" ],
97
102
  "supports": {
98
103
  "anchor": true,
99
104
  "align": [ "wide", "full" ],
@@ -31,7 +31,7 @@ import {
31
31
  } from '@wordpress/components';
32
32
  import { isBlobURL, getBlobTypeByURL } from '@wordpress/blob';
33
33
  import { pullLeft, pullRight } from '@wordpress/icons';
34
- import { store as coreStore } from '@wordpress/core-data';
34
+ import { useEntityProp, store as coreStore } from '@wordpress/core-data';
35
35
 
36
36
  /**
37
37
  * Internal dependencies
@@ -127,7 +127,12 @@ function attributesFromMedia( {
127
127
  };
128
128
  }
129
129
 
130
- function MediaTextEdit( { attributes, isSelected, setAttributes } ) {
130
+ function MediaTextEdit( {
131
+ attributes,
132
+ isSelected,
133
+ setAttributes,
134
+ context: { postId, postType },
135
+ } ) {
131
136
  const {
132
137
  focalPoint,
133
138
  href,
@@ -145,9 +150,42 @@ function MediaTextEdit( { attributes, isSelected, setAttributes } ) {
145
150
  rel,
146
151
  verticalAlignment,
147
152
  allowedBlocks,
153
+ useFeaturedImage,
148
154
  } = attributes;
149
155
  const mediaSizeSlug = attributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG;
150
156
 
157
+ const [ featuredImage ] = useEntityProp(
158
+ 'postType',
159
+ postType,
160
+ 'featured_media',
161
+ postId
162
+ );
163
+
164
+ const featuredImageMedia = useSelect(
165
+ ( select ) =>
166
+ featuredImage &&
167
+ select( coreStore ).getMedia( featuredImage, { context: 'view' } ),
168
+ [ featuredImage ]
169
+ );
170
+
171
+ const featuredImageURL = useFeaturedImage
172
+ ? featuredImageMedia?.source_url
173
+ : '';
174
+ const featuredImageAlt = useFeaturedImage
175
+ ? featuredImageMedia?.alt_text
176
+ : '';
177
+
178
+ const toggleUseFeaturedImage = () => {
179
+ setAttributes( {
180
+ imageFill: false,
181
+ mediaType: 'image',
182
+ mediaId: undefined,
183
+ mediaUrl: undefined,
184
+ mediaAlt: undefined,
185
+ useFeaturedImage: ! useFeaturedImage,
186
+ } );
187
+ };
188
+
151
189
  const { imageSizes, image } = useSelect(
152
190
  ( select ) => {
153
191
  const { getSettings } = select( blockEditorStore );
@@ -261,25 +299,30 @@ function MediaTextEdit( { attributes, isSelected, setAttributes } ) {
261
299
  }
262
300
  />
263
301
  ) }
264
- { imageFill && mediaUrl && mediaType === 'image' && (
265
- <FocalPointPicker
266
- __nextHasNoMarginBottom
267
- __next40pxDefaultSize
268
- label={ __( 'Focal point' ) }
269
- url={ mediaUrl }
270
- value={ focalPoint }
271
- onChange={ ( value ) =>
272
- setAttributes( { focalPoint: value } )
273
- }
274
- onDragStart={ imperativeFocalPointPreview }
275
- onDrag={ imperativeFocalPointPreview }
276
- />
277
- ) }
278
- { mediaType === 'image' && (
302
+ { imageFill &&
303
+ ( mediaUrl || featuredImageURL ) &&
304
+ mediaType === 'image' && (
305
+ <FocalPointPicker
306
+ __nextHasNoMarginBottom
307
+ label={ __( 'Focal point' ) }
308
+ url={
309
+ useFeaturedImage && featuredImageURL
310
+ ? featuredImageURL
311
+ : mediaUrl
312
+ }
313
+ value={ focalPoint }
314
+ onChange={ ( value ) =>
315
+ setAttributes( { focalPoint: value } )
316
+ }
317
+ onDragStart={ imperativeFocalPointPreview }
318
+ onDrag={ imperativeFocalPointPreview }
319
+ />
320
+ ) }
321
+ { mediaType === 'image' && ( mediaUrl || featuredImageURL ) && (
279
322
  <TextareaControl
280
323
  __nextHasNoMarginBottom
281
324
  label={ __( 'Alternative text' ) }
282
- value={ mediaAlt }
325
+ value={ mediaAlt || featuredImageAlt }
283
326
  onChange={ onMediaAltChange }
284
327
  help={
285
328
  <>
@@ -353,7 +396,11 @@ function MediaTextEdit( { attributes, isSelected, setAttributes } ) {
353
396
  onChangeUrl={ onSetHref }
354
397
  linkDestination={ linkDestination }
355
398
  mediaType={ mediaType }
356
- mediaUrl={ image && image.source_url }
399
+ mediaUrl={
400
+ useFeaturedImage && featuredImageURL
401
+ ? featuredImageURL
402
+ : image && image.source_url
403
+ }
357
404
  mediaLink={ image && image.link }
358
405
  linkTarget={ linkTarget }
359
406
  linkClass={ linkClass }
@@ -370,6 +417,7 @@ function MediaTextEdit( { attributes, isSelected, setAttributes } ) {
370
417
  commitWidthChange={ commitWidthChange }
371
418
  ref={ refMediaContainer }
372
419
  enableResize={ blockEditingMode === 'default' }
420
+ toggleUseFeaturedImage={ toggleUseFeaturedImage }
373
421
  { ...{
374
422
  focalPoint,
375
423
  imageFill,
@@ -381,6 +429,9 @@ function MediaTextEdit( { attributes, isSelected, setAttributes } ) {
381
429
  mediaType,
382
430
  mediaUrl,
383
431
  mediaWidth,
432
+ useFeaturedImage,
433
+ featuredImageURL,
434
+ featuredImageAlt,
384
435
  } }
385
436
  />
386
437
  { mediaPosition !== 'right' && <div { ...innerBlocksProps } /> }
@@ -26,7 +26,8 @@
26
26
  width: 100% !important;
27
27
  }
28
28
 
29
- .wp-block-media-text.is-image-fill .editor-media-container__resizer {
29
+ .wp-block-media-text.is-image-fill .editor-media-container__resizer,
30
+ .wp-block-media-text.is-image-fill .components-placeholder.has-illustration {
30
31
  // The resizer sets an inline height but for the image fill we set it to full height.
31
32
  height: 100% !important;
32
33
  }
@@ -34,3 +35,8 @@
34
35
  .wp-block-media-text > .block-editor-block-list__layout > .block-editor-block-list__block {
35
36
  max-width: unset;
36
37
  }
38
+
39
+ /* Make the featured image placeholder the same height as the media selection area. */
40
+ .wp-block-media-text--placeholder-image {
41
+ min-height: 205px;
42
+ }
@@ -0,0 +1,70 @@
1
+ <?php
2
+ /**
3
+ * Server-side rendering of the `core/media-text` block.
4
+ *
5
+ * @package WordPress
6
+ */
7
+
8
+ /**
9
+ * Renders the `core/media-text` block on server.
10
+ *
11
+ * @since 6.6.0
12
+ *
13
+ * @param array $attributes The block attributes.
14
+ * @param string $content The block rendered content.
15
+ *
16
+ * @return string Returns the Media & Text block markup, if useFeaturedImage is true.
17
+ */
18
+ function render_block_core_media_text( $attributes, $content ) {
19
+ if ( false === $attributes['useFeaturedImage'] ) {
20
+ return $content;
21
+ }
22
+
23
+ if ( in_the_loop() ) {
24
+ update_post_thumbnail_cache();
25
+ }
26
+
27
+ $current_featured_image = get_the_post_thumbnail_url();
28
+ if ( ! $current_featured_image ) {
29
+ return $content;
30
+ }
31
+
32
+ $image_tag = '<figure class="wp-block-media-text__media"><img>';
33
+ $content = preg_replace( '/<figure\s+class="wp-block-media-text__media">/', $image_tag, $content );
34
+
35
+ $processor = new WP_HTML_Tag_Processor( $content );
36
+ if ( isset( $attributes['imageFill'] ) && $attributes['imageFill'] ) {
37
+ $position = '50% 50%';
38
+ if ( isset( $attributes['focalPoint'] ) ) {
39
+ $position = round( $attributes['focalPoint']['x'] * 100 ) . '% ' . round( $attributes['focalPoint']['y'] * 100 ) . '%';
40
+ }
41
+ $processor->next_tag( 'figure' );
42
+ $processor->set_attribute( 'style', 'background-image:url(' . esc_url( $current_featured_image ) . ');background-position:' . $position . ';' );
43
+ }
44
+ $processor->next_tag( 'img' );
45
+ $media_size_slug = 'full';
46
+ if ( isset( $attributes['mediaSizeSlug'] ) ) {
47
+ $media_size_slug = $attributes['mediaSizeSlug'];
48
+ }
49
+ $processor->set_attribute( 'src', esc_url( $current_featured_image ) );
50
+ $processor->set_attribute( 'class', 'wp-image-' . get_post_thumbnail_id() . ' size-' . $media_size_slug );
51
+
52
+ $content = $processor->get_updated_html();
53
+
54
+ return $content;
55
+ }
56
+
57
+ /**
58
+ * Registers the `core/media-text` block renderer on server.
59
+ *
60
+ * @since 6.6.0
61
+ */
62
+ function register_block_core_media_text() {
63
+ register_block_type_from_metadata(
64
+ __DIR__ . '/media-text',
65
+ array(
66
+ 'render_callback' => 'render_block_core_media_text',
67
+ )
68
+ );
69
+ }
70
+ add_action( 'init', 'register_block_core_media_text' );
@@ -6,7 +6,7 @@ import classnames from 'classnames';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { ResizableBox, Spinner } from '@wordpress/components';
9
+ import { ResizableBox, Spinner, Placeholder } from '@wordpress/components';
10
10
  import {
11
11
  BlockControls,
12
12
  BlockIcon,
@@ -56,21 +56,39 @@ const ResizableBoxContainer = forwardRef(
56
56
  }
57
57
  );
58
58
 
59
- function ToolbarEditButton( { mediaId, mediaUrl, onSelectMedia } ) {
59
+ function ToolbarEditButton( {
60
+ mediaId,
61
+ mediaUrl,
62
+ onSelectMedia,
63
+ toggleUseFeaturedImage,
64
+ useFeaturedImage,
65
+ featuredImageURL,
66
+ } ) {
60
67
  return (
61
68
  <BlockControls group="other">
62
69
  <MediaReplaceFlow
63
70
  mediaId={ mediaId }
64
- mediaURL={ mediaUrl }
71
+ mediaUrl={
72
+ useFeaturedImage && featuredImageURL
73
+ ? featuredImageURL
74
+ : mediaUrl
75
+ }
65
76
  allowedTypes={ ALLOWED_MEDIA_TYPES }
66
77
  accept="image/*,video/*"
67
78
  onSelect={ onSelectMedia }
79
+ onToggleFeaturedImage={ toggleUseFeaturedImage }
80
+ useFeaturedImage={ useFeaturedImage }
68
81
  />
69
82
  </BlockControls>
70
83
  );
71
84
  }
72
85
 
73
- function PlaceholderContainer( { className, mediaUrl, onSelectMedia } ) {
86
+ function PlaceholderContainer( {
87
+ className,
88
+ mediaUrl,
89
+ onSelectMedia,
90
+ toggleUseFeaturedImage,
91
+ } ) {
74
92
  const { createErrorNotice } = useDispatch( noticesStore );
75
93
 
76
94
  const onUploadError = ( message ) => {
@@ -86,6 +104,7 @@ function PlaceholderContainer( { className, mediaUrl, onSelectMedia } ) {
86
104
  className={ className }
87
105
  onSelect={ onSelectMedia }
88
106
  accept="image/*,video/*"
107
+ onToggleFeaturedImage={ toggleUseFeaturedImage }
89
108
  allowedTypes={ ALLOWED_MEDIA_TYPES }
90
109
  onError={ onUploadError }
91
110
  disableMediaButtons={ mediaUrl }
@@ -110,13 +129,17 @@ function MediaContainer( props, ref ) {
110
129
  onSelectMedia,
111
130
  onWidthChange,
112
131
  enableResize,
132
+ toggleUseFeaturedImage,
133
+ useFeaturedImage,
134
+ featuredImageURL,
135
+ featuredImageAlt,
113
136
  } = props;
114
137
 
115
138
  const isTemporaryMedia = ! mediaId && isBlobURL( mediaUrl );
116
139
 
117
140
  const { toggleSelection } = useDispatch( blockEditorStore );
118
141
 
119
- if ( mediaUrl ) {
142
+ if ( mediaUrl || featuredImageURL || useFeaturedImage ) {
120
143
  const onResizeStart = () => {
121
144
  toggleSelection( false );
122
145
  };
@@ -134,11 +157,16 @@ function MediaContainer( props, ref ) {
134
157
 
135
158
  const backgroundStyles =
136
159
  mediaType === 'image' && imageFill
137
- ? imageFillStyles( mediaUrl, focalPoint )
160
+ ? imageFillStyles( mediaUrl || featuredImageURL, focalPoint )
138
161
  : {};
139
162
 
140
163
  const mediaTypeRenderers = {
141
- image: () => <img src={ mediaUrl } alt={ mediaAlt } />,
164
+ image: () =>
165
+ useFeaturedImage && featuredImageURL ? (
166
+ <img src={ featuredImageURL } alt={ featuredImageAlt } />
167
+ ) : (
168
+ mediaUrl && <img src={ mediaUrl } alt={ mediaAlt } />
169
+ ),
142
170
  video: () => <video controls src={ mediaUrl } />,
143
171
  };
144
172
 
@@ -165,12 +193,24 @@ function MediaContainer( props, ref ) {
165
193
  >
166
194
  <ToolbarEditButton
167
195
  onSelectMedia={ onSelectMedia }
168
- mediaUrl={ mediaUrl }
196
+ mediaUrl={
197
+ useFeaturedImage && featuredImageURL
198
+ ? featuredImageURL
199
+ : mediaUrl
200
+ }
169
201
  mediaId={ mediaId }
202
+ toggleUseFeaturedImage={ toggleUseFeaturedImage }
203
+ useFeaturedImage={ useFeaturedImage }
170
204
  />
171
205
  { ( mediaTypeRenderers[ mediaType ] || noop )() }
172
206
  { isTemporaryMedia && <Spinner /> }
173
- <PlaceholderContainer { ...props } />
207
+ { ! useFeaturedImage && <PlaceholderContainer { ...props } /> }
208
+ { ! featuredImageURL && useFeaturedImage && (
209
+ <Placeholder
210
+ className="wp-block-media-text--placeholder-image"
211
+ withIllustration
212
+ />
213
+ ) }
174
214
  </ResizableBoxContainer>
175
215
  );
176
216
  }
@@ -265,7 +265,7 @@ class MediaContainer extends Component {
265
265
  isSelected={ isSelected }
266
266
  style={ styles.video }
267
267
  source={ { uri: mediaUrl } }
268
- paused={ true }
268
+ paused
269
269
  />
270
270
  </View>
271
271
  ) }
@@ -329,7 +329,7 @@ class MediaContainer extends Component {
329
329
  if ( mediaUrl ) {
330
330
  return (
331
331
  <MediaUpload
332
- isReplacingMedia={ true }
332
+ isReplacingMedia
333
333
  onSelect={ this.onSelectMediaUploadOption }
334
334
  allowedTypes={ ALLOWED_MEDIA_TYPES }
335
335
  value={ mediaId }
@@ -341,7 +341,9 @@ class MediaContainer extends Component {
341
341
  { getMediaOptions() }
342
342
 
343
343
  <MediaUploadProgress
344
- enablePausedUploads
344
+ enablePausedUploads={
345
+ mediaType === MEDIA_TYPE_IMAGE
346
+ }
345
347
  coverUrl={ coverUrl }
346
348
  mediaId={ mediaId }
347
349
  onUpdateMediaProgress={
@@ -42,13 +42,13 @@ export default function save( { attributes } ) {
42
42
  [ `size-${ mediaSizeSlug }` ]: mediaId && mediaType === 'image',
43
43
  } );
44
44
 
45
- let image = (
45
+ let image = mediaUrl ? (
46
46
  <img
47
47
  src={ mediaUrl }
48
48
  alt={ mediaAlt }
49
49
  className={ imageClasses || null }
50
50
  />
51
- );
51
+ ) : null;
52
52
 
53
53
  if ( href ) {
54
54
  image = (
@@ -0,0 +1,58 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ addBlock,
6
+ fireEvent,
7
+ initializeEditor,
8
+ screen,
9
+ setupCoreBlocks,
10
+ } from 'test/helpers';
11
+
12
+ /**
13
+ * WordPress dependencies
14
+ */
15
+ import {
16
+ requestMediaPicker,
17
+ sendMediaUpload,
18
+ subscribeMediaUpload,
19
+ } from '@wordpress/react-native-bridge';
20
+ import { MEDIA_UPLOAD_STATE_PAUSED } from '@wordpress/block-editor';
21
+
22
+ let uploadCallBack;
23
+ subscribeMediaUpload.mockImplementation( ( callback ) => {
24
+ uploadCallBack = callback;
25
+ } );
26
+ sendMediaUpload.mockImplementation( ( payload ) => {
27
+ uploadCallBack( payload );
28
+ } );
29
+
30
+ setupCoreBlocks( [ 'core/media-text' ] );
31
+
32
+ describe( 'Media & Text block edit', () => {
33
+ it( 'should display an error message for failed video uploads', async () => {
34
+ requestMediaPicker.mockImplementation(
35
+ ( source, filter, multiple, callback ) => {
36
+ callback( {
37
+ id: 1,
38
+ url: 'file://video.mp4',
39
+ type: 'video',
40
+ } );
41
+ }
42
+ );
43
+ await initializeEditor();
44
+ await addBlock( screen, 'Media & Text' );
45
+ fireEvent.press( screen.getByText( 'Add image or video' ) );
46
+ fireEvent.press( screen.getByText( 'Choose from device' ) );
47
+
48
+ sendMediaUpload( {
49
+ mediaId: 1,
50
+ state: MEDIA_UPLOAD_STATE_PAUSED,
51
+ progress: 0,
52
+ } );
53
+
54
+ expect(
55
+ screen.getByText( 'Failed to insert media.\nTap for more info.' )
56
+ ).toBeVisible();
57
+ } );
58
+ } );
@@ -2,6 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import {
5
+ act,
5
6
  fireEvent,
6
7
  getBlock,
7
8
  initializeEditor,
@@ -117,7 +118,7 @@ describe( 'Unsupported block', () => {
117
118
  screen.getByTestId( 'bottom-sheet' ),
118
119
  MODAL_DISMISS_EVENT
119
120
  );
120
- jest.runOnlyPendingTimers();
121
+ act( () => jest.runOnlyPendingTimers() );
121
122
  } );
122
123
  expect( requestUnsupportedBlockFallback ).toHaveBeenCalled();
123
124
  } );