@wordpress/block-library 10.1.1-next.v.202607070741.0 → 10.3.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 (580) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/build/accordion/block.json +1 -0
  3. package/build/accordion-panel/block.json +1 -0
  4. package/build/button/edit.cjs +18 -8
  5. package/build/button/edit.cjs.map +2 -2
  6. package/build/code/edit.cjs +3 -1
  7. package/build/code/edit.cjs.map +2 -2
  8. package/build/cover/block.json +12 -0
  9. package/build/cover/edit/block-controls.cjs +14 -5
  10. package/build/cover/edit/block-controls.cjs.map +2 -2
  11. package/build/cover/edit/embed-video-url-input.cjs +5 -3
  12. package/build/cover/edit/embed-video-url-input.cjs.map +3 -3
  13. package/build/cover/edit/index.cjs +76 -32
  14. package/build/cover/edit/index.cjs.map +2 -2
  15. package/build/cover/embed-video-utils.cjs +17 -7
  16. package/build/cover/embed-video-utils.cjs.map +2 -2
  17. package/build/details/transforms.cjs +1 -3
  18. package/build/details/transforms.cjs.map +2 -2
  19. package/build/embed/edit.cjs +1 -1
  20. package/build/embed/edit.cjs.map +2 -2
  21. package/build/embed/embed-placeholder.cjs +1 -2
  22. package/build/embed/embed-placeholder.cjs.map +2 -2
  23. package/build/file/edit.cjs +4 -3
  24. package/build/file/edit.cjs.map +2 -2
  25. package/build/file/transforms.cjs +25 -60
  26. package/build/file/transforms.cjs.map +2 -2
  27. package/build/gallery/block.json +4 -2
  28. package/build/gallery/dynamic-gallery.cjs +104 -61
  29. package/build/gallery/dynamic-gallery.cjs.map +3 -3
  30. package/build/gallery/edit.cjs +1 -1
  31. package/build/gallery/edit.cjs.map +3 -3
  32. package/build/gallery/gap-styles.cjs +49 -13
  33. package/build/gallery/gap-styles.cjs.map +3 -3
  34. package/build/gallery/use-dynamic-gallery.cjs +15 -8
  35. package/build/gallery/use-dynamic-gallery.cjs.map +2 -2
  36. package/build/group/transforms.cjs +1 -1
  37. package/build/group/transforms.cjs.map +2 -2
  38. package/build/heading/edit.cjs +1 -1
  39. package/build/heading/edit.cjs.map +2 -2
  40. package/build/html/modal.cjs +63 -54
  41. package/build/html/modal.cjs.map +3 -3
  42. package/build/icon/block.json +5 -3
  43. package/build/icon/components/custom-inserter/icon-grid.cjs +25 -12
  44. package/build/icon/components/custom-inserter/icon-grid.cjs.map +2 -2
  45. package/build/icon/components/custom-inserter/index.cjs +100 -31
  46. package/build/icon/components/custom-inserter/index.cjs.map +3 -3
  47. package/build/icon/edit.cjs +11 -12
  48. package/build/icon/edit.cjs.map +2 -2
  49. package/build/image/block.json +1 -1
  50. package/build/image/edit.cjs +1 -35
  51. package/build/image/edit.cjs.map +2 -2
  52. package/build/image/image.cjs +23 -18
  53. package/build/image/image.cjs.map +3 -3
  54. package/build/image/transforms.cjs +78 -0
  55. package/build/image/transforms.cjs.map +3 -3
  56. package/build/image/use-open-image-media-editor-modal.cjs +6 -2
  57. package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
  58. package/build/index.cjs +18 -8
  59. package/build/index.cjs.map +2 -2
  60. package/build/latest-posts/edit.cjs +5 -8
  61. package/build/latest-posts/edit.cjs.map +2 -2
  62. package/build/list-item/edit.cjs +1 -1
  63. package/build/list-item/edit.cjs.map +2 -2
  64. package/build/list-item/hooks/use-enter.cjs +14 -17
  65. package/build/list-item/hooks/use-enter.cjs.map +3 -3
  66. package/build/list-item/hooks/use-indent-list-item.cjs +10 -2
  67. package/build/list-item/hooks/use-indent-list-item.cjs.map +2 -2
  68. package/build/list-item/hooks/use-space.cjs +3 -2
  69. package/build/list-item/hooks/use-space.cjs.map +3 -3
  70. package/build/math/edit.cjs +39 -56
  71. package/build/math/edit.cjs.map +3 -3
  72. package/build/media-text/edit.cjs +2 -1
  73. package/build/media-text/edit.cjs.map +2 -2
  74. package/build/more/edit.cjs +2 -2
  75. package/build/more/edit.cjs.map +2 -2
  76. package/build/navigation/edit/index.cjs +30 -16
  77. package/build/navigation/edit/index.cjs.map +3 -3
  78. package/build/navigation/edit/use-layout-custom-properties.cjs +72 -0
  79. package/build/navigation/edit/use-layout-custom-properties.cjs.map +7 -0
  80. package/build/navigation/view.cjs +9 -6
  81. package/build/navigation/view.cjs.map +2 -2
  82. package/build/navigation-link/edit.cjs +3 -3
  83. package/build/navigation-link/edit.cjs.map +2 -2
  84. package/build/navigation-link/link-ui/index.cjs +2 -2
  85. package/build/navigation-link/link-ui/index.cjs.map +2 -2
  86. package/build/paragraph/edit.cjs +5 -2
  87. package/build/paragraph/edit.cjs.map +3 -3
  88. package/build/paragraph/index.cjs +4 -1
  89. package/build/paragraph/index.cjs.map +2 -2
  90. package/build/paragraph/use-enter.cjs +3 -7
  91. package/build/paragraph/use-enter.cjs.map +3 -3
  92. package/build/playlist/block.json +29 -10
  93. package/build/playlist/context.cjs +2 -1
  94. package/build/playlist/context.cjs.map +2 -2
  95. package/build/playlist/edit.cjs +328 -39
  96. package/build/playlist/edit.cjs.map +3 -3
  97. package/build/playlist/index.cjs +1 -1
  98. package/build/playlist/index.cjs.map +2 -2
  99. package/build/playlist/utils.cjs +37 -8
  100. package/build/playlist/utils.cjs.map +2 -2
  101. package/build/playlist/view.cjs +83 -13
  102. package/build/playlist/view.cjs.map +2 -2
  103. package/build/playlist-track/block.json +4 -2
  104. package/build/playlist-track/edit.cjs +115 -70
  105. package/build/playlist-track/edit.cjs.map +2 -2
  106. package/build/post-content/block.json +1 -0
  107. package/build/post-content/edit.cjs +36 -15
  108. package/build/post-content/edit.cjs.map +2 -2
  109. package/build/post-featured-image/edit.cjs +3 -2
  110. package/build/post-featured-image/edit.cjs.map +2 -2
  111. package/build/post-template/block.json +2 -1
  112. package/build/post-template/edit.cjs +10 -1
  113. package/build/post-template/edit.cjs.map +2 -2
  114. package/build/post-terms/edit.cjs +2 -2
  115. package/build/post-terms/edit.cjs.map +2 -2
  116. package/build/post-title/edit.cjs +2 -2
  117. package/build/post-title/edit.cjs.map +2 -2
  118. package/build/preformatted/edit.cjs +3 -1
  119. package/build/preformatted/edit.cjs.map +2 -2
  120. package/build/pullquote/block.json +3 -1
  121. package/build/pullquote/edit.cjs +5 -3
  122. package/build/pullquote/edit.cjs.map +2 -2
  123. package/build/query/block.json +3 -2
  124. package/build/query/edit/inspector-controls/index.cjs +42 -5
  125. package/build/query/edit/inspector-controls/index.cjs.map +2 -2
  126. package/build/query/edit/inspector-controls/offset-controls.cjs +1 -2
  127. package/build/query/edit/inspector-controls/offset-controls.cjs.map +2 -2
  128. package/build/query/edit/inspector-controls/pages-control.cjs +0 -1
  129. package/build/query/edit/inspector-controls/pages-control.cjs.map +2 -2
  130. package/build/query/edit/query-content.cjs +10 -3
  131. package/build/query/edit/query-content.cjs.map +2 -2
  132. package/build/query/index.cjs +2 -1
  133. package/build/query/index.cjs.map +2 -2
  134. package/build/quote/block.json +3 -1
  135. package/build/quote/transforms.cjs +1 -3
  136. package/build/quote/transforms.cjs.map +2 -2
  137. package/build/read-more/edit.cjs +3 -1
  138. package/build/read-more/edit.cjs.map +2 -2
  139. package/build/rss/edit.cjs +0 -1
  140. package/build/rss/edit.cjs.map +2 -2
  141. package/build/site-tagline/edit.cjs +3 -1
  142. package/build/site-tagline/edit.cjs.map +2 -2
  143. package/build/site-title/edit.cjs +3 -1
  144. package/build/site-title/edit.cjs.map +2 -2
  145. package/build/social-links/edit.cjs +11 -4
  146. package/build/social-links/edit.cjs.map +2 -2
  147. package/build/tab-list/block.json +4 -3
  148. package/build/tab-list/edit.cjs +67 -11
  149. package/build/tab-list/edit.cjs.map +3 -3
  150. package/build/tab-list/tab-movers.cjs +87 -0
  151. package/build/tab-list/tab-movers.cjs.map +7 -0
  152. package/build/tab-panel/block.json +1 -6
  153. package/build/tab-panel/edit.cjs +16 -24
  154. package/build/tab-panel/edit.cjs.map +2 -2
  155. package/build/tab-panels/block.json +0 -1
  156. package/build/table/edit.cjs +1 -1
  157. package/build/table/edit.cjs.map +2 -2
  158. package/build/tabs/block.json +0 -5
  159. package/build/tabs/edit.cjs +4 -39
  160. package/build/tabs/edit.cjs.map +3 -3
  161. package/build/tabs/use-tab-actions.cjs +23 -1
  162. package/build/tabs/use-tab-actions.cjs.map +2 -2
  163. package/build/tabs/use-tab-list-items-sync.cjs +19 -1
  164. package/build/tabs/use-tab-list-items-sync.cjs.map +2 -2
  165. package/build/term-name/block.json +1 -3
  166. package/build/term-name/deprecated.cjs +105 -0
  167. package/build/term-name/deprecated.cjs.map +7 -0
  168. package/build/term-name/edit.cjs +11 -37
  169. package/build/term-name/edit.cjs.map +3 -3
  170. package/build/term-name/index.cjs +3 -1
  171. package/build/term-name/index.cjs.map +3 -3
  172. package/build/utils/caption.cjs +2 -2
  173. package/build/utils/caption.cjs.map +2 -2
  174. package/build/utils/waveform-player.cjs +138 -22
  175. package/build/utils/waveform-player.cjs.map +2 -2
  176. package/build/utils/waveform-utils.cjs +315 -17
  177. package/build/utils/waveform-utils.cjs.map +2 -2
  178. package/build/verse/edit.cjs +3 -1
  179. package/build/verse/edit.cjs.map +2 -2
  180. package/build/video/edit.cjs +2 -11
  181. package/build/video/edit.cjs.map +3 -3
  182. package/build/video/tracks-editor.cjs +0 -1
  183. package/build/video/tracks-editor.cjs.map +2 -2
  184. package/build-module/accordion/block.json +1 -0
  185. package/build-module/accordion-panel/block.json +1 -0
  186. package/build-module/button/edit.mjs +19 -14
  187. package/build-module/button/edit.mjs.map +2 -2
  188. package/build-module/code/edit.mjs +3 -1
  189. package/build-module/code/edit.mjs.map +2 -2
  190. package/build-module/cover/block.json +12 -0
  191. package/build-module/cover/edit/block-controls.mjs +14 -5
  192. package/build-module/cover/edit/block-controls.mjs.map +2 -2
  193. package/build-module/cover/edit/embed-video-url-input.mjs +5 -4
  194. package/build-module/cover/edit/embed-video-url-input.mjs.map +2 -2
  195. package/build-module/cover/edit/index.mjs +79 -35
  196. package/build-module/cover/edit/index.mjs.map +2 -2
  197. package/build-module/cover/embed-video-utils.mjs +16 -7
  198. package/build-module/cover/embed-video-utils.mjs.map +2 -2
  199. package/build-module/details/transforms.mjs +2 -7
  200. package/build-module/details/transforms.mjs.map +2 -2
  201. package/build-module/embed/edit.mjs +1 -1
  202. package/build-module/embed/edit.mjs.map +2 -2
  203. package/build-module/embed/embed-placeholder.mjs +1 -2
  204. package/build-module/embed/embed-placeholder.mjs.map +2 -2
  205. package/build-module/file/edit.mjs +4 -3
  206. package/build-module/file/edit.mjs.map +2 -2
  207. package/build-module/file/transforms.mjs +25 -60
  208. package/build-module/file/transforms.mjs.map +2 -2
  209. package/build-module/gallery/block.json +4 -2
  210. package/build-module/gallery/dynamic-gallery.mjs +104 -61
  211. package/build-module/gallery/dynamic-gallery.mjs.map +2 -2
  212. package/build-module/gallery/edit.mjs +3 -3
  213. package/build-module/gallery/edit.mjs.map +2 -2
  214. package/build-module/gallery/gap-styles.mjs +53 -14
  215. package/build-module/gallery/gap-styles.mjs.map +2 -2
  216. package/build-module/gallery/use-dynamic-gallery.mjs +16 -9
  217. package/build-module/gallery/use-dynamic-gallery.mjs.map +2 -2
  218. package/build-module/group/transforms.mjs +2 -5
  219. package/build-module/group/transforms.mjs.map +2 -2
  220. package/build-module/heading/edit.mjs +1 -1
  221. package/build-module/heading/edit.mjs.map +2 -2
  222. package/build-module/html/modal.mjs +68 -55
  223. package/build-module/html/modal.mjs.map +2 -2
  224. package/build-module/icon/block.json +5 -3
  225. package/build-module/icon/components/custom-inserter/icon-grid.mjs +25 -12
  226. package/build-module/icon/components/custom-inserter/icon-grid.mjs.map +2 -2
  227. package/build-module/icon/components/custom-inserter/index.mjs +102 -33
  228. package/build-module/icon/components/custom-inserter/index.mjs.map +2 -2
  229. package/build-module/icon/edit.mjs +11 -12
  230. package/build-module/icon/edit.mjs.map +2 -2
  231. package/build-module/image/block.json +1 -1
  232. package/build-module/image/edit.mjs +1 -35
  233. package/build-module/image/edit.mjs.map +2 -2
  234. package/build-module/image/image.mjs +23 -18
  235. package/build-module/image/image.mjs.map +2 -2
  236. package/build-module/image/transforms.mjs +78 -0
  237. package/build-module/image/transforms.mjs.map +2 -2
  238. package/build-module/image/use-open-image-media-editor-modal.mjs +6 -2
  239. package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
  240. package/build-module/index.mjs +18 -8
  241. package/build-module/index.mjs.map +2 -2
  242. package/build-module/latest-posts/edit.mjs +5 -8
  243. package/build-module/latest-posts/edit.mjs.map +2 -2
  244. package/build-module/list-item/edit.mjs +1 -1
  245. package/build-module/list-item/edit.mjs.map +2 -2
  246. package/build-module/list-item/hooks/use-enter.mjs +15 -21
  247. package/build-module/list-item/hooks/use-enter.mjs.map +2 -2
  248. package/build-module/list-item/hooks/use-indent-list-item.mjs +10 -2
  249. package/build-module/list-item/hooks/use-indent-list-item.mjs.map +2 -2
  250. package/build-module/list-item/hooks/use-space.mjs +4 -6
  251. package/build-module/list-item/hooks/use-space.mjs.map +2 -2
  252. package/build-module/math/edit.mjs +41 -60
  253. package/build-module/math/edit.mjs.map +2 -2
  254. package/build-module/media-text/edit.mjs +2 -1
  255. package/build-module/media-text/edit.mjs.map +2 -2
  256. package/build-module/more/edit.mjs +2 -2
  257. package/build-module/more/edit.mjs.map +2 -2
  258. package/build-module/navigation/edit/index.mjs +30 -16
  259. package/build-module/navigation/edit/index.mjs.map +2 -2
  260. package/build-module/navigation/edit/use-layout-custom-properties.mjs +51 -0
  261. package/build-module/navigation/edit/use-layout-custom-properties.mjs.map +7 -0
  262. package/build-module/navigation/view.mjs +9 -6
  263. package/build-module/navigation/view.mjs.map +2 -2
  264. package/build-module/navigation-link/edit.mjs +3 -3
  265. package/build-module/navigation-link/edit.mjs.map +2 -2
  266. package/build-module/navigation-link/link-ui/index.mjs +2 -2
  267. package/build-module/navigation-link/link-ui/index.mjs.map +2 -2
  268. package/build-module/paragraph/edit.mjs +6 -2
  269. package/build-module/paragraph/edit.mjs.map +2 -2
  270. package/build-module/paragraph/index.mjs +4 -1
  271. package/build-module/paragraph/index.mjs.map +2 -2
  272. package/build-module/paragraph/use-enter.mjs +4 -11
  273. package/build-module/paragraph/use-enter.mjs.map +2 -2
  274. package/build-module/playlist/block.json +29 -10
  275. package/build-module/playlist/context.mjs +2 -1
  276. package/build-module/playlist/context.mjs.map +2 -2
  277. package/build-module/playlist/edit.mjs +331 -41
  278. package/build-module/playlist/edit.mjs.map +2 -2
  279. package/build-module/playlist/index.mjs +1 -1
  280. package/build-module/playlist/index.mjs.map +2 -2
  281. package/build-module/playlist/utils.mjs +35 -7
  282. package/build-module/playlist/utils.mjs.map +2 -2
  283. package/build-module/playlist/view.mjs +89 -14
  284. package/build-module/playlist/view.mjs.map +2 -2
  285. package/build-module/playlist-track/block.json +4 -2
  286. package/build-module/playlist-track/edit.mjs +117 -71
  287. package/build-module/playlist-track/edit.mjs.map +2 -2
  288. package/build-module/post-content/block.json +1 -0
  289. package/build-module/post-content/edit.mjs +37 -15
  290. package/build-module/post-content/edit.mjs.map +2 -2
  291. package/build-module/post-featured-image/edit.mjs +3 -2
  292. package/build-module/post-featured-image/edit.mjs.map +2 -2
  293. package/build-module/post-template/block.json +2 -1
  294. package/build-module/post-template/edit.mjs +10 -1
  295. package/build-module/post-template/edit.mjs.map +2 -2
  296. package/build-module/post-terms/edit.mjs +2 -2
  297. package/build-module/post-terms/edit.mjs.map +2 -2
  298. package/build-module/post-title/edit.mjs +2 -2
  299. package/build-module/post-title/edit.mjs.map +2 -2
  300. package/build-module/preformatted/edit.mjs +3 -1
  301. package/build-module/preformatted/edit.mjs.map +2 -2
  302. package/build-module/pullquote/block.json +3 -1
  303. package/build-module/pullquote/edit.mjs +5 -3
  304. package/build-module/pullquote/edit.mjs.map +2 -2
  305. package/build-module/query/block.json +3 -2
  306. package/build-module/query/edit/inspector-controls/index.mjs +44 -6
  307. package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
  308. package/build-module/query/edit/inspector-controls/offset-controls.mjs +2 -3
  309. package/build-module/query/edit/inspector-controls/offset-controls.mjs.map +2 -2
  310. package/build-module/query/edit/inspector-controls/pages-control.mjs +0 -1
  311. package/build-module/query/edit/inspector-controls/pages-control.mjs.map +2 -2
  312. package/build-module/query/edit/query-content.mjs +10 -3
  313. package/build-module/query/edit/query-content.mjs.map +2 -2
  314. package/build-module/query/index.mjs +2 -1
  315. package/build-module/query/index.mjs.map +2 -2
  316. package/build-module/quote/block.json +3 -1
  317. package/build-module/quote/transforms.mjs +2 -4
  318. package/build-module/quote/transforms.mjs.map +2 -2
  319. package/build-module/read-more/edit.mjs +3 -1
  320. package/build-module/read-more/edit.mjs.map +2 -2
  321. package/build-module/rss/edit.mjs +0 -1
  322. package/build-module/rss/edit.mjs.map +2 -2
  323. package/build-module/site-tagline/edit.mjs +3 -1
  324. package/build-module/site-tagline/edit.mjs.map +2 -2
  325. package/build-module/site-title/edit.mjs +3 -1
  326. package/build-module/site-title/edit.mjs.map +2 -2
  327. package/build-module/social-links/edit.mjs +11 -4
  328. package/build-module/social-links/edit.mjs.map +2 -2
  329. package/build-module/tab-list/block.json +4 -3
  330. package/build-module/tab-list/edit.mjs +74 -13
  331. package/build-module/tab-list/edit.mjs.map +2 -2
  332. package/build-module/tab-list/tab-movers.mjs +59 -0
  333. package/build-module/tab-list/tab-movers.mjs.map +7 -0
  334. package/build-module/tab-panel/block.json +1 -6
  335. package/build-module/tab-panel/edit.mjs +17 -25
  336. package/build-module/tab-panel/edit.mjs.map +2 -2
  337. package/build-module/tab-panels/block.json +0 -1
  338. package/build-module/table/edit.mjs +1 -1
  339. package/build-module/table/edit.mjs.map +2 -2
  340. package/build-module/tabs/block.json +0 -5
  341. package/build-module/tabs/edit.mjs +5 -45
  342. package/build-module/tabs/edit.mjs.map +2 -2
  343. package/build-module/tabs/use-tab-actions.mjs +23 -1
  344. package/build-module/tabs/use-tab-actions.mjs.map +2 -2
  345. package/build-module/tabs/use-tab-list-items-sync.mjs +19 -1
  346. package/build-module/tabs/use-tab-list-items-sync.mjs.map +2 -2
  347. package/build-module/term-name/block.json +1 -3
  348. package/build-module/term-name/deprecated.mjs +74 -0
  349. package/build-module/term-name/deprecated.mjs.map +7 -0
  350. package/build-module/term-name/edit.mjs +11 -28
  351. package/build-module/term-name/edit.mjs.map +2 -2
  352. package/build-module/term-name/index.mjs +3 -1
  353. package/build-module/term-name/index.mjs.map +2 -2
  354. package/build-module/utils/caption.mjs +2 -2
  355. package/build-module/utils/caption.mjs.map +2 -2
  356. package/build-module/utils/waveform-player.mjs +144 -23
  357. package/build-module/utils/waveform-player.mjs.map +2 -2
  358. package/build-module/utils/waveform-utils.mjs +310 -16
  359. package/build-module/utils/waveform-utils.mjs.map +2 -2
  360. package/build-module/verse/edit.mjs +3 -1
  361. package/build-module/verse/edit.mjs.map +2 -2
  362. package/build-module/video/edit.mjs +2 -11
  363. package/build-module/video/edit.mjs.map +2 -2
  364. package/build-module/video/tracks-editor.mjs +0 -1
  365. package/build-module/video/tracks-editor.mjs.map +2 -2
  366. package/build-style/cover/editor-rtl.css +3 -0
  367. package/build-style/cover/editor.css +3 -0
  368. package/build-style/editor-rtl.css +61 -59
  369. package/build-style/editor.css +61 -59
  370. package/build-style/icon/editor-rtl.css +80 -10
  371. package/build-style/icon/editor.css +80 -10
  372. package/build-style/image/editor-rtl.css +3 -32
  373. package/build-style/image/editor.css +3 -32
  374. package/build-style/more/editor-rtl.css +2 -2
  375. package/build-style/more/editor.css +2 -2
  376. package/build-style/navigation/editor-rtl.css +3 -4
  377. package/build-style/navigation/editor.css +3 -4
  378. package/build-style/navigation-link/editor-rtl.css +1 -1
  379. package/build-style/navigation-link/editor.css +1 -1
  380. package/build-style/nextpage/editor-rtl.css +2 -2
  381. package/build-style/nextpage/editor.css +2 -2
  382. package/build-style/playlist/editor-rtl.css +4 -3
  383. package/build-style/playlist/editor.css +4 -3
  384. package/build-style/playlist/style-rtl.css +81 -5
  385. package/build-style/playlist/style.css +81 -5
  386. package/build-style/playlist-track/style-rtl.css +10 -0
  387. package/build-style/playlist-track/style.css +10 -0
  388. package/build-style/pullquote/editor-rtl.css +4 -0
  389. package/build-style/pullquote/editor.css +4 -0
  390. package/build-style/style-rtl.css +91 -5
  391. package/build-style/style.css +91 -5
  392. package/build-style/tab-list/editor-rtl.css +101 -0
  393. package/build-style/tab-list/editor.css +101 -0
  394. package/build-style/video/editor-rtl.css +1 -1
  395. package/build-style/video/editor.css +1 -1
  396. package/build-types/table-of-contents/list.d.ts +1 -1
  397. package/build-types/table-of-contents/list.d.ts.map +1 -1
  398. package/package.json +47 -45
  399. package/src/accordion/README.md +1 -0
  400. package/src/accordion/block.json +1 -0
  401. package/src/accordion-panel/block.json +1 -0
  402. package/src/breadcrumbs/index.php +3 -1
  403. package/src/button/edit.js +21 -15
  404. package/src/button/index.php +1 -1
  405. package/src/code/edit.js +7 -2
  406. package/src/cover/README.md +60 -0
  407. package/src/cover/block.json +12 -0
  408. package/src/cover/edit/block-controls.js +26 -11
  409. package/src/cover/edit/embed-video-url-input.js +5 -4
  410. package/src/cover/edit/index.js +109 -46
  411. package/src/cover/editor.scss +6 -0
  412. package/src/cover/embed-video-utils.js +38 -13
  413. package/src/cover/index.php +9 -2
  414. package/src/details/transforms.js +2 -7
  415. package/src/editor.scss +1 -0
  416. package/src/embed/edit.js +3 -1
  417. package/src/embed/embed-placeholder.js +9 -8
  418. package/src/file/edit.js +8 -8
  419. package/src/file/transforms.js +28 -60
  420. package/src/form/index.php +6 -4
  421. package/src/gallery/README.md +1 -1
  422. package/src/gallery/block.json +4 -2
  423. package/src/gallery/dynamic-gallery.js +133 -74
  424. package/src/gallery/edit.js +3 -3
  425. package/src/gallery/gap-styles.js +79 -20
  426. package/src/gallery/index.php +103 -43
  427. package/src/gallery/use-dynamic-gallery.js +27 -12
  428. package/src/group/transforms.js +2 -5
  429. package/src/heading/edit.js +1 -1
  430. package/src/html/modal.js +13 -2
  431. package/src/icon/README.md +1 -3
  432. package/src/icon/block.json +5 -3
  433. package/src/icon/components/custom-inserter/icon-grid.js +40 -11
  434. package/src/icon/components/custom-inserter/index.js +98 -25
  435. package/src/icon/edit.js +11 -17
  436. package/src/icon/editor.scss +33 -11
  437. package/src/image/README.md +1 -1
  438. package/src/image/block.json +1 -1
  439. package/src/image/edit.js +1 -57
  440. package/src/image/editor.scss +6 -44
  441. package/src/image/image.js +56 -27
  442. package/src/image/test/use-open-image-media-editor-modal.js +37 -1
  443. package/src/image/transforms.js +128 -0
  444. package/src/image/use-open-image-media-editor-modal.js +8 -1
  445. package/src/index.js +19 -7
  446. package/src/latest-posts/edit.js +5 -8
  447. package/src/latest-posts/index.php +49 -18
  448. package/src/list-item/edit.js +1 -1
  449. package/src/list-item/hooks/use-enter.js +15 -22
  450. package/src/list-item/hooks/use-indent-list-item.js +10 -1
  451. package/src/list-item/hooks/use-space.js +4 -6
  452. package/src/math/edit.js +42 -59
  453. package/src/media-text/edit.js +1 -0
  454. package/src/media-text/editor.scss +1 -0
  455. package/src/media-text/index.php +11 -2
  456. package/src/more/edit.js +7 -4
  457. package/src/more/editor.scss +1 -1
  458. package/src/navigation/edit/index.js +52 -36
  459. package/src/navigation/edit/test/layout-custom-properties.js +138 -0
  460. package/src/navigation/edit/use-layout-custom-properties.js +84 -0
  461. package/src/navigation/editor.scss +1 -2
  462. package/src/navigation/index.php +123 -12
  463. package/src/navigation/test/view.js +51 -0
  464. package/src/navigation/view.js +15 -14
  465. package/src/navigation-link/edit.js +11 -7
  466. package/src/navigation-link/editor.scss +1 -1
  467. package/src/navigation-link/index.php +70 -3
  468. package/src/navigation-link/link-ui/index.js +2 -1
  469. package/src/navigation-link/test/__snapshots__/hooks.js.snap +1 -1
  470. package/src/navigation-submenu/index.php +6 -3
  471. package/src/nextpage/editor.scss +1 -1
  472. package/src/page-list/index.php +4 -3
  473. package/src/paragraph/edit.js +9 -2
  474. package/src/paragraph/index.js +4 -1
  475. package/src/paragraph/use-enter.js +4 -11
  476. package/src/pattern/index.php +5 -5
  477. package/src/playlist/README.md +17 -18
  478. package/src/playlist/block.json +29 -10
  479. package/src/playlist/context.js +1 -0
  480. package/src/playlist/edit.js +395 -59
  481. package/src/playlist/editor.scss +4 -5
  482. package/src/playlist/index.js +1 -1
  483. package/src/playlist/index.php +71 -22
  484. package/src/playlist/style.scss +54 -1
  485. package/src/playlist/test/edit-component.js +139 -0
  486. package/src/playlist/test/edit.js +43 -2
  487. package/src/playlist/utils.js +49 -10
  488. package/src/playlist/view.js +97 -16
  489. package/src/playlist-track/README.md +3 -3
  490. package/src/playlist-track/block.json +4 -2
  491. package/src/playlist-track/edit.js +116 -75
  492. package/src/playlist-track/index.php +26 -11
  493. package/src/playlist-track/style.scss +10 -0
  494. package/src/playlist-track/test/edit.js +253 -0
  495. package/src/post-content/README.md +1 -0
  496. package/src/post-content/block.json +1 -0
  497. package/src/post-content/edit.js +45 -16
  498. package/src/post-excerpt/index.php +4 -1
  499. package/src/post-featured-image/edit.js +3 -2
  500. package/src/post-featured-image/index.php +4 -1
  501. package/src/post-template/README.md +1 -0
  502. package/src/post-template/block.json +2 -1
  503. package/src/post-template/edit.js +9 -0
  504. package/src/post-terms/edit.js +7 -4
  505. package/src/post-title/edit.js +5 -3
  506. package/src/preformatted/edit.js +7 -2
  507. package/src/pullquote/README.md +1 -0
  508. package/src/pullquote/block.json +3 -1
  509. package/src/pullquote/edit.js +9 -4
  510. package/src/pullquote/editor.scss +6 -0
  511. package/src/query/README.md +2 -1
  512. package/src/query/block.json +3 -2
  513. package/src/query/edit/inspector-controls/index.js +47 -4
  514. package/src/query/edit/inspector-controls/offset-controls.js +2 -3
  515. package/src/query/edit/inspector-controls/pages-control.js +0 -1
  516. package/src/query/edit/query-content.js +19 -3
  517. package/src/query/index.js +1 -0
  518. package/src/quote/README.md +1 -0
  519. package/src/quote/block.json +3 -1
  520. package/src/quote/transforms.js +2 -4
  521. package/src/read-more/edit.js +7 -2
  522. package/src/rss/edit.js +0 -1
  523. package/src/rss/index.php +10 -4
  524. package/src/site-tagline/edit.js +7 -2
  525. package/src/site-title/edit.js +7 -2
  526. package/src/social-link/index.php +19 -9
  527. package/src/social-links/edit.js +21 -12
  528. package/src/tab-list/README.md +4 -5
  529. package/src/tab-list/block.json +4 -3
  530. package/src/tab-list/edit.js +92 -28
  531. package/src/tab-list/editor.scss +9 -0
  532. package/src/tab-list/index.php +9 -4
  533. package/src/tab-list/tab-movers.js +72 -0
  534. package/src/tab-panel/README.md +4 -6
  535. package/src/tab-panel/block.json +1 -6
  536. package/src/tab-panel/edit.js +20 -33
  537. package/src/tab-panels/README.md +5 -3
  538. package/src/tab-panels/block.json +0 -1
  539. package/src/table/edit.js +1 -1
  540. package/src/table-of-contents/index.php +386 -1
  541. package/src/tabs/README.md +18 -9
  542. package/src/tabs/block.json +0 -5
  543. package/src/tabs/edit.js +7 -64
  544. package/src/tabs/use-tab-actions.js +32 -3
  545. package/src/tabs/use-tab-list-items-sync.js +24 -4
  546. package/src/tag-cloud/index.php +3 -2
  547. package/src/template-part/index.php +3 -17
  548. package/src/term-name/README.md +1 -1
  549. package/src/term-name/block.json +1 -3
  550. package/src/term-name/deprecated.js +74 -0
  551. package/src/term-name/edit.js +2 -18
  552. package/src/term-name/index.js +2 -0
  553. package/src/utils/caption.js +7 -4
  554. package/src/utils/media-control.scss +1 -5
  555. package/src/utils/test/waveform-player.js +297 -34
  556. package/src/utils/test/waveform-utils.js +473 -5
  557. package/src/utils/waveform-player.js +189 -59
  558. package/src/utils/waveform-utils.js +443 -40
  559. package/src/verse/edit.js +7 -2
  560. package/src/video/edit.js +0 -8
  561. package/src/video/editor.scss +1 -1
  562. package/src/video/index.php +2 -2
  563. package/src/video/tracks-editor.js +0 -1
  564. package/build/image/animated-gif-convert-control.cjs +0 -105
  565. package/build/image/animated-gif-convert-control.cjs.map +0 -7
  566. package/build/utils/gif-conversion-attributes.cjs +0 -40
  567. package/build/utils/gif-conversion-attributes.cjs.map +0 -7
  568. package/build/video/gif-restore-control.cjs +0 -73
  569. package/build/video/gif-restore-control.cjs.map +0 -7
  570. package/build-module/image/animated-gif-convert-control.mjs +0 -87
  571. package/build-module/image/animated-gif-convert-control.mjs.map +0 -7
  572. package/build-module/utils/gif-conversion-attributes.mjs +0 -15
  573. package/build-module/utils/gif-conversion-attributes.mjs.map +0 -7
  574. package/build-module/video/gif-restore-control.mjs +0 -55
  575. package/build-module/video/gif-restore-control.mjs.map +0 -7
  576. package/src/image/animated-gif-convert-control.js +0 -135
  577. package/src/image/test/animated-gif-convert-control.js +0 -276
  578. package/src/utils/gif-conversion-attributes.js +0 -30
  579. package/src/utils/test/gif-conversion-attributes.js +0 -60
  580. package/src/video/gif-restore-control.js +0 -92
@@ -27,16 +27,18 @@ var import_blob = require("@wordpress/blob");
27
27
  var import_element = require("@wordpress/element");
28
28
  var import_block_editor = require("@wordpress/block-editor");
29
29
  var import_components = require("@wordpress/components");
30
+ var import_ui = require("@wordpress/ui");
30
31
  var import_data = require("@wordpress/data");
31
32
  var import_notices = require("@wordpress/notices");
32
33
  var import_i18n = require("@wordpress/i18n");
33
34
  var import_icons = require("@wordpress/icons");
34
35
  var import_dom = require("@wordpress/dom");
35
36
  var import_context = require("../playlist/context.cjs");
37
+ var import_utils = require("../playlist/utils.cjs");
36
38
  var import_hooks = require("../utils/hooks.cjs");
37
39
  var import_jsx_runtime = require("react/jsx-runtime");
38
40
  var ALLOWED_MEDIA_TYPES = ["audio"];
39
- var ALBUM_COVER_ALLOWED_MEDIA_TYPES = ["image"];
41
+ var TRACK_IMAGE_ALLOWED_MEDIA_TYPES = ["image"];
40
42
  var PlaylistTrackEdit = ({
41
43
  attributes,
42
44
  setAttributes,
@@ -44,40 +46,45 @@ var PlaylistTrackEdit = ({
44
46
  clientId,
45
47
  isSelected
46
48
  }) => {
47
- const { id, src, album, artist, image, length, title } = attributes;
49
+ const { id, src, album, artist, image, imageAlt, length, title } = attributes;
48
50
  const [temporaryURL, setTemporaryURL] = (0, import_element.useState)(attributes.blob);
49
51
  const showArtists = context?.showArtists;
52
+ const showImages = context?.showImages ?? true;
50
53
  const imageButton = (0, import_element.useRef)();
51
54
  const blockProps = (0, import_block_editor.useBlockProps)();
52
- const { currentTrackClientId, setCurrentTrackClientId } = (0, import_element.useContext)(import_context.PlaylistContext);
55
+ const { currentTrackClientId, setCurrentTrackClientId, addTracks } = (0, import_element.useContext)(import_context.PlaylistContext);
53
56
  const { createErrorNotice } = (0, import_data.useDispatch)(import_notices.store);
54
57
  function onUploadError(message) {
55
58
  createErrorNotice(message, { type: "snackbar" });
56
59
  }
60
+ const hasTrackSource = !!src || !!temporaryURL;
57
61
  (0, import_element.useEffect)(() => {
58
- if (isSelected && currentTrackClientId !== clientId) {
62
+ if (isSelected && hasTrackSource && currentTrackClientId !== clientId) {
59
63
  setCurrentTrackClientId(clientId);
60
64
  }
61
65
  }, [
62
66
  isSelected,
67
+ hasTrackSource,
63
68
  clientId,
64
69
  currentTrackClientId,
65
70
  setCurrentTrackClientId
66
71
  ]);
67
72
  (0, import_hooks.useUploadMediaFromBlobURL)({
68
- src: temporaryURL,
73
+ url: temporaryURL,
69
74
  allowedTypes: ALLOWED_MEDIA_TYPES,
70
75
  onChange: onSelectTrack,
71
76
  onError: onUploadError
72
77
  });
73
78
  function onSelectTrack(media) {
74
- if (!media || !media.url) {
79
+ const mediaUrl = media?.url ?? media?.source_url;
80
+ if (!media || !mediaUrl) {
75
81
  setAttributes({
76
82
  blob: void 0,
77
83
  id: void 0,
78
84
  artist: void 0,
79
85
  album: void 0,
80
86
  image: void 0,
87
+ imageAlt: void 0,
81
88
  length: void 0,
82
89
  title: void 0,
83
90
  url: void 0
@@ -85,31 +92,24 @@ var PlaylistTrackEdit = ({
85
92
  setTemporaryURL();
86
93
  return;
87
94
  }
88
- if ((0, import_blob.isBlobURL)(media.url)) {
89
- setTemporaryURL(media.url);
95
+ if ((0, import_blob.isBlobURL)(mediaUrl)) {
96
+ setTemporaryURL(mediaUrl);
90
97
  return;
91
98
  }
92
99
  setAttributes({
93
100
  blob: void 0,
94
- id: media.id,
95
- src: media.url,
96
- artist: media.artist || media?.meta?.artist || media?.media_details?.artist || (0, import_i18n.__)("Unknown artist"),
97
- album: media.album || media?.meta?.album || media?.media_details?.album || (0, import_i18n.__)("Unknown album"),
98
- // Prevent using the default media attachment icon as the track image.
99
- image: media?.image?.src && media?.image?.src.endsWith("/images/media/audio.svg") ? "" : media?.image?.src,
100
- length: media?.fileLength || media?.media_details?.length_formatted,
101
- title: media.title
101
+ ...(0, import_utils.getTrackAttributes)(media)
102
102
  });
103
103
  setTemporaryURL();
104
104
  }
105
- function onSelectAlbumCoverImage(coverImage) {
106
- setAttributes({ image: coverImage.url });
105
+ function onSelectTrackImage(trackImage) {
106
+ setAttributes((0, import_utils.getTrackImageAttributes)(trackImage));
107
107
  }
108
- function onRemoveAlbumCoverImage() {
109
- setAttributes({ image: void 0 });
108
+ function onRemoveTrackImage() {
109
+ setAttributes({ image: void 0, imageAlt: void 0 });
110
110
  imageButton.current.focus();
111
111
  }
112
- if (!src && !temporaryURL) {
112
+ if (!hasTrackSource) {
113
113
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ...blockProps, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
114
114
  import_block_editor.MediaPlaceholder,
115
115
  {
@@ -138,7 +138,21 @@ var PlaylistTrackEdit = ({
138
138
  mediaId: id,
139
139
  mediaURL: src,
140
140
  allowedTypes: ALLOWED_MEDIA_TYPES,
141
- onError: onUploadError
141
+ onError: onUploadError,
142
+ variant: "toolbar"
143
+ }
144
+ ) }),
145
+ !!addTracks && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.BlockControls, { group: "block", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
146
+ import_block_editor.MediaReplaceFlow,
147
+ {
148
+ name: (0, import_i18n.__)("Add"),
149
+ onSelect: addTracks,
150
+ accept: "audio/*",
151
+ multiple: true,
152
+ handleUpload: false,
153
+ allowedTypes: ALLOWED_MEDIA_TYPES,
154
+ onError: onUploadError,
155
+ variant: "toolbar"
142
156
  }
143
157
  ) }),
144
158
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.InspectorControls, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.PanelBody, { title: (0, import_i18n.__)("Settings"), children: [
@@ -172,45 +186,70 @@ var PlaylistTrackEdit = ({
172
186
  }
173
187
  }
174
188
  ),
175
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.MediaUploadCheck, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "editor-video-poster-control", children: [
176
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.BaseControl.VisualLabel, { children: (0, import_i18n.__)("Album cover image") }),
177
- !!image && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
178
- "img",
179
- {
180
- src: image,
181
- alt: (0, import_i18n.__)(
182
- "Preview of the album cover image"
183
- )
184
- }
185
- ),
186
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
187
- import_block_editor.MediaUpload,
188
- {
189
- title: (0, import_i18n.__)("Select image"),
190
- onSelect: onSelectAlbumCoverImage,
191
- allowedTypes: ALBUM_COVER_ALLOWED_MEDIA_TYPES,
192
- render: ({ open }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
193
- import_components.Button,
194
- {
195
- __next40pxDefaultSize: true,
196
- variant: "primary",
197
- onClick: open,
198
- ref: imageButton,
199
- children: !image ? (0, import_i18n.__)("Select") : (0, import_i18n.__)("Replace")
200
- }
201
- )
202
- }
203
- ),
204
- !!image && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
205
- import_components.Button,
206
- {
207
- __next40pxDefaultSize: true,
208
- onClick: onRemoveAlbumCoverImage,
209
- variant: "tertiary",
210
- children: (0, import_i18n.__)("Remove")
211
- }
212
- )
213
- ] }) })
189
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.MediaUploadCheck, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.BaseControl, { children: [
190
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.BaseControl.VisualLabel, { children: (0, import_i18n.__)("Track image") }),
191
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "editor-video-poster-control", children: [
192
+ !!image && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
193
+ "img",
194
+ {
195
+ src: image,
196
+ alt: (0, import_i18n.__)(
197
+ "Preview of the track image"
198
+ )
199
+ }
200
+ ),
201
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
202
+ import_block_editor.MediaUpload,
203
+ {
204
+ title: (0, import_i18n.__)("Select image"),
205
+ onSelect: onSelectTrackImage,
206
+ allowedTypes: TRACK_IMAGE_ALLOWED_MEDIA_TYPES,
207
+ render: ({ open }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
208
+ import_components.Button,
209
+ {
210
+ __next40pxDefaultSize: true,
211
+ variant: "primary",
212
+ onClick: open,
213
+ ref: imageButton,
214
+ children: !image ? (0, import_i18n.__)("Select") : (0, import_i18n.__)("Replace")
215
+ }
216
+ )
217
+ }
218
+ ),
219
+ !!image && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
220
+ import_components.Button,
221
+ {
222
+ __next40pxDefaultSize: true,
223
+ onClick: onRemoveTrackImage,
224
+ variant: "tertiary",
225
+ children: (0, import_i18n.__)("Remove")
226
+ }
227
+ )
228
+ ] })
229
+ ] }) }),
230
+ !!image && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
231
+ import_components.TextareaControl,
232
+ {
233
+ label: (0, import_i18n.__)("Alternative text"),
234
+ value: imageAlt || "",
235
+ onChange: (value) => setAttributes({ imageAlt: value }),
236
+ help: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
237
+ import_ui.Link,
238
+ {
239
+ openInNewTab: true,
240
+ href: (
241
+ // translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.
242
+ (0, import_i18n.__)(
243
+ "https://www.w3.org/WAI/tutorials/images/decision-tree/"
244
+ )
245
+ ),
246
+ children: (0, import_i18n.__)(
247
+ "Describe the purpose of the image."
248
+ )
249
+ }
250
+ )
251
+ }
252
+ )
214
253
  ] }) }),
215
254
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { ...blockProps, children: [
216
255
  !!temporaryURL && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.Spinner, {}),
@@ -221,9 +260,17 @@ var PlaylistTrackEdit = ({
221
260
  onClick: () => setCurrentTrackClientId(clientId),
222
261
  "aria-current": currentTrackClientId === clientId ? "true" : "false",
223
262
  children: [
263
+ showImages && !!image && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
264
+ "img",
265
+ {
266
+ className: "wp-block-playlist-track__image",
267
+ src: image,
268
+ alt: imageAlt || ""
269
+ }
270
+ ),
224
271
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "wp-block-playlist-track__content", children: [
225
272
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
226
- import_block_editor.RichText,
273
+ import_block_editor.PlainText,
227
274
  {
228
275
  tagName: "span",
229
276
  className: "wp-block-playlist-track__title",
@@ -232,32 +279,30 @@ var PlaylistTrackEdit = ({
232
279
  onChange: (value) => {
233
280
  setAttributes({ title: value });
234
281
  },
235
- allowedFormats: [],
236
- withoutInteractiveFormatting: true
282
+ __experimentalVersion: 2
237
283
  }
238
284
  ),
239
285
  showArtists && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
240
- import_block_editor.RichText,
286
+ import_block_editor.PlainText,
241
287
  {
242
288
  tagName: "span",
243
289
  className: "wp-block-playlist-track__artist",
244
290
  value: artist,
245
291
  placeholder: (0, import_i18n.__)("Add artist"),
246
292
  onChange: (value) => setAttributes({ artist: value }),
247
- allowedFormats: [],
248
- withoutInteractiveFormatting: true
293
+ __experimentalVersion: 2
249
294
  }
250
295
  )
251
296
  ] }),
252
297
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "wp-block-playlist-track__length", children: [
253
298
  length && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
254
299
  className: "screen-reader-text",
255
- /* translators: %s: Visually hidden label for the track length (screen reader text). */
256
- children: (0, import_i18n.__)("Length:")
300
+ /* translators: Visually hidden label for the track duration (screen reader text). */
301
+ children: (0, import_i18n.__)("Duration:")
257
302
  }),
258
303
  length
259
304
  ] }),
260
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "screen-reader-text", children: (0, import_i18n.__)("Select to play this track") })
305
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "screen-reader-text", children: (0, import_i18n.__)("Play") })
261
306
  ]
262
307
  }
263
308
  )
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/playlist-track/edit.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { isBlobURL } from '@wordpress/blob';\nimport { useContext, useEffect, useRef, useState } from '@wordpress/element';\nimport {\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tMediaUpload,\n\tMediaUploadCheck,\n\tBlockIcon,\n\tuseBlockProps,\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n} from '@wordpress/block-editor';\nimport {\n\tButton,\n\tPanelBody,\n\tTextControl,\n\tBaseControl,\n\tSpinner,\n} from '@wordpress/components';\nimport { useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { __ } from '@wordpress/i18n';\nimport { audio as icon } from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { PlaylistContext } from '../playlist/context';\nimport { useUploadMediaFromBlobURL } from '../utils/hooks';\n\nconst ALLOWED_MEDIA_TYPES = [ 'audio' ];\nconst ALBUM_COVER_ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nconst PlaylistTrackEdit = ( {\n\tattributes,\n\tsetAttributes,\n\tcontext,\n\tclientId,\n\tisSelected,\n} ) => {\n\tconst { id, src, album, artist, image, length, title } = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );\n\tconst showArtists = context?.showArtists;\n\tconst imageButton = useRef();\n\tconst blockProps = useBlockProps();\n\tconst { currentTrackClientId, setCurrentTrackClientId } =\n\t\tuseContext( PlaylistContext );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tuseEffect( () => {\n\t\tif ( isSelected && currentTrackClientId !== clientId ) {\n\t\t\tsetCurrentTrackClientId( clientId );\n\t\t}\n\t}, [\n\t\tisSelected,\n\t\tclientId,\n\t\tcurrentTrackClientId,\n\t\tsetCurrentTrackClientId,\n\t] );\n\n\tuseUploadMediaFromBlobURL( {\n\t\tsrc: temporaryURL,\n\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\tonChange: onSelectTrack,\n\t\tonError: onUploadError,\n\t} );\n\n\tfunction onSelectTrack( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\t// In this case there was an error and we should continue in the editing state\n\t\t\t// previous attributes should be removed because they may be temporary blob urls.\n\t\t\tsetAttributes( {\n\t\t\t\tblob: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tartist: undefined,\n\t\t\t\talbum: undefined,\n\t\t\t\timage: undefined,\n\t\t\t\tlength: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\turl: undefined,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tblob: undefined,\n\t\t\tid: media.id,\n\t\t\tsrc: media.url,\n\t\t\tartist:\n\t\t\t\tmedia.artist ||\n\t\t\t\tmedia?.meta?.artist ||\n\t\t\t\tmedia?.media_details?.artist ||\n\t\t\t\t__( 'Unknown artist' ),\n\t\t\talbum:\n\t\t\t\tmedia.album ||\n\t\t\t\tmedia?.meta?.album ||\n\t\t\t\tmedia?.media_details?.album ||\n\t\t\t\t__( 'Unknown album' ),\n\t\t\t// Prevent using the default media attachment icon as the track image.\n\t\t\timage:\n\t\t\t\tmedia?.image?.src &&\n\t\t\t\tmedia?.image?.src.endsWith( '/images/media/audio.svg' )\n\t\t\t\t\t? ''\n\t\t\t\t\t: media?.image?.src,\n\t\t\tlength: media?.fileLength || media?.media_details?.length_formatted,\n\t\t\ttitle: media.title,\n\t\t} );\n\t\tsetTemporaryURL();\n\t}\n\n\tfunction onSelectAlbumCoverImage( coverImage ) {\n\t\tsetAttributes( { image: coverImage.url } );\n\t}\n\n\tfunction onRemoveAlbumCoverImage() {\n\t\tsetAttributes( { image: undefined } );\n\n\t\t// Move focus back to the Media Upload button.\n\t\timageButton.current.focus();\n\t}\n\n\tif ( ! src && ! temporaryURL ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabels={ {\n\t\t\t\t\t\ttitle: __( 'Track' ),\n\t\t\t\t\t\tinstructions: __(\n\t\t\t\t\t\t\t'Upload an audio file or pick one from your media library.'\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t\tonSelect={ onSelectTrack }\n\t\t\t\t\taccept=\"audio/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tname={ __( 'Replace' ) }\n\t\t\t\t\tonSelect={ onSelectTrack }\n\t\t\t\t\taccept=\"audio/*\"\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Artist' ) }\n\t\t\t\t\t\tvalue={ artist ? stripHTML( artist ) : '' }\n\t\t\t\t\t\tonChange={ ( artistValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { artist: artistValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Album' ) }\n\t\t\t\t\t\tvalue={ album ? stripHTML( album ) : '' }\n\t\t\t\t\t\tonChange={ ( albumValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { album: albumValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Title' ) }\n\t\t\t\t\t\tvalue={ title ? stripHTML( title ) : '' }\n\t\t\t\t\t\tonChange={ ( titleValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { title: titleValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<div className=\"editor-video-poster-control\">\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Album cover image' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t{ !! image && (\n\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\tsrc={ image }\n\t\t\t\t\t\t\t\t\talt={ __(\n\t\t\t\t\t\t\t\t\t\t'Preview of the album cover image'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\ttitle={ __( 'Select image' ) }\n\t\t\t\t\t\t\t\tonSelect={ onSelectAlbumCoverImage }\n\t\t\t\t\t\t\t\tallowedTypes={ ALBUM_COVER_ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\tref={ imageButton }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ ! image\n\t\t\t\t\t\t\t\t\t\t\t? __( 'Select' )\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Replace' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ !! image && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tonClick={ onRemoveAlbumCoverImage }\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<li { ...blockProps }>\n\t\t\t\t{ !! temporaryURL && <Spinner /> }\n\t\t\t\t<button\n\t\t\t\t\tclassName=\"wp-block-playlist-track__button\"\n\t\t\t\t\tonClick={ () => setCurrentTrackClientId( clientId ) }\n\t\t\t\t\taria-current={\n\t\t\t\t\t\tcurrentTrackClientId === clientId ? 'true' : 'false'\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<span className=\"wp-block-playlist-track__content\">\n\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\t\tclassName=\"wp-block-playlist-track__title\"\n\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\tplaceholder={ __( 'Add title' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { title: value } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tallowedFormats={ [] }\n\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ showArtists && (\n\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\t\t\tclassName=\"wp-block-playlist-track__artist\"\n\t\t\t\t\t\t\t\tvalue={ artist }\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Add artist' ) }\n\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( { artist: value } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tallowedFormats={ [] }\n\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"wp-block-playlist-track__length\">\n\t\t\t\t\t\t{ length && (\n\t\t\t\t\t\t\t<span className=\"screen-reader-text\">\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* translators: %s: Visually hidden label for the track length (screen reader text). */\n\t\t\t\t\t\t\t\t\t__( 'Length:' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ length }\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"screen-reader-text\">\n\t\t\t\t\t\t{ __( 'Select to play this track' ) }\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\t\t\t</li>\n\t\t</>\n\t);\n};\n\nexport default PlaylistTrackEdit;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { isBlobURL } from '@wordpress/blob';\nimport { useContext, useEffect, useRef, useState } from '@wordpress/element';\nimport {\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tMediaUpload,\n\tMediaUploadCheck,\n\tBlockIcon,\n\tuseBlockProps,\n\tBlockControls,\n\tInspectorControls,\n\tPlainText,\n} from '@wordpress/block-editor';\nimport {\n\tButton,\n\tPanelBody,\n\tTextControl,\n\tTextareaControl,\n\tBaseControl,\n\tSpinner,\n} from '@wordpress/components';\nimport { Link } from '@wordpress/ui';\nimport { useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { __ } from '@wordpress/i18n';\nimport { audio as icon } from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { PlaylistContext } from '../playlist/context';\nimport { getTrackAttributes, getTrackImageAttributes } from '../playlist/utils';\nimport { useUploadMediaFromBlobURL } from '../utils/hooks';\n\nconst ALLOWED_MEDIA_TYPES = [ 'audio' ];\nconst TRACK_IMAGE_ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nconst PlaylistTrackEdit = ( {\n\tattributes,\n\tsetAttributes,\n\tcontext,\n\tclientId,\n\tisSelected,\n} ) => {\n\tconst { id, src, album, artist, image, imageAlt, length, title } =\n\t\tattributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );\n\tconst showArtists = context?.showArtists;\n\tconst showImages = context?.showImages ?? true;\n\tconst imageButton = useRef();\n\tconst blockProps = useBlockProps();\n\tconst { currentTrackClientId, setCurrentTrackClientId, addTracks } =\n\t\tuseContext( PlaylistContext );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\tconst hasTrackSource = !! src || !! temporaryURL;\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\tisSelected &&\n\t\t\thasTrackSource &&\n\t\t\tcurrentTrackClientId !== clientId\n\t\t) {\n\t\t\tsetCurrentTrackClientId( clientId );\n\t\t}\n\t}, [\n\t\tisSelected,\n\t\thasTrackSource,\n\t\tclientId,\n\t\tcurrentTrackClientId,\n\t\tsetCurrentTrackClientId,\n\t] );\n\n\tuseUploadMediaFromBlobURL( {\n\t\turl: temporaryURL,\n\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\tonChange: onSelectTrack,\n\t\tonError: onUploadError,\n\t} );\n\n\tfunction onSelectTrack( media ) {\n\t\tconst mediaUrl = media?.url ?? media?.source_url;\n\n\t\tif ( ! media || ! mediaUrl ) {\n\t\t\t// In this case there was an error and we should continue in the editing state\n\t\t\t// previous attributes should be removed because they may be temporary blob urls.\n\t\t\tsetAttributes( {\n\t\t\t\tblob: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tartist: undefined,\n\t\t\t\talbum: undefined,\n\t\t\t\timage: undefined,\n\t\t\t\timageAlt: undefined,\n\t\t\t\tlength: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\turl: undefined,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( mediaUrl ) ) {\n\t\t\tsetTemporaryURL( mediaUrl );\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tblob: undefined,\n\t\t\t...getTrackAttributes( media ),\n\t\t} );\n\t\tsetTemporaryURL();\n\t}\n\n\tfunction onSelectTrackImage( trackImage ) {\n\t\tsetAttributes( getTrackImageAttributes( trackImage ) );\n\t}\n\n\tfunction onRemoveTrackImage() {\n\t\tsetAttributes( { image: undefined, imageAlt: undefined } );\n\n\t\t// Move focus back to the Media Upload button.\n\t\timageButton.current.focus();\n\t}\n\n\tif ( ! hasTrackSource ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabels={ {\n\t\t\t\t\t\ttitle: __( 'Track' ),\n\t\t\t\t\t\tinstructions: __(\n\t\t\t\t\t\t\t'Upload an audio file or pick one from your media library.'\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t\tonSelect={ onSelectTrack }\n\t\t\t\t\taccept=\"audio/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tname={ __( 'Replace' ) }\n\t\t\t\t\tonSelect={ onSelectTrack }\n\t\t\t\t\taccept=\"audio/*\"\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tvariant=\"toolbar\"\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ !! addTracks && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\tname={ __( 'Add' ) }\n\t\t\t\t\t\tonSelect={ addTracks }\n\t\t\t\t\t\taccept=\"audio/*\"\n\t\t\t\t\t\tmultiple\n\t\t\t\t\t\thandleUpload={ false }\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t\tvariant=\"toolbar\"\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Artist' ) }\n\t\t\t\t\t\tvalue={ artist ? stripHTML( artist ) : '' }\n\t\t\t\t\t\tonChange={ ( artistValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { artist: artistValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Album' ) }\n\t\t\t\t\t\tvalue={ album ? stripHTML( album ) : '' }\n\t\t\t\t\t\tonChange={ ( albumValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { album: albumValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Title' ) }\n\t\t\t\t\t\tvalue={ title ? stripHTML( title ) : '' }\n\t\t\t\t\t\tonChange={ ( titleValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { title: titleValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<BaseControl>\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Track image' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<div className=\"editor-video-poster-control\">\n\t\t\t\t\t\t\t\t{ !! image && (\n\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\tsrc={ image }\n\t\t\t\t\t\t\t\t\t\talt={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Preview of the track image'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\t\ttitle={ __( 'Select image' ) }\n\t\t\t\t\t\t\t\t\tonSelect={ onSelectTrackImage }\n\t\t\t\t\t\t\t\t\tallowedTypes={\n\t\t\t\t\t\t\t\t\t\tTRACK_IMAGE_ALLOWED_MEDIA_TYPES\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\t\tref={ imageButton }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ ! image\n\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Select' )\n\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Replace' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ !! image && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\t\tonClick={ onRemoveTrackImage }\n\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t\t{ !! image && (\n\t\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t\tlabel={ __( 'Alternative text' ) }\n\t\t\t\t\t\t\tvalue={ imageAlt || '' }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { imageAlt: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\topenInNewTab\n\t\t\t\t\t\t\t\t\thref={\n\t\t\t\t\t\t\t\t\t\t// translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.\n\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t'https://www.w3.org/WAI/tutorials/images/decision-tree/'\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t'Describe the purpose of the image.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<li { ...blockProps }>\n\t\t\t\t{ !! temporaryURL && <Spinner /> }\n\t\t\t\t<button\n\t\t\t\t\tclassName=\"wp-block-playlist-track__button\"\n\t\t\t\t\tonClick={ () => setCurrentTrackClientId( clientId ) }\n\t\t\t\t\taria-current={\n\t\t\t\t\t\tcurrentTrackClientId === clientId ? 'true' : 'false'\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ showImages && !! image && (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tclassName=\"wp-block-playlist-track__image\"\n\t\t\t\t\t\t\tsrc={ image }\n\t\t\t\t\t\t\talt={ imageAlt || '' }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<span className=\"wp-block-playlist-track__content\">\n\t\t\t\t\t\t<PlainText\n\t\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\t\tclassName=\"wp-block-playlist-track__title\"\n\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\tplaceholder={ __( 'Add title' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { title: value } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t__experimentalVersion={ 2 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ showArtists && (\n\t\t\t\t\t\t\t<PlainText\n\t\t\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\t\t\tclassName=\"wp-block-playlist-track__artist\"\n\t\t\t\t\t\t\t\tvalue={ artist }\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Add artist' ) }\n\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( { artist: value } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__experimentalVersion={ 2 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"wp-block-playlist-track__length\">\n\t\t\t\t\t\t{ length && (\n\t\t\t\t\t\t\t<span className=\"screen-reader-text\">\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* translators: Visually hidden label for the track duration (screen reader text). */\n\t\t\t\t\t\t\t\t\t__( 'Duration:' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ length }\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"screen-reader-text\">{ __( 'Play' ) }</span>\n\t\t\t\t</button>\n\t\t\t</li>\n\t\t</>\n\t);\n};\n\nexport default PlaylistTrackEdit;\n"],
5
+ "mappings": "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",
6
6
  "names": ["noticesStore", "icon", "stripHTML"]
7
7
  }
@@ -24,6 +24,7 @@
24
24
  "background": {
25
25
  "backgroundImage": true,
26
26
  "backgroundSize": true,
27
+ "gradient": true,
27
28
  "__experimentalDefaultControls": {
28
29
  "backgroundImage": true
29
30
  }
@@ -67,6 +67,23 @@ function ReadOnlyContent({
67
67
  }
68
68
  );
69
69
  }
70
+ function EditableContentLoaded({
71
+ blockProps,
72
+ blocks,
73
+ onInput,
74
+ onChange,
75
+ tagName: TagName = "div"
76
+ }) {
77
+ const props = (0, import_block_editor.useInnerBlocksProps)(blockProps, {
78
+ value: blocks,
79
+ onInput,
80
+ onChange,
81
+ // Show a writing prompt for empty content, even when the block
82
+ // is not selected, so the content area remains discoverable.
83
+ renderAppender: blocks?.length ? void 0 : import_block_editor.InnerBlocks.DefaultBlockAppender
84
+ });
85
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TagName, { ...props });
86
+ }
70
87
  function EditableContent({ context = {}, tagName: TagName = "div" }) {
71
88
  const { postType, postId } = context;
72
89
  const [blocks, onInput, onChange] = (0, import_core_data.useEntityBlockEditor)(
@@ -74,28 +91,32 @@ function EditableContent({ context = {}, tagName: TagName = "div" }) {
74
91
  postType,
75
92
  { id: postId }
76
93
  );
77
- const entityRecord = (0, import_data.useSelect)(
78
- (select) => {
79
- return select(import_core_data.store).getEntityRecord(
80
- "postType",
81
- postType,
82
- postId
83
- );
84
- },
94
+ const hasLoadedRecord = (0, import_data.useSelect)(
95
+ (select) => select(import_core_data.store).getEntityRecord(
96
+ "postType",
97
+ postType,
98
+ postId
99
+ ) !== void 0 || select(import_core_data.store).hasFinishedResolution("getEntityRecord", [
100
+ "postType",
101
+ postType,
102
+ postId
103
+ ]),
85
104
  [postType, postId]
86
105
  );
87
- const hasInnerBlocks = !!entityRecord?.content?.raw || blocks?.length;
88
- const initialInnerBlocks = [["core/paragraph"]];
89
- const props = (0, import_block_editor.useInnerBlocksProps)(
90
- (0, import_block_editor.useBlockProps)({ className: "entry-content" }),
106
+ const blockProps = (0, import_block_editor.useBlockProps)({ className: "entry-content" });
107
+ if (!hasLoadedRecord) {
108
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TagName, { ...blockProps });
109
+ }
110
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
111
+ EditableContentLoaded,
91
112
  {
92
- value: blocks,
113
+ blockProps,
114
+ blocks,
93
115
  onInput,
94
116
  onChange,
95
- template: !hasInnerBlocks ? initialInnerBlocks : void 0
117
+ tagName: TagName
96
118
  }
97
119
  );
98
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TagName, { ...props });
99
120
  }
100
121
  function Content(props) {
101
122
  const {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/post-content/edit.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n\t__experimentalUseBlockPreview as useBlockPreview,\n} from '@wordpress/block-editor';\nimport { parse } from '@wordpress/blocks';\nimport {\n\tuseEntityProp,\n\tuseEntityBlockEditor,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { useCanEditEntity } from '../utils/hooks';\nimport { unlock } from '../lock-unlock';\n\nconst { HTMLElementControl } = unlock( blockEditorPrivateApis );\n\nfunction ReadOnlyContent( {\n\tparentLayout,\n\tlayoutClassNames,\n\tuserCanEdit,\n\tpostType,\n\tpostId,\n\ttagName: TagName = 'div',\n} ) {\n\tconst [ , , content ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'content',\n\t\tpostId\n\t);\n\tconst blockProps = useBlockProps( { className: layoutClassNames } );\n\tconst blocks = useMemo( () => {\n\t\treturn content?.raw ? parse( content.raw ) : [];\n\t}, [ content?.raw ] );\n\tconst blockPreviewProps = useBlockPreview( {\n\t\tblocks,\n\t\tprops: blockProps,\n\t\tlayout: parentLayout,\n\t} );\n\n\tif ( userCanEdit ) {\n\t\t/*\n\t\t * Rendering the block preview using the raw content blocks allows for\n\t\t * block support styles to be generated and applied by the editor.\n\t\t *\n\t\t * The preview using the raw blocks can only be presented to users with\n\t\t * edit permissions for the post to prevent potential exposure of private\n\t\t * block content.\n\t\t */\n\t\treturn <div { ...blockPreviewProps }></div>;\n\t}\n\n\treturn content?.protected ? (\n\t\t<TagName { ...blockProps }>\n\t\t\t<Warning>{ __( 'This content is password protected.' ) }</Warning>\n\t\t</TagName>\n\t) : (\n\t\t<TagName\n\t\t\t{ ...blockProps }\n\t\t\tdangerouslySetInnerHTML={ { __html: content?.rendered } }\n\t\t></TagName>\n\t);\n}\n\nfunction EditableContent( { context = {}, tagName: TagName = 'div' } ) {\n\tconst { postType, postId } = context;\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\tpostType,\n\t\t{ id: postId }\n\t);\n\n\tconst entityRecord = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( coreStore ).getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t);\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\tconst hasInnerBlocks = !! entityRecord?.content?.raw || blocks?.length;\n\n\tconst initialInnerBlocks = [ [ 'core/paragraph' ] ];\n\n\tconst props = useInnerBlocksProps(\n\t\tuseBlockProps( { className: 'entry-content' } ),\n\t\t{\n\t\t\tvalue: blocks,\n\t\t\tonInput,\n\t\t\tonChange,\n\t\t\ttemplate: ! hasInnerBlocks ? initialInnerBlocks : undefined,\n\t\t}\n\t);\n\treturn <TagName { ...props } />;\n}\n\nfunction Content( props ) {\n\tconst {\n\t\tcontext: { queryId, postType, postId } = {},\n\t\tlayoutClassNames,\n\t\ttagName,\n\t} = props;\n\tconst userCanEdit = useCanEditEntity( 'postType', postType, postId );\n\tif ( userCanEdit === undefined ) {\n\t\treturn null;\n\t}\n\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst isEditable = userCanEdit && ! isDescendentOfQueryLoop;\n\n\treturn isEditable ? (\n\t\t<EditableContent { ...props } />\n\t) : (\n\t\t<ReadOnlyContent\n\t\t\tparentLayout={ props.parentLayout }\n\t\t\tlayoutClassNames={ layoutClassNames }\n\t\t\tuserCanEdit={ userCanEdit }\n\t\t\tpostType={ postType }\n\t\t\tpostId={ postId }\n\t\t\ttagName={ tagName }\n\t\t/>\n\t);\n}\n\nfunction Placeholder( { layoutClassNames } ) {\n\tconst blockProps = useBlockProps( { className: layoutClassNames } );\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'This is the Content block, it will display all the blocks in any single post or page.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'That might be a simple arrangement like consecutive paragraphs in a blog post, or a more elaborate composition that includes image galleries, videos, tables, columns, and any other block types.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'If there are any Custom Post Types registered at your site, the Content block can display the contents of those entries as well.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t</div>\n\t);\n}\n\nfunction RecursionError() {\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t</div>\n\t);\n}\n\n/**\n * Render inspector controls for the PostContent block.\n *\n * @param {Object} props Component props.\n * @param {string} props.tagName The HTML tag name.\n * @param {Function} props.onSelectTagName onChange function for the SelectControl.\n * @param {string} props.clientId The client ID of the current block.\n *\n * @return {React.JSX.Element} The control group.\n */\nfunction PostContentEditControls( { tagName, onSelectTagName, clientId } ) {\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<HTMLElementControl\n\t\t\t\ttagName={ tagName }\n\t\t\t\tonChange={ onSelectTagName }\n\t\t\t\tclientId={ clientId }\n\t\t\t\toptions={ [\n\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t{ label: '<article>', value: 'article' },\n\t\t\t\t] }\n\t\t\t/>\n\t\t</InspectorControls>\n\t);\n}\n\nexport default function PostContentEdit( {\n\tcontext,\n\tattributes: { tagName = 'div' },\n\tsetAttributes,\n\tclientId,\n\t__unstableLayoutClassNames: layoutClassNames,\n\t__unstableParentLayout: parentLayout,\n} ) {\n\tconst { postId: contextPostId, postType: contextPostType } = context;\n\tconst hasAlreadyRendered = useHasRecursion( contextPostId );\n\n\tif ( contextPostId && contextPostType && hasAlreadyRendered ) {\n\t\treturn <RecursionError />;\n\t}\n\n\tconst handleSelectTagName = ( value ) => {\n\t\tsetAttributes( { tagName: value } );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<PostContentEditControls\n\t\t\t\ttagName={ tagName }\n\t\t\t\tonSelectTagName={ handleSelectTagName }\n\t\t\t\tclientId={ clientId }\n\t\t\t/>\n\t\t\t<RecursionProvider uniqueId={ contextPostId }>\n\t\t\t\t{ contextPostId && contextPostType ? (\n\t\t\t\t\t<Content\n\t\t\t\t\t\tcontext={ context }\n\t\t\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\t\t\tlayoutClassNames={ layoutClassNames }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<Placeholder layoutClassNames={ layoutClassNames } />\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t</>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tInnerBlocks,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n\t__experimentalUseBlockPreview as useBlockPreview,\n} from '@wordpress/block-editor';\nimport { parse } from '@wordpress/blocks';\nimport {\n\tuseEntityProp,\n\tuseEntityBlockEditor,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { useCanEditEntity } from '../utils/hooks';\nimport { unlock } from '../lock-unlock';\n\nconst { HTMLElementControl } = unlock( blockEditorPrivateApis );\n\nfunction ReadOnlyContent( {\n\tparentLayout,\n\tlayoutClassNames,\n\tuserCanEdit,\n\tpostType,\n\tpostId,\n\ttagName: TagName = 'div',\n} ) {\n\tconst [ , , content ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'content',\n\t\tpostId\n\t);\n\tconst blockProps = useBlockProps( { className: layoutClassNames } );\n\tconst blocks = useMemo( () => {\n\t\treturn content?.raw ? parse( content.raw ) : [];\n\t}, [ content?.raw ] );\n\tconst blockPreviewProps = useBlockPreview( {\n\t\tblocks,\n\t\tprops: blockProps,\n\t\tlayout: parentLayout,\n\t} );\n\n\tif ( userCanEdit ) {\n\t\t/*\n\t\t * Rendering the block preview using the raw content blocks allows for\n\t\t * block support styles to be generated and applied by the editor.\n\t\t *\n\t\t * The preview using the raw blocks can only be presented to users with\n\t\t * edit permissions for the post to prevent potential exposure of private\n\t\t * block content.\n\t\t */\n\t\treturn <div { ...blockPreviewProps }></div>;\n\t}\n\n\treturn content?.protected ? (\n\t\t<TagName { ...blockProps }>\n\t\t\t<Warning>{ __( 'This content is password protected.' ) }</Warning>\n\t\t</TagName>\n\t) : (\n\t\t<TagName\n\t\t\t{ ...blockProps }\n\t\t\tdangerouslySetInnerHTML={ { __html: content?.rendered } }\n\t\t></TagName>\n\t);\n}\n\nfunction EditableContentLoaded( {\n\tblockProps,\n\tblocks,\n\tonInput,\n\tonChange,\n\ttagName: TagName = 'div',\n} ) {\n\tconst props = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput,\n\t\tonChange,\n\t\t// Show a writing prompt for empty content, even when the block\n\t\t// is not selected, so the content area remains discoverable.\n\t\trenderAppender: blocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.DefaultBlockAppender,\n\t} );\n\treturn <TagName { ...props } />;\n}\n\nfunction EditableContent( { context = {}, tagName: TagName = 'div' } ) {\n\tconst { postType, postId } = context;\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\tpostType,\n\t\t{ id: postId }\n\t);\n\n\t// Wait for the entity record before mounting the inner blocks area, so\n\t// that an empty `blocks` value means an empty post rather than one that\n\t// has not loaded yet.\n\tconst hasLoadedRecord = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t) !== undefined ||\n\t\t\tselect( coreStore ).hasFinishedResolution( 'getEntityRecord', [\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId,\n\t\t\t] ),\n\t\t[ postType, postId ]\n\t);\n\n\tconst blockProps = useBlockProps( { className: 'entry-content' } );\n\n\tif ( ! hasLoadedRecord ) {\n\t\treturn <TagName { ...blockProps } />;\n\t}\n\n\treturn (\n\t\t<EditableContentLoaded\n\t\t\tblockProps={ blockProps }\n\t\t\tblocks={ blocks }\n\t\t\tonInput={ onInput }\n\t\t\tonChange={ onChange }\n\t\t\ttagName={ TagName }\n\t\t/>\n\t);\n}\n\nfunction Content( props ) {\n\tconst {\n\t\tcontext: { queryId, postType, postId } = {},\n\t\tlayoutClassNames,\n\t\ttagName,\n\t} = props;\n\tconst userCanEdit = useCanEditEntity( 'postType', postType, postId );\n\tif ( userCanEdit === undefined ) {\n\t\treturn null;\n\t}\n\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst isEditable = userCanEdit && ! isDescendentOfQueryLoop;\n\n\treturn isEditable ? (\n\t\t<EditableContent { ...props } />\n\t) : (\n\t\t<ReadOnlyContent\n\t\t\tparentLayout={ props.parentLayout }\n\t\t\tlayoutClassNames={ layoutClassNames }\n\t\t\tuserCanEdit={ userCanEdit }\n\t\t\tpostType={ postType }\n\t\t\tpostId={ postId }\n\t\t\ttagName={ tagName }\n\t\t/>\n\t);\n}\n\nfunction Placeholder( { layoutClassNames } ) {\n\tconst blockProps = useBlockProps( { className: layoutClassNames } );\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'This is the Content block, it will display all the blocks in any single post or page.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'That might be a simple arrangement like consecutive paragraphs in a blog post, or a more elaborate composition that includes image galleries, videos, tables, columns, and any other block types.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'If there are any Custom Post Types registered at your site, the Content block can display the contents of those entries as well.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t</div>\n\t);\n}\n\nfunction RecursionError() {\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t</div>\n\t);\n}\n\n/**\n * Render inspector controls for the PostContent block.\n *\n * @param {Object} props Component props.\n * @param {string} props.tagName The HTML tag name.\n * @param {Function} props.onSelectTagName onChange function for the SelectControl.\n * @param {string} props.clientId The client ID of the current block.\n *\n * @return {React.JSX.Element} The control group.\n */\nfunction PostContentEditControls( { tagName, onSelectTagName, clientId } ) {\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<HTMLElementControl\n\t\t\t\ttagName={ tagName }\n\t\t\t\tonChange={ onSelectTagName }\n\t\t\t\tclientId={ clientId }\n\t\t\t\toptions={ [\n\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t{ label: '<article>', value: 'article' },\n\t\t\t\t] }\n\t\t\t/>\n\t\t</InspectorControls>\n\t);\n}\n\nexport default function PostContentEdit( {\n\tcontext,\n\tattributes: { tagName = 'div' },\n\tsetAttributes,\n\tclientId,\n\t__unstableLayoutClassNames: layoutClassNames,\n\t__unstableParentLayout: parentLayout,\n} ) {\n\tconst { postId: contextPostId, postType: contextPostType } = context;\n\tconst hasAlreadyRendered = useHasRecursion( contextPostId );\n\n\tif ( contextPostId && contextPostType && hasAlreadyRendered ) {\n\t\treturn <RecursionError />;\n\t}\n\n\tconst handleSelectTagName = ( value ) => {\n\t\tsetAttributes( { tagName: value } );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<PostContentEditControls\n\t\t\t\ttagName={ tagName }\n\t\t\t\tonSelectTagName={ handleSelectTagName }\n\t\t\t\tclientId={ clientId }\n\t\t\t/>\n\t\t\t<RecursionProvider uniqueId={ contextPostId }>\n\t\t\t\t{ contextPostId && contextPostType ? (\n\t\t\t\t\t<Content\n\t\t\t\t\t\tcontext={ context }\n\t\t\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\t\t\tlayoutClassNames={ layoutClassNames }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<Placeholder layoutClassNames={ layoutClassNames } />\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorPrivateApis", "useBlockPreview", "coreStore"]
7
7
  }
@@ -154,6 +154,7 @@ function PostFeaturedImageEdit({
154
154
  const borderProps = (0, import_block_editor.__experimentalUseBorderProps)(attributes);
155
155
  const shadowProps = (0, import_block_editor.__experimentalGetShadowClassesAndStyles)(attributes);
156
156
  const blockEditingMode = (0, import_block_editor.useBlockEditingMode)();
157
+ const aspectRatioStyle = aspectRatio === "auto" ? void 0 : aspectRatio;
157
158
  const placeholder = (content) => {
158
159
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
159
160
  import_components.Placeholder,
@@ -164,7 +165,7 @@ function PostFeaturedImageEdit({
164
165
  ),
165
166
  withIllustration: true,
166
167
  style: {
167
- aspectRatio,
168
+ aspectRatio: aspectRatioStyle,
168
169
  height: hasDimensionValue(height) ? height : hasDimensionValue(width) && "auto",
169
170
  width: hasDimensionValue(width) ? width : !!aspectRatio && "100%",
170
171
  ...borderProps.style,
@@ -360,7 +361,7 @@ function PostFeaturedImageEdit({
360
361
  const imageStyles = {
361
362
  ...borderProps.style,
362
363
  ...shadowProps.style,
363
- aspectRatio,
364
+ aspectRatio: aspectRatioStyle,
364
365
  height: hasDimensionValue(height) ? height : hasDimensionValue(width) && "auto",
365
366
  width: hasDimensionValue(width) ? width : !!aspectRatio && "100%",
366
367
  objectFit: !!(height || aspectRatio) && scale