@wordpress/block-library 11.0.2-next.v.202609171837.0 → 11.2.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 (686) hide show
  1. package/CHANGELOG.md +44 -1
  2. package/build/accordion/block.json +4 -1
  3. package/build/accordion-heading/block.json +1 -0
  4. package/build/accordion-item/block.json +7 -1
  5. package/build/accordion-panel/block.json +9 -1
  6. package/build/archives/block.json +12 -0
  7. package/build/audio/block.json +8 -0
  8. package/build/audio/edit.cjs +2 -1
  9. package/build/audio/edit.cjs.map +2 -2
  10. package/build/avatar/block.json +4 -0
  11. package/build/avatar/edit.cjs +31 -1
  12. package/build/avatar/edit.cjs.map +3 -3
  13. package/build/breadcrumbs/block.json +3 -0
  14. package/build/breadcrumbs/edit.cjs.map +3 -3
  15. package/build/button/block.json +6 -0
  16. package/build/button/edit.cjs +9 -6
  17. package/build/button/edit.cjs.map +2 -2
  18. package/build/buttons/block.json +15 -1
  19. package/build/categories/block.json +12 -1
  20. package/build/code/block.json +13 -0
  21. package/build/column/block.json +9 -0
  22. package/build/column/edit.cjs +5 -0
  23. package/build/column/edit.cjs.map +2 -2
  24. package/build/columns/block.json +13 -0
  25. package/build/columns/edit.cjs +21 -112
  26. package/build/columns/edit.cjs.map +3 -3
  27. package/build/comment-author-name/block.json +3 -0
  28. package/build/comment-content/block.json +5 -0
  29. package/build/comment-date/block.json +3 -0
  30. package/build/comment-edit-link/block.json +3 -0
  31. package/build/comment-reply-link/block.json +3 -0
  32. package/build/comments/block.json +10 -0
  33. package/build/comments/edit/placeholder.cjs +95 -87
  34. package/build/comments/edit/placeholder.cjs.map +2 -2
  35. package/build/comments-pagination/block.json +14 -0
  36. package/build/comments-pagination-next/block.json +3 -0
  37. package/build/comments-pagination-numbers/block.json +3 -0
  38. package/build/comments-pagination-previous/block.json +6 -0
  39. package/build/comments-title/block.json +3 -0
  40. package/build/cover/block.json +2 -1
  41. package/build/cover/edit/index.cjs +30 -6
  42. package/build/cover/edit/index.cjs.map +2 -2
  43. package/build/cover/edit/inspector-controls.cjs +56 -14
  44. package/build/cover/edit/inspector-controls.cjs.map +2 -2
  45. package/build/cover/embed-video-utils.cjs +9 -8
  46. package/build/cover/embed-video-utils.cjs.map +2 -2
  47. package/build/cover/view.cjs +21 -0
  48. package/build/cover/view.cjs.map +7 -0
  49. package/build/details/block.json +14 -0
  50. package/build/embed/block.json +6 -1
  51. package/build/file/block.json +14 -0
  52. package/build/footnotes/block.json +13 -0
  53. package/build/gallery/block.json +22 -0
  54. package/build/gallery/dynamic-gallery.cjs +32 -93
  55. package/build/gallery/dynamic-gallery.cjs.map +3 -3
  56. package/build/gallery/edit.cjs +104 -42
  57. package/build/gallery/edit.cjs.map +2 -2
  58. package/build/gallery/order-controls.cjs +107 -0
  59. package/build/gallery/order-controls.cjs.map +7 -0
  60. package/build/gallery/order-images.cjs +92 -0
  61. package/build/gallery/order-images.cjs.map +7 -0
  62. package/build/gallery/order-options.cjs +62 -0
  63. package/build/gallery/order-options.cjs.map +7 -0
  64. package/build/gallery/use-dynamic-gallery.cjs +1 -7
  65. package/build/gallery/use-dynamic-gallery.cjs.map +2 -2
  66. package/build/gallery/use-get-media.cjs +2 -3
  67. package/build/gallery/use-get-media.cjs.map +2 -2
  68. package/build/group/block.json +1 -0
  69. package/build/group/edit.cjs +3 -3
  70. package/build/group/edit.cjs.map +2 -2
  71. package/build/heading/block.json +14 -0
  72. package/build/home-link/block.json +30 -0
  73. package/build/home-link/edit.cjs.map +3 -3
  74. package/build/icon/components/custom-inserter/index.cjs +3 -1
  75. package/build/icon/components/custom-inserter/index.cjs.map +2 -2
  76. package/build/icon/edit.cjs +49 -5
  77. package/build/icon/edit.cjs.map +2 -2
  78. package/build/image/image.cjs +10 -8
  79. package/build/image/image.cjs.map +3 -3
  80. package/build/image/use-open-image-media-editor-modal.cjs +32 -8
  81. package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
  82. package/build/image/view.cjs +44 -50
  83. package/build/image/view.cjs.map +2 -2
  84. package/build/latest-comments/block.json +20 -0
  85. package/build/latest-posts/block.json +14 -0
  86. package/build/list/block.json +12 -1
  87. package/build/list-item/block.json +8 -1
  88. package/build/list-item/index.cjs +4 -0
  89. package/build/list-item/index.cjs.map +3 -3
  90. package/build/loginout/block.json +14 -0
  91. package/build/math/block.json +14 -0
  92. package/build/media-text/block.json +19 -0
  93. package/build/navigation/edit/index.cjs +1 -4
  94. package/build/navigation/edit/index.cjs.map +2 -2
  95. package/build/navigation-link/link-ui/index.cjs +33 -19
  96. package/build/navigation-link/link-ui/index.cjs.map +2 -2
  97. package/build/navigation-link/link-ui/page-creator.cjs.map +3 -3
  98. package/build/navigation-link/shared/controls.cjs.map +3 -3
  99. package/build/navigation-link/shared/index.cjs +5 -0
  100. package/build/navigation-link/shared/index.cjs.map +2 -2
  101. package/build/navigation-link/shared/use-block-suggestions.cjs +141 -0
  102. package/build/navigation-link/shared/use-block-suggestions.cjs.map +7 -0
  103. package/build/navigation-link/shared/use-link-preview.cjs +13 -13
  104. package/build/navigation-link/shared/use-link-preview.cjs.map +2 -2
  105. package/build/navigation-overlay-close/block.json +7 -0
  106. package/build/navigation-submenu/block.json +6 -0
  107. package/build/navigation-submenu/edit.cjs +9 -1
  108. package/build/navigation-submenu/edit.cjs.map +3 -3
  109. package/build/page-list/block.json +14 -0
  110. package/build/paragraph/block.json +1 -0
  111. package/build/paragraph/edit.cjs +1 -2
  112. package/build/paragraph/edit.cjs.map +2 -2
  113. package/build/playlist/block.json +1 -0
  114. package/build/post-author-biography/block.json +5 -0
  115. package/build/post-author-name/block.json +5 -0
  116. package/build/post-comments-count/block.json +3 -0
  117. package/build/post-comments-form/block.json +15 -0
  118. package/build/post-content/block.json +4 -1
  119. package/build/post-date/block.json +3 -0
  120. package/build/post-excerpt/block.json +9 -0
  121. package/build/post-featured-image/block.json +1 -0
  122. package/build/post-featured-image/edit.cjs +12 -10
  123. package/build/post-featured-image/edit.cjs.map +2 -2
  124. package/build/post-navigation-link/block.json +30 -0
  125. package/build/post-navigation-link/edit.cjs +13 -2
  126. package/build/post-navigation-link/edit.cjs.map +3 -3
  127. package/build/post-template/block.json +13 -1
  128. package/build/post-terms/block.json +10 -0
  129. package/build/post-time-to-read/block.json +10 -0
  130. package/build/post-title/block.json +14 -0
  131. package/build/preformatted/block.json +11 -0
  132. package/build/pullquote/block.json +3 -1
  133. package/build/query-no-results/block.json +14 -2
  134. package/build/query-pagination/block.json +20 -0
  135. package/build/query-pagination-next/block.json +3 -0
  136. package/build/query-pagination-numbers/block.json +3 -0
  137. package/build/query-pagination-previous/block.json +3 -0
  138. package/build/query-title/block.json +3 -0
  139. package/build/query-total/block.json +10 -0
  140. package/build/quote/block.json +3 -0
  141. package/build/read-more/block.json +11 -0
  142. package/build/rss/block.json +10 -0
  143. package/build/search/block.json +2 -1
  144. package/build/site-tagline/block.json +12 -1
  145. package/build/site-title/block.json +11 -1
  146. package/build/social-links/block.json +4 -0
  147. package/build/social-links/edit.cjs +2 -3
  148. package/build/social-links/edit.cjs.map +2 -2
  149. package/build/tab-list/block.json +4 -0
  150. package/build/tab-list/edit.cjs +3 -1
  151. package/build/tab-list/edit.cjs.map +3 -3
  152. package/build/tab-list/save.cjs +3 -1
  153. package/build/tab-list/save.cjs.map +3 -3
  154. package/build/tab-panel/block.json +25 -0
  155. package/build/tab-panel/controls.cjs.map +3 -3
  156. package/build/tab-panels/block.json +21 -1
  157. package/build/table-of-contents/block.json +7 -0
  158. package/build/tabs/block.json +27 -1
  159. package/build/tag-cloud/block.json +19 -0
  160. package/build/template-part/edit/selection-modal.cjs.map +1 -1
  161. package/build/term-count/block.json +12 -0
  162. package/build/term-description/block.json +13 -0
  163. package/build/term-name/block.json +16 -1
  164. package/build/term-template/block.json +14 -1
  165. package/build/utils/search-patterns.cjs +7 -43
  166. package/build/utils/search-patterns.cjs.map +3 -3
  167. package/build/utils/style-state.cjs +4 -6
  168. package/build/utils/style-state.cjs.map +2 -2
  169. package/build/utils/waveform-utils.cjs +2 -2
  170. package/build/utils/waveform-utils.cjs.map +2 -2
  171. package/build/verse/block.json +4 -0
  172. package/build/video/block.json +12 -0
  173. package/build/video/edit.cjs +30 -14
  174. package/build/video/edit.cjs.map +3 -3
  175. package/build/video/index.cjs +0 -2
  176. package/build/video/index.cjs.map +3 -3
  177. package/build/video/save.cjs +5 -1
  178. package/build/video/save.cjs.map +3 -3
  179. package/build-module/accordion/block.json +4 -1
  180. package/build-module/accordion-heading/block.json +1 -0
  181. package/build-module/accordion-item/block.json +7 -1
  182. package/build-module/accordion-panel/block.json +9 -1
  183. package/build-module/archives/block.json +12 -0
  184. package/build-module/audio/block.json +8 -0
  185. package/build-module/audio/edit.mjs +2 -1
  186. package/build-module/audio/edit.mjs.map +2 -2
  187. package/build-module/avatar/block.json +4 -0
  188. package/build-module/avatar/edit.mjs +33 -2
  189. package/build-module/avatar/edit.mjs.map +2 -2
  190. package/build-module/breadcrumbs/block.json +3 -0
  191. package/build-module/breadcrumbs/edit.mjs +3 -3
  192. package/build-module/breadcrumbs/edit.mjs.map +2 -2
  193. package/build-module/button/block.json +6 -0
  194. package/build-module/button/edit.mjs +11 -7
  195. package/build-module/button/edit.mjs.map +2 -2
  196. package/build-module/buttons/block.json +15 -1
  197. package/build-module/categories/block.json +12 -1
  198. package/build-module/code/block.json +13 -0
  199. package/build-module/column/block.json +9 -0
  200. package/build-module/column/edit.mjs +5 -0
  201. package/build-module/column/edit.mjs.map +2 -2
  202. package/build-module/columns/block.json +13 -0
  203. package/build-module/columns/edit.mjs +22 -122
  204. package/build-module/columns/edit.mjs.map +2 -2
  205. package/build-module/comment-author-name/block.json +3 -0
  206. package/build-module/comment-content/block.json +5 -0
  207. package/build-module/comment-date/block.json +3 -0
  208. package/build-module/comment-edit-link/block.json +3 -0
  209. package/build-module/comment-reply-link/block.json +3 -0
  210. package/build-module/comments/block.json +10 -0
  211. package/build-module/comments/edit/placeholder.mjs +95 -87
  212. package/build-module/comments/edit/placeholder.mjs.map +2 -2
  213. package/build-module/comments-pagination/block.json +14 -0
  214. package/build-module/comments-pagination-next/block.json +3 -0
  215. package/build-module/comments-pagination-numbers/block.json +3 -0
  216. package/build-module/comments-pagination-previous/block.json +6 -0
  217. package/build-module/comments-title/block.json +3 -0
  218. package/build-module/cover/block.json +2 -1
  219. package/build-module/cover/edit/index.mjs +36 -7
  220. package/build-module/cover/edit/index.mjs.map +2 -2
  221. package/build-module/cover/edit/inspector-controls.mjs +62 -16
  222. package/build-module/cover/edit/inspector-controls.mjs.map +2 -2
  223. package/build-module/cover/embed-video-utils.mjs +9 -8
  224. package/build-module/cover/embed-video-utils.mjs.map +2 -2
  225. package/build-module/cover/view.mjs +19 -0
  226. package/build-module/cover/view.mjs.map +7 -0
  227. package/build-module/details/block.json +14 -0
  228. package/build-module/embed/block.json +6 -1
  229. package/build-module/file/block.json +14 -0
  230. package/build-module/footnotes/block.json +13 -0
  231. package/build-module/gallery/block.json +22 -0
  232. package/build-module/gallery/dynamic-gallery.mjs +33 -97
  233. package/build-module/gallery/dynamic-gallery.mjs.map +2 -2
  234. package/build-module/gallery/edit.mjs +111 -44
  235. package/build-module/gallery/edit.mjs.map +2 -2
  236. package/build-module/gallery/order-controls.mjs +87 -0
  237. package/build-module/gallery/order-controls.mjs.map +7 -0
  238. package/build-module/gallery/order-images.mjs +66 -0
  239. package/build-module/gallery/order-images.mjs.map +7 -0
  240. package/build-module/gallery/order-options.mjs +33 -0
  241. package/build-module/gallery/order-options.mjs.map +7 -0
  242. package/build-module/gallery/use-dynamic-gallery.mjs +1 -7
  243. package/build-module/gallery/use-dynamic-gallery.mjs.map +2 -2
  244. package/build-module/gallery/use-get-media.mjs +2 -3
  245. package/build-module/gallery/use-get-media.mjs.map +2 -2
  246. package/build-module/group/block.json +1 -0
  247. package/build-module/group/edit.mjs +4 -4
  248. package/build-module/group/edit.mjs.map +2 -2
  249. package/build-module/heading/block.json +14 -0
  250. package/build-module/home-link/block.json +30 -0
  251. package/build-module/home-link/edit.mjs +2 -2
  252. package/build-module/home-link/edit.mjs.map +2 -2
  253. package/build-module/icon/components/custom-inserter/index.mjs +3 -1
  254. package/build-module/icon/components/custom-inserter/index.mjs.map +2 -2
  255. package/build-module/icon/edit.mjs +50 -6
  256. package/build-module/icon/edit.mjs.map +2 -2
  257. package/build-module/image/image.mjs +12 -10
  258. package/build-module/image/image.mjs.map +2 -2
  259. package/build-module/image/use-open-image-media-editor-modal.mjs +32 -8
  260. package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
  261. package/build-module/image/view.mjs +44 -50
  262. package/build-module/image/view.mjs.map +2 -2
  263. package/build-module/latest-comments/block.json +20 -0
  264. package/build-module/latest-posts/block.json +14 -0
  265. package/build-module/list/block.json +12 -1
  266. package/build-module/list-item/block.json +8 -1
  267. package/build-module/list-item/index.mjs +4 -0
  268. package/build-module/list-item/index.mjs.map +2 -2
  269. package/build-module/loginout/block.json +14 -0
  270. package/build-module/math/block.json +14 -0
  271. package/build-module/media-text/block.json +19 -0
  272. package/build-module/navigation/edit/index.mjs +1 -4
  273. package/build-module/navigation/edit/index.mjs.map +2 -2
  274. package/build-module/navigation-link/link-ui/index.mjs +39 -20
  275. package/build-module/navigation-link/link-ui/index.mjs.map +2 -2
  276. package/build-module/navigation-link/link-ui/page-creator.mjs +2 -2
  277. package/build-module/navigation-link/link-ui/page-creator.mjs.map +2 -2
  278. package/build-module/navigation-link/shared/controls.mjs +2 -2
  279. package/build-module/navigation-link/shared/controls.mjs.map +2 -2
  280. package/build-module/navigation-link/shared/index.mjs +6 -0
  281. package/build-module/navigation-link/shared/index.mjs.map +2 -2
  282. package/build-module/navigation-link/shared/use-block-suggestions.mjs +120 -0
  283. package/build-module/navigation-link/shared/use-block-suggestions.mjs.map +7 -0
  284. package/build-module/navigation-link/shared/use-link-preview.mjs +13 -13
  285. package/build-module/navigation-link/shared/use-link-preview.mjs.map +2 -2
  286. package/build-module/navigation-overlay-close/block.json +7 -0
  287. package/build-module/navigation-submenu/block.json +6 -0
  288. package/build-module/navigation-submenu/edit.mjs +11 -2
  289. package/build-module/navigation-submenu/edit.mjs.map +2 -2
  290. package/build-module/page-list/block.json +14 -0
  291. package/build-module/paragraph/block.json +1 -0
  292. package/build-module/paragraph/edit.mjs +1 -2
  293. package/build-module/paragraph/edit.mjs.map +2 -2
  294. package/build-module/playlist/block.json +1 -0
  295. package/build-module/post-author-biography/block.json +5 -0
  296. package/build-module/post-author-name/block.json +5 -0
  297. package/build-module/post-comments-count/block.json +3 -0
  298. package/build-module/post-comments-form/block.json +15 -0
  299. package/build-module/post-content/block.json +4 -1
  300. package/build-module/post-date/block.json +3 -0
  301. package/build-module/post-excerpt/block.json +9 -0
  302. package/build-module/post-featured-image/block.json +1 -0
  303. package/build-module/post-featured-image/edit.mjs +12 -10
  304. package/build-module/post-featured-image/edit.mjs.map +2 -2
  305. package/build-module/post-navigation-link/block.json +30 -0
  306. package/build-module/post-navigation-link/edit.mjs +17 -3
  307. package/build-module/post-navigation-link/edit.mjs.map +2 -2
  308. package/build-module/post-template/block.json +13 -1
  309. package/build-module/post-terms/block.json +10 -0
  310. package/build-module/post-time-to-read/block.json +10 -0
  311. package/build-module/post-title/block.json +14 -0
  312. package/build-module/preformatted/block.json +11 -0
  313. package/build-module/pullquote/block.json +3 -1
  314. package/build-module/query-no-results/block.json +14 -2
  315. package/build-module/query-pagination/block.json +20 -0
  316. package/build-module/query-pagination-next/block.json +3 -0
  317. package/build-module/query-pagination-numbers/block.json +3 -0
  318. package/build-module/query-pagination-previous/block.json +3 -0
  319. package/build-module/query-title/block.json +3 -0
  320. package/build-module/query-total/block.json +10 -0
  321. package/build-module/quote/block.json +3 -0
  322. package/build-module/read-more/block.json +11 -0
  323. package/build-module/rss/block.json +10 -0
  324. package/build-module/search/block.json +2 -1
  325. package/build-module/site-tagline/block.json +12 -1
  326. package/build-module/site-title/block.json +11 -1
  327. package/build-module/social-links/block.json +4 -0
  328. package/build-module/social-links/edit.mjs +2 -3
  329. package/build-module/social-links/edit.mjs.map +2 -2
  330. package/build-module/tab-list/block.json +4 -0
  331. package/build-module/tab-list/edit.mjs +4 -1
  332. package/build-module/tab-list/edit.mjs.map +2 -2
  333. package/build-module/tab-list/save.mjs +4 -1
  334. package/build-module/tab-list/save.mjs.map +2 -2
  335. package/build-module/tab-panel/block.json +25 -0
  336. package/build-module/tab-panel/controls.mjs +2 -2
  337. package/build-module/tab-panel/controls.mjs.map +2 -2
  338. package/build-module/tab-panels/block.json +21 -1
  339. package/build-module/table-of-contents/block.json +7 -0
  340. package/build-module/tabs/block.json +27 -1
  341. package/build-module/tag-cloud/block.json +19 -0
  342. package/build-module/template-part/edit/selection-modal.mjs.map +1 -1
  343. package/build-module/term-count/block.json +12 -0
  344. package/build-module/term-description/block.json +13 -0
  345. package/build-module/term-name/block.json +16 -1
  346. package/build-module/term-template/block.json +14 -1
  347. package/build-module/utils/search-patterns.mjs +7 -32
  348. package/build-module/utils/search-patterns.mjs.map +2 -2
  349. package/build-module/utils/style-state.mjs +6 -4
  350. package/build-module/utils/style-state.mjs.map +2 -2
  351. package/build-module/utils/waveform-utils.mjs +1 -1
  352. package/build-module/utils/waveform-utils.mjs.map +1 -1
  353. package/build-module/verse/block.json +4 -0
  354. package/build-module/video/block.json +12 -0
  355. package/build-module/video/edit.mjs +32 -15
  356. package/build-module/video/edit.mjs.map +2 -2
  357. package/build-module/video/index.mjs +0 -2
  358. package/build-module/video/index.mjs.map +2 -2
  359. package/build-module/video/save.mjs +7 -2
  360. package/build-module/video/save.mjs.map +2 -2
  361. package/build-style/avatar/editor-rtl.css +4 -0
  362. package/build-style/avatar/editor.css +4 -0
  363. package/build-style/comments-pagination/style-rtl.css +3 -0
  364. package/build-style/comments-pagination/style.css +3 -0
  365. package/build-style/common-rtl.css +32 -1
  366. package/build-style/common.css +35 -2
  367. package/build-style/editor-rtl.css +23 -6
  368. package/build-style/editor.css +23 -6
  369. package/build-style/embed/style-rtl.css +4 -1
  370. package/build-style/embed/style.css +4 -1
  371. package/build-style/gallery/editor-rtl.css +1 -3
  372. package/build-style/gallery/editor.css +1 -3
  373. package/build-style/image/editor-rtl.css +6 -0
  374. package/build-style/image/editor.css +6 -0
  375. package/build-style/image/style-rtl.css +11 -2
  376. package/build-style/image/style.css +11 -2
  377. package/build-style/media-text/style-rtl.css +4 -1
  378. package/build-style/media-text/style.css +4 -1
  379. package/build-style/navigation/style-rtl.css +18 -3
  380. package/build-style/navigation/style.css +18 -3
  381. package/build-style/navigation-link/editor-rtl.css +3 -1
  382. package/build-style/navigation-link/editor.css +3 -1
  383. package/build-style/navigation-overlay-close/style-rtl.css +1 -1
  384. package/build-style/navigation-overlay-close/style.css +1 -1
  385. package/build-style/navigation-submenu/editor-rtl.css +3 -1
  386. package/build-style/navigation-submenu/editor.css +3 -1
  387. package/build-style/post-navigation-link/style-rtl.css +3 -0
  388. package/build-style/post-navigation-link/style.css +3 -0
  389. package/build-style/query-pagination/style-rtl.css +3 -0
  390. package/build-style/query-pagination/style.css +3 -0
  391. package/build-style/style-rtl.css +94 -13
  392. package/build-style/style.css +97 -14
  393. package/build-style/tab-panel/style-rtl.css +2 -0
  394. package/build-style/tab-panel/style.css +2 -0
  395. package/build-style/table/editor-rtl.css +6 -1
  396. package/build-style/table/editor.css +6 -1
  397. package/build-style/table/style-rtl.css +4 -2
  398. package/build-style/table/style.css +4 -2
  399. package/build-style/tag-cloud/style-rtl.css +1 -1
  400. package/build-style/tag-cloud/style.css +1 -1
  401. package/build-style/verse/style-rtl.css +8 -1
  402. package/build-style/verse/style.css +8 -1
  403. package/build-types/gallery/order-controls.d.ts +58 -0
  404. package/build-types/gallery/order-controls.d.ts.map +1 -0
  405. package/build-types/gallery/order-options.d.ts +67 -0
  406. package/build-types/gallery/order-options.d.ts.map +1 -0
  407. package/package.json +46 -44
  408. package/src/accordion/README.md +3 -0
  409. package/src/accordion/block.json +4 -1
  410. package/src/accordion-heading/README.md +1 -0
  411. package/src/accordion-heading/block.json +1 -0
  412. package/src/accordion-item/README.md +5 -0
  413. package/src/accordion-item/block.json +7 -1
  414. package/src/accordion-panel/README.md +7 -0
  415. package/src/accordion-panel/block.json +9 -1
  416. package/src/archives/README.md +6 -0
  417. package/src/archives/block.json +12 -0
  418. package/src/audio/README.md +4 -0
  419. package/src/audio/block.json +8 -0
  420. package/src/audio/edit.jsx +2 -1
  421. package/src/avatar/README.md +2 -0
  422. package/src/avatar/block.json +4 -0
  423. package/src/avatar/edit.jsx +48 -2
  424. package/src/avatar/editor.scss +4 -0
  425. package/src/avatar/index.php +5 -3
  426. package/src/breadcrumbs/README.md +2 -0
  427. package/src/breadcrumbs/block.json +3 -0
  428. package/src/breadcrumbs/edit.jsx +3 -3
  429. package/src/breadcrumbs/index.php +1 -1
  430. package/src/button/README.md +4 -0
  431. package/src/button/block.json +6 -0
  432. package/src/button/edit.jsx +47 -52
  433. package/src/button/index.php +47 -0
  434. package/src/buttons/README.md +8 -0
  435. package/src/buttons/block.json +15 -1
  436. package/src/categories/README.md +6 -0
  437. package/src/categories/block.json +12 -1
  438. package/src/code/README.md +7 -0
  439. package/src/code/block.json +13 -0
  440. package/src/column/README.md +4 -0
  441. package/src/column/block.json +9 -0
  442. package/src/column/edit.jsx +6 -0
  443. package/src/columns/README.md +7 -0
  444. package/src/columns/block.json +13 -0
  445. package/src/columns/edit.jsx +1 -131
  446. package/src/comment-author-name/README.md +2 -0
  447. package/src/comment-author-name/block.json +3 -0
  448. package/src/comment-content/README.md +4 -0
  449. package/src/comment-content/block.json +5 -0
  450. package/src/comment-date/README.md +2 -0
  451. package/src/comment-date/block.json +3 -0
  452. package/src/comment-edit-link/README.md +2 -0
  453. package/src/comment-edit-link/block.json +3 -0
  454. package/src/comment-reply-link/README.md +2 -0
  455. package/src/comment-reply-link/block.json +3 -0
  456. package/src/comments/README.md +5 -0
  457. package/src/comments/block.json +10 -0
  458. package/src/comments/edit/placeholder.jsx +5 -1
  459. package/src/comments-pagination/README.md +6 -0
  460. package/src/comments-pagination/block.json +14 -0
  461. package/src/comments-pagination/style.scss +3 -0
  462. package/src/comments-pagination-next/README.md +2 -0
  463. package/src/comments-pagination-next/block.json +3 -0
  464. package/src/comments-pagination-numbers/README.md +2 -0
  465. package/src/comments-pagination-numbers/block.json +3 -0
  466. package/src/comments-pagination-previous/README.md +2 -0
  467. package/src/comments-pagination-previous/block.json +6 -0
  468. package/src/comments-title/README.md +2 -0
  469. package/src/comments-title/block.json +3 -0
  470. package/src/common.scss +38 -0
  471. package/src/cover/README.md +1 -0
  472. package/src/cover/block.json +2 -1
  473. package/src/cover/edit/index.jsx +41 -6
  474. package/src/cover/edit/inspector-controls.jsx +74 -14
  475. package/src/cover/embed-video-utils.js +18 -10
  476. package/src/cover/index.php +44 -15
  477. package/src/cover/test/edit.browser.test.js +200 -4
  478. package/src/cover/test/embed-video-utils.test.js +48 -0
  479. package/src/cover/view.js +22 -0
  480. package/src/details/README.md +8 -0
  481. package/src/details/block.json +14 -0
  482. package/src/embed/README.md +4 -0
  483. package/src/embed/block.json +6 -1
  484. package/src/embed/style.scss +7 -1
  485. package/src/file/README.md +8 -0
  486. package/src/file/block.json +14 -0
  487. package/src/footnotes/README.md +7 -0
  488. package/src/footnotes/block.json +13 -0
  489. package/src/gallery/README.md +17 -0
  490. package/src/gallery/block.json +22 -0
  491. package/src/gallery/dynamic-gallery.jsx +11 -91
  492. package/src/gallery/edit.jsx +147 -49
  493. package/src/gallery/editor.scss +5 -9
  494. package/src/gallery/order-controls.tsx +143 -0
  495. package/src/gallery/order-images.js +111 -0
  496. package/src/gallery/order-options.ts +75 -0
  497. package/src/gallery/test/edit.jsdom.test.js +87 -10
  498. package/src/gallery/test/order-images.js +162 -0
  499. package/src/gallery/use-dynamic-gallery.js +1 -9
  500. package/src/gallery/use-get-media.js +7 -2
  501. package/src/group/README.md +1 -0
  502. package/src/group/block.json +1 -0
  503. package/src/group/edit.jsx +5 -5
  504. package/src/heading/README.md +8 -0
  505. package/src/heading/block.json +14 -0
  506. package/src/home-link/README.md +11 -0
  507. package/src/home-link/block.json +30 -0
  508. package/src/home-link/edit.jsx +2 -2
  509. package/src/icon/components/custom-inserter/index.jsx +5 -1
  510. package/src/icon/edit.jsx +68 -7
  511. package/src/icon/index.php +10 -1
  512. package/src/image/editor.scss +8 -0
  513. package/src/image/image.jsx +13 -11
  514. package/src/image/index.php +3 -4
  515. package/src/image/style.scss +14 -2
  516. package/src/image/test/use-open-image-media-editor-modal.jsdom.test.js +201 -0
  517. package/src/image/use-open-image-media-editor-modal.js +37 -4
  518. package/src/image/view.js +64 -68
  519. package/src/latest-comments/README.md +8 -0
  520. package/src/latest-comments/block.json +20 -0
  521. package/src/latest-posts/README.md +8 -0
  522. package/src/latest-posts/block.json +14 -0
  523. package/src/list/README.md +6 -0
  524. package/src/list/block.json +12 -1
  525. package/src/list-item/README.md +6 -0
  526. package/src/list-item/block.json +8 -1
  527. package/src/list-item/index.js +5 -0
  528. package/src/loginout/README.md +8 -0
  529. package/src/loginout/block.json +14 -0
  530. package/src/math/README.md +8 -0
  531. package/src/math/block.json +14 -0
  532. package/src/media-text/README.md +18 -0
  533. package/src/media-text/block.json +19 -0
  534. package/src/media-text/style.scss +5 -1
  535. package/src/navigation/edit/index.jsx +2 -4
  536. package/src/navigation/style.scss +40 -4
  537. package/src/navigation/test/use-navigation-menu.jsdom.test.js +1 -1
  538. package/src/navigation-link/README.md +1 -1
  539. package/src/navigation-link/editor.scss +6 -1
  540. package/src/navigation-link/link-ui/index.jsx +60 -27
  541. package/src/navigation-link/link-ui/page-creator.jsx +2 -2
  542. package/src/navigation-link/link-ui/test/get-suggestions-query.jsdom.test.js +67 -0
  543. package/src/navigation-link/shared/controls.jsx +2 -2
  544. package/src/navigation-link/shared/index.js +4 -0
  545. package/src/navigation-link/shared/test/use-block-suggestions.jsdom.test.js +158 -0
  546. package/src/navigation-link/shared/test/use-entity-binding.jsdom.test.js +1 -7
  547. package/src/navigation-link/shared/test/use-link-preview.jsdom.test.js +22 -22
  548. package/src/navigation-link/shared/use-block-suggestions.js +192 -0
  549. package/src/navigation-link/shared/use-link-preview.js +15 -14
  550. package/src/navigation-overlay-close/README.md +1 -0
  551. package/src/navigation-overlay-close/block.json +7 -0
  552. package/src/navigation-overlay-close/style.scss +1 -1
  553. package/src/navigation-submenu/README.md +7 -0
  554. package/src/navigation-submenu/block.json +6 -0
  555. package/src/navigation-submenu/edit.jsx +11 -1
  556. package/src/navigation-submenu/editor.scss +6 -1
  557. package/src/navigation-submenu/index.php +11 -0
  558. package/src/page-list/README.md +8 -0
  559. package/src/page-list/block.json +14 -0
  560. package/src/paragraph/README.md +1 -0
  561. package/src/paragraph/block.json +1 -0
  562. package/src/paragraph/edit.jsx +1 -3
  563. package/src/playlist/README.md +1 -0
  564. package/src/playlist/block.json +1 -0
  565. package/src/playlist/test/edit-component.jsdom.test.jsx +11 -11
  566. package/src/playlist-track/test/edit.jsdom.test.jsx +3 -3
  567. package/src/post-author-biography/README.md +4 -0
  568. package/src/post-author-biography/block.json +5 -0
  569. package/src/post-author-name/README.md +4 -0
  570. package/src/post-author-name/block.json +5 -0
  571. package/src/post-comments-count/README.md +2 -0
  572. package/src/post-comments-count/block.json +3 -0
  573. package/src/post-comments-form/README.md +8 -0
  574. package/src/post-comments-form/block.json +15 -0
  575. package/src/post-content/README.md +3 -0
  576. package/src/post-content/block.json +4 -1
  577. package/src/post-date/README.md +2 -0
  578. package/src/post-date/block.json +3 -0
  579. package/src/post-excerpt/README.md +7 -0
  580. package/src/post-excerpt/block.json +9 -0
  581. package/src/post-featured-image/block.json +1 -0
  582. package/src/post-featured-image/edit.jsx +13 -11
  583. package/src/post-navigation-link/README.md +12 -0
  584. package/src/post-navigation-link/block.json +30 -0
  585. package/src/post-navigation-link/edit.jsx +23 -2
  586. package/src/post-navigation-link/index.php +94 -5
  587. package/src/post-navigation-link/style.scss +2 -0
  588. package/src/post-template/README.md +7 -0
  589. package/src/post-template/block.json +13 -1
  590. package/src/post-terms/README.md +8 -0
  591. package/src/post-terms/block.json +10 -0
  592. package/src/post-time-to-read/README.md +8 -0
  593. package/src/post-time-to-read/block.json +10 -0
  594. package/src/post-title/README.md +8 -0
  595. package/src/post-title/block.json +14 -0
  596. package/src/preformatted/README.md +9 -0
  597. package/src/preformatted/block.json +11 -0
  598. package/src/pullquote/README.md +2 -0
  599. package/src/pullquote/block.json +3 -1
  600. package/src/query-no-results/README.md +10 -0
  601. package/src/query-no-results/block.json +14 -2
  602. package/src/query-pagination/README.md +6 -0
  603. package/src/query-pagination/block.json +20 -0
  604. package/src/query-pagination/style.scss +3 -0
  605. package/src/query-pagination-next/README.md +2 -0
  606. package/src/query-pagination-next/block.json +3 -0
  607. package/src/query-pagination-numbers/README.md +2 -0
  608. package/src/query-pagination-numbers/block.json +3 -0
  609. package/src/query-pagination-previous/README.md +2 -0
  610. package/src/query-pagination-previous/block.json +3 -0
  611. package/src/query-title/README.md +2 -0
  612. package/src/query-title/block.json +3 -0
  613. package/src/query-total/README.md +8 -0
  614. package/src/query-total/block.json +10 -0
  615. package/src/quote/README.md +3 -0
  616. package/src/quote/block.json +3 -0
  617. package/src/read-more/README.md +8 -0
  618. package/src/read-more/block.json +11 -0
  619. package/src/rss/README.md +8 -0
  620. package/src/rss/block.json +10 -0
  621. package/src/search/README.md +1 -0
  622. package/src/search/block.json +2 -1
  623. package/src/site-tagline/README.md +9 -0
  624. package/src/site-tagline/block.json +12 -1
  625. package/src/site-title/README.md +8 -0
  626. package/src/site-title/block.json +11 -1
  627. package/src/social-links/README.md +3 -0
  628. package/src/social-links/block.json +4 -0
  629. package/src/social-links/edit.jsx +2 -3
  630. package/src/tab-list/README.md +2 -0
  631. package/src/tab-list/block.json +4 -0
  632. package/src/tab-list/edit.jsx +3 -0
  633. package/src/tab-list/save.jsx +3 -0
  634. package/src/tab-panel/README.md +9 -0
  635. package/src/tab-panel/block.json +25 -0
  636. package/src/tab-panel/controls.jsx +2 -2
  637. package/src/tab-panel/style.scss +5 -2
  638. package/src/tab-panels/README.md +9 -0
  639. package/src/tab-panels/block.json +21 -1
  640. package/src/table/editor.scss +8 -2
  641. package/src/table/style.scss +4 -4
  642. package/src/table-of-contents/README.md +6 -0
  643. package/src/table-of-contents/block.json +7 -0
  644. package/src/tabs/README.md +11 -0
  645. package/src/tabs/block.json +27 -1
  646. package/src/tag-cloud/README.md +9 -0
  647. package/src/tag-cloud/block.json +19 -0
  648. package/src/tag-cloud/style.scss +1 -1
  649. package/src/template-part/edit/selection-modal.jsx +1 -1
  650. package/src/template-part/index.php +16 -3
  651. package/src/term-count/README.md +10 -0
  652. package/src/term-count/block.json +12 -0
  653. package/src/term-description/README.md +8 -0
  654. package/src/term-description/block.json +13 -0
  655. package/src/term-name/README.md +9 -0
  656. package/src/term-name/block.json +16 -1
  657. package/src/term-name/index.php +1 -1
  658. package/src/term-template/README.md +8 -0
  659. package/src/term-template/block.json +14 -1
  660. package/src/utils/search-patterns.js +9 -53
  661. package/src/utils/style-state.js +6 -4
  662. package/src/utils/test/{search-patterns.js → search-patterns.jsdom.test.js} +1 -22
  663. package/src/utils/test/waveform-player-auto-init.jsdom.test.js +25 -0
  664. package/src/utils/test/waveform-player-dependency.jsdom.test.js +7 -60
  665. package/src/utils/test/waveform-utils.browser.test.js +3 -15
  666. package/src/utils/waveform-utils.js +1 -1
  667. package/src/verse/README.md +4 -0
  668. package/src/verse/block.json +4 -0
  669. package/src/verse/style.scss +11 -2
  670. package/src/video/README.md +11 -0
  671. package/src/video/block.json +12 -0
  672. package/src/video/edit.jsx +65 -49
  673. package/src/video/index.js +0 -2
  674. package/src/video/save.jsx +10 -1
  675. package/build/columns/utils.cjs +0 -112
  676. package/build/columns/utils.cjs.map +0 -7
  677. package/build/video/variations.cjs +0 -75
  678. package/build/video/variations.cjs.map +0 -7
  679. package/build-module/columns/utils.mjs +0 -78
  680. package/build-module/columns/utils.mjs.map +0 -7
  681. package/build-module/video/variations.mjs +0 -50
  682. package/build-module/video/variations.mjs.map +0 -7
  683. package/src/columns/test/utils.js +0 -331
  684. package/src/columns/utils.js +0 -176
  685. package/src/video/test/variations.js +0 -63
  686. package/src/video/variations.js +0 -62
@@ -17,6 +17,12 @@
17
17
  "anchor": true,
18
18
  "reusable": false,
19
19
  "html": false,
20
+ "background": {
21
+ "gradient": true,
22
+ "__experimentalDefaultControls": {
23
+ "gradient": true
24
+ }
25
+ },
20
26
  "color": {
21
27
  "gradients": true,
22
28
  "text": false,
@@ -29,6 +29,9 @@
29
29
  "anchor": true,
30
30
  "align": true,
31
31
  "html": false,
32
+ "background": {
33
+ "gradient": true
34
+ },
32
35
  "__experimentalBorder": {
33
36
  "radius": true,
34
37
  "color": true,
@@ -153,7 +153,8 @@
153
153
  "allowJustification": false
154
154
  },
155
155
  "interactivity": {
156
- "clientNavigation": true
156
+ "clientNavigation": true,
157
+ "interactive": true
157
158
  },
158
159
  "filter": {
159
160
  "duotone": true
@@ -10,7 +10,12 @@ import {
10
10
  useState
11
11
  } from "@wordpress/element";
12
12
  import { Placeholder, SandBox, Spinner } from "@wordpress/components";
13
- import { compose, useResizeObserver } from "@wordpress/compose";
13
+ import {
14
+ compose,
15
+ useMergeRefs,
16
+ useReducedMotion,
17
+ useResizeObserver
18
+ } from "@wordpress/compose";
14
19
  import {
15
20
  withColors,
16
21
  ColorPalette,
@@ -327,12 +332,15 @@ function CoverEdit({
327
332
  },
328
333
  [url, backgroundType]
329
334
  );
335
+ const prefersReducedMotion = useReducedMotion();
330
336
  const embedHtml = useMemo(() => {
331
337
  if (backgroundType !== EMBED_VIDEO_BACKGROUND_TYPE || !embedPreview?.html) {
332
338
  return null;
333
339
  }
334
- return getBackgroundEmbedHtml(embedPreview.html);
335
- }, [embedPreview, backgroundType]);
340
+ return getBackgroundEmbedHtml(embedPreview.html, {
341
+ autoplay: !prefersReducedMotion
342
+ });
343
+ }, [embedPreview, backgroundType, prefersReducedMotion]);
336
344
  const [isSwappingMedia, setIsSwappingMedia] = useState(false);
337
345
  const isUploadingMedia = isTemporaryMedia(id, url);
338
346
  const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;
@@ -364,7 +372,10 @@ function CoverEdit({
364
372
  [clientId]
365
373
  );
366
374
  const ref = useRef();
367
- const blockProps = useBlockProps({ ref });
375
+ const [dropZoneElement, setDropZoneElement] = useState(null);
376
+ const blockProps = useBlockProps({
377
+ ref: useMergeRefs([ref, setDropZoneElement])
378
+ });
368
379
  const innerBlocksProps = useInnerBlocksProps(
369
380
  {
370
381
  className: "wp-block-cover__inner-container"
@@ -372,11 +383,16 @@ function CoverEdit({
372
383
  {
373
384
  allowedBlocks,
374
385
  templateLock,
375
- dropZoneElement: ref.current
386
+ dropZoneElement
376
387
  }
377
388
  );
378
389
  const mediaElement = useRef();
379
390
  const editMediaButtonRef = useRef();
391
+ useEffect(() => {
392
+ if (prefersReducedMotion && isVideoBackground) {
393
+ mediaElement.current?.pause();
394
+ }
395
+ }, [prefersReducedMotion, isVideoBackground]);
380
396
  const currentSettings = {
381
397
  isVideoBackground,
382
398
  isImageBackground,
@@ -390,11 +406,18 @@ function CoverEdit({
390
406
  if (!id || !openMediaEditorModal) {
391
407
  return;
392
408
  }
409
+ const previousImage = { id, url: propsRef.current.attributes.url };
410
+ let isUndone = false;
393
411
  openMediaEditorModal({
394
412
  id,
395
413
  onClose: () => {
396
414
  editMediaButtonRef.current?.focus();
397
415
  },
416
+ onUndo: () => {
417
+ isUndone = true;
418
+ setIsSwappingMedia(false);
419
+ setAttributes(previousImage);
420
+ },
398
421
  onUpdate: async ({ id: newId, url: newUrl }) => {
399
422
  if (typeof newId !== "number") {
400
423
  return;
@@ -410,6 +433,9 @@ function CoverEdit({
410
433
  };
411
434
  if (newUrl) {
412
435
  const averageBackgroundColor = await getMediaColor(newUrl);
436
+ if (isUndone) {
437
+ return;
438
+ }
413
439
  const {
414
440
  attributes: currentAttrs,
415
441
  overlayColor: currentOverlay
@@ -504,10 +530,13 @@ function CoverEdit({
504
530
  setOverlayColor: onSetOverlayColor,
505
531
  coverRef: ref,
506
532
  currentSettings,
533
+ onSelectMedia,
534
+ onUploadError,
507
535
  toggleUseFeaturedImage,
508
536
  updateDimRatio: onUpdateDimRatio,
509
537
  onClearMedia,
510
- featuredImage: media
538
+ featuredImage: media,
539
+ isSelected
511
540
  }
512
541
  );
513
542
  const resizableCoverProps = {
@@ -631,7 +660,7 @@ function CoverEdit({
631
660
  {
632
661
  ref: mediaElement,
633
662
  className: "wp-block-cover__video-background",
634
- autoPlay: true,
663
+ autoPlay: !prefersReducedMotion,
635
664
  muted: true,
636
665
  loop: true,
637
666
  src: url,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cover/edit/index.jsx"],
4
- "sourcesContent": ["import clsx from 'clsx';\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { Placeholder, SandBox, Spinner } from '@wordpress/components';\nimport { compose, useResizeObserver } from '@wordpress/compose';\nimport {\n\twithColors,\n\tColorPalette,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\t__experimentalUseGradient,\n\tstore as blockEditorStore,\n\tuseBlockEditingMode,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { createBlocksFromInnerBlocksTemplate } from '@wordpress/blocks';\nimport { isBlobURL } from '@wordpress/blob';\nimport { store as noticesStore } from '@wordpress/notices';\nimport {\n\tattributesFromMedia,\n\tIMAGE_BACKGROUND_TYPE,\n\tVIDEO_BACKGROUND_TYPE,\n\tEMBED_VIDEO_BACKGROUND_TYPE,\n\tdimRatioToClass,\n\tisContentPositionCenter,\n\tgetPositionClassName,\n\tmediaPosition,\n} from '../shared';\nimport CoverInspectorControls from './inspector-controls';\nimport CoverBlockControls from './block-controls';\nimport CoverPlaceholder from './cover-placeholder';\nimport ResizableCoverPopover from './resizable-cover-popover';\nimport {\n\tgetMediaColor,\n\tcompositeIsDark,\n\tDEFAULT_BACKGROUND_COLOR,\n\tDEFAULT_OVERLAY_COLOR,\n} from './color-utils';\nimport { DEFAULT_MEDIA_SIZE_SLUG } from '../constants';\nimport { getBackgroundEmbedHtml } from '../embed-video-utils';\nimport { unlock } from '../../lock-unlock';\n\nconst { openMediaEditorModalKey } = unlock( blockEditorPrivateApis );\n\nfunction getInnerBlocksTemplate( attributes ) {\n\treturn [\n\t\t[\n\t\t\t'core/paragraph',\n\t\t\t{\n\t\t\t\tstyle: {\n\t\t\t\t\ttypography: {\n\t\t\t\t\t\ttextAlign: 'center',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tplaceholder: __( 'Write title…' ),\n\t\t\t\t...attributes,\n\t\t\t},\n\t\t],\n\t];\n}\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily while\n * the media (image or video) is being uploaded and will not have an id allocated yet.\n *\n * @param {number} id The id of the media.\n * @param {string} url The url of the media.\n *\n * @return {boolean} Is the URL a Blob URL.\n */\nconst isTemporaryMedia = ( id, url ) => ! id && isBlobURL( url );\n\nfunction CoverEdit( {\n\tattributes,\n\tclientId,\n\tisSelected,\n\toverlayColor,\n\tsetAttributes,\n\tsetOverlayColor,\n\ttoggleSelection,\n\tcontext: { postId, postType },\n} ) {\n\tconst {\n\t\tcontentPosition,\n\t\tid,\n\t\turl: originalUrl,\n\t\tbackgroundType: originalBackgroundType,\n\t\tuseFeaturedImage,\n\t\tdimRatio,\n\t\tfocalPoint,\n\t\thasParallax,\n\t\tisDark,\n\t\tisRepeated,\n\t\tminHeight,\n\t\tminHeightUnit,\n\t\talt,\n\t\tallowedBlocks,\n\t\ttemplateLock,\n\t\ttagName: TagName = 'div',\n\t\tisUserOverlayColor,\n\t\tsizeSlug,\n\t\tposter,\n\t} = attributes;\n\n\tconst [ featuredImage ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'featured_media',\n\t\tpostId\n\t);\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst openMediaEditorModal = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings()[ openMediaEditorModalKey ],\n\t\t[]\n\t);\n\n\tconst { __unstableMarkNextChangeAsNotPersistent, replaceInnerBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tconst registry = useRegistry();\n\n\t// Ref to access latest values after async operations (e.g. getMediaColor),\n\t// avoiding stale values that could overwrite concurrent remote changes.\n\tconst propsRef = useRef( { attributes, overlayColor } );\n\tuseLayoutEffect( () => {\n\t\tpropsRef.current = { attributes, overlayColor };\n\t} );\n\n\tconst { media } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tmedia:\n\t\t\t\t\tfeaturedImage && useFeaturedImage\n\t\t\t\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t'attachment',\n\t\t\t\t\t\t\t\tfeaturedImage,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\t[ featuredImage, useFeaturedImage ]\n\t);\n\tconst mediaUrl =\n\t\tmedia?.media_details?.sizes?.[ sizeSlug ]?.source_url ??\n\t\tmedia?.source_url;\n\n\t// User can change the featured image outside of the block, but we still\n\t// need to update the block when that happens. This effect should only\n\t// run when the featured image changes in that case. All other cases are\n\t// handled in their respective callbacks.\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tif ( ! useFeaturedImage ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst averageBackgroundColor = await getMediaColor( mediaUrl );\n\n\t\t\t// Read latest values after await to avoid stale closures.\n\t\t\tconst { attributes: currentAttrs, overlayColor: currentOverlay } =\n\t\t\t\tpropsRef.current;\n\n\t\t\tlet newOverlayColor = currentOverlay.color;\n\t\t\tif ( ! currentAttrs.isUserOverlayColor ) {\n\t\t\t\tnewOverlayColor = averageBackgroundColor;\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetOverlayColor( newOverlayColor );\n\t\t\t}\n\n\t\t\tconst newIsDark = compositeIsDark(\n\t\t\t\tcurrentAttrs.dimRatio,\n\t\t\t\tnewOverlayColor,\n\t\t\t\taverageBackgroundColor\n\t\t\t);\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tisDark: newIsDark,\n\t\t\t\tisUserOverlayColor: currentAttrs.isUserOverlayColor || false,\n\t\t\t} );\n\t\t} )();\n\t\t// Update the block only when the featured image changes.\n\t\t// The other dependencies are stable references (dispatch actions / setters).\n\t}, [\n\t\tmediaUrl,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetAttributes,\n\t\tsetOverlayColor,\n\t\tuseFeaturedImage,\n\t] );\n\n\t// instead of destructuring the attributes\n\t// we define the url and background type\n\t// depending on the value of the useFeaturedImage flag\n\t// to preview in edit the dynamic featured image\n\tconst url = useFeaturedImage\n\t\t? mediaUrl\n\t\t: // Ensure the url is not malformed due to sanitization through `wp_kses`.\n\t\t\toriginalUrl?.replaceAll( '&amp;', '&' );\n\tconst backgroundType = useFeaturedImage\n\t\t? IMAGE_BACKGROUND_TYPE\n\t\t: originalBackgroundType;\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst { gradientClass, gradientValue } = __experimentalUseGradient();\n\n\t// Create the initial inner paragraph when the block gains a background\n\t// and has no content yet.\n\tconst scaffoldInnerBlocks = () => {\n\t\tconst {\n\t\t\tgetBlocks,\n\t\t\tisBlockSelected,\n\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t} = registry.select( blockEditorStore );\n\t\tif ( getBlocks( clientId ).length > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\t// Check for fontSize support before we pass a fontSize attribute to\n\t\t// the innerBlocks.\n\t\tconst [ fontSizes ] = unlock(\n\t\t\tregistry.select( blockEditorStore )\n\t\t).getBlockSettings( clientId, 'typography.fontSizes' );\n\t\tconst hasFontSizes = fontSizes?.length > 0;\n\t\treplaceInnerBlocks(\n\t\t\tclientId,\n\t\t\tcreateBlocksFromInnerBlocksTemplate(\n\t\t\t\tgetInnerBlocksTemplate( {\n\t\t\t\t\tfontSize: hasFontSizes ? 'large' : undefined,\n\t\t\t\t} )\n\t\t\t),\n\t\t\tisBlockSelected( clientId ),\n\t\t\tgetSelectedBlocksInitialCaretPosition()\n\t\t);\n\t};\n\n\tconst onSelectMedia = async ( newMedia ) => {\n\t\tconst mediaAttributes = attributesFromMedia( newMedia );\n\t\tconst isImage = [ newMedia?.type, newMedia?.media_type ].includes(\n\t\t\tIMAGE_BACKGROUND_TYPE\n\t\t);\n\n\t\tconst averageBackgroundColor = await getMediaColor(\n\t\t\tisImage ? newMedia?.url : undefined\n\t\t);\n\n\t\t// Read latest values to avoid stale closures.\n\t\tconst { attributes: currentAttrs, overlayColor: currentOverlay } =\n\t\t\tpropsRef.current;\n\n\t\tlet newOverlayColor = currentOverlay.color;\n\t\tif ( ! currentAttrs.isUserOverlayColor ) {\n\t\t\tnewOverlayColor = averageBackgroundColor;\n\t\t\tsetOverlayColor( newOverlayColor );\n\t\t\t// Fold next attribute change into the same undo level as the setOverlayColor above.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t}\n\n\t\t// Only set a new dimRatio if there was no previous media selected\n\t\t// to avoid resetting to 50 if it has been explicitly set to 100.\n\t\t// See issue #52835 for context.\n\t\tconst newDimRatio =\n\t\t\tcurrentAttrs.url === undefined && currentAttrs.dimRatio === 100\n\t\t\t\t? 50\n\t\t\t\t: currentAttrs.dimRatio;\n\n\t\tconst newIsDark = compositeIsDark(\n\t\t\tnewDimRatio,\n\t\t\tnewOverlayColor,\n\t\t\taverageBackgroundColor\n\t\t);\n\n\t\tif ( backgroundType === IMAGE_BACKGROUND_TYPE && mediaAttributes?.id ) {\n\t\t\tconst { imageDefaultSize } = getSettings();\n\n\t\t\t// Try to use the previous selected image size if it's available\n\t\t\t// otherwise try the default image size or fallback to full size.\n\t\t\tif (\n\t\t\t\tsizeSlug &&\n\t\t\t\t( newMedia?.sizes?.[ sizeSlug ] ||\n\t\t\t\t\tnewMedia?.media_details?.sizes?.[ sizeSlug ] )\n\t\t\t) {\n\t\t\t\tmediaAttributes.sizeSlug = sizeSlug;\n\t\t\t\tmediaAttributes.url =\n\t\t\t\t\tnewMedia?.sizes?.[ sizeSlug ]?.url ||\n\t\t\t\t\tnewMedia?.media_details?.sizes?.[ sizeSlug ]?.source_url;\n\t\t\t} else if (\n\t\t\t\tnewMedia?.sizes?.[ imageDefaultSize ] ||\n\t\t\t\tnewMedia?.media_details?.sizes?.[ imageDefaultSize ]\n\t\t\t) {\n\t\t\t\tmediaAttributes.sizeSlug = imageDefaultSize;\n\t\t\t\tmediaAttributes.url =\n\t\t\t\t\tnewMedia?.sizes?.[ imageDefaultSize ]?.url ||\n\t\t\t\t\tnewMedia?.media_details?.sizes?.[ imageDefaultSize ]\n\t\t\t\t\t\t?.source_url;\n\t\t\t} else {\n\t\t\t\tmediaAttributes.sizeSlug = DEFAULT_MEDIA_SIZE_SLUG;\n\t\t\t}\n\t\t}\n\n\t\tregistry.batch( () => {\n\t\t\tsetAttributes( {\n\t\t\t\t...mediaAttributes,\n\t\t\t\tfocalPoint: undefined,\n\t\t\t\tuseFeaturedImage: undefined,\n\t\t\t\tdimRatio: newDimRatio,\n\t\t\t\tisDark: newIsDark,\n\t\t\t\tisUserOverlayColor: currentAttrs.isUserOverlayColor || false,\n\t\t\t} );\n\n\t\t\tscaffoldInnerBlocks();\n\t\t} );\n\t};\n\n\tconst onClearMedia = () => {\n\t\tlet newOverlayColor = overlayColor.color;\n\n\t\t// Skip for embeds, which never auto-assign an overlay color; otherwise\n\t\t// the non-persistent flag lands on the media reset itself (unsaveable).\n\t\tif ( ! isUserOverlayColor && overlayColor.color ) {\n\t\t\tnewOverlayColor = DEFAULT_OVERLAY_COLOR;\n\t\t\tsetOverlayColor( undefined );\n\t\t\t// Fold next attribute change into the same undo level as the setOverlayColor above.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t}\n\n\t\tconst newIsDark = compositeIsDark(\n\t\t\tdimRatio,\n\t\t\tnewOverlayColor,\n\t\t\tDEFAULT_BACKGROUND_COLOR\n\t\t);\n\n\t\tsetAttributes( {\n\t\t\turl: undefined,\n\t\t\tid: undefined,\n\t\t\tbackgroundType: undefined,\n\t\t\tfocalPoint: undefined,\n\t\t\thasParallax: undefined,\n\t\t\tisRepeated: undefined,\n\t\t\tuseFeaturedImage: undefined,\n\t\t\tisDark: newIsDark,\n\t\t} );\n\t};\n\n\tconst onSetOverlayColor = async ( newOverlayColor ) => {\n\t\tconst averageBackgroundColor = await getMediaColor( url );\n\n\t\t// Read latest dimRatio after await to avoid stale closure.\n\t\tconst { attributes: currentAttrs } = propsRef.current;\n\n\t\tconst newIsDark = compositeIsDark(\n\t\t\tcurrentAttrs.dimRatio,\n\t\t\tnewOverlayColor,\n\t\t\taverageBackgroundColor\n\t\t);\n\n\t\tsetOverlayColor( newOverlayColor );\n\t\t// Fold next attribute change into the same undo level as the setOverlayColor above.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\n\t\tregistry.batch( () => {\n\t\t\tsetAttributes( {\n\t\t\t\tisUserOverlayColor: true,\n\t\t\t\tisDark: newIsDark,\n\t\t\t} );\n\n\t\t\t// Skip when the color is cleared: that returns the block to its\n\t\t\t// placeholder, which only renders while there is no content.\n\t\t\tif ( newOverlayColor ) {\n\t\t\t\tscaffoldInnerBlocks();\n\t\t\t}\n\t\t} );\n\t};\n\n\tconst onUpdateDimRatio = async ( newDimRatio ) => {\n\t\tconst averageBackgroundColor = await getMediaColor( url );\n\n\t\t// Read latest overlayColor after await to avoid stale closure.\n\t\tconst { overlayColor: currentOverlay } = propsRef.current;\n\n\t\tconst newIsDark = compositeIsDark(\n\t\t\tnewDimRatio,\n\t\t\tcurrentOverlay.color,\n\t\t\taverageBackgroundColor\n\t\t);\n\n\t\tsetAttributes( {\n\t\t\tdimRatio: newDimRatio,\n\t\t\tisDark: newIsDark,\n\t\t} );\n\t};\n\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst onSelectEmbedUrl = ( embedUrl ) => {\n\t\t// Only set a new dimRatio if there was no previous media selected\n\t\t// to avoid resetting to 50 if it has been explicitly set to 100.\n\t\tconst newDimRatio =\n\t\t\toriginalUrl === undefined && dimRatio === 100 ? 50 : dimRatio;\n\n\t\t// Set initial attributes with URL\n\t\tsetAttributes( {\n\t\t\turl: embedUrl,\n\t\t\tbackgroundType: EMBED_VIDEO_BACKGROUND_TYPE,\n\t\t\tdimRatio: newDimRatio,\n\t\t\tid: undefined,\n\t\t\tfocalPoint: undefined,\n\t\t\thasParallax: undefined,\n\t\t\tisRepeated: undefined,\n\t\t\tuseFeaturedImage: undefined,\n\t\t} );\n\t};\n\n\t// Fetch embed preview for embed videos\n\tconst { embedPreview, isFetchingEmbed } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( backgroundType !== EMBED_VIDEO_BACKGROUND_TYPE || ! url ) {\n\t\t\t\treturn {\n\t\t\t\t\tembedPreview: undefined,\n\t\t\t\t\tisFetchingEmbed: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst { getEmbedPreview, isRequestingEmbedPreview } =\n\t\t\t\tselect( coreStore );\n\n\t\t\treturn {\n\t\t\t\tembedPreview: getEmbedPreview( url ),\n\t\t\t\tisFetchingEmbed: isRequestingEmbedPreview( url ),\n\t\t\t};\n\t\t},\n\t\t[ url, backgroundType ]\n\t);\n\n\t// Compute embed HTML for editor display via SandBox\n\tconst embedHtml = useMemo( () => {\n\t\tif (\n\t\t\tbackgroundType !== EMBED_VIDEO_BACKGROUND_TYPE ||\n\t\t\t! embedPreview?.html\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\treturn getBackgroundEmbedHtml( embedPreview.html );\n\t}, [ embedPreview, backgroundType ] );\n\n\t// Set while the media editor has pointed the cover at a freshly\n\t// generated file the browser hasn't finished loading; cleared by the\n\t// background <img> load/error handlers (or immediately after\n\t// setAttributes for CSS backgrounds, which never fire load events).\n\tconst [ isSwappingMedia, setIsSwappingMedia ] = useState( false );\n\n\tconst isUploadingMedia = isTemporaryMedia( id, url );\n\n\tconst isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;\n\tconst isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;\n\tconst isEmbedVideoBackground =\n\t\tEMBED_VIDEO_BACKGROUND_TYPE === backgroundType;\n\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst hasNonContentControls = blockEditingMode === 'default';\n\n\tconst [ resizeListener, { height, width } ] = useResizeObserver();\n\tconst resizableBoxDimensions = useMemo( () => {\n\t\treturn {\n\t\t\theight: minHeightUnit === 'px' && minHeight ? minHeight : 'auto',\n\t\t\twidth: 'auto',\n\t\t};\n\t}, [ minHeight, minHeightUnit ] );\n\n\tconst minHeightWithUnit =\n\t\tminHeight && minHeightUnit\n\t\t\t? `${ minHeight }${ minHeightUnit }`\n\t\t\t: minHeight;\n\n\tconst isImgElement = ! ( hasParallax || isRepeated );\n\n\tconst style = {\n\t\tminHeight: minHeightWithUnit || undefined,\n\t};\n\n\tconst backgroundImage = url ? `url(${ url })` : undefined;\n\n\tconst backgroundPosition = mediaPosition( focalPoint );\n\n\tconst bgStyle = { backgroundColor: overlayColor.color };\n\tconst mediaStyle = {\n\t\tobjectPosition:\n\t\t\tfocalPoint && isImgElement\n\t\t\t\t? mediaPosition( focalPoint )\n\t\t\t\t: undefined,\n\t};\n\n\tconst hasBackground = !! ( url || overlayColor.color || gradientValue );\n\n\tconst hasInnerBlocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlock( clientId ).innerBlocks.length >\n\t\t\t0,\n\t\t[ clientId ]\n\t);\n\n\tconst ref = useRef();\n\tconst blockProps = useBlockProps( { ref } );\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-cover__inner-container',\n\t\t},\n\t\t{\n\t\t\tallowedBlocks,\n\t\t\ttemplateLock,\n\t\t\tdropZoneElement: ref.current,\n\t\t}\n\t);\n\n\tconst mediaElement = useRef();\n\tconst editMediaButtonRef = useRef();\n\tconst currentSettings = {\n\t\tisVideoBackground,\n\t\tisImageBackground,\n\t\tmediaElement,\n\t\thasInnerBlocks,\n\t\turl,\n\t\tisImgElement,\n\t\toverlayColor,\n\t};\n\n\tconst openCoverMediaEditorModal = useCallback( () => {\n\t\tif ( ! id || ! openMediaEditorModal ) {\n\t\t\treturn;\n\t\t}\n\n\t\topenMediaEditorModal( {\n\t\t\tid,\n\t\t\tonClose: () => {\n\t\t\t\teditMediaButtonRef.current?.focus();\n\t\t\t},\n\t\t\tonUpdate: async ( { id: newId, url: newUrl } ) => {\n\t\t\t\tif ( typeof newId !== 'number' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( newId !== id && newUrl ) {\n\t\t\t\t\tsetIsSwappingMedia( true );\n\t\t\t\t}\n\n\t\t\t\tconst nextAttributes = {\n\t\t\t\t\tid: newId,\n\t\t\t\t\tbackgroundType: IMAGE_BACKGROUND_TYPE,\n\t\t\t\t\t...( newUrl ? { url: newUrl } : {} ),\n\t\t\t\t\t...( newId !== id\n\t\t\t\t\t\t? { sizeSlug: DEFAULT_MEDIA_SIZE_SLUG }\n\t\t\t\t\t\t: {} ),\n\t\t\t\t};\n\n\t\t\t\tif ( newUrl ) {\n\t\t\t\t\tconst averageBackgroundColor =\n\t\t\t\t\t\tawait getMediaColor( newUrl );\n\n\t\t\t\t\t// Read latest values after await to avoid stale closures.\n\t\t\t\t\tconst {\n\t\t\t\t\t\tattributes: currentAttrs,\n\t\t\t\t\t\toverlayColor: currentOverlay,\n\t\t\t\t\t} = propsRef.current;\n\n\t\t\t\t\tlet newOverlayColor = currentOverlay.color;\n\t\t\t\t\tif ( ! currentAttrs.isUserOverlayColor ) {\n\t\t\t\t\t\tnewOverlayColor = averageBackgroundColor;\n\t\t\t\t\t\tsetOverlayColor( newOverlayColor );\n\t\t\t\t\t\t// Fold next attribute change into the same undo level as the setOverlayColor above.\n\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t}\n\n\t\t\t\t\tnextAttributes.isDark = compositeIsDark(\n\t\t\t\t\t\tcurrentAttrs.dimRatio,\n\t\t\t\t\t\tnewOverlayColor,\n\t\t\t\t\t\taverageBackgroundColor\n\t\t\t\t\t);\n\t\t\t\t\tnextAttributes.isUserOverlayColor =\n\t\t\t\t\t\tcurrentAttrs.isUserOverlayColor || false;\n\t\t\t\t}\n\n\t\t\t\tsetAttributes( nextAttributes );\n\n\t\t\t\t// A CSS background (parallax/repeated) renders as a div and\n\t\t\t\t// never fires a load event; getMediaColor already fetched\n\t\t\t\t// the file, so the swap is done once attributes are set.\n\t\t\t\tconst {\n\t\t\t\t\thasParallax: currentHasParallax,\n\t\t\t\t\tisRepeated: currentIsRepeated,\n\t\t\t\t} = propsRef.current.attributes;\n\t\t\t\tif ( currentHasParallax || currentIsRepeated ) {\n\t\t\t\t\tsetIsSwappingMedia( false );\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\t}, [\n\t\tid,\n\t\topenMediaEditorModal,\n\t\tsetAttributes,\n\t\tsetOverlayColor,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t] );\n\n\tconst showEditMediaButton =\n\t\thasNonContentControls &&\n\t\t! useFeaturedImage &&\n\t\tisImageBackground &&\n\t\t!! id &&\n\t\t!! url &&\n\t\t! isUploadingMedia &&\n\t\t!! openMediaEditorModal;\n\n\tconst toggleUseFeaturedImage = async () => {\n\t\tconst newUseFeaturedImage = ! useFeaturedImage;\n\n\t\tconst averageBackgroundColor = newUseFeaturedImage\n\t\t\t? await getMediaColor( mediaUrl )\n\t\t\t: DEFAULT_BACKGROUND_COLOR;\n\n\t\t// Read latest values after await to avoid stale closures.\n\t\tconst { attributes: currentAttrs, overlayColor: currentOverlay } =\n\t\t\tpropsRef.current;\n\n\t\tconst newOverlayColor = ! currentAttrs.isUserOverlayColor\n\t\t\t? averageBackgroundColor\n\t\t\t: currentOverlay.color;\n\n\t\tif ( ! currentAttrs.isUserOverlayColor ) {\n\t\t\tif ( newUseFeaturedImage ) {\n\t\t\t\tsetOverlayColor( newOverlayColor );\n\t\t\t} else {\n\t\t\t\tsetOverlayColor( undefined );\n\t\t\t}\n\t\t\t// Fold next attribute change into the same undo level as the setOverlayColor above.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t}\n\n\t\tconst newDimRatio =\n\t\t\tcurrentAttrs.dimRatio === 100 ? 50 : currentAttrs.dimRatio;\n\t\tconst newIsDark = compositeIsDark(\n\t\t\tnewDimRatio,\n\t\t\tnewOverlayColor,\n\t\t\taverageBackgroundColor\n\t\t);\n\n\t\tregistry.batch( () => {\n\t\t\tsetAttributes( {\n\t\t\t\tid: undefined,\n\t\t\t\turl: undefined,\n\t\t\t\tuseFeaturedImage: newUseFeaturedImage,\n\t\t\t\tdimRatio: newDimRatio,\n\t\t\t\tbackgroundType: useFeaturedImage\n\t\t\t\t\t? IMAGE_BACKGROUND_TYPE\n\t\t\t\t\t: undefined,\n\t\t\t\tisDark: newIsDark,\n\t\t\t} );\n\n\t\t\t// Skip when the featured image is disabled: that can return the\n\t\t\t// block to its placeholder, which only renders while there is no\n\t\t\t// content.\n\t\t\tif ( newUseFeaturedImage ) {\n\t\t\t\tscaffoldInnerBlocks();\n\t\t\t}\n\t\t} );\n\t};\n\n\tconst blockControls = (\n\t\t<CoverBlockControls\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\tonSelectEmbedUrl={ onSelectEmbedUrl }\n\t\t\tcurrentSettings={ currentSettings }\n\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\tonClearMedia={ onClearMedia }\n\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\tonEditMedia={ openCoverMediaEditorModal }\n\t\t\teditMediaButtonRef={ editMediaButtonRef }\n\t\t\tshowEditMediaButton={ showEditMediaButton }\n\t\t\tisEditMediaDisabled={ isSwappingMedia }\n\t\t/>\n\t);\n\n\tconst inspectorControls = (\n\t\t<CoverInspectorControls\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tclientId={ clientId }\n\t\t\tsetOverlayColor={ onSetOverlayColor }\n\t\t\tcoverRef={ ref }\n\t\t\tcurrentSettings={ currentSettings }\n\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\tupdateDimRatio={ onUpdateDimRatio }\n\t\t\tonClearMedia={ onClearMedia }\n\t\t\tfeaturedImage={ media }\n\t\t/>\n\t);\n\n\tconst resizableCoverProps = {\n\t\tclassName: 'block-library-cover__resize-container',\n\t\tclientId,\n\t\theight,\n\t\tminHeight: minHeightWithUnit,\n\t\tonResizeStart: () => {\n\t\t\tsetAttributes( { minHeightUnit: 'px' } );\n\t\t\ttoggleSelection( false );\n\t\t},\n\t\tonResize: ( value ) => {\n\t\t\tsetAttributes( { minHeight: value } );\n\t\t},\n\t\tonResizeStop: ( newMinHeight ) => {\n\t\t\ttoggleSelection( true );\n\t\t\tsetAttributes( { minHeight: newMinHeight } );\n\t\t},\n\t\t// Hide the resize handle if an aspect ratio is set, as the aspect ratio takes precedence.\n\t\tshowHandle: ! attributes.style?.dimensions?.aspectRatio,\n\t\tsize: resizableBoxDimensions,\n\t\twidth,\n\t};\n\n\tif ( ! useFeaturedImage && ! hasInnerBlocks && ! hasBackground ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ blockControls }\n\t\t\t\t{ inspectorControls }\n\t\t\t\t{ hasNonContentControls && isSelected && (\n\t\t\t\t\t<ResizableCoverPopover { ...resizableCoverProps } />\n\t\t\t\t) }\n\t\t\t\t<TagName\n\t\t\t\t\t{ ...blockProps }\n\t\t\t\t\tclassName={ clsx( 'is-placeholder', blockProps.className ) }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t...blockProps.style,\n\t\t\t\t\t\tminHeight: minHeightWithUnit || undefined,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ resizeListener }\n\t\t\t\t\t<CoverPlaceholder\n\t\t\t\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"wp-block-cover__placeholder-background-options\">\n\t\t\t\t\t\t\t<ColorPalette\n\t\t\t\t\t\t\t\tdisableCustomColors\n\t\t\t\t\t\t\t\tvalue={ overlayColor.color }\n\t\t\t\t\t\t\t\tonChange={ onSetOverlayColor }\n\t\t\t\t\t\t\t\tclearable={ false }\n\t\t\t\t\t\t\t\tpresentation=\"toggle-buttons\"\n\t\t\t\t\t\t\t\taria-label={ __( 'Overlay color' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</CoverPlaceholder>\n\t\t\t\t</TagName>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst classes = clsx(\n\t\t{\n\t\t\t'is-dark-theme': isDark,\n\t\t\t'is-light': ! isDark,\n\t\t\t'is-transient': isUploadingMedia || isSwappingMedia,\n\t\t\t'has-parallax': hasParallax,\n\t\t\t'is-repeated': isRepeated,\n\t\t\t'has-custom-content-position':\n\t\t\t\t! isContentPositionCenter( contentPosition ),\n\t\t},\n\t\tgetPositionClassName( contentPosition )\n\t);\n\n\tconst showOverlay =\n\t\turl || ! useFeaturedImage || ( useFeaturedImage && ! url );\n\n\treturn (\n\t\t<>\n\t\t\t{ blockControls }\n\t\t\t{ inspectorControls }\n\t\t\t<TagName\n\t\t\t\t{ ...blockProps }\n\t\t\t\tclassName={ clsx( classes, blockProps.className ) }\n\t\t\t\tstyle={ { ...style, ...blockProps.style } }\n\t\t\t\tdata-url={ url }\n\t\t\t>\n\t\t\t\t{ resizeListener }\n\n\t\t\t\t{ ! url && useFeaturedImage && (\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\tclassName=\"wp-block-cover__image--placeholder-image\"\n\t\t\t\t\t\twithIllustration\n\t\t\t\t\t/>\n\t\t\t\t) }\n\n\t\t\t\t{ url &&\n\t\t\t\t\tisImageBackground &&\n\t\t\t\t\t( isImgElement ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tref={ mediaElement }\n\t\t\t\t\t\t\tclassName=\"wp-block-cover__image-background\"\n\t\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\t\tstyle={ mediaStyle }\n\t\t\t\t\t\t\tonLoad={ () => setIsSwappingMedia( false ) }\n\t\t\t\t\t\t\tonError={ () => setIsSwappingMedia( false ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={ mediaElement }\n\t\t\t\t\t\t\trole={ alt ? 'img' : undefined }\n\t\t\t\t\t\t\taria-label={ alt ? alt : undefined }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\t'wp-block-cover__image-background'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tstyle={ { backgroundImage, backgroundPosition } }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t{ url && isVideoBackground && (\n\t\t\t\t\t<video\n\t\t\t\t\t\tref={ mediaElement }\n\t\t\t\t\t\tclassName=\"wp-block-cover__video-background\"\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tposter={ poster }\n\t\t\t\t\t\tstyle={ mediaStyle }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ isEmbedVideoBackground && embedHtml && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={ mediaElement }\n\t\t\t\t\t\tclassName=\"wp-block-cover__video-background wp-block-cover__embed-background\"\n\t\t\t\t\t\tstyle={ mediaStyle }\n\t\t\t\t\t>\n\t\t\t\t\t\t<SandBox\n\t\t\t\t\t\t\tallowSameOrigin\n\t\t\t\t\t\t\thtml={ embedHtml }\n\t\t\t\t\t\t\ttitle=\"Background video\"\n\t\t\t\t\t\t\tstyles={ [\n\t\t\t\t\t\t\t\t'iframe{position:fixed;top:0;left:0;width:100%;height:100%;}',\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ isEmbedVideoBackground && ! embedHtml && isFetchingEmbed && (\n\t\t\t\t\t<Spinner />\n\t\t\t\t) }\n\n\t\t\t\t{ showOverlay && (\n\t\t\t\t\t<span\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'wp-block-cover__background',\n\t\t\t\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t[ overlayColor.class ]: overlayColor.class,\n\t\t\t\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t\t\t\t// For backwards compatibility. Former versions of the Cover Block applied\n\t\t\t\t\t\t\t\t// `.wp-block-cover__gradient-background` in the presence of\n\t\t\t\t\t\t\t\t// media, a gradient and a dim.\n\t\t\t\t\t\t\t\t'wp-block-cover__gradient-background':\n\t\t\t\t\t\t\t\t\turl && gradientValue && dimRatio !== 0,\n\t\t\t\t\t\t\t\t'has-background-gradient': gradientValue,\n\t\t\t\t\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tstyle={ { backgroundImage: gradientValue, ...bgStyle } }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\n\t\t\t\t{ ( isUploadingMedia || isSwappingMedia ) && <Spinner /> }\n\n\t\t\t\t<CoverPlaceholder\n\t\t\t\t\tdisableMediaButtons\n\t\t\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\t\t/>\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</TagName>\n\t\t\t{ hasNonContentControls && isSelected && (\n\t\t\t\t<ResizableCoverPopover { ...resizableCoverProps } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default compose( [\n\twithColors( { overlayColor: 'background-color' } ),\n] )( CoverEdit );\n"],
5
- "mappings": ";AAAA,OAAO,UAAU;AACjB,SAAS,eAAe,SAAS,iBAAiB;AAClD;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,aAAa,SAAS,eAAe;AAC9C,SAAS,SAAS,yBAAyB;AAC3C;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA,eAAe;AAAA,OACT;AACP,SAAS,UAAU;AACnB,SAAS,WAAW,aAAa,mBAAmB;AACpD,SAAS,2CAA2C;AACpD,SAAS,iBAAiB;AAC1B,SAAS,SAAS,oBAAoB;AACtC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,4BAA4B;AACnC,OAAO,wBAAwB;AAC/B,OAAO,sBAAsB;AAC7B,OAAO,2BAA2B;AAClC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,+BAA+B;AACxC,SAAS,8BAA8B;AACvC,SAAS,cAAc;AAwnBrB,SAuDC,UAvDD,KA6DE,YA7DF;AAtnBF,IAAM,EAAE,wBAAwB,IAAI,OAAQ,sBAAuB;AAEnE,SAAS,uBAAwB,YAAa;AAC7C,SAAO;AAAA,IACN;AAAA,MACC;AAAA,MACA;AAAA,QACC,OAAO;AAAA,UACN,YAAY;AAAA,YACX,WAAW;AAAA,UACZ;AAAA,QACD;AAAA,QACA,aAAa,GAAI,cAAe;AAAA,QAChC,GAAG;AAAA,MACJ;AAAA,IACD;AAAA,EACD;AACD;AAWA,IAAM,mBAAmB,CAAE,IAAI,QAAS,CAAE,MAAM,UAAW,GAAI;AAE/D,SAAS,UAAW;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,EAAE,QAAQ,SAAS;AAC7B,GAAI;AACH,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,UAAU;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI;AAEJ,QAAM,CAAE,aAAc,IAAI;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,QAAM,EAAE,YAAY,IAAI,UAAW,gBAAiB;AACpD,QAAM,uBAAuB;AAAA,IAC5B,CAAE,WACD,OAAQ,gBAAiB,EAAE,YAAY,EAAG,uBAAwB;AAAA,IACnE,CAAC;AAAA,EACF;AAEA,QAAM,EAAE,yCAAyC,mBAAmB,IACnE,YAAa,gBAAiB;AAC/B,QAAM,WAAW,YAAY;AAI7B,QAAM,WAAW,OAAQ,EAAE,YAAY,aAAa,CAAE;AACtD,kBAAiB,MAAM;AACtB,aAAS,UAAU,EAAE,YAAY,aAAa;AAAA,EAC/C,CAAE;AAEF,QAAM,EAAE,MAAM,IAAI;AAAA,IACjB,CAAE,WAAY;AACb,aAAO;AAAA,QACN,OACC,iBAAiB,mBACd,OAAQ,SAAU,EAAE;AAAA,UACpB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,YACC,SAAS;AAAA,UACV;AAAA,QACD,IACC;AAAA,MACL;AAAA,IACD;AAAA,IACA,CAAE,eAAe,gBAAiB;AAAA,EACnC;AACA,QAAM,WACL,OAAO,eAAe,QAAS,QAAS,GAAG,cAC3C,OAAO;AAMR,YAAW,MAAM;AAChB,KAAE,YAAY;AACb,UAAK,CAAE,kBAAmB;AACzB;AAAA,MACD;AAEA,YAAM,yBAAyB,MAAM,cAAe,QAAS;AAG7D,YAAM,EAAE,YAAY,cAAc,cAAc,eAAe,IAC9D,SAAS;AAEV,UAAI,kBAAkB,eAAe;AACrC,UAAK,CAAE,aAAa,oBAAqB;AACxC,0BAAkB;AAClB,gDAAwC;AACxC,wBAAiB,eAAgB;AAAA,MAClC;AAEA,YAAM,YAAY;AAAA,QACjB,aAAa;AAAA,QACb;AAAA,QACA;AAAA,MACD;AACA,8CAAwC;AACxC,oBAAe;AAAA,QACd,QAAQ;AAAA,QACR,oBAAoB,aAAa,sBAAsB;AAAA,MACxD,CAAE;AAAA,IACH,GAAI;AAAA,EAGL,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAMF,QAAM,MAAM,mBACT;AAAA;AAAA,IAED,aAAa,WAAY,SAAS,GAAI;AAAA;AACxC,QAAM,iBAAiB,mBACpB,wBACA;AAEH,QAAM,EAAE,kBAAkB,IAAI,YAAa,YAAa;AACxD,QAAM,EAAE,eAAe,cAAc,IAAI,0BAA0B;AAInE,QAAM,sBAAsB,MAAM;AACjC,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI,SAAS,OAAQ,gBAAiB;AACtC,QAAK,UAAW,QAAS,EAAE,SAAS,GAAI;AACvC;AAAA,IACD;AAGA,UAAM,CAAE,SAAU,IAAI;AAAA,MACrB,SAAS,OAAQ,gBAAiB;AAAA,IACnC,EAAE,iBAAkB,UAAU,sBAAuB;AACrD,UAAM,eAAe,WAAW,SAAS;AACzC;AAAA,MACC;AAAA,MACA;AAAA,QACC,uBAAwB;AAAA,UACvB,UAAU,eAAe,UAAU;AAAA,QACpC,CAAE;AAAA,MACH;AAAA,MACA,gBAAiB,QAAS;AAAA,MAC1B,sCAAsC;AAAA,IACvC;AAAA,EACD;AAEA,QAAM,gBAAgB,OAAQ,aAAc;AAC3C,UAAM,kBAAkB,oBAAqB,QAAS;AACtD,UAAM,UAAU,CAAE,UAAU,MAAM,UAAU,UAAW,EAAE;AAAA,MACxD;AAAA,IACD;AAEA,UAAM,yBAAyB,MAAM;AAAA,MACpC,UAAU,UAAU,MAAM;AAAA,IAC3B;AAGA,UAAM,EAAE,YAAY,cAAc,cAAc,eAAe,IAC9D,SAAS;AAEV,QAAI,kBAAkB,eAAe;AACrC,QAAK,CAAE,aAAa,oBAAqB;AACxC,wBAAkB;AAClB,sBAAiB,eAAgB;AAEjC,8CAAwC;AAAA,IACzC;AAKA,UAAM,cACL,aAAa,QAAQ,UAAa,aAAa,aAAa,MACzD,KACA,aAAa;AAEjB,UAAM,YAAY;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAEA,QAAK,mBAAmB,yBAAyB,iBAAiB,IAAK;AACtE,YAAM,EAAE,iBAAiB,IAAI,YAAY;AAIzC,UACC,aACE,UAAU,QAAS,QAAS,KAC7B,UAAU,eAAe,QAAS,QAAS,IAC3C;AACD,wBAAgB,WAAW;AAC3B,wBAAgB,MACf,UAAU,QAAS,QAAS,GAAG,OAC/B,UAAU,eAAe,QAAS,QAAS,GAAG;AAAA,MAChD,WACC,UAAU,QAAS,gBAAiB,KACpC,UAAU,eAAe,QAAS,gBAAiB,GAClD;AACD,wBAAgB,WAAW;AAC3B,wBAAgB,MACf,UAAU,QAAS,gBAAiB,GAAG,OACvC,UAAU,eAAe,QAAS,gBAAiB,GAChD;AAAA,MACL,OAAO;AACN,wBAAgB,WAAW;AAAA,MAC5B;AAAA,IACD;AAEA,aAAS,MAAO,MAAM;AACrB,oBAAe;AAAA,QACd,GAAG;AAAA,QACH,YAAY;AAAA,QACZ,kBAAkB;AAAA,QAClB,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,oBAAoB,aAAa,sBAAsB;AAAA,MACxD,CAAE;AAEF,0BAAoB;AAAA,IACrB,CAAE;AAAA,EACH;AAEA,QAAM,eAAe,MAAM;AAC1B,QAAI,kBAAkB,aAAa;AAInC,QAAK,CAAE,sBAAsB,aAAa,OAAQ;AACjD,wBAAkB;AAClB,sBAAiB,MAAU;AAE3B,8CAAwC;AAAA,IACzC;AAEA,UAAM,YAAY;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAEA,kBAAe;AAAA,MACd,KAAK;AAAA,MACL,IAAI;AAAA,MACJ,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,kBAAkB;AAAA,MAClB,QAAQ;AAAA,IACT,CAAE;AAAA,EACH;AAEA,QAAM,oBAAoB,OAAQ,oBAAqB;AACtD,UAAM,yBAAyB,MAAM,cAAe,GAAI;AAGxD,UAAM,EAAE,YAAY,aAAa,IAAI,SAAS;AAE9C,UAAM,YAAY;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA;AAAA,IACD;AAEA,oBAAiB,eAAgB;AAEjC,4CAAwC;AAExC,aAAS,MAAO,MAAM;AACrB,oBAAe;AAAA,QACd,oBAAoB;AAAA,QACpB,QAAQ;AAAA,MACT,CAAE;AAIF,UAAK,iBAAkB;AACtB,4BAAoB;AAAA,MACrB;AAAA,IACD,CAAE;AAAA,EACH;AAEA,QAAM,mBAAmB,OAAQ,gBAAiB;AACjD,UAAM,yBAAyB,MAAM,cAAe,GAAI;AAGxD,UAAM,EAAE,cAAc,eAAe,IAAI,SAAS;AAElD,UAAM,YAAY;AAAA,MACjB;AAAA,MACA,eAAe;AAAA,MACf;AAAA,IACD;AAEA,kBAAe;AAAA,MACd,UAAU;AAAA,MACV,QAAQ;AAAA,IACT,CAAE;AAAA,EACH;AAEA,QAAM,gBAAgB,CAAE,YAAa;AACpC,sBAAmB,SAAS,EAAE,MAAM,WAAW,CAAE;AAAA,EAClD;AAEA,QAAM,mBAAmB,CAAE,aAAc;AAGxC,UAAM,cACL,gBAAgB,UAAa,aAAa,MAAM,KAAK;AAGtD,kBAAe;AAAA,MACd,KAAK;AAAA,MACL,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,IAAI;AAAA,MACJ,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,kBAAkB;AAAA,IACnB,CAAE;AAAA,EACH;AAGA,QAAM,EAAE,cAAc,gBAAgB,IAAI;AAAA,IACzC,CAAE,WAAY;AACb,UAAK,mBAAmB,+BAA+B,CAAE,KAAM;AAC9D,eAAO;AAAA,UACN,cAAc;AAAA,UACd,iBAAiB;AAAA,QAClB;AAAA,MACD;AAEA,YAAM,EAAE,iBAAiB,yBAAyB,IACjD,OAAQ,SAAU;AAEnB,aAAO;AAAA,QACN,cAAc,gBAAiB,GAAI;AAAA,QACnC,iBAAiB,yBAA0B,GAAI;AAAA,MAChD;AAAA,IACD;AAAA,IACA,CAAE,KAAK,cAAe;AAAA,EACvB;AAGA,QAAM,YAAY,QAAS,MAAM;AAChC,QACC,mBAAmB,+BACnB,CAAE,cAAc,MACf;AACD,aAAO;AAAA,IACR;AACA,WAAO,uBAAwB,aAAa,IAAK;AAAA,EAClD,GAAG,CAAE,cAAc,cAAe,CAAE;AAMpC,QAAM,CAAE,iBAAiB,kBAAmB,IAAI,SAAU,KAAM;AAEhE,QAAM,mBAAmB,iBAAkB,IAAI,GAAI;AAEnD,QAAM,oBAAoB,0BAA0B;AACpD,QAAM,oBAAoB,0BAA0B;AACpD,QAAM,yBACL,gCAAgC;AAEjC,QAAM,mBAAmB,oBAAoB;AAC7C,QAAM,wBAAwB,qBAAqB;AAEnD,QAAM,CAAE,gBAAgB,EAAE,QAAQ,MAAM,CAAE,IAAI,kBAAkB;AAChE,QAAM,yBAAyB,QAAS,MAAM;AAC7C,WAAO;AAAA,MACN,QAAQ,kBAAkB,QAAQ,YAAY,YAAY;AAAA,MAC1D,OAAO;AAAA,IACR;AAAA,EACD,GAAG,CAAE,WAAW,aAAc,CAAE;AAEhC,QAAM,oBACL,aAAa,gBACV,GAAI,SAAU,GAAI,aAAc,KAChC;AAEJ,QAAM,eAAe,EAAI,eAAe;AAExC,QAAM,QAAQ;AAAA,IACb,WAAW,qBAAqB;AAAA,EACjC;AAEA,QAAM,kBAAkB,MAAM,OAAQ,GAAI,MAAM;AAEhD,QAAM,qBAAqB,cAAe,UAAW;AAErD,QAAM,UAAU,EAAE,iBAAiB,aAAa,MAAM;AACtD,QAAM,aAAa;AAAA,IAClB,gBACC,cAAc,eACX,cAAe,UAAW,IAC1B;AAAA,EACL;AAEA,QAAM,gBAAgB,CAAC,EAAI,OAAO,aAAa,SAAS;AAExD,QAAM,iBAAiB;AAAA,IACtB,CAAE,WACD,OAAQ,gBAAiB,EAAE,SAAU,QAAS,EAAE,YAAY,SAC5D;AAAA,IACD,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,MAAM,OAAO;AACnB,QAAM,aAAa,cAAe,EAAE,IAAI,CAAE;AAE1C,QAAM,mBAAmB;AAAA,IACxB;AAAA,MACC,WAAW;AAAA,IACZ;AAAA,IACA;AAAA,MACC;AAAA,MACA;AAAA,MACA,iBAAiB,IAAI;AAAA,IACtB;AAAA,EACD;AAEA,QAAM,eAAe,OAAO;AAC5B,QAAM,qBAAqB,OAAO;AAClC,QAAM,kBAAkB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,4BAA4B,YAAa,MAAM;AACpD,QAAK,CAAE,MAAM,CAAE,sBAAuB;AACrC;AAAA,IACD;AAEA,yBAAsB;AAAA,MACrB;AAAA,MACA,SAAS,MAAM;AACd,2BAAmB,SAAS,MAAM;AAAA,MACnC;AAAA,MACA,UAAU,OAAQ,EAAE,IAAI,OAAO,KAAK,OAAO,MAAO;AACjD,YAAK,OAAO,UAAU,UAAW;AAChC;AAAA,QACD;AAEA,YAAK,UAAU,MAAM,QAAS;AAC7B,6BAAoB,IAAK;AAAA,QAC1B;AAEA,cAAM,iBAAiB;AAAA,UACtB,IAAI;AAAA,UACJ,gBAAgB;AAAA,UAChB,GAAK,SAAS,EAAE,KAAK,OAAO,IAAI,CAAC;AAAA,UACjC,GAAK,UAAU,KACZ,EAAE,UAAU,wBAAwB,IACpC,CAAC;AAAA,QACL;AAEA,YAAK,QAAS;AACb,gBAAM,yBACL,MAAM,cAAe,MAAO;AAG7B,gBAAM;AAAA,YACL,YAAY;AAAA,YACZ,cAAc;AAAA,UACf,IAAI,SAAS;AAEb,cAAI,kBAAkB,eAAe;AACrC,cAAK,CAAE,aAAa,oBAAqB;AACxC,8BAAkB;AAClB,4BAAiB,eAAgB;AAEjC,oDAAwC;AAAA,UACzC;AAEA,yBAAe,SAAS;AAAA,YACvB,aAAa;AAAA,YACb;AAAA,YACA;AAAA,UACD;AACA,yBAAe,qBACd,aAAa,sBAAsB;AAAA,QACrC;AAEA,sBAAe,cAAe;AAK9B,cAAM;AAAA,UACL,aAAa;AAAA,UACb,YAAY;AAAA,QACb,IAAI,SAAS,QAAQ;AACrB,YAAK,sBAAsB,mBAAoB;AAC9C,6BAAoB,KAAM;AAAA,QAC3B;AAAA,MACD;AAAA,IACD,CAAE;AAAA,EACH,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAEF,QAAM,sBACL,yBACA,CAAE,oBACF,qBACA,CAAC,CAAE,MACH,CAAC,CAAE,OACH,CAAE,oBACF,CAAC,CAAE;AAEJ,QAAM,yBAAyB,YAAY;AAC1C,UAAM,sBAAsB,CAAE;AAE9B,UAAM,yBAAyB,sBAC5B,MAAM,cAAe,QAAS,IAC9B;AAGH,UAAM,EAAE,YAAY,cAAc,cAAc,eAAe,IAC9D,SAAS;AAEV,UAAM,kBAAkB,CAAE,aAAa,qBACpC,yBACA,eAAe;AAElB,QAAK,CAAE,aAAa,oBAAqB;AACxC,UAAK,qBAAsB;AAC1B,wBAAiB,eAAgB;AAAA,MAClC,OAAO;AACN,wBAAiB,MAAU;AAAA,MAC5B;AAEA,8CAAwC;AAAA,IACzC;AAEA,UAAM,cACL,aAAa,aAAa,MAAM,KAAK,aAAa;AACnD,UAAM,YAAY;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAEA,aAAS,MAAO,MAAM;AACrB,oBAAe;AAAA,QACd,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,kBAAkB;AAAA,QAClB,UAAU;AAAA,QACV,gBAAgB,mBACb,wBACA;AAAA,QACH,QAAQ;AAAA,MACT,CAAE;AAKF,UAAK,qBAAsB;AAC1B,4BAAoB;AAAA,MACrB;AAAA,IACD,CAAE;AAAA,EACH;AAEA,QAAM,gBACL;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA,qBAAsB;AAAA;AAAA,EACvB;AAGD,QAAM,oBACL;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,iBAAkB;AAAA,MAClB,UAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,gBAAiB;AAAA,MACjB;AAAA,MACA,eAAgB;AAAA;AAAA,EACjB;AAGD,QAAM,sBAAsB;AAAA,IAC3B,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,eAAe,MAAM;AACpB,oBAAe,EAAE,eAAe,KAAK,CAAE;AACvC,sBAAiB,KAAM;AAAA,IACxB;AAAA,IACA,UAAU,CAAE,UAAW;AACtB,oBAAe,EAAE,WAAW,MAAM,CAAE;AAAA,IACrC;AAAA,IACA,cAAc,CAAE,iBAAkB;AACjC,sBAAiB,IAAK;AACtB,oBAAe,EAAE,WAAW,aAAa,CAAE;AAAA,IAC5C;AAAA;AAAA,IAEA,YAAY,CAAE,WAAW,OAAO,YAAY;AAAA,IAC5C,MAAM;AAAA,IACN;AAAA,EACD;AAEA,MAAK,CAAE,oBAAoB,CAAE,kBAAkB,CAAE,eAAgB;AAChE,WACC,iCACG;AAAA;AAAA,MACA;AAAA,MACA,yBAAyB,cAC1B,oBAAC,yBAAwB,GAAG,qBAAsB;AAAA,MAEnD;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACL,WAAY,KAAM,kBAAkB,WAAW,SAAU;AAAA,UACzD,OAAQ;AAAA,YACP,GAAG,WAAW;AAAA,YACd,WAAW,qBAAqB;AAAA,UACjC;AAAA,UAEE;AAAA;AAAA,YACF;AAAA,cAAC;AAAA;AAAA,gBACA;AAAA,gBACA,SAAU;AAAA,gBACV;AAAA,gBAEA,8BAAC,SAAI,WAAU,kDACd;AAAA,kBAAC;AAAA;AAAA,oBACA,qBAAmB;AAAA,oBACnB,OAAQ,aAAa;AAAA,oBACrB,UAAW;AAAA,oBACX,WAAY;AAAA,oBACZ,cAAa;AAAA,oBACb,cAAa,GAAI,eAAgB;AAAA;AAAA,gBAClC,GACD;AAAA;AAAA,YACD;AAAA;AAAA;AAAA,MACD;AAAA,OACD;AAAA,EAEF;AAEA,QAAM,UAAU;AAAA,IACf;AAAA,MACC,iBAAiB;AAAA,MACjB,YAAY,CAAE;AAAA,MACd,gBAAgB,oBAAoB;AAAA,MACpC,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,+BACC,CAAE,wBAAyB,eAAgB;AAAA,IAC7C;AAAA,IACA,qBAAsB,eAAgB;AAAA,EACvC;AAEA,QAAM,cACL,OAAO,CAAE,oBAAsB,oBAAoB,CAAE;AAEtD,SACC,iCACG;AAAA;AAAA,IACA;AAAA,IACF;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACL,WAAY,KAAM,SAAS,WAAW,SAAU;AAAA,QAChD,OAAQ,EAAE,GAAG,OAAO,GAAG,WAAW,MAAM;AAAA,QACxC,YAAW;AAAA,QAET;AAAA;AAAA,UAEA,CAAE,OAAO,oBACV;AAAA,YAAC;AAAA;AAAA,cACA,WAAU;AAAA,cACV,kBAAgB;AAAA;AAAA,UACjB;AAAA,UAGC,OACD,sBACE,eACD;AAAA,YAAC;AAAA;AAAA,cACA,KAAM;AAAA,cACN,WAAU;AAAA,cACV;AAAA,cACA,KAAM;AAAA,cACN,OAAQ;AAAA,cACR,QAAS,MAAM,mBAAoB,KAAM;AAAA,cACzC,SAAU,MAAM,mBAAoB,KAAM;AAAA;AAAA,UAC3C,IAEA;AAAA,YAAC;AAAA;AAAA,cACA,KAAM;AAAA,cACN,MAAO,MAAM,QAAQ;AAAA,cACrB,cAAa,MAAM,MAAM;AAAA,cACzB,WAAY;AAAA,gBACX;AAAA,gBACA;AAAA,cACD;AAAA,cACA,OAAQ,EAAE,iBAAiB,mBAAmB;AAAA;AAAA,UAC/C;AAAA,UAEA,OAAO,qBACR;AAAA,YAAC;AAAA;AAAA,cACA,KAAM;AAAA,cACN,WAAU;AAAA,cACV,UAAQ;AAAA,cACR,OAAK;AAAA,cACL,MAAI;AAAA,cACJ,KAAM;AAAA,cACN;AAAA,cACA,OAAQ;AAAA;AAAA,UACT;AAAA,UAEC,0BAA0B,aAC3B;AAAA,YAAC;AAAA;AAAA,cACA,KAAM;AAAA,cACN,WAAU;AAAA,cACV,OAAQ;AAAA,cAER;AAAA,gBAAC;AAAA;AAAA,kBACA,iBAAe;AAAA,kBACf,MAAO;AAAA,kBACP,OAAM;AAAA,kBACN,QAAS;AAAA,oBACR;AAAA,kBACD;AAAA;AAAA,cACD;AAAA;AAAA,UACD;AAAA,UAEC,0BAA0B,CAAE,aAAa,mBAC1C,oBAAC,WAAQ;AAAA,UAGR,eACD;AAAA,YAAC;AAAA;AAAA,cACA,eAAY;AAAA,cACZ,WAAY;AAAA,gBACX;AAAA,gBACA,gBAAiB,QAAS;AAAA,gBAC1B;AAAA,kBACC,CAAE,aAAa,KAAM,GAAG,aAAa;AAAA,kBACrC,sBAAsB,aAAa;AAAA;AAAA;AAAA;AAAA,kBAInC,uCACC,OAAO,iBAAiB,aAAa;AAAA,kBACtC,2BAA2B;AAAA,kBAC3B,CAAE,aAAc,GAAG;AAAA,gBACpB;AAAA,cACD;AAAA,cACA,OAAQ,EAAE,iBAAiB,eAAe,GAAG,QAAQ;AAAA;AAAA,UACtD;AAAA,WAGG,oBAAoB,oBAAqB,oBAAC,WAAQ;AAAA,UAEtD;AAAA,YAAC;AAAA;AAAA,cACA,qBAAmB;AAAA,cACnB;AAAA,cACA,SAAU;AAAA,cACV;AAAA;AAAA,UACD;AAAA,UACA,oBAAC,SAAM,GAAG,kBAAmB;AAAA;AAAA;AAAA,IAC9B;AAAA,IACE,yBAAyB,cAC1B,oBAAC,yBAAwB,GAAG,qBAAsB;AAAA,KAEpD;AAEF;AAEA,IAAO,eAAQ,QAAS;AAAA,EACvB,WAAY,EAAE,cAAc,mBAAmB,CAAE;AAClD,CAAE,EAAG,SAAU;",
4
+ "sourcesContent": ["import clsx from 'clsx';\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { Placeholder, SandBox, Spinner } from '@wordpress/components';\nimport {\n\tcompose,\n\tuseMergeRefs,\n\tuseReducedMotion,\n\tuseResizeObserver,\n} from '@wordpress/compose';\nimport {\n\twithColors,\n\tColorPalette,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\t__experimentalUseGradient,\n\tstore as blockEditorStore,\n\tuseBlockEditingMode,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { createBlocksFromInnerBlocksTemplate } from '@wordpress/blocks';\nimport { isBlobURL } from '@wordpress/blob';\nimport { store as noticesStore } from '@wordpress/notices';\nimport {\n\tattributesFromMedia,\n\tIMAGE_BACKGROUND_TYPE,\n\tVIDEO_BACKGROUND_TYPE,\n\tEMBED_VIDEO_BACKGROUND_TYPE,\n\tdimRatioToClass,\n\tisContentPositionCenter,\n\tgetPositionClassName,\n\tmediaPosition,\n} from '../shared';\nimport CoverInspectorControls from './inspector-controls';\nimport CoverBlockControls from './block-controls';\nimport CoverPlaceholder from './cover-placeholder';\nimport ResizableCoverPopover from './resizable-cover-popover';\nimport {\n\tgetMediaColor,\n\tcompositeIsDark,\n\tDEFAULT_BACKGROUND_COLOR,\n\tDEFAULT_OVERLAY_COLOR,\n} from './color-utils';\nimport { DEFAULT_MEDIA_SIZE_SLUG } from '../constants';\nimport { getBackgroundEmbedHtml } from '../embed-video-utils';\nimport { unlock } from '../../lock-unlock';\n\nconst { openMediaEditorModalKey } = unlock( blockEditorPrivateApis );\n\nfunction getInnerBlocksTemplate( attributes ) {\n\treturn [\n\t\t[\n\t\t\t'core/paragraph',\n\t\t\t{\n\t\t\t\tstyle: {\n\t\t\t\t\ttypography: {\n\t\t\t\t\t\ttextAlign: 'center',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tplaceholder: __( 'Write title…' ),\n\t\t\t\t...attributes,\n\t\t\t},\n\t\t],\n\t];\n}\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily while\n * the media (image or video) is being uploaded and will not have an id allocated yet.\n *\n * @param {number} id The id of the media.\n * @param {string} url The url of the media.\n *\n * @return {boolean} Is the URL a Blob URL.\n */\nconst isTemporaryMedia = ( id, url ) => ! id && isBlobURL( url );\n\nfunction CoverEdit( {\n\tattributes,\n\tclientId,\n\tisSelected,\n\toverlayColor,\n\tsetAttributes,\n\tsetOverlayColor,\n\ttoggleSelection,\n\tcontext: { postId, postType },\n} ) {\n\tconst {\n\t\tcontentPosition,\n\t\tid,\n\t\turl: originalUrl,\n\t\tbackgroundType: originalBackgroundType,\n\t\tuseFeaturedImage,\n\t\tdimRatio,\n\t\tfocalPoint,\n\t\thasParallax,\n\t\tisDark,\n\t\tisRepeated,\n\t\tminHeight,\n\t\tminHeightUnit,\n\t\talt,\n\t\tallowedBlocks,\n\t\ttemplateLock,\n\t\ttagName: TagName = 'div',\n\t\tisUserOverlayColor,\n\t\tsizeSlug,\n\t\tposter,\n\t} = attributes;\n\n\tconst [ featuredImage ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'featured_media',\n\t\tpostId\n\t);\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst openMediaEditorModal = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings()[ openMediaEditorModalKey ],\n\t\t[]\n\t);\n\n\tconst { __unstableMarkNextChangeAsNotPersistent, replaceInnerBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tconst registry = useRegistry();\n\n\t// Ref to access latest values after async operations (e.g. getMediaColor),\n\t// avoiding stale values that could overwrite concurrent remote changes.\n\tconst propsRef = useRef( { attributes, overlayColor } );\n\tuseLayoutEffect( () => {\n\t\tpropsRef.current = { attributes, overlayColor };\n\t} );\n\n\tconst { media } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tmedia:\n\t\t\t\t\tfeaturedImage && useFeaturedImage\n\t\t\t\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t'attachment',\n\t\t\t\t\t\t\t\tfeaturedImage,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\t[ featuredImage, useFeaturedImage ]\n\t);\n\tconst mediaUrl =\n\t\tmedia?.media_details?.sizes?.[ sizeSlug ]?.source_url ??\n\t\tmedia?.source_url;\n\n\t// User can change the featured image outside of the block, but we still\n\t// need to update the block when that happens. This effect should only\n\t// run when the featured image changes in that case. All other cases are\n\t// handled in their respective callbacks.\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tif ( ! useFeaturedImage ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst averageBackgroundColor = await getMediaColor( mediaUrl );\n\n\t\t\t// Read latest values after await to avoid stale closures.\n\t\t\tconst { attributes: currentAttrs, overlayColor: currentOverlay } =\n\t\t\t\tpropsRef.current;\n\n\t\t\tlet newOverlayColor = currentOverlay.color;\n\t\t\tif ( ! currentAttrs.isUserOverlayColor ) {\n\t\t\t\tnewOverlayColor = averageBackgroundColor;\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetOverlayColor( newOverlayColor );\n\t\t\t}\n\n\t\t\tconst newIsDark = compositeIsDark(\n\t\t\t\tcurrentAttrs.dimRatio,\n\t\t\t\tnewOverlayColor,\n\t\t\t\taverageBackgroundColor\n\t\t\t);\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tisDark: newIsDark,\n\t\t\t\tisUserOverlayColor: currentAttrs.isUserOverlayColor || false,\n\t\t\t} );\n\t\t} )();\n\t\t// Update the block only when the featured image changes.\n\t\t// The other dependencies are stable references (dispatch actions / setters).\n\t}, [\n\t\tmediaUrl,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetAttributes,\n\t\tsetOverlayColor,\n\t\tuseFeaturedImage,\n\t] );\n\n\t// instead of destructuring the attributes\n\t// we define the url and background type\n\t// depending on the value of the useFeaturedImage flag\n\t// to preview in edit the dynamic featured image\n\tconst url = useFeaturedImage\n\t\t? mediaUrl\n\t\t: // Ensure the url is not malformed due to sanitization through `wp_kses`.\n\t\t\toriginalUrl?.replaceAll( '&amp;', '&' );\n\tconst backgroundType = useFeaturedImage\n\t\t? IMAGE_BACKGROUND_TYPE\n\t\t: originalBackgroundType;\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst { gradientClass, gradientValue } = __experimentalUseGradient();\n\n\t// Create the initial inner paragraph when the block gains a background\n\t// and has no content yet.\n\tconst scaffoldInnerBlocks = () => {\n\t\tconst {\n\t\t\tgetBlocks,\n\t\t\tisBlockSelected,\n\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t} = registry.select( blockEditorStore );\n\t\tif ( getBlocks( clientId ).length > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\t// Check for fontSize support before we pass a fontSize attribute to\n\t\t// the innerBlocks.\n\t\tconst [ fontSizes ] = unlock(\n\t\t\tregistry.select( blockEditorStore )\n\t\t).getBlockSettings( clientId, 'typography.fontSizes' );\n\t\tconst hasFontSizes = fontSizes?.length > 0;\n\t\treplaceInnerBlocks(\n\t\t\tclientId,\n\t\t\tcreateBlocksFromInnerBlocksTemplate(\n\t\t\t\tgetInnerBlocksTemplate( {\n\t\t\t\t\tfontSize: hasFontSizes ? 'large' : undefined,\n\t\t\t\t} )\n\t\t\t),\n\t\t\tisBlockSelected( clientId ),\n\t\t\tgetSelectedBlocksInitialCaretPosition()\n\t\t);\n\t};\n\n\tconst onSelectMedia = async ( newMedia ) => {\n\t\tconst mediaAttributes = attributesFromMedia( newMedia );\n\t\tconst isImage = [ newMedia?.type, newMedia?.media_type ].includes(\n\t\t\tIMAGE_BACKGROUND_TYPE\n\t\t);\n\n\t\tconst averageBackgroundColor = await getMediaColor(\n\t\t\tisImage ? newMedia?.url : undefined\n\t\t);\n\n\t\t// Read latest values to avoid stale closures.\n\t\tconst { attributes: currentAttrs, overlayColor: currentOverlay } =\n\t\t\tpropsRef.current;\n\n\t\tlet newOverlayColor = currentOverlay.color;\n\t\tif ( ! currentAttrs.isUserOverlayColor ) {\n\t\t\tnewOverlayColor = averageBackgroundColor;\n\t\t\tsetOverlayColor( newOverlayColor );\n\t\t\t// Fold next attribute change into the same undo level as the setOverlayColor above.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t}\n\n\t\t// Only set a new dimRatio if there was no previous media selected\n\t\t// to avoid resetting to 50 if it has been explicitly set to 100.\n\t\t// See issue #52835 for context.\n\t\tconst newDimRatio =\n\t\t\tcurrentAttrs.url === undefined && currentAttrs.dimRatio === 100\n\t\t\t\t? 50\n\t\t\t\t: currentAttrs.dimRatio;\n\n\t\tconst newIsDark = compositeIsDark(\n\t\t\tnewDimRatio,\n\t\t\tnewOverlayColor,\n\t\t\taverageBackgroundColor\n\t\t);\n\n\t\tif ( backgroundType === IMAGE_BACKGROUND_TYPE && mediaAttributes?.id ) {\n\t\t\tconst { imageDefaultSize } = getSettings();\n\n\t\t\t// Try to use the previous selected image size if it's available\n\t\t\t// otherwise try the default image size or fallback to full size.\n\t\t\tif (\n\t\t\t\tsizeSlug &&\n\t\t\t\t( newMedia?.sizes?.[ sizeSlug ] ||\n\t\t\t\t\tnewMedia?.media_details?.sizes?.[ sizeSlug ] )\n\t\t\t) {\n\t\t\t\tmediaAttributes.sizeSlug = sizeSlug;\n\t\t\t\tmediaAttributes.url =\n\t\t\t\t\tnewMedia?.sizes?.[ sizeSlug ]?.url ||\n\t\t\t\t\tnewMedia?.media_details?.sizes?.[ sizeSlug ]?.source_url;\n\t\t\t} else if (\n\t\t\t\tnewMedia?.sizes?.[ imageDefaultSize ] ||\n\t\t\t\tnewMedia?.media_details?.sizes?.[ imageDefaultSize ]\n\t\t\t) {\n\t\t\t\tmediaAttributes.sizeSlug = imageDefaultSize;\n\t\t\t\tmediaAttributes.url =\n\t\t\t\t\tnewMedia?.sizes?.[ imageDefaultSize ]?.url ||\n\t\t\t\t\tnewMedia?.media_details?.sizes?.[ imageDefaultSize ]\n\t\t\t\t\t\t?.source_url;\n\t\t\t} else {\n\t\t\t\tmediaAttributes.sizeSlug = DEFAULT_MEDIA_SIZE_SLUG;\n\t\t\t}\n\t\t}\n\n\t\tregistry.batch( () => {\n\t\t\tsetAttributes( {\n\t\t\t\t...mediaAttributes,\n\t\t\t\tfocalPoint: undefined,\n\t\t\t\tuseFeaturedImage: undefined,\n\t\t\t\tdimRatio: newDimRatio,\n\t\t\t\tisDark: newIsDark,\n\t\t\t\tisUserOverlayColor: currentAttrs.isUserOverlayColor || false,\n\t\t\t} );\n\n\t\t\tscaffoldInnerBlocks();\n\t\t} );\n\t};\n\n\tconst onClearMedia = () => {\n\t\tlet newOverlayColor = overlayColor.color;\n\n\t\t// Skip for embeds, which never auto-assign an overlay color; otherwise\n\t\t// the non-persistent flag lands on the media reset itself (unsaveable).\n\t\tif ( ! isUserOverlayColor && overlayColor.color ) {\n\t\t\tnewOverlayColor = DEFAULT_OVERLAY_COLOR;\n\t\t\tsetOverlayColor( undefined );\n\t\t\t// Fold next attribute change into the same undo level as the setOverlayColor above.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t}\n\n\t\tconst newIsDark = compositeIsDark(\n\t\t\tdimRatio,\n\t\t\tnewOverlayColor,\n\t\t\tDEFAULT_BACKGROUND_COLOR\n\t\t);\n\n\t\tsetAttributes( {\n\t\t\turl: undefined,\n\t\t\tid: undefined,\n\t\t\tbackgroundType: undefined,\n\t\t\tfocalPoint: undefined,\n\t\t\thasParallax: undefined,\n\t\t\tisRepeated: undefined,\n\t\t\tuseFeaturedImage: undefined,\n\t\t\tisDark: newIsDark,\n\t\t} );\n\t};\n\n\tconst onSetOverlayColor = async ( newOverlayColor ) => {\n\t\tconst averageBackgroundColor = await getMediaColor( url );\n\n\t\t// Read latest dimRatio after await to avoid stale closure.\n\t\tconst { attributes: currentAttrs } = propsRef.current;\n\n\t\tconst newIsDark = compositeIsDark(\n\t\t\tcurrentAttrs.dimRatio,\n\t\t\tnewOverlayColor,\n\t\t\taverageBackgroundColor\n\t\t);\n\n\t\tsetOverlayColor( newOverlayColor );\n\t\t// Fold next attribute change into the same undo level as the setOverlayColor above.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\n\t\tregistry.batch( () => {\n\t\t\tsetAttributes( {\n\t\t\t\tisUserOverlayColor: true,\n\t\t\t\tisDark: newIsDark,\n\t\t\t} );\n\n\t\t\t// Skip when the color is cleared: that returns the block to its\n\t\t\t// placeholder, which only renders while there is no content.\n\t\t\tif ( newOverlayColor ) {\n\t\t\t\tscaffoldInnerBlocks();\n\t\t\t}\n\t\t} );\n\t};\n\n\tconst onUpdateDimRatio = async ( newDimRatio ) => {\n\t\tconst averageBackgroundColor = await getMediaColor( url );\n\n\t\t// Read latest overlayColor after await to avoid stale closure.\n\t\tconst { overlayColor: currentOverlay } = propsRef.current;\n\n\t\tconst newIsDark = compositeIsDark(\n\t\t\tnewDimRatio,\n\t\t\tcurrentOverlay.color,\n\t\t\taverageBackgroundColor\n\t\t);\n\n\t\tsetAttributes( {\n\t\t\tdimRatio: newDimRatio,\n\t\t\tisDark: newIsDark,\n\t\t} );\n\t};\n\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst onSelectEmbedUrl = ( embedUrl ) => {\n\t\t// Only set a new dimRatio if there was no previous media selected\n\t\t// to avoid resetting to 50 if it has been explicitly set to 100.\n\t\tconst newDimRatio =\n\t\t\toriginalUrl === undefined && dimRatio === 100 ? 50 : dimRatio;\n\n\t\t// Set initial attributes with URL\n\t\tsetAttributes( {\n\t\t\turl: embedUrl,\n\t\t\tbackgroundType: EMBED_VIDEO_BACKGROUND_TYPE,\n\t\t\tdimRatio: newDimRatio,\n\t\t\tid: undefined,\n\t\t\tfocalPoint: undefined,\n\t\t\thasParallax: undefined,\n\t\t\tisRepeated: undefined,\n\t\t\tuseFeaturedImage: undefined,\n\t\t} );\n\t};\n\n\t// Fetch embed preview for embed videos\n\tconst { embedPreview, isFetchingEmbed } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( backgroundType !== EMBED_VIDEO_BACKGROUND_TYPE || ! url ) {\n\t\t\t\treturn {\n\t\t\t\t\tembedPreview: undefined,\n\t\t\t\t\tisFetchingEmbed: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst { getEmbedPreview, isRequestingEmbedPreview } =\n\t\t\t\tselect( coreStore );\n\n\t\t\treturn {\n\t\t\t\tembedPreview: getEmbedPreview( url ),\n\t\t\t\tisFetchingEmbed: isRequestingEmbedPreview( url ),\n\t\t\t};\n\t\t},\n\t\t[ url, backgroundType ]\n\t);\n\n\tconst prefersReducedMotion = useReducedMotion();\n\n\t// Compute embed HTML for editor display via SandBox\n\tconst embedHtml = useMemo( () => {\n\t\tif (\n\t\t\tbackgroundType !== EMBED_VIDEO_BACKGROUND_TYPE ||\n\t\t\t! embedPreview?.html\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\treturn getBackgroundEmbedHtml( embedPreview.html, {\n\t\t\tautoplay: ! prefersReducedMotion,\n\t\t} );\n\t}, [ embedPreview, backgroundType, prefersReducedMotion ] );\n\n\t// Set while the media editor has pointed the cover at a freshly\n\t// generated file the browser hasn't finished loading; cleared by the\n\t// background <img> load/error handlers (or immediately after\n\t// setAttributes for CSS backgrounds, which never fire load events).\n\tconst [ isSwappingMedia, setIsSwappingMedia ] = useState( false );\n\n\tconst isUploadingMedia = isTemporaryMedia( id, url );\n\n\tconst isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;\n\tconst isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;\n\tconst isEmbedVideoBackground =\n\t\tEMBED_VIDEO_BACKGROUND_TYPE === backgroundType;\n\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst hasNonContentControls = blockEditingMode === 'default';\n\n\tconst [ resizeListener, { height, width } ] = useResizeObserver();\n\tconst resizableBoxDimensions = useMemo( () => {\n\t\treturn {\n\t\t\theight: minHeightUnit === 'px' && minHeight ? minHeight : 'auto',\n\t\t\twidth: 'auto',\n\t\t};\n\t}, [ minHeight, minHeightUnit ] );\n\n\tconst minHeightWithUnit =\n\t\tminHeight && minHeightUnit\n\t\t\t? `${ minHeight }${ minHeightUnit }`\n\t\t\t: minHeight;\n\n\tconst isImgElement = ! ( hasParallax || isRepeated );\n\n\tconst style = {\n\t\tminHeight: minHeightWithUnit || undefined,\n\t};\n\n\tconst backgroundImage = url ? `url(${ url })` : undefined;\n\n\tconst backgroundPosition = mediaPosition( focalPoint );\n\n\tconst bgStyle = { backgroundColor: overlayColor.color };\n\tconst mediaStyle = {\n\t\tobjectPosition:\n\t\t\tfocalPoint && isImgElement\n\t\t\t\t? mediaPosition( focalPoint )\n\t\t\t\t: undefined,\n\t};\n\n\tconst hasBackground = !! ( url || overlayColor.color || gradientValue );\n\n\tconst hasInnerBlocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlock( clientId ).innerBlocks.length >\n\t\t\t0,\n\t\t[ clientId ]\n\t);\n\n\tconst ref = useRef();\n\t// State, not a ref, so that the element is there on the next render.\n\tconst [ dropZoneElement, setDropZoneElement ] = useState( null );\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ ref, setDropZoneElement ] ),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-cover__inner-container',\n\t\t},\n\t\t{\n\t\t\tallowedBlocks,\n\t\t\ttemplateLock,\n\t\t\tdropZoneElement,\n\t\t}\n\t);\n\n\tconst mediaElement = useRef();\n\tconst editMediaButtonRef = useRef();\n\n\t// `autoPlay` only applies when the video loads, so pause a video that is\n\t// already playing when the user turns on reduced motion.\n\tuseEffect( () => {\n\t\tif ( prefersReducedMotion && isVideoBackground ) {\n\t\t\tmediaElement.current?.pause();\n\t\t}\n\t}, [ prefersReducedMotion, isVideoBackground ] );\n\tconst currentSettings = {\n\t\tisVideoBackground,\n\t\tisImageBackground,\n\t\tmediaElement,\n\t\thasInnerBlocks,\n\t\turl,\n\t\tisImgElement,\n\t\toverlayColor,\n\t};\n\n\tconst openCoverMediaEditorModal = useCallback( () => {\n\t\tif ( ! id || ! openMediaEditorModal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst previousImage = { id, url: propsRef.current.attributes.url };\n\t\tlet isUndone = false;\n\t\topenMediaEditorModal( {\n\t\t\tid,\n\t\t\tonClose: () => {\n\t\t\t\teditMediaButtonRef.current?.focus();\n\t\t\t},\n\t\t\tonUndo: () => {\n\t\t\t\tisUndone = true;\n\t\t\t\tsetIsSwappingMedia( false );\n\t\t\t\tsetAttributes( previousImage );\n\t\t\t},\n\t\t\tonUpdate: async ( { id: newId, url: newUrl } ) => {\n\t\t\t\tif ( typeof newId !== 'number' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( newId !== id && newUrl ) {\n\t\t\t\t\tsetIsSwappingMedia( true );\n\t\t\t\t}\n\n\t\t\t\tconst nextAttributes = {\n\t\t\t\t\tid: newId,\n\t\t\t\t\tbackgroundType: IMAGE_BACKGROUND_TYPE,\n\t\t\t\t\t...( newUrl ? { url: newUrl } : {} ),\n\t\t\t\t\t...( newId !== id\n\t\t\t\t\t\t? { sizeSlug: DEFAULT_MEDIA_SIZE_SLUG }\n\t\t\t\t\t\t: {} ),\n\t\t\t\t};\n\n\t\t\t\tif ( newUrl ) {\n\t\t\t\t\tconst averageBackgroundColor =\n\t\t\t\t\t\tawait getMediaColor( newUrl );\n\t\t\t\t\t// Snackbar Undo can run while the image color is loading.\n\t\t\t\t\tif ( isUndone ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Read latest values after await to avoid stale closures.\n\t\t\t\t\tconst {\n\t\t\t\t\t\tattributes: currentAttrs,\n\t\t\t\t\t\toverlayColor: currentOverlay,\n\t\t\t\t\t} = propsRef.current;\n\n\t\t\t\t\tlet newOverlayColor = currentOverlay.color;\n\t\t\t\t\tif ( ! currentAttrs.isUserOverlayColor ) {\n\t\t\t\t\t\tnewOverlayColor = averageBackgroundColor;\n\t\t\t\t\t\tsetOverlayColor( newOverlayColor );\n\t\t\t\t\t\t// Fold next attribute change into the same undo level as the setOverlayColor above.\n\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t}\n\n\t\t\t\t\tnextAttributes.isDark = compositeIsDark(\n\t\t\t\t\t\tcurrentAttrs.dimRatio,\n\t\t\t\t\t\tnewOverlayColor,\n\t\t\t\t\t\taverageBackgroundColor\n\t\t\t\t\t);\n\t\t\t\t\tnextAttributes.isUserOverlayColor =\n\t\t\t\t\t\tcurrentAttrs.isUserOverlayColor || false;\n\t\t\t\t}\n\n\t\t\t\tsetAttributes( nextAttributes );\n\n\t\t\t\t// A CSS background (parallax/repeated) renders as a div and\n\t\t\t\t// never fires a load event; getMediaColor already fetched\n\t\t\t\t// the file, so the swap is done once attributes are set.\n\t\t\t\tconst {\n\t\t\t\t\thasParallax: currentHasParallax,\n\t\t\t\t\tisRepeated: currentIsRepeated,\n\t\t\t\t} = propsRef.current.attributes;\n\t\t\t\tif ( currentHasParallax || currentIsRepeated ) {\n\t\t\t\t\tsetIsSwappingMedia( false );\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\t}, [\n\t\tid,\n\t\topenMediaEditorModal,\n\t\tsetAttributes,\n\t\tsetOverlayColor,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t] );\n\n\tconst showEditMediaButton =\n\t\thasNonContentControls &&\n\t\t! useFeaturedImage &&\n\t\tisImageBackground &&\n\t\t!! id &&\n\t\t!! url &&\n\t\t! isUploadingMedia &&\n\t\t!! openMediaEditorModal;\n\n\tconst toggleUseFeaturedImage = async () => {\n\t\tconst newUseFeaturedImage = ! useFeaturedImage;\n\n\t\tconst averageBackgroundColor = newUseFeaturedImage\n\t\t\t? await getMediaColor( mediaUrl )\n\t\t\t: DEFAULT_BACKGROUND_COLOR;\n\n\t\t// Read latest values after await to avoid stale closures.\n\t\tconst { attributes: currentAttrs, overlayColor: currentOverlay } =\n\t\t\tpropsRef.current;\n\n\t\tconst newOverlayColor = ! currentAttrs.isUserOverlayColor\n\t\t\t? averageBackgroundColor\n\t\t\t: currentOverlay.color;\n\n\t\tif ( ! currentAttrs.isUserOverlayColor ) {\n\t\t\tif ( newUseFeaturedImage ) {\n\t\t\t\tsetOverlayColor( newOverlayColor );\n\t\t\t} else {\n\t\t\t\tsetOverlayColor( undefined );\n\t\t\t}\n\t\t\t// Fold next attribute change into the same undo level as the setOverlayColor above.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t}\n\n\t\tconst newDimRatio =\n\t\t\tcurrentAttrs.dimRatio === 100 ? 50 : currentAttrs.dimRatio;\n\t\tconst newIsDark = compositeIsDark(\n\t\t\tnewDimRatio,\n\t\t\tnewOverlayColor,\n\t\t\taverageBackgroundColor\n\t\t);\n\n\t\tregistry.batch( () => {\n\t\t\tsetAttributes( {\n\t\t\t\tid: undefined,\n\t\t\t\turl: undefined,\n\t\t\t\tuseFeaturedImage: newUseFeaturedImage,\n\t\t\t\tdimRatio: newDimRatio,\n\t\t\t\tbackgroundType: useFeaturedImage\n\t\t\t\t\t? IMAGE_BACKGROUND_TYPE\n\t\t\t\t\t: undefined,\n\t\t\t\tisDark: newIsDark,\n\t\t\t} );\n\n\t\t\t// Skip when the featured image is disabled: that can return the\n\t\t\t// block to its placeholder, which only renders while there is no\n\t\t\t// content.\n\t\t\tif ( newUseFeaturedImage ) {\n\t\t\t\tscaffoldInnerBlocks();\n\t\t\t}\n\t\t} );\n\t};\n\n\tconst blockControls = (\n\t\t<CoverBlockControls\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\tonSelectEmbedUrl={ onSelectEmbedUrl }\n\t\t\tcurrentSettings={ currentSettings }\n\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\tonClearMedia={ onClearMedia }\n\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\tonEditMedia={ openCoverMediaEditorModal }\n\t\t\teditMediaButtonRef={ editMediaButtonRef }\n\t\t\tshowEditMediaButton={ showEditMediaButton }\n\t\t\tisEditMediaDisabled={ isSwappingMedia }\n\t\t/>\n\t);\n\n\tconst inspectorControls = (\n\t\t<CoverInspectorControls\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tclientId={ clientId }\n\t\t\tsetOverlayColor={ onSetOverlayColor }\n\t\t\tcoverRef={ ref }\n\t\t\tcurrentSettings={ currentSettings }\n\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\tonUploadError={ onUploadError }\n\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\tupdateDimRatio={ onUpdateDimRatio }\n\t\t\tonClearMedia={ onClearMedia }\n\t\t\tfeaturedImage={ media }\n\t\t\tisSelected={ isSelected }\n\t\t/>\n\t);\n\n\tconst resizableCoverProps = {\n\t\tclassName: 'block-library-cover__resize-container',\n\t\tclientId,\n\t\theight,\n\t\tminHeight: minHeightWithUnit,\n\t\tonResizeStart: () => {\n\t\t\tsetAttributes( { minHeightUnit: 'px' } );\n\t\t\ttoggleSelection( false );\n\t\t},\n\t\tonResize: ( value ) => {\n\t\t\tsetAttributes( { minHeight: value } );\n\t\t},\n\t\tonResizeStop: ( newMinHeight ) => {\n\t\t\ttoggleSelection( true );\n\t\t\tsetAttributes( { minHeight: newMinHeight } );\n\t\t},\n\t\t// Hide the resize handle if an aspect ratio is set, as the aspect ratio takes precedence.\n\t\tshowHandle: ! attributes.style?.dimensions?.aspectRatio,\n\t\tsize: resizableBoxDimensions,\n\t\twidth,\n\t};\n\n\tif ( ! useFeaturedImage && ! hasInnerBlocks && ! hasBackground ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ blockControls }\n\t\t\t\t{ inspectorControls }\n\t\t\t\t{ hasNonContentControls && isSelected && (\n\t\t\t\t\t<ResizableCoverPopover { ...resizableCoverProps } />\n\t\t\t\t) }\n\t\t\t\t<TagName\n\t\t\t\t\t{ ...blockProps }\n\t\t\t\t\tclassName={ clsx( 'is-placeholder', blockProps.className ) }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t...blockProps.style,\n\t\t\t\t\t\tminHeight: minHeightWithUnit || undefined,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ resizeListener }\n\t\t\t\t\t<CoverPlaceholder\n\t\t\t\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"wp-block-cover__placeholder-background-options\">\n\t\t\t\t\t\t\t<ColorPalette\n\t\t\t\t\t\t\t\tdisableCustomColors\n\t\t\t\t\t\t\t\tvalue={ overlayColor.color }\n\t\t\t\t\t\t\t\tonChange={ onSetOverlayColor }\n\t\t\t\t\t\t\t\tclearable={ false }\n\t\t\t\t\t\t\t\tpresentation=\"toggle-buttons\"\n\t\t\t\t\t\t\t\taria-label={ __( 'Overlay color' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</CoverPlaceholder>\n\t\t\t\t</TagName>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst classes = clsx(\n\t\t{\n\t\t\t'is-dark-theme': isDark,\n\t\t\t'is-light': ! isDark,\n\t\t\t'is-transient': isUploadingMedia || isSwappingMedia,\n\t\t\t'has-parallax': hasParallax,\n\t\t\t'is-repeated': isRepeated,\n\t\t\t'has-custom-content-position':\n\t\t\t\t! isContentPositionCenter( contentPosition ),\n\t\t},\n\t\tgetPositionClassName( contentPosition )\n\t);\n\n\tconst showOverlay =\n\t\turl || ! useFeaturedImage || ( useFeaturedImage && ! url );\n\n\treturn (\n\t\t<>\n\t\t\t{ blockControls }\n\t\t\t{ inspectorControls }\n\t\t\t<TagName\n\t\t\t\t{ ...blockProps }\n\t\t\t\tclassName={ clsx( classes, blockProps.className ) }\n\t\t\t\tstyle={ { ...style, ...blockProps.style } }\n\t\t\t\tdata-url={ url }\n\t\t\t>\n\t\t\t\t{ resizeListener }\n\n\t\t\t\t{ ! url && useFeaturedImage && (\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\tclassName=\"wp-block-cover__image--placeholder-image\"\n\t\t\t\t\t\twithIllustration\n\t\t\t\t\t/>\n\t\t\t\t) }\n\n\t\t\t\t{ url &&\n\t\t\t\t\tisImageBackground &&\n\t\t\t\t\t( isImgElement ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tref={ mediaElement }\n\t\t\t\t\t\t\tclassName=\"wp-block-cover__image-background\"\n\t\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\t\tstyle={ mediaStyle }\n\t\t\t\t\t\t\tonLoad={ () => setIsSwappingMedia( false ) }\n\t\t\t\t\t\t\tonError={ () => setIsSwappingMedia( false ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={ mediaElement }\n\t\t\t\t\t\t\trole={ alt ? 'img' : undefined }\n\t\t\t\t\t\t\taria-label={ alt ? alt : undefined }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\t'wp-block-cover__image-background'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tstyle={ { backgroundImage, backgroundPosition } }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t{ url && isVideoBackground && (\n\t\t\t\t\t<video\n\t\t\t\t\t\tref={ mediaElement }\n\t\t\t\t\t\tclassName=\"wp-block-cover__video-background\"\n\t\t\t\t\t\tautoPlay={ ! prefersReducedMotion }\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tposter={ poster }\n\t\t\t\t\t\tstyle={ mediaStyle }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ isEmbedVideoBackground && embedHtml && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={ mediaElement }\n\t\t\t\t\t\tclassName=\"wp-block-cover__video-background wp-block-cover__embed-background\"\n\t\t\t\t\t\tstyle={ mediaStyle }\n\t\t\t\t\t>\n\t\t\t\t\t\t<SandBox\n\t\t\t\t\t\t\tallowSameOrigin\n\t\t\t\t\t\t\thtml={ embedHtml }\n\t\t\t\t\t\t\ttitle=\"Background video\"\n\t\t\t\t\t\t\tstyles={ [\n\t\t\t\t\t\t\t\t'iframe{position:fixed;top:0;left:0;width:100%;height:100%;}',\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ isEmbedVideoBackground && ! embedHtml && isFetchingEmbed && (\n\t\t\t\t\t<Spinner />\n\t\t\t\t) }\n\n\t\t\t\t{ showOverlay && (\n\t\t\t\t\t<span\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'wp-block-cover__background',\n\t\t\t\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t[ overlayColor.class ]: overlayColor.class,\n\t\t\t\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t\t\t\t// For backwards compatibility. Former versions of the Cover Block applied\n\t\t\t\t\t\t\t\t// `.wp-block-cover__gradient-background` in the presence of\n\t\t\t\t\t\t\t\t// media, a gradient and a dim.\n\t\t\t\t\t\t\t\t'wp-block-cover__gradient-background':\n\t\t\t\t\t\t\t\t\turl && gradientValue && dimRatio !== 0,\n\t\t\t\t\t\t\t\t'has-background-gradient': gradientValue,\n\t\t\t\t\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tstyle={ { backgroundImage: gradientValue, ...bgStyle } }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\n\t\t\t\t{ ( isUploadingMedia || isSwappingMedia ) && <Spinner /> }\n\n\t\t\t\t<CoverPlaceholder\n\t\t\t\t\tdisableMediaButtons\n\t\t\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\t\t/>\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</TagName>\n\t\t\t{ hasNonContentControls && isSelected && (\n\t\t\t\t<ResizableCoverPopover { ...resizableCoverProps } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default compose( [\n\twithColors( { overlayColor: 'background-color' } ),\n] )( CoverEdit );\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -11,7 +11,7 @@ import {
11
11
  __experimentalUnitControl as UnitControl,
12
12
  __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue
13
13
  } from "@wordpress/components";
14
- import { useInstanceId } from "@wordpress/compose";
14
+ import { useInstanceId, useReducedMotion } from "@wordpress/compose";
15
15
  import {
16
16
  InspectorControls,
17
17
  useSettings,
@@ -24,8 +24,13 @@ import {
24
24
  import { __ } from "@wordpress/i18n";
25
25
  import { useSelect } from "@wordpress/data";
26
26
  import { store as coreStore } from "@wordpress/core-data";
27
+ import { getFilename } from "@wordpress/url";
27
28
  import { Link } from "@wordpress/ui";
28
- import { COVER_MIN_HEIGHT, mediaPosition } from "../shared.mjs";
29
+ import {
30
+ ALLOWED_MEDIA_TYPES,
31
+ COVER_MIN_HEIGHT,
32
+ mediaPosition
33
+ } from "../shared.mjs";
29
34
  import { unlock } from "../../lock-unlock.mjs";
30
35
  import { useToolsPanelDropdownMenuProps } from "../../utils/hooks.mjs";
31
36
  import {
@@ -36,13 +41,11 @@ import {
36
41
  } from "../../utils/style-state.mjs";
37
42
  import { DEFAULT_MEDIA_SIZE_SLUG } from "../constants.mjs";
38
43
  import PosterImage from "../../utils/poster-image.mjs";
44
+ import { MediaControl } from "../../utils/media-control.mjs";
39
45
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
40
- var {
41
- cleanEmptyObject,
42
- isDefaultBlockStyleState,
43
- ResolutionTool,
44
- HTMLElementControl
45
- } = unlock(blockEditorPrivateApis);
46
+ var { cleanEmptyObject, ResolutionTool, HTMLElementControl } = unlock(
47
+ blockEditorPrivateApis
48
+ );
46
49
  function CoverHeightInput({
47
50
  onChange,
48
51
  onUnitChange,
@@ -90,8 +93,13 @@ function CoverInspectorControls({
90
93
  setOverlayColor,
91
94
  coverRef,
92
95
  currentSettings,
96
+ onSelectMedia,
97
+ onUploadError,
98
+ toggleUseFeaturedImage,
93
99
  updateDimRatio,
94
- featuredImage
100
+ onClearMedia,
101
+ featuredImage,
102
+ isSelected
95
103
  }) {
96
104
  const {
97
105
  useFeaturedImage,
@@ -115,19 +123,21 @@ function CoverInspectorControls({
115
123
  } = currentSettings;
116
124
  const sizeSlug = attributes.sizeSlug || DEFAULT_MEDIA_SIZE_SLUG;
117
125
  const { gradientValue, setGradient } = __experimentalUseGradient();
118
- const { imageSizes, selectedStyleState } = useSelect(
126
+ const { imageSizes, selectedStyleState, hasSelectedStyleState } = useSelect(
119
127
  (select) => {
120
- const { getSettings, getSelectedBlockStyleState } = unlock(
121
- select(blockEditorStore)
122
- );
128
+ const {
129
+ getSettings,
130
+ getSelectedBlockStyleState,
131
+ hasSelectedBlockStyleState
132
+ } = select(blockEditorStore);
123
133
  return {
124
134
  imageSizes: getSettings()?.imageSizes,
125
- selectedStyleState: getSelectedBlockStyleState(clientId)
135
+ selectedStyleState: getSelectedBlockStyleState(clientId),
136
+ hasSelectedStyleState: hasSelectedBlockStyleState(clientId)
126
137
  };
127
138
  },
128
139
  [clientId]
129
140
  );
130
- const hasSelectedStyleState = !isDefaultBlockStyleState(selectedStyleState);
131
141
  const selectedStyleStateKey = getStyleStateKey(selectedStyleState);
132
142
  const stateMinHeight = getActiveDimensionValue({
133
143
  attributes,
@@ -182,6 +192,7 @@ function CoverInspectorControls({
182
192
  });
183
193
  };
184
194
  const showFocalPointPicker = isVideoBackground || isImageBackground;
195
+ const prefersReducedMotion = useReducedMotion();
185
196
  const imperativeFocalPointPreview = (value) => {
186
197
  const [styleOfRef, property] = mediaElement.current ? [mediaElement.current.style, "objectPosition"] : [coverRef.current.style, "backgroundPosition"];
187
198
  styleOfRef[property] = mediaPosition(value);
@@ -228,7 +239,40 @@ function CoverInspectorControls({
228
239
  });
229
240
  };
230
241
  const dropdownMenuProps = useToolsPanelDropdownMenuProps();
242
+ const mediaInspectorPanel = isSelected ? /* @__PURE__ */ jsx(InspectorControls, { group: "content", children: /* @__PURE__ */ jsx(
243
+ ToolsPanel,
244
+ {
245
+ label: __("Media"),
246
+ resetAll: onClearMedia,
247
+ dropdownMenuProps,
248
+ children: /* @__PURE__ */ jsx(
249
+ ToolsPanelItem,
250
+ {
251
+ label: __("Media"),
252
+ hasValue: () => !!url || !!useFeaturedImage,
253
+ onDeselect: onClearMedia,
254
+ isShownByDefault: true,
255
+ children: /* @__PURE__ */ jsx(
256
+ MediaControl,
257
+ {
258
+ mediaId: id,
259
+ mediaUrl: url,
260
+ filename: image?.media_details?.sizes?.full?.file || image?.slug || getFilename(url),
261
+ allowedTypes: ALLOWED_MEDIA_TYPES,
262
+ onSelect: onSelectMedia,
263
+ onError: onUploadError,
264
+ onReset: onClearMedia,
265
+ useFeaturedImage,
266
+ onToggleFeaturedImage: toggleUseFeaturedImage,
267
+ emptyLabel: __("Add media")
268
+ }
269
+ )
270
+ }
271
+ )
272
+ }
273
+ ) }) : null;
231
274
  return /* @__PURE__ */ jsxs(Fragment, { children: [
275
+ mediaInspectorPanel,
232
276
  (!!url || useFeaturedImage) && /* @__PURE__ */ jsx(InspectorControls, { children: /* @__PURE__ */ jsxs(
233
277
  ToolsPanel,
234
278
  {
@@ -300,13 +344,15 @@ function CoverInspectorControls({
300
344
  {
301
345
  label: __("Focal point"),
302
346
  url,
347
+ autoPlay: !prefersReducedMotion,
303
348
  value: focalPoint,
304
349
  onDragStart: imperativeFocalPointPreview,
305
350
  onDrag: imperativeFocalPointPreview,
306
351
  onChange: (newFocalPoint) => setAttributes({
307
352
  focalPoint: newFocalPoint
308
353
  })
309
- }
354
+ },
355
+ prefersReducedMotion
310
356
  )
311
357
  }
312
358
  ),