@wordpress/block-library 11.1.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 (444) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/build/accordion-heading/block.json +1 -0
  3. package/build/archives/block.json +3 -0
  4. package/build/audio/edit.cjs +2 -1
  5. package/build/audio/edit.cjs.map +2 -2
  6. package/build/avatar/block.json +4 -0
  7. package/build/avatar/edit.cjs +31 -1
  8. package/build/avatar/edit.cjs.map +3 -3
  9. package/build/button/block.json +6 -0
  10. package/build/button/edit.cjs +9 -6
  11. package/build/button/edit.cjs.map +2 -2
  12. package/build/buttons/block.json +6 -1
  13. package/build/code/block.json +4 -0
  14. package/build/column/edit.cjs +5 -0
  15. package/build/column/edit.cjs.map +2 -2
  16. package/build/columns/block.json +4 -0
  17. package/build/columns/edit.cjs +21 -112
  18. package/build/columns/edit.cjs.map +3 -3
  19. package/build/comments/edit/placeholder.cjs +95 -87
  20. package/build/comments/edit/placeholder.cjs.map +2 -2
  21. package/build/comments-pagination/block.json +11 -0
  22. package/build/cover/block.json +2 -1
  23. package/build/cover/edit/index.cjs +26 -5
  24. package/build/cover/edit/index.cjs.map +2 -2
  25. package/build/cover/edit/inspector-controls.cjs +4 -1
  26. package/build/cover/edit/inspector-controls.cjs.map +2 -2
  27. package/build/cover/embed-video-utils.cjs +9 -8
  28. package/build/cover/embed-video-utils.cjs.map +2 -2
  29. package/build/cover/view.cjs +21 -0
  30. package/build/cover/view.cjs.map +7 -0
  31. package/build/details/block.json +3 -0
  32. package/build/embed/block.json +6 -1
  33. package/build/file/block.json +5 -0
  34. package/build/footnotes/block.json +4 -0
  35. package/build/gallery/block.json +13 -0
  36. package/build/gallery/dynamic-gallery.cjs +32 -93
  37. package/build/gallery/dynamic-gallery.cjs.map +3 -3
  38. package/build/gallery/edit.cjs +103 -40
  39. package/build/gallery/edit.cjs.map +2 -2
  40. package/build/gallery/order-controls.cjs +107 -0
  41. package/build/gallery/order-controls.cjs.map +7 -0
  42. package/build/gallery/order-images.cjs +92 -0
  43. package/build/gallery/order-images.cjs.map +7 -0
  44. package/build/gallery/order-options.cjs +62 -0
  45. package/build/gallery/order-options.cjs.map +7 -0
  46. package/build/gallery/use-dynamic-gallery.cjs +1 -7
  47. package/build/gallery/use-dynamic-gallery.cjs.map +2 -2
  48. package/build/gallery/use-get-media.cjs +2 -3
  49. package/build/gallery/use-get-media.cjs.map +2 -2
  50. package/build/group/edit.cjs +3 -3
  51. package/build/group/edit.cjs.map +2 -2
  52. package/build/heading/block.json +5 -0
  53. package/build/home-link/block.json +12 -0
  54. package/build/icon/components/custom-inserter/index.cjs +3 -1
  55. package/build/icon/components/custom-inserter/index.cjs.map +2 -2
  56. package/build/icon/edit.cjs +49 -5
  57. package/build/icon/edit.cjs.map +2 -2
  58. package/build/image/use-open-image-media-editor-modal.cjs +32 -28
  59. package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
  60. package/build/image/view.cjs +44 -50
  61. package/build/image/view.cjs.map +2 -2
  62. package/build/latest-comments/block.json +10 -0
  63. package/build/latest-posts/block.json +4 -0
  64. package/build/list/block.json +12 -1
  65. package/build/list-item/block.json +8 -1
  66. package/build/list-item/index.cjs +4 -0
  67. package/build/list-item/index.cjs.map +3 -3
  68. package/build/loginout/block.json +4 -0
  69. package/build/math/block.json +4 -0
  70. package/build/media-text/block.json +18 -0
  71. package/build/navigation-link/link-ui/index.cjs +33 -19
  72. package/build/navigation-link/link-ui/index.cjs.map +2 -2
  73. package/build/navigation-link/shared/index.cjs +5 -0
  74. package/build/navigation-link/shared/index.cjs.map +2 -2
  75. package/build/navigation-link/shared/use-block-suggestions.cjs +141 -0
  76. package/build/navigation-link/shared/use-block-suggestions.cjs.map +7 -0
  77. package/build/page-list/block.json +4 -0
  78. package/build/paragraph/block.json +1 -0
  79. package/build/post-author-biography/block.json +1 -0
  80. package/build/post-comments-form/block.json +5 -0
  81. package/build/post-content/block.json +2 -1
  82. package/build/post-excerpt/block.json +4 -0
  83. package/build/post-featured-image/block.json +1 -0
  84. package/build/post-featured-image/edit.cjs +1 -1
  85. package/build/post-featured-image/edit.cjs.map +2 -2
  86. package/build/post-terms/block.json +4 -0
  87. package/build/post-time-to-read/block.json +4 -0
  88. package/build/post-title/block.json +4 -0
  89. package/build/preformatted/block.json +4 -0
  90. package/build/pullquote/block.json +2 -1
  91. package/build/query-no-results/block.json +4 -0
  92. package/build/query-pagination/block.json +17 -0
  93. package/build/query-total/block.json +4 -0
  94. package/build/quote/block.json +2 -0
  95. package/build/read-more/block.json +5 -0
  96. package/build/rss/block.json +4 -0
  97. package/build/search/block.json +2 -1
  98. package/build/site-tagline/block.json +4 -0
  99. package/build/site-title/block.json +4 -0
  100. package/build/social-links/block.json +1 -0
  101. package/build/tab-list/block.json +4 -0
  102. package/build/tab-list/edit.cjs +3 -1
  103. package/build/tab-list/edit.cjs.map +3 -3
  104. package/build/tab-list/save.cjs +3 -1
  105. package/build/tab-list/save.cjs.map +3 -3
  106. package/build/tab-panels/block.json +3 -0
  107. package/build/tabs/block.json +3 -0
  108. package/build/term-count/block.json +5 -0
  109. package/build/term-description/block.json +4 -0
  110. package/build/term-name/block.json +6 -1
  111. package/build/term-template/block.json +4 -0
  112. package/build/utils/waveform-utils.cjs +2 -2
  113. package/build/utils/waveform-utils.cjs.map +2 -2
  114. package/build/verse/block.json +4 -0
  115. package/build/video/block.json +7 -1
  116. package/build/video/edit.cjs +10 -2
  117. package/build/video/edit.cjs.map +2 -2
  118. package/build-module/accordion-heading/block.json +1 -0
  119. package/build-module/archives/block.json +3 -0
  120. package/build-module/audio/edit.mjs +2 -1
  121. package/build-module/audio/edit.mjs.map +2 -2
  122. package/build-module/avatar/block.json +4 -0
  123. package/build-module/avatar/edit.mjs +33 -2
  124. package/build-module/avatar/edit.mjs.map +2 -2
  125. package/build-module/button/block.json +6 -0
  126. package/build-module/button/edit.mjs +11 -7
  127. package/build-module/button/edit.mjs.map +2 -2
  128. package/build-module/buttons/block.json +6 -1
  129. package/build-module/code/block.json +4 -0
  130. package/build-module/column/edit.mjs +5 -0
  131. package/build-module/column/edit.mjs.map +2 -2
  132. package/build-module/columns/block.json +4 -0
  133. package/build-module/columns/edit.mjs +22 -122
  134. package/build-module/columns/edit.mjs.map +2 -2
  135. package/build-module/comments/edit/placeholder.mjs +95 -87
  136. package/build-module/comments/edit/placeholder.mjs.map +2 -2
  137. package/build-module/comments-pagination/block.json +11 -0
  138. package/build-module/cover/block.json +2 -1
  139. package/build-module/cover/edit/index.mjs +32 -6
  140. package/build-module/cover/edit/index.mjs.map +2 -2
  141. package/build-module/cover/edit/inspector-controls.mjs +5 -2
  142. package/build-module/cover/edit/inspector-controls.mjs.map +2 -2
  143. package/build-module/cover/embed-video-utils.mjs +9 -8
  144. package/build-module/cover/embed-video-utils.mjs.map +2 -2
  145. package/build-module/cover/view.mjs +19 -0
  146. package/build-module/cover/view.mjs.map +7 -0
  147. package/build-module/details/block.json +3 -0
  148. package/build-module/embed/block.json +6 -1
  149. package/build-module/file/block.json +5 -0
  150. package/build-module/footnotes/block.json +4 -0
  151. package/build-module/gallery/block.json +13 -0
  152. package/build-module/gallery/dynamic-gallery.mjs +33 -97
  153. package/build-module/gallery/dynamic-gallery.mjs.map +2 -2
  154. package/build-module/gallery/edit.mjs +110 -42
  155. package/build-module/gallery/edit.mjs.map +2 -2
  156. package/build-module/gallery/order-controls.mjs +87 -0
  157. package/build-module/gallery/order-controls.mjs.map +7 -0
  158. package/build-module/gallery/order-images.mjs +66 -0
  159. package/build-module/gallery/order-images.mjs.map +7 -0
  160. package/build-module/gallery/order-options.mjs +33 -0
  161. package/build-module/gallery/order-options.mjs.map +7 -0
  162. package/build-module/gallery/use-dynamic-gallery.mjs +1 -7
  163. package/build-module/gallery/use-dynamic-gallery.mjs.map +2 -2
  164. package/build-module/gallery/use-get-media.mjs +2 -3
  165. package/build-module/gallery/use-get-media.mjs.map +2 -2
  166. package/build-module/group/edit.mjs +4 -4
  167. package/build-module/group/edit.mjs.map +2 -2
  168. package/build-module/heading/block.json +5 -0
  169. package/build-module/home-link/block.json +12 -0
  170. package/build-module/icon/components/custom-inserter/index.mjs +3 -1
  171. package/build-module/icon/components/custom-inserter/index.mjs.map +2 -2
  172. package/build-module/icon/edit.mjs +50 -6
  173. package/build-module/icon/edit.mjs.map +2 -2
  174. package/build-module/image/use-open-image-media-editor-modal.mjs +32 -28
  175. package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
  176. package/build-module/image/view.mjs +44 -50
  177. package/build-module/image/view.mjs.map +2 -2
  178. package/build-module/latest-comments/block.json +10 -0
  179. package/build-module/latest-posts/block.json +4 -0
  180. package/build-module/list/block.json +12 -1
  181. package/build-module/list-item/block.json +8 -1
  182. package/build-module/list-item/index.mjs +4 -0
  183. package/build-module/list-item/index.mjs.map +2 -2
  184. package/build-module/loginout/block.json +4 -0
  185. package/build-module/math/block.json +4 -0
  186. package/build-module/media-text/block.json +18 -0
  187. package/build-module/navigation-link/link-ui/index.mjs +39 -20
  188. package/build-module/navigation-link/link-ui/index.mjs.map +2 -2
  189. package/build-module/navigation-link/shared/index.mjs +6 -0
  190. package/build-module/navigation-link/shared/index.mjs.map +2 -2
  191. package/build-module/navigation-link/shared/use-block-suggestions.mjs +120 -0
  192. package/build-module/navigation-link/shared/use-block-suggestions.mjs.map +7 -0
  193. package/build-module/page-list/block.json +4 -0
  194. package/build-module/paragraph/block.json +1 -0
  195. package/build-module/post-author-biography/block.json +1 -0
  196. package/build-module/post-comments-form/block.json +5 -0
  197. package/build-module/post-content/block.json +2 -1
  198. package/build-module/post-excerpt/block.json +4 -0
  199. package/build-module/post-featured-image/block.json +1 -0
  200. package/build-module/post-featured-image/edit.mjs +1 -1
  201. package/build-module/post-featured-image/edit.mjs.map +2 -2
  202. package/build-module/post-terms/block.json +4 -0
  203. package/build-module/post-time-to-read/block.json +4 -0
  204. package/build-module/post-title/block.json +4 -0
  205. package/build-module/preformatted/block.json +4 -0
  206. package/build-module/pullquote/block.json +2 -1
  207. package/build-module/query-no-results/block.json +4 -0
  208. package/build-module/query-pagination/block.json +17 -0
  209. package/build-module/query-total/block.json +4 -0
  210. package/build-module/quote/block.json +2 -0
  211. package/build-module/read-more/block.json +5 -0
  212. package/build-module/rss/block.json +4 -0
  213. package/build-module/search/block.json +2 -1
  214. package/build-module/site-tagline/block.json +4 -0
  215. package/build-module/site-title/block.json +4 -0
  216. package/build-module/social-links/block.json +1 -0
  217. package/build-module/tab-list/block.json +4 -0
  218. package/build-module/tab-list/edit.mjs +4 -1
  219. package/build-module/tab-list/edit.mjs.map +2 -2
  220. package/build-module/tab-list/save.mjs +4 -1
  221. package/build-module/tab-list/save.mjs.map +2 -2
  222. package/build-module/tab-panels/block.json +3 -0
  223. package/build-module/tabs/block.json +3 -0
  224. package/build-module/term-count/block.json +5 -0
  225. package/build-module/term-description/block.json +4 -0
  226. package/build-module/term-name/block.json +6 -1
  227. package/build-module/term-template/block.json +4 -0
  228. package/build-module/utils/waveform-utils.mjs +1 -1
  229. package/build-module/utils/waveform-utils.mjs.map +1 -1
  230. package/build-module/verse/block.json +4 -0
  231. package/build-module/video/block.json +7 -1
  232. package/build-module/video/edit.mjs +10 -2
  233. package/build-module/video/edit.mjs.map +2 -2
  234. package/build-style/avatar/editor-rtl.css +4 -0
  235. package/build-style/avatar/editor.css +4 -0
  236. package/build-style/comments-pagination/style-rtl.css +3 -0
  237. package/build-style/comments-pagination/style.css +3 -0
  238. package/build-style/common-rtl.css +32 -1
  239. package/build-style/common.css +35 -2
  240. package/build-style/editor-rtl.css +11 -4
  241. package/build-style/editor.css +11 -4
  242. package/build-style/embed/style-rtl.css +4 -1
  243. package/build-style/embed/style.css +4 -1
  244. package/build-style/gallery/editor-rtl.css +1 -3
  245. package/build-style/gallery/editor.css +1 -3
  246. package/build-style/image/style-rtl.css +11 -2
  247. package/build-style/image/style.css +11 -2
  248. package/build-style/media-text/style-rtl.css +4 -1
  249. package/build-style/media-text/style.css +4 -1
  250. package/build-style/query-pagination/style-rtl.css +3 -0
  251. package/build-style/query-pagination/style.css +3 -0
  252. package/build-style/style-rtl.css +70 -9
  253. package/build-style/style.css +73 -10
  254. package/build-style/table/editor-rtl.css +6 -1
  255. package/build-style/table/editor.css +6 -1
  256. package/build-style/table/style-rtl.css +4 -2
  257. package/build-style/table/style.css +4 -2
  258. package/build-style/tag-cloud/style-rtl.css +1 -1
  259. package/build-style/tag-cloud/style.css +1 -1
  260. package/build-style/verse/style-rtl.css +8 -1
  261. package/build-style/verse/style.css +8 -1
  262. package/build-types/gallery/order-controls.d.ts +58 -0
  263. package/build-types/gallery/order-controls.d.ts.map +1 -0
  264. package/build-types/gallery/order-options.d.ts +67 -0
  265. package/build-types/gallery/order-options.d.ts.map +1 -0
  266. package/package.json +44 -41
  267. package/src/accordion-heading/README.md +1 -0
  268. package/src/accordion-heading/block.json +1 -0
  269. package/src/archives/README.md +2 -0
  270. package/src/archives/block.json +3 -0
  271. package/src/audio/edit.jsx +2 -1
  272. package/src/avatar/README.md +2 -0
  273. package/src/avatar/block.json +4 -0
  274. package/src/avatar/edit.jsx +48 -2
  275. package/src/avatar/editor.scss +4 -0
  276. package/src/avatar/index.php +5 -3
  277. package/src/breadcrumbs/index.php +1 -1
  278. package/src/button/README.md +4 -0
  279. package/src/button/block.json +6 -0
  280. package/src/button/edit.jsx +47 -52
  281. package/src/button/index.php +47 -0
  282. package/src/buttons/README.md +4 -0
  283. package/src/buttons/block.json +6 -1
  284. package/src/code/README.md +3 -0
  285. package/src/code/block.json +4 -0
  286. package/src/column/edit.jsx +6 -0
  287. package/src/columns/README.md +3 -0
  288. package/src/columns/block.json +4 -0
  289. package/src/columns/edit.jsx +1 -131
  290. package/src/comments/edit/placeholder.jsx +5 -1
  291. package/src/comments-pagination/README.md +4 -0
  292. package/src/comments-pagination/block.json +11 -0
  293. package/src/comments-pagination/style.scss +3 -0
  294. package/src/common.scss +38 -0
  295. package/src/cover/README.md +1 -0
  296. package/src/cover/block.json +2 -1
  297. package/src/cover/edit/index.jsx +38 -6
  298. package/src/cover/edit/inspector-controls.jsx +10 -1
  299. package/src/cover/embed-video-utils.js +18 -10
  300. package/src/cover/index.php +44 -15
  301. package/src/cover/test/edit.browser.test.js +182 -2
  302. package/src/cover/test/embed-video-utils.test.js +48 -0
  303. package/src/cover/view.js +22 -0
  304. package/src/details/README.md +2 -0
  305. package/src/details/block.json +3 -0
  306. package/src/embed/README.md +4 -0
  307. package/src/embed/block.json +6 -1
  308. package/src/embed/style.scss +7 -1
  309. package/src/file/README.md +4 -0
  310. package/src/file/block.json +5 -0
  311. package/src/footnotes/README.md +3 -0
  312. package/src/footnotes/block.json +4 -0
  313. package/src/gallery/README.md +13 -0
  314. package/src/gallery/block.json +13 -0
  315. package/src/gallery/dynamic-gallery.jsx +11 -91
  316. package/src/gallery/edit.jsx +146 -47
  317. package/src/gallery/editor.scss +5 -9
  318. package/src/gallery/order-controls.tsx +143 -0
  319. package/src/gallery/order-images.js +111 -0
  320. package/src/gallery/order-options.ts +75 -0
  321. package/src/gallery/test/edit.jsdom.test.js +87 -10
  322. package/src/gallery/test/order-images.js +162 -0
  323. package/src/gallery/use-dynamic-gallery.js +1 -9
  324. package/src/gallery/use-get-media.js +7 -2
  325. package/src/group/edit.jsx +5 -5
  326. package/src/heading/README.md +4 -0
  327. package/src/heading/block.json +5 -0
  328. package/src/home-link/README.md +6 -0
  329. package/src/home-link/block.json +12 -0
  330. package/src/icon/components/custom-inserter/index.jsx +5 -1
  331. package/src/icon/edit.jsx +68 -7
  332. package/src/icon/index.php +1 -1
  333. package/src/image/index.php +3 -4
  334. package/src/image/style.scss +14 -2
  335. package/src/image/test/use-open-image-media-editor-modal.jsdom.test.js +122 -60
  336. package/src/image/use-open-image-media-editor-modal.js +37 -41
  337. package/src/image/view.js +64 -68
  338. package/src/latest-comments/README.md +3 -0
  339. package/src/latest-comments/block.json +10 -0
  340. package/src/latest-posts/README.md +3 -0
  341. package/src/latest-posts/block.json +4 -0
  342. package/src/list/README.md +6 -0
  343. package/src/list/block.json +12 -1
  344. package/src/list-item/README.md +6 -0
  345. package/src/list-item/block.json +8 -1
  346. package/src/list-item/index.js +5 -0
  347. package/src/loginout/README.md +3 -0
  348. package/src/loginout/block.json +4 -0
  349. package/src/math/README.md +3 -0
  350. package/src/math/block.json +4 -0
  351. package/src/media-text/README.md +17 -0
  352. package/src/media-text/block.json +18 -0
  353. package/src/media-text/style.scss +5 -1
  354. package/src/navigation/test/use-navigation-menu.jsdom.test.js +1 -1
  355. package/src/navigation-link/README.md +1 -1
  356. package/src/navigation-link/link-ui/index.jsx +60 -27
  357. package/src/navigation-link/link-ui/test/get-suggestions-query.jsdom.test.js +67 -0
  358. package/src/navigation-link/shared/index.js +4 -0
  359. package/src/navigation-link/shared/test/use-block-suggestions.jsdom.test.js +158 -0
  360. package/src/navigation-link/shared/test/use-entity-binding.jsdom.test.js +1 -7
  361. package/src/navigation-link/shared/use-block-suggestions.js +192 -0
  362. package/src/page-list/README.md +3 -0
  363. package/src/page-list/block.json +4 -0
  364. package/src/paragraph/README.md +1 -0
  365. package/src/paragraph/block.json +1 -0
  366. package/src/playlist/test/edit-component.jsdom.test.jsx +11 -11
  367. package/src/playlist-track/test/edit.jsdom.test.jsx +3 -3
  368. package/src/post-author-biography/README.md +1 -0
  369. package/src/post-author-biography/block.json +1 -0
  370. package/src/post-comments-form/README.md +3 -0
  371. package/src/post-comments-form/block.json +5 -0
  372. package/src/post-content/README.md +1 -0
  373. package/src/post-content/block.json +2 -1
  374. package/src/post-excerpt/README.md +3 -0
  375. package/src/post-excerpt/block.json +4 -0
  376. package/src/post-featured-image/block.json +1 -0
  377. package/src/post-featured-image/edit.jsx +2 -2
  378. package/src/post-terms/README.md +3 -0
  379. package/src/post-terms/block.json +4 -0
  380. package/src/post-time-to-read/README.md +3 -0
  381. package/src/post-time-to-read/block.json +4 -0
  382. package/src/post-title/README.md +3 -0
  383. package/src/post-title/block.json +4 -0
  384. package/src/preformatted/README.md +3 -0
  385. package/src/preformatted/block.json +4 -0
  386. package/src/pullquote/README.md +1 -0
  387. package/src/pullquote/block.json +2 -1
  388. package/src/query-no-results/README.md +3 -0
  389. package/src/query-no-results/block.json +4 -0
  390. package/src/query-pagination/README.md +4 -0
  391. package/src/query-pagination/block.json +17 -0
  392. package/src/query-pagination/style.scss +3 -0
  393. package/src/query-total/README.md +3 -0
  394. package/src/query-total/block.json +4 -0
  395. package/src/quote/README.md +2 -0
  396. package/src/quote/block.json +2 -0
  397. package/src/read-more/README.md +3 -0
  398. package/src/read-more/block.json +5 -0
  399. package/src/rss/README.md +3 -0
  400. package/src/rss/block.json +4 -0
  401. package/src/search/README.md +1 -0
  402. package/src/search/block.json +2 -1
  403. package/src/site-tagline/README.md +3 -0
  404. package/src/site-tagline/block.json +4 -0
  405. package/src/site-title/README.md +3 -0
  406. package/src/site-title/block.json +4 -0
  407. package/src/social-links/README.md +1 -0
  408. package/src/social-links/block.json +1 -0
  409. package/src/tab-list/README.md +2 -0
  410. package/src/tab-list/block.json +4 -0
  411. package/src/tab-list/edit.jsx +3 -0
  412. package/src/tab-list/save.jsx +3 -0
  413. package/src/tab-panels/README.md +2 -0
  414. package/src/tab-panels/block.json +3 -0
  415. package/src/table/editor.scss +8 -2
  416. package/src/table/style.scss +4 -4
  417. package/src/tabs/README.md +2 -0
  418. package/src/tabs/block.json +3 -0
  419. package/src/tag-cloud/style.scss +1 -1
  420. package/src/template-part/index.php +16 -3
  421. package/src/term-count/README.md +4 -0
  422. package/src/term-count/block.json +5 -0
  423. package/src/term-description/README.md +3 -0
  424. package/src/term-description/block.json +4 -0
  425. package/src/term-name/README.md +4 -0
  426. package/src/term-name/block.json +6 -1
  427. package/src/term-template/README.md +3 -0
  428. package/src/term-template/block.json +4 -0
  429. package/src/utils/test/waveform-player-auto-init.jsdom.test.js +25 -0
  430. package/src/utils/test/waveform-player-dependency.jsdom.test.js +7 -60
  431. package/src/utils/test/waveform-utils.browser.test.js +3 -15
  432. package/src/utils/waveform-utils.js +1 -1
  433. package/src/verse/README.md +4 -0
  434. package/src/verse/block.json +4 -0
  435. package/src/verse/style.scss +11 -2
  436. package/src/video/README.md +4 -0
  437. package/src/video/block.json +7 -1
  438. package/src/video/edit.jsx +13 -2
  439. package/build/columns/utils.cjs +0 -112
  440. package/build/columns/utils.cjs.map +0 -7
  441. package/build-module/columns/utils.mjs +0 -78
  442. package/build-module/columns/utils.mjs.map +0 -7
  443. package/src/columns/test/utils.js +0 -331
  444. package/src/columns/utils.js +0 -176
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/post-featured-image/edit.jsx"],
4
- "sourcesContent": ["import clsx from 'clsx';\nimport { isBlobURL } from '@wordpress/blob';\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tToggleControl,\n\tPlaceholder,\n\tButton,\n\tSpinner,\n\tTextControl,\n\tExternalLink,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport {\n\tInspectorControls,\n\tBlockControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\tuseBlockEditingMode,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tuseMemo,\n\tuseEffect,\n\tuseState,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { upload } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport DimensionControls from './dimension-controls';\nimport OverlayControls from './overlay-controls';\nimport Overlay from './overlay';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\nimport { unlock } from '../lock-unlock';\nimport { getDimensionResetAttributes } from '../utils/style-state';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst { ResolutionTool } = unlock( blockEditorPrivateApis );\n\nconst hasDimensionValue = ( value ) =>\n\tvalue !== undefined && value !== null && value !== '';\nconst DEFAULT_MEDIA_SIZE_SLUG = 'full';\n\nfunction FeaturedImageResolutionTool( { image, value, onChange } ) {\n\tconst { imageSizes } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\timageSizes: getSettings().imageSizes,\n\t\t};\n\t}, [] );\n\n\tif ( ! imageSizes?.length ) {\n\t\treturn null;\n\t}\n\n\tconst imageSizeOptions = imageSizes\n\t\t.filter(\n\t\t\t( { slug } ) => image?.media_details?.sizes?.[ slug ]?.source_url\n\t\t)\n\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\n\treturn (\n\t\t<ResolutionTool\n\t\t\tvalue={ value }\n\t\t\tdefaultValue={ DEFAULT_MEDIA_SIZE_SLUG }\n\t\t\toptions={ imageSizeOptions }\n\t\t\tonChange={ onChange }\n\t\t/>\n\t);\n}\n\nexport default function PostFeaturedImageEdit( {\n\tclientId,\n\tattributes,\n\tsetAttributes,\n\tcontext: { postId, postType: postTypeSlug, queryId },\n} ) {\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst {\n\t\tisLink,\n\t\taspectRatio,\n\t\theight,\n\t\twidth,\n\t\tscale,\n\t\tsizeSlug,\n\t\trel,\n\t\tlinkTarget,\n\t\tuseFirstImageFromPost,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst [ storedFeaturedImage, setFeaturedImage ] = useEntityProp(\n\t\t'postType',\n\t\tpostTypeSlug,\n\t\t'featured_media',\n\t\tpostId\n\t);\n\n\t// Fallback to post content if no featured image is set.\n\t// This is needed for the \"Use first image from post\" option.\n\tconst [ postContent ] = useEntityProp(\n\t\t'postType',\n\t\tpostTypeSlug,\n\t\t'content',\n\t\tpostId\n\t);\n\n\tconst featuredImage = useMemo( () => {\n\t\tif ( storedFeaturedImage ) {\n\t\t\treturn storedFeaturedImage;\n\t\t}\n\n\t\tif ( ! useFirstImageFromPost ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageOpener =\n\t\t\t/<!--\\s+wp:(?:core\\/)?image\\s+(?<attrs>{(?:(?:[^}]+|}+(?=})|(?!}\\s+\\/?-->).)*)?}\\s+)?-->/.exec(\n\t\t\t\tpostContent\n\t\t\t);\n\t\tconst imageId =\n\t\t\timageOpener?.groups?.attrs &&\n\t\t\tJSON.parse( imageOpener.groups.attrs )?.id;\n\t\treturn imageId;\n\t}, [ storedFeaturedImage, useFirstImageFromPost, postContent ] );\n\n\tconst {\n\t\tmedia,\n\t\tpostType,\n\t\tpostPermalink,\n\t\tselectedStyleState,\n\t\thasSelectedStyleState,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, getPostType, getEditedEntityRecord } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getSelectedBlockStyleState, hasSelectedBlockStyleState } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tmedia:\n\t\t\t\t\tfeaturedImage &&\n\t\t\t\t\tgetEntityRecord( 'postType', 'attachment', featuredImage, {\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t} ),\n\t\t\t\tpostType: postTypeSlug && getPostType( postTypeSlug ),\n\t\t\t\tpostPermalink: getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostTypeSlug,\n\t\t\t\t\tpostId\n\t\t\t\t)?.link,\n\t\t\t\tselectedStyleState: getSelectedBlockStyleState( clientId ),\n\t\t\t\thasSelectedStyleState: hasSelectedBlockStyleState( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId, featuredImage, postTypeSlug, postId ]\n\t);\n\n\tconst mediaUrl =\n\t\tmedia?.media_details?.sizes?.[ sizeSlug ]?.source_url ||\n\t\tmedia?.source_url;\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( {\n\t\t\t'is-transient': temporaryURL,\n\t\t} ),\n\t} );\n\tconst borderProps = useBorderProps( attributes );\n\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst aspectRatioStyle = aspectRatio === 'auto' ? undefined : aspectRatio;\n\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-media-placeholder',\n\t\t\t\t\tborderProps.className\n\t\t\t\t) }\n\t\t\t\twithIllustration\n\t\t\t\tstyle={ {\n\t\t\t\t\taspectRatio: aspectRatioStyle,\n\t\t\t\t\theight: hasDimensionValue( height )\n\t\t\t\t\t\t? height\n\t\t\t\t\t\t: hasDimensionValue( width ) && 'auto',\n\t\t\t\t\twidth: hasDimensionValue( width )\n\t\t\t\t\t\t? width\n\t\t\t\t\t\t: !! aspectRatio && '100%',\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t...shadowProps.style,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\tconst onSelectImage = ( value ) => {\n\t\tif ( value?.id ) {\n\t\t\tsetFeaturedImage( value.id );\n\t\t}\n\n\t\tif ( value?.url && isBlobURL( value.url ) ) {\n\t\t\tsetTemporaryURL( value.url );\n\t\t}\n\t};\n\n\t// On reset image\n\tconst onResetImage = () => {\n\t\tsetAttributes( {\n\t\t\tisLink: false,\n\t\t\tlinkTarget: '_self',\n\t\t\trel: '',\n\t\t\tsizeSlug: undefined,\n\t\t} );\n\t\tsetFeaturedImage( 0 );\n\t};\n\n\t// Reset temporary url when media is available.\n\tuseEffect( () => {\n\t\tif ( mediaUrl && temporaryURL ) {\n\t\t\tsetTemporaryURL();\n\t\t}\n\t}, [ mediaUrl, temporaryURL ] );\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetTemporaryURL();\n\t};\n\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tconst controls = blockEditingMode === 'default' && (\n\t\t<>\n\t\t\t<InspectorControls group=\"color\">\n\t\t\t\t<OverlayControls\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls\n\t\t\t\tgroup=\"dimensions\"\n\t\t\t\tresetAllFilter={ ( attrs ) => {\n\t\t\t\t\treturn getDimensionResetAttributes( {\n\t\t\t\t\t\tattributes: attrs,\n\t\t\t\t\t\tselectedState: selectedStyleState,\n\t\t\t\t\t\thasSelectedStyleState,\n\t\t\t\t\t\tkeys: [ 'aspectRatio', 'height', 'objectFit', 'width' ],\n\t\t\t\t\t\tdefaultAttributes: {\n\t\t\t\t\t\t\taspectRatio: undefined,\n\t\t\t\t\t\t\theight: undefined,\n\t\t\t\t\t\t\tscale: undefined,\n\t\t\t\t\t\t\twidth: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<DimensionControls\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tmedia={ media }\n\t\t\t\t\tselectedStyleState={ selectedStyleState }\n\t\t\t\t\thasSelectedStyleState={ hasSelectedStyleState }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t{ ( featuredImage || isDescendentOfQueryLoop || ! postId ) && (\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tisLink: false,\n\t\t\t\t\t\t\t\tlinkTarget: '_self',\n\t\t\t\t\t\t\t\trel: '',\n\t\t\t\t\t\t\t\tsizeSlug: DEFAULT_MEDIA_SIZE_SLUG,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\tpostType?.labels?.singular_name\n\t\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"post\".\n\t\t\t\t\t\t\t\t\t\t\t__( 'Link to %s' ),\n\t\t\t\t\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: __( 'Link to post' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\thasValue={ () => !! isLink }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tisLink: false,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Make image a link' ) }\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( { isLink: ! isLink } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ isLink }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\n\t\t\t\t\t\t{ isLink && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t\thasValue={ () => '_self' !== linkTarget }\n\t\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlinkTarget: '_self',\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\t<ToggleControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\tlinkTarget: value\n\t\t\t\t\t\t\t\t\t\t\t\t? '_blank'\n\t\t\t\t\t\t\t\t\t\t\t\t: '_self',\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\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ isLink && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\tlabel={ __( 'Link relation' ) }\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t\thasValue={ () => !! rel }\n\t\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\trel: '',\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\t<TextControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Link relation' ) }\n\t\t\t\t\t\t\t\t\thelp={ createInterpolateElement(\n\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t'The <a>Link Relation</a> attribute defines the relationship between a linked resource and the current document.'\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ta: (\n\t\t\t\t\t\t\t\t\t\t\t\t<ExternalLink href=\"https://developer.mozilla.org/docs/Web/HTML/Attributes/rel\" />\n\t\t\t\t\t\t\t\t\t\t\t),\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\tvalue={ rel }\n\t\t\t\t\t\t\t\t\tonChange={ ( newRel ) =>\n\t\t\t\t\t\t\t\t\t\tsetAttributes( { rel: newRel } )\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</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ !! media && (\n\t\t\t\t\t\t\t<FeaturedImageResolutionTool\n\t\t\t\t\t\t\t\timage={ media }\n\t\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\t\tonChange={ ( nextSizeSlug ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( { sizeSlug: nextSizeSlug } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t</>\n\t);\n\n\tlet image;\n\n\t/**\n\t * A Post Featured Image block should not have image replacement\n\t * or upload options in the following cases:\n\t * - Is placed in a Query Loop. This is a conscious decision to\n\t * prevent content editing of different posts in Query Loop, and\n\t * this could change in the future.\n\t * - Is in a context where it does not have a postId (for example\n\t * in a template or template part).\n\t */\n\tif ( ! featuredImage && ( isDescendentOfQueryLoop || ! postId ) ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ controls }\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t{ !! isLink ? (\n\t\t\t\t\t\t<a href={ postPermalink } target={ linkTarget }>\n\t\t\t\t\t\t\t{ placeholder() }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tplaceholder()\n\t\t\t\t\t) }\n\t\t\t\t\t<Overlay\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst label = __( 'Add a featured image' );\n\tconst imageStyles = {\n\t\t...borderProps.style,\n\t\t...shadowProps.style,\n\t\taspectRatio: aspectRatioStyle,\n\t\theight: hasDimensionValue( height )\n\t\t\t? height\n\t\t\t: hasDimensionValue( width ) && 'auto',\n\t\twidth: hasDimensionValue( width ) ? width : !! aspectRatio && '100%',\n\t\tobjectFit: !! ( height || aspectRatio ) && scale,\n\t};\n\n\t/**\n\t * When the post featured image block is placed in a context where:\n\t * - It has a postId (for example in a single post)\n\t * - It is not inside a query loop\n\t * - It has no image assigned yet\n\t * Then display the placeholder with the image upload option.\n\t */\n\tif ( ! featuredImage && ! temporaryURL ) {\n\t\timage = (\n\t\t\t<MediaPlaceholder\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tmediaLibraryButton={ ( { open } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\ttooltipPosition=\"top center\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\topen();\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} }\n\t\t\t/>\n\t\t);\n\t} else {\n\t\t// We have a Featured image so show a Placeholder if is loading.\n\t\timage =\n\t\t\t! media && ! temporaryURL ? (\n\t\t\t\tplaceholder()\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<img\n\t\t\t\t\t\tclassName={ borderProps.className }\n\t\t\t\t\t\tsrc={ temporaryURL || mediaUrl }\n\t\t\t\t\t\talt={\n\t\t\t\t\t\t\tmedia && media?.alt_text\n\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: The image's alt text.\n\t\t\t\t\t\t\t\t\t\t__( 'Featured image: %s' ),\n\t\t\t\t\t\t\t\t\t\tmedia.alt_text\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: __( 'Featured image' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t/>\n\t\t\t\t\t{ temporaryURL && <Spinner /> }\n\t\t\t\t</>\n\t\t\t);\n\t}\n\n\t/**\n\t * When the post featured image block:\n\t * - Has an image assigned\n\t * - Is not inside a query loop\n\t * Then display the image and the image replacement option.\n\t */\n\treturn (\n\t\t<>\n\t\t\t{ ! temporaryURL && controls }\n\t\t\t{ !! media && ! isDescendentOfQueryLoop && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\tmediaId={ featuredImage }\n\t\t\t\t\t\tmediaURL={ mediaUrl }\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t\tonReset={ onResetImage }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t{ /* If the featured image is linked, wrap in an <a /> tag to trigger any inherited link element styles */ }\n\t\t\t\t{ !! isLink ? (\n\t\t\t\t\t<a href={ postPermalink } target={ linkTarget }>\n\t\t\t\t\t\t{ image }\n\t\t\t\t\t</a>\n\t\t\t\t) : (\n\t\t\t\t\timage\n\t\t\t\t) }\n\t\t\t\t<Overlay\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import clsx from 'clsx';\nimport { isBlobURL } from '@wordpress/blob';\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tToggleControl,\n\tPlaceholder,\n\tButton,\n\tSpinner,\n\tTextControl,\n\tExternalLink,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport {\n\tInspectorControls,\n\tBlockControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\tuseBlockEditingMode,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tuseMemo,\n\tuseEffect,\n\tuseState,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { upload } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport DimensionControls from './dimension-controls';\nimport OverlayControls from './overlay-controls';\nimport Overlay from './overlay';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\nimport { unlock } from '../lock-unlock';\nimport { getDimensionResetAttributes } from '../utils/style-state';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst { ResolutionTool } = unlock( blockEditorPrivateApis );\n\nconst hasDimensionValue = ( value ) =>\n\tvalue !== undefined && value !== null && value !== '';\nconst DEFAULT_MEDIA_SIZE_SLUG = 'full';\n\nfunction FeaturedImageResolutionTool( { image, value, onChange } ) {\n\tconst { imageSizes } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\timageSizes: getSettings().imageSizes,\n\t\t};\n\t}, [] );\n\n\tif ( ! imageSizes?.length ) {\n\t\treturn null;\n\t}\n\n\tconst imageSizeOptions = imageSizes\n\t\t.filter(\n\t\t\t( { slug } ) => image?.media_details?.sizes?.[ slug ]?.source_url\n\t\t)\n\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\n\treturn (\n\t\t<ResolutionTool\n\t\t\tvalue={ value }\n\t\t\tdefaultValue={ DEFAULT_MEDIA_SIZE_SLUG }\n\t\t\toptions={ imageSizeOptions }\n\t\t\tonChange={ onChange }\n\t\t/>\n\t);\n}\n\nexport default function PostFeaturedImageEdit( {\n\tclientId,\n\tattributes,\n\tsetAttributes,\n\tcontext: { postId, postType: postTypeSlug, queryId },\n} ) {\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst {\n\t\tisLink,\n\t\taspectRatio,\n\t\theight,\n\t\twidth,\n\t\tscale,\n\t\tsizeSlug,\n\t\trel,\n\t\tlinkTarget,\n\t\tuseFirstImageFromPost,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst [ storedFeaturedImage, setFeaturedImage ] = useEntityProp(\n\t\t'postType',\n\t\tpostTypeSlug,\n\t\t'featured_media',\n\t\tpostId\n\t);\n\n\t// Fallback to post content if no featured image is set.\n\t// This is needed for the \"Use first image from post\" option.\n\tconst [ postContent ] = useEntityProp(\n\t\t'postType',\n\t\tpostTypeSlug,\n\t\t'content',\n\t\tpostId\n\t);\n\n\tconst featuredImage = useMemo( () => {\n\t\tif ( storedFeaturedImage ) {\n\t\t\treturn storedFeaturedImage;\n\t\t}\n\n\t\tif ( ! useFirstImageFromPost ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageOpener =\n\t\t\t/<!--\\s+wp:(?:core\\/)?image\\s+(?<attrs>{(?:(?:[^}]+|}+(?=})|(?!}\\s+\\/?-->).)*)?}\\s+)?-->/.exec(\n\t\t\t\tpostContent\n\t\t\t);\n\t\tconst imageId =\n\t\t\timageOpener?.groups?.attrs &&\n\t\t\tJSON.parse( imageOpener.groups.attrs )?.id;\n\t\treturn imageId;\n\t}, [ storedFeaturedImage, useFirstImageFromPost, postContent ] );\n\n\tconst {\n\t\tmedia,\n\t\tpostType,\n\t\tpostPermalink,\n\t\tselectedStyleState,\n\t\thasSelectedStyleState,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, getPostType, getEditedEntityRecord } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getSelectedBlockStyleState, hasSelectedBlockStyleState } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tmedia:\n\t\t\t\t\tfeaturedImage &&\n\t\t\t\t\tgetEntityRecord( 'postType', 'attachment', featuredImage, {\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t} ),\n\t\t\t\tpostType: postTypeSlug && getPostType( postTypeSlug ),\n\t\t\t\tpostPermalink: getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostTypeSlug,\n\t\t\t\t\tpostId\n\t\t\t\t)?.link,\n\t\t\t\tselectedStyleState: getSelectedBlockStyleState( clientId ),\n\t\t\t\thasSelectedStyleState: hasSelectedBlockStyleState( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId, featuredImage, postTypeSlug, postId ]\n\t);\n\n\tconst mediaUrl =\n\t\tmedia?.media_details?.sizes?.[ sizeSlug ]?.source_url ||\n\t\tmedia?.source_url;\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( {\n\t\t\t'is-transient': temporaryURL,\n\t\t} ),\n\t} );\n\tconst borderProps = useBorderProps( attributes );\n\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst aspectRatioStyle = aspectRatio === 'auto' ? undefined : aspectRatio;\n\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-media-placeholder',\n\t\t\t\t\tborderProps.className\n\t\t\t\t) }\n\t\t\t\twithIllustration\n\t\t\t\tstyle={ {\n\t\t\t\t\taspectRatio: aspectRatioStyle,\n\t\t\t\t\theight: hasDimensionValue( height )\n\t\t\t\t\t\t? height\n\t\t\t\t\t\t: hasDimensionValue( width ) && 'auto',\n\t\t\t\t\twidth: hasDimensionValue( width )\n\t\t\t\t\t\t? width\n\t\t\t\t\t\t: !! aspectRatio && '100%',\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t...shadowProps.style,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\tconst onSelectImage = ( value ) => {\n\t\tif ( value?.id ) {\n\t\t\tsetFeaturedImage( value.id );\n\t\t}\n\n\t\tif ( value?.url && isBlobURL( value.url ) ) {\n\t\t\tsetTemporaryURL( value.url );\n\t\t}\n\t};\n\n\t// On reset image\n\tconst onResetImage = () => {\n\t\tsetAttributes( {\n\t\t\tisLink: false,\n\t\t\tlinkTarget: '_self',\n\t\t\trel: '',\n\t\t\tsizeSlug: undefined,\n\t\t} );\n\t\tsetFeaturedImage( 0 );\n\t};\n\n\t// Reset temporary url when media is available.\n\tuseEffect( () => {\n\t\tif ( mediaUrl && temporaryURL ) {\n\t\t\tsetTemporaryURL();\n\t\t}\n\t}, [ mediaUrl, temporaryURL ] );\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetTemporaryURL();\n\t};\n\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tconst controls = blockEditingMode === 'default' && (\n\t\t<>\n\t\t\t<InspectorControls group=\"color\">\n\t\t\t\t<OverlayControls\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls\n\t\t\t\tgroup=\"dimensions\"\n\t\t\t\tresetAllFilter={ ( attrs ) => {\n\t\t\t\t\treturn getDimensionResetAttributes( {\n\t\t\t\t\t\tattributes: attrs,\n\t\t\t\t\t\tselectedState: selectedStyleState,\n\t\t\t\t\t\thasSelectedStyleState,\n\t\t\t\t\t\tkeys: [ 'aspectRatio', 'height', 'objectFit', 'width' ],\n\t\t\t\t\t\tdefaultAttributes: {\n\t\t\t\t\t\t\taspectRatio: undefined,\n\t\t\t\t\t\t\theight: undefined,\n\t\t\t\t\t\t\tscale: undefined,\n\t\t\t\t\t\t\twidth: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<DimensionControls\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tmedia={ media }\n\t\t\t\t\tselectedStyleState={ selectedStyleState }\n\t\t\t\t\thasSelectedStyleState={ hasSelectedStyleState }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t{ ( featuredImage || isDescendentOfQueryLoop || ! postId ) && (\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tisLink: false,\n\t\t\t\t\t\t\t\tlinkTarget: '_self',\n\t\t\t\t\t\t\t\trel: '',\n\t\t\t\t\t\t\t\tsizeSlug: DEFAULT_MEDIA_SIZE_SLUG,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\tpostType?.labels?.singular_name\n\t\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"post\".\n\t\t\t\t\t\t\t\t\t\t\t__( 'Link to %s' ),\n\t\t\t\t\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: __( 'Link to post' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\thasValue={ () => !! isLink }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tisLink: false,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Make image a link' ) }\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( { isLink: ! isLink } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ isLink }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\n\t\t\t\t\t\t{ isLink && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t\thasValue={ () => '_self' !== linkTarget }\n\t\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlinkTarget: '_self',\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\t<ToggleControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\tlinkTarget: value\n\t\t\t\t\t\t\t\t\t\t\t\t? '_blank'\n\t\t\t\t\t\t\t\t\t\t\t\t: '_self',\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\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ isLink && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\tlabel={ __( 'Link relation' ) }\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t\thasValue={ () => !! rel }\n\t\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\trel: '',\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\t<TextControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Link relation' ) }\n\t\t\t\t\t\t\t\t\thelp={ createInterpolateElement(\n\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t'The <a>Link Relation</a> attribute defines the relationship between a linked resource and the current document.'\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ta: (\n\t\t\t\t\t\t\t\t\t\t\t\t<ExternalLink href=\"https://developer.mozilla.org/docs/Web/HTML/Attributes/rel\" />\n\t\t\t\t\t\t\t\t\t\t\t),\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\tvalue={ rel }\n\t\t\t\t\t\t\t\t\tonChange={ ( newRel ) =>\n\t\t\t\t\t\t\t\t\t\tsetAttributes( { rel: newRel } )\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</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ !! media && (\n\t\t\t\t\t\t\t<FeaturedImageResolutionTool\n\t\t\t\t\t\t\t\timage={ media }\n\t\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\t\tonChange={ ( nextSizeSlug ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( { sizeSlug: nextSizeSlug } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t</>\n\t);\n\n\tlet image;\n\n\t/**\n\t * A Post Featured Image block should not have image replacement\n\t * or upload options in the following cases:\n\t * - Is placed in a Query Loop. This is a conscious decision to\n\t * prevent content editing of different posts in Query Loop, and\n\t * this could change in the future.\n\t * - Is in a context where it does not have a postId (for example\n\t * in a template or template part).\n\t */\n\tif ( ! featuredImage && ( isDescendentOfQueryLoop || ! postId ) ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ controls }\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t{ !! isLink ? (\n\t\t\t\t\t\t<a href={ postPermalink } target={ linkTarget }>\n\t\t\t\t\t\t\t{ placeholder() }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tplaceholder()\n\t\t\t\t\t) }\n\t\t\t\t\t<Overlay\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst label = __( 'Add a featured image' );\n\tconst imageStyles = {\n\t\t...borderProps.style,\n\t\t...shadowProps.style,\n\t\taspectRatio: aspectRatioStyle,\n\t\theight: hasDimensionValue( height )\n\t\t\t? height\n\t\t\t: hasDimensionValue( width ) && 'auto',\n\t\twidth: hasDimensionValue( width ) ? width : !! aspectRatio && '100%',\n\t\tobjectFit: !! ( height || aspectRatio ) && scale,\n\t};\n\n\t/**\n\t * When the post featured image block is placed in a context where:\n\t * - It has a postId (for example in a single post)\n\t * - It is not inside a query loop\n\t * - It has no image assigned yet\n\t * Then display the placeholder with the image upload option.\n\t */\n\tif ( ! featuredImage && ! temporaryURL ) {\n\t\timage = (\n\t\t\t<MediaPlaceholder\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tmediaLibraryButton={ ( { open } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\ttooltipPosition=\"top center\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\topen();\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} }\n\t\t\t/>\n\t\t);\n\t} else {\n\t\t// We have a Featured image so show a Placeholder if is loading.\n\t\timage =\n\t\t\t! media && ! temporaryURL ? (\n\t\t\t\tplaceholder()\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<img\n\t\t\t\t\t\tclassName={ borderProps.className }\n\t\t\t\t\t\tsrc={ temporaryURL || mediaUrl }\n\t\t\t\t\t\talt={\n\t\t\t\t\t\t\tmedia && media?.alt_text\n\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: The image's alt text.\n\t\t\t\t\t\t\t\t\t\t__( 'Featured image: %s' ),\n\t\t\t\t\t\t\t\t\t\tmedia.alt_text\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: __( 'Featured image' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t/>\n\t\t\t\t\t{ temporaryURL && <Spinner /> }\n\t\t\t\t</>\n\t\t\t);\n\t}\n\n\t/**\n\t * When the post featured image block:\n\t * - Has an image assigned\n\t * - Is not inside a query loop\n\t * Then display the image and the image replacement option.\n\t */\n\treturn (\n\t\t<>\n\t\t\t{ ! temporaryURL && controls }\n\t\t\t{ !! media && ! isDescendentOfQueryLoop && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\tmediaId={ featuredImage }\n\t\t\t\t\t\tmediaURL={ mediaUrl }\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t\tonReset={ onResetImage }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t{ /* Wrap the image in an <a> to pick up the theme's inherited link styles. Never wrap the placeholder, since its buttons must not sit inside an anchor. */ }\n\t\t\t\t{ !! isLink && ( featuredImage || temporaryURL ) ? (\n\t\t\t\t\t<a href={ postPermalink } target={ linkTarget }>\n\t\t\t\t\t\t{ image }\n\t\t\t\t\t</a>\n\t\t\t\t) : (\n\t\t\t\t\timage\n\t\t\t\t) }\n\t\t\t\t<Overlay\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorPrivateApis", "blockEditorStore", "coreStore", "clsx", "useBorderProps", "getShadowClassesAndStyles", "noticesStore", "OverlayControls", "DimensionControls", "ToolsPanel", "ToolsPanelItem", "Overlay"]
7
7
  }
@@ -46,6 +46,10 @@
46
46
  "link": true
47
47
  }
48
48
  },
49
+ "dimensions": {
50
+ "minHeight": true,
51
+ "minWidth": true
52
+ },
49
53
  "shadow": true,
50
54
  "spacing": {
51
55
  "margin": true,
@@ -35,6 +35,10 @@
35
35
  "text": true
36
36
  }
37
37
  },
38
+ "dimensions": {
39
+ "minHeight": true,
40
+ "minWidth": true
41
+ },
38
42
  "html": false,
39
43
  "shadow": true,
40
44
  "spacing": {
@@ -60,6 +60,10 @@
60
60
  "link": true
61
61
  }
62
62
  },
63
+ "dimensions": {
64
+ "minHeight": true,
65
+ "minWidth": true
66
+ },
63
67
  "shadow": true,
64
68
  "spacing": {
65
69
  "margin": true,
@@ -30,6 +30,10 @@
30
30
  "text": true
31
31
  }
32
32
  },
33
+ "dimensions": {
34
+ "minHeight": true,
35
+ "minWidth": true
36
+ },
33
37
  "shadow": true,
34
38
  "spacing": {
35
39
  "padding": true,
@@ -42,7 +42,8 @@
42
42
  }
43
43
  },
44
44
  "dimensions": {
45
- "minHeight": true
45
+ "minHeight": true,
46
+ "minWidth": true
46
47
  },
47
48
  "shadow": true,
48
49
  "spacing": {
@@ -24,6 +24,10 @@
24
24
  "heading": true,
25
25
  "button": true
26
26
  },
27
+ "dimensions": {
28
+ "minHeight": true,
29
+ "minWidth": true
30
+ },
27
31
  "spacing": {
28
32
  "padding": true,
29
33
  "margin": true,
@@ -44,6 +44,11 @@
44
44
  "link": true
45
45
  }
46
46
  },
47
+ "spacing": {
48
+ "padding": true,
49
+ "margin": true,
50
+ "blockGap": true
51
+ },
47
52
  "layout": {
48
53
  "allowSwitching": false,
49
54
  "allowInheriting": false,
@@ -64,6 +69,18 @@
64
69
  "fontSize": true
65
70
  }
66
71
  },
72
+ "__experimentalBorder": {
73
+ "color": true,
74
+ "radius": true,
75
+ "style": true,
76
+ "width": true,
77
+ "__experimentalDefaultControls": {
78
+ "color": false,
79
+ "radius": false,
80
+ "style": false,
81
+ "width": false
82
+ }
83
+ },
67
84
  "interactivity": {
68
85
  "clientNavigation": true
69
86
  }
@@ -27,6 +27,10 @@
27
27
  "margin": true,
28
28
  "padding": true
29
29
  },
30
+ "dimensions": {
31
+ "minHeight": true,
32
+ "minWidth": true
33
+ },
30
34
  "color": {
31
35
  "gradients": true,
32
36
  "__experimentalDefaultControls": {
@@ -53,6 +53,7 @@
53
53
  },
54
54
  "dimensions": {
55
55
  "minHeight": true,
56
+ "minWidth": true,
56
57
  "__experimentalDefaultControls": {
57
58
  "minHeight": false
58
59
  }
@@ -76,6 +77,7 @@
76
77
  "gradients": true,
77
78
  "heading": true,
78
79
  "link": true,
80
+ "button": true,
79
81
  "__experimentalDefaultControls": {
80
82
  "background": true,
81
83
  "text": true
@@ -43,6 +43,10 @@
43
43
  "textDecoration": true
44
44
  }
45
45
  },
46
+ "dimensions": {
47
+ "minHeight": true,
48
+ "minWidth": true
49
+ },
46
50
  "spacing": {
47
51
  "margin": [ "top", "bottom" ],
48
52
  "padding": true,
@@ -53,6 +57,7 @@
53
57
  "__experimentalBorder": {
54
58
  "color": true,
55
59
  "radius": true,
60
+ "style": true,
56
61
  "width": true,
57
62
  "__experimentalDefaultControls": {
58
63
  "width": true
@@ -70,6 +70,10 @@
70
70
  "margin": false
71
71
  }
72
72
  },
73
+ "dimensions": {
74
+ "minHeight": true,
75
+ "minWidth": true
76
+ },
73
77
  "shadow": true,
74
78
  "background": {
75
79
  "backgroundImage": true,
@@ -87,7 +87,8 @@
87
87
  }
88
88
  },
89
89
  "spacing": {
90
- "margin": true
90
+ "margin": true,
91
+ "padding": true
91
92
  },
92
93
  "html": false
93
94
  },
@@ -44,6 +44,10 @@
44
44
  }
45
45
  },
46
46
  "contentRole": true,
47
+ "dimensions": {
48
+ "minHeight": true,
49
+ "minWidth": true
50
+ },
47
51
  "spacing": {
48
52
  "margin": true,
49
53
  "padding": true,
@@ -47,6 +47,10 @@
47
47
  "link": true
48
48
  }
49
49
  },
50
+ "dimensions": {
51
+ "minHeight": true,
52
+ "minWidth": true
53
+ },
50
54
  "spacing": {
51
55
  "padding": true,
52
56
  "margin": true,
@@ -98,6 +98,7 @@
98
98
  "style": true
99
99
  }
100
100
  },
101
+ "shadow": true,
101
102
  "contentRole": true,
102
103
  "listView": true
103
104
  },
@@ -65,10 +65,14 @@
65
65
  "padding": true,
66
66
  "blockGap": true
67
67
  }
68
+ },
69
+ "shadow": {
70
+ "__experimentalSkipSerialization": true
68
71
  }
69
72
  },
70
73
  "selectors": {
71
74
  "border": ".wp-block-tab-list button",
75
+ "shadow": ".wp-block-tab-list button",
72
76
  "color": {
73
77
  "background": ".wp-block-tab-list button",
74
78
  "text": ".wp-block-tab-list button"
@@ -55,6 +55,7 @@ function Edit({
55
55
  const colorProps = (0, import_block_editor.__experimentalUseColorProps)(attributes);
56
56
  const borderProps = (0, import_block_editor.__experimentalUseBorderProps)(attributes);
57
57
  const spacingProps = (0, import_block_editor.__experimentalGetSpacingClassesAndStyles)(attributes);
58
+ const shadowProps = (0, import_block_editor.__experimentalGetShadowClassesAndStyles)(attributes);
58
59
  const dropdownMenuProps = (0, import_hooks.useToolsPanelDropdownMenuProps)();
59
60
  const { tabsClientId, tabPanels, editorActiveTabIndex, activeTabIndex } = (0, import_data.useSelect)(
60
61
  (select) => {
@@ -142,7 +143,8 @@ function Edit({
142
143
  const buttonStyle = {
143
144
  ...colorProps.style,
144
145
  ...borderProps.style,
145
- ...spacingProps.style
146
+ ...spacingProps.style,
147
+ ...shadowProps.style
146
148
  };
147
149
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
148
150
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.InspectorControls, { group: "settings", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tab-list/edit.jsx"],
4
- "sourcesContent": ["import clsx from 'clsx';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tRichText,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalUseColorProps as useColorProps,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n} from '@wordpress/block-editor';\nimport {\n\tTextControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { useEffect, useMemo, useRef } from '@wordpress/element';\nimport TabToolbarControls from '../tabs/tab-toolbar-controls';\nimport TabMovers from './tab-movers';\nimport useTabActions from '../tabs/use-tab-actions';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst EMPTY_ARRAY = [];\n\nfunction Edit( {\n\tattributes,\n\tclientId,\n\tsetAttributes,\n\t__unstableLayoutClassNames: layoutClassNames,\n} ) {\n\tconst { ariaLabel } = attributes;\n\n\tconst colorProps = useColorProps( attributes );\n\tconst borderProps = useBorderProps( attributes );\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tconst { tabsClientId, tabPanels, editorActiveTabIndex, activeTabIndex } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { getBlockRootClientId, getBlockAttributes, getBlocks } =\n\t\t\t\t\tselect( blockEditorStore );\n\n\t\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\t\tconst tabsAttributes = getBlockAttributes( rootClientId );\n\t\t\t\tconst tabPanelsBlock = getBlocks( rootClientId )?.find(\n\t\t\t\t\t( block ) => block.name === 'core/tab-panels'\n\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\ttabsClientId: rootClientId,\n\t\t\t\t\ttabPanels: tabPanelsBlock?.innerBlocks ?? EMPTY_ARRAY,\n\t\t\t\t\teditorActiveTabIndex: tabsAttributes?.editorActiveTabIndex,\n\t\t\t\t\tactiveTabIndex: tabsAttributes?.activeTabIndex ?? 0,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\t);\n\tconst registry = useRegistry();\n\tconst { isBlockSelected, hasSelectedInnerBlock } =\n\t\tuseSelect( blockEditorStore );\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tselectBlock,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\tconst { insertTab, removeTab } = useTabActions( tabsClientId );\n\n\tconst effectiveActiveIndex = editorActiveTabIndex ?? activeTabIndex;\n\tconst tabsList = useMemo(\n\t\t() =>\n\t\t\ttabPanels.map( ( tab ) => ( {\n\t\t\t\tlabel: tab.attributes.label || '',\n\t\t\t\tclientId: tab.clientId,\n\t\t\t} ) ),\n\t\t[ tabPanels ]\n\t);\n\n\tfunction selectTabPanel( tabIndex ) {\n\t\tif ( tabsClientId && tabIndex !== effectiveActiveIndex ) {\n\t\t\t// Batch the selection and index update so the sync effect in\n\t\t\t// the tab-panel block can't revert the switch from a stale\n\t\t\t// inner-block selection in the previously active panel.\n\t\t\tregistry.batch( () => {\n\t\t\t\tselectBlock( clientId );\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\t\t\teditorActiveTabIndex: tabIndex,\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction handleLabelChange( tabIndex, newLabel ) {\n\t\tconst tab = tabsList[ tabIndex ];\n\t\tif ( tab?.clientId ) {\n\t\t\tupdateBlockAttributes( tab.clientId, { label: newLabel } );\n\t\t}\n\t}\n\n\tconst menuRef = useRef();\n\tconst prevTabCountRef = useRef( tabsList.length );\n\n\t// When tabs are added or removed, focus the appropriate button.\n\tuseEffect( () => {\n\t\tconst prevCount = prevTabCountRef.current;\n\t\tprevTabCountRef.current = tabsList.length;\n\n\t\tif ( ! menuRef.current || tabsList.length === prevCount ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Only move focus during active editing, not external data changes.\n\t\tif (\n\t\t\t! isBlockSelected( tabsClientId ) &&\n\t\t\t! hasSelectedInnerBlock( tabsClientId, true )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst focusButtonAt = ( index ) => {\n\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\tconst button =\n\t\t\t\t\tmenuRef.current?.querySelectorAll( 'button' )?.[ index ];\n\t\t\t\t(\n\t\t\t\t\tbutton?.querySelector( '[contenteditable]' ) ?? button\n\t\t\t\t)?.focus();\n\t\t\t} );\n\t\t};\n\n\t\tfocusButtonAt( effectiveActiveIndex );\n\t}, [\n\t\teffectiveActiveIndex,\n\t\thasSelectedInnerBlock,\n\t\tisBlockSelected,\n\t\ttabsClientId,\n\t\ttabsList.length,\n\t] );\n\n\tconst blockProps = useBlockProps( {\n\t\trole: 'tablist',\n\t\tref: menuRef,\n\t\t// Applied manually since this block has no inner blocks for the layout\n\t\t// support to add its container classes to.\n\t\tclassName: layoutClassNames,\n\t} );\n\n\tconst buttonClassName = clsx( colorProps.className, borderProps.className );\n\n\tconst buttonStyle = {\n\t\t...colorProps.style,\n\t\t...borderProps.style,\n\t\t...spacingProps.style,\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"settings\">\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tariaLabel: undefined,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! ariaLabel }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { ariaLabel: undefined } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Briefly describe this tab section for screen reader users. Examples: Event information, Product details, and Account settings.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ ariaLabel || '' }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tariaLabel: value || undefined,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<TabMovers tabsClientId={ tabsClientId } />\n\t\t\t<TabToolbarControls tabsClientId={ tabsClientId } />\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ tabsList.map( ( tab, index ) => {\n\t\t\t\t\tconst isActive = index === effectiveActiveIndex;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={ tab.clientId || index }\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\taria-selected={ isActive }\n\t\t\t\t\t\t\tclassName={ buttonClassName || undefined }\n\t\t\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\t\t\t// Activate the matching panel whenever this tab\n\t\t\t\t\t\t\t// receives focus — whether from a click or the caret\n\t\t\t\t\t\t\t// moving into the label via the keyboard.\n\t\t\t\t\t\t\tonFocus={ () => {\n\t\t\t\t\t\t\t\tselectTabPanel( index );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\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\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Tab title' ) }\n\t\t\t\t\t\t\t\tvalue={ tab.label }\n\t\t\t\t\t\t\t\tonChange={ ( newLabel ) =>\n\t\t\t\t\t\t\t\t\thandleLabelChange( index, newLabel )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\t\t\tinsertTab( index + 1 )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonRemove={ () => removeTab( index ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default Edit;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AACjB,kBAAmB;AACnB,0BAQO;AACP,wBAIO;AACP,kBAAoD;AACpD,qBAA2C;AAC3C,kCAA+B;AAC/B,wBAAsB;AACtB,6BAA0B;AAC1B,mBAA+C;AAwI7C;AAtIF,IAAM,cAAc,CAAC;AAErB,SAAS,KAAM;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,4BAA4B;AAC7B,GAAI;AACH,QAAM,EAAE,UAAU,IAAI;AAEtB,QAAM,iBAAa,oBAAAA,6BAAe,UAAW;AAC7C,QAAM,kBAAc,oBAAAC,8BAAgB,UAAW;AAC/C,QAAM,mBAAe,oBAAAC,0CAA4B,UAAW;AAC5D,QAAM,wBAAoB,6CAA+B;AAEzD,QAAM,EAAE,cAAc,WAAW,sBAAsB,eAAe,QACrE;AAAA,IACC,CAAE,WAAY;AACb,YAAM,EAAE,sBAAsB,oBAAoB,UAAU,IAC3D,OAAQ,oBAAAC,KAAiB;AAE1B,YAAM,eAAe,qBAAsB,QAAS;AACpD,YAAM,iBAAiB,mBAAoB,YAAa;AACxD,YAAM,iBAAiB,UAAW,YAAa,GAAG;AAAA,QACjD,CAAE,UAAW,MAAM,SAAS;AAAA,MAC7B;AAEA,aAAO;AAAA,QACN,cAAc;AAAA,QACd,WAAW,gBAAgB,eAAe;AAAA,QAC1C,sBAAsB,gBAAgB;AAAA,QACtC,gBAAgB,gBAAgB,kBAAkB;AAAA,MACnD;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AACD,QAAM,eAAW,yBAAY;AAC7B,QAAM,EAAE,iBAAiB,sBAAsB,QAC9C,uBAAW,oBAAAA,KAAiB;AAC7B,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI,yBAAa,oBAAAA,KAAiB;AAClC,QAAM,EAAE,WAAW,UAAU,QAAI,uBAAAC,SAAe,YAAa;AAE7D,QAAM,uBAAuB,wBAAwB;AACrD,QAAM,eAAW;AAAA,IAChB,MACC,UAAU,IAAK,CAAE,SAAW;AAAA,MAC3B,OAAO,IAAI,WAAW,SAAS;AAAA,MAC/B,UAAU,IAAI;AAAA,IACf,EAAI;AAAA,IACL,CAAE,SAAU;AAAA,EACb;AAEA,WAAS,eAAgB,UAAW;AACnC,QAAK,gBAAgB,aAAa,sBAAuB;AAIxD,eAAS,MAAO,MAAM;AACrB,oBAAa,QAAS;AACtB,gDAAwC;AACxC,8BAAuB,cAAc;AAAA,UACpC,sBAAsB;AAAA,QACvB,CAAE;AAAA,MACH,CAAE;AAAA,IACH;AAAA,EACD;AAEA,WAAS,kBAAmB,UAAU,UAAW;AAChD,UAAM,MAAM,SAAU,QAAS;AAC/B,QAAK,KAAK,UAAW;AACpB,4BAAuB,IAAI,UAAU,EAAE,OAAO,SAAS,CAAE;AAAA,IAC1D;AAAA,EACD;AAEA,QAAM,cAAU,uBAAO;AACvB,QAAM,sBAAkB,uBAAQ,SAAS,MAAO;AAGhD,gCAAW,MAAM;AAChB,UAAM,YAAY,gBAAgB;AAClC,oBAAgB,UAAU,SAAS;AAEnC,QAAK,CAAE,QAAQ,WAAW,SAAS,WAAW,WAAY;AACzD;AAAA,IACD;AAGA,QACC,CAAE,gBAAiB,YAAa,KAChC,CAAE,sBAAuB,cAAc,IAAK,GAC3C;AACD;AAAA,IACD;AAEA,UAAM,gBAAgB,CAAE,UAAW;AAClC,aAAO,sBAAuB,MAAM;AACnC,cAAM,SACL,QAAQ,SAAS,iBAAkB,QAAS,IAAK,KAAM;AACxD,SACC,QAAQ,cAAe,mBAAoB,KAAK,SAC9C,MAAM;AAAA,MACV,CAAE;AAAA,IACH;AAEA,kBAAe,oBAAqB;AAAA,EACrC,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EACV,CAAE;AAEF,QAAM,iBAAa,mCAAe;AAAA,IACjC,MAAM;AAAA,IACN,KAAK;AAAA;AAAA;AAAA,IAGL,WAAW;AAAA,EACZ,CAAE;AAEF,QAAM,sBAAkB,YAAAC,SAAM,WAAW,WAAW,YAAY,SAAU;AAE1E,QAAM,cAAc;AAAA,IACnB,GAAG,WAAW;AAAA,IACd,GAAG,YAAY;AAAA,IACf,GAAG,aAAa;AAAA,EACjB;AAEA,SACC,4EACC;AAAA,gDAAC,yCAAkB,OAAM,YACxB;AAAA,MAAC,kBAAAC;AAAA,MAAA;AAAA,QACA,WAAQ,gBAAI,UAAW;AAAA,QACvB,UAAW,MACV,cAAe;AAAA,UACd,WAAW;AAAA,QACZ,CAAE;AAAA,QAEH;AAAA,QAEA;AAAA,UAAC,kBAAAC;AAAA,UAAA;AAAA,YACA,WAAQ,gBAAI,OAAQ;AAAA,YACpB,kBAAgB;AAAA,YAChB,UAAW,MAAM,CAAC,CAAE;AAAA,YACpB,YAAa,MACZ,cAAe,EAAE,WAAW,OAAU,CAAE;AAAA,YAGzC;AAAA,cAAC;AAAA;AAAA,gBACA,WAAQ,gBAAI,OAAQ;AAAA,gBACpB,UAAO;AAAA,kBACN;AAAA,gBACD;AAAA,gBACA,OAAQ,aAAa;AAAA,gBACrB,UAAW,CAAE,UACZ,cAAe;AAAA,kBACd,WAAW,SAAS;AAAA,gBACrB,CAAE;AAAA;AAAA,YAEJ;AAAA;AAAA,QACD;AAAA;AAAA,IACD,GACD;AAAA,IACA,4CAAC,kBAAAC,SAAA,EAAU,cAA8B;AAAA,IACzC,4CAAC,4BAAAC,SAAA,EAAmB,cAA8B;AAAA,IAClD,4CAAC,SAAM,GAAG,YACP,mBAAS,IAAK,CAAE,KAAK,UAAW;AACjC,YAAM,WAAW,UAAU;AAC3B,aACC;AAAA,QAAC;AAAA;AAAA,UAEA,MAAK;AAAA,UACL,MAAK;AAAA,UACL,iBAAgB;AAAA,UAChB,WAAY,mBAAmB;AAAA,UAC/B,OAAQ;AAAA,UACR,UAAW;AAAA,UAIX,SAAU,MAAM;AACf,2BAAgB,KAAM;AAAA,UACvB;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACA,SAAQ;AAAA,cACR,8BAA4B;AAAA,cAC5B,iBAAc,gBAAI,WAAY;AAAA,cAC9B,OAAQ,IAAI;AAAA,cACZ,UAAW,CAAE,aACZ,kBAAmB,OAAO,QAAS;AAAA,cAEpC,wBAAyB,MACxB,UAAW,QAAQ,CAAE;AAAA,cAEtB,UAAW,MAAM,UAAW,KAAM;AAAA;AAAA,UACnC;AAAA;AAAA,QA1BM,IAAI,YAAY;AAAA,MA2BvB;AAAA,IAEF,CAAE,GACH;AAAA,KACD;AAEF;AAEA,IAAO,eAAQ;",
6
- "names": ["useColorProps", "useBorderProps", "getSpacingClassesAndStyles", "blockEditorStore", "useTabActions", "clsx", "ToolsPanel", "ToolsPanelItem", "TabMovers", "TabToolbarControls"]
4
+ "sourcesContent": ["import clsx from 'clsx';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tRichText,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalUseColorProps as useColorProps,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n} from '@wordpress/block-editor';\nimport {\n\tTextControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { useEffect, useMemo, useRef } from '@wordpress/element';\nimport TabToolbarControls from '../tabs/tab-toolbar-controls';\nimport TabMovers from './tab-movers';\nimport useTabActions from '../tabs/use-tab-actions';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst EMPTY_ARRAY = [];\n\nfunction Edit( {\n\tattributes,\n\tclientId,\n\tsetAttributes,\n\t__unstableLayoutClassNames: layoutClassNames,\n} ) {\n\tconst { ariaLabel } = attributes;\n\n\tconst colorProps = useColorProps( attributes );\n\tconst borderProps = useBorderProps( attributes );\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tconst { tabsClientId, tabPanels, editorActiveTabIndex, activeTabIndex } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { getBlockRootClientId, getBlockAttributes, getBlocks } =\n\t\t\t\t\tselect( blockEditorStore );\n\n\t\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\t\tconst tabsAttributes = getBlockAttributes( rootClientId );\n\t\t\t\tconst tabPanelsBlock = getBlocks( rootClientId )?.find(\n\t\t\t\t\t( block ) => block.name === 'core/tab-panels'\n\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\ttabsClientId: rootClientId,\n\t\t\t\t\ttabPanels: tabPanelsBlock?.innerBlocks ?? EMPTY_ARRAY,\n\t\t\t\t\teditorActiveTabIndex: tabsAttributes?.editorActiveTabIndex,\n\t\t\t\t\tactiveTabIndex: tabsAttributes?.activeTabIndex ?? 0,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\t);\n\tconst registry = useRegistry();\n\tconst { isBlockSelected, hasSelectedInnerBlock } =\n\t\tuseSelect( blockEditorStore );\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tselectBlock,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\tconst { insertTab, removeTab } = useTabActions( tabsClientId );\n\n\tconst effectiveActiveIndex = editorActiveTabIndex ?? activeTabIndex;\n\tconst tabsList = useMemo(\n\t\t() =>\n\t\t\ttabPanels.map( ( tab ) => ( {\n\t\t\t\tlabel: tab.attributes.label || '',\n\t\t\t\tclientId: tab.clientId,\n\t\t\t} ) ),\n\t\t[ tabPanels ]\n\t);\n\n\tfunction selectTabPanel( tabIndex ) {\n\t\tif ( tabsClientId && tabIndex !== effectiveActiveIndex ) {\n\t\t\t// Batch the selection and index update so the sync effect in\n\t\t\t// the tab-panel block can't revert the switch from a stale\n\t\t\t// inner-block selection in the previously active panel.\n\t\t\tregistry.batch( () => {\n\t\t\t\tselectBlock( clientId );\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\t\t\teditorActiveTabIndex: tabIndex,\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction handleLabelChange( tabIndex, newLabel ) {\n\t\tconst tab = tabsList[ tabIndex ];\n\t\tif ( tab?.clientId ) {\n\t\t\tupdateBlockAttributes( tab.clientId, { label: newLabel } );\n\t\t}\n\t}\n\n\tconst menuRef = useRef();\n\tconst prevTabCountRef = useRef( tabsList.length );\n\n\t// When tabs are added or removed, focus the appropriate button.\n\tuseEffect( () => {\n\t\tconst prevCount = prevTabCountRef.current;\n\t\tprevTabCountRef.current = tabsList.length;\n\n\t\tif ( ! menuRef.current || tabsList.length === prevCount ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Only move focus during active editing, not external data changes.\n\t\tif (\n\t\t\t! isBlockSelected( tabsClientId ) &&\n\t\t\t! hasSelectedInnerBlock( tabsClientId, true )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst focusButtonAt = ( index ) => {\n\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\tconst button =\n\t\t\t\t\tmenuRef.current?.querySelectorAll( 'button' )?.[ index ];\n\t\t\t\t(\n\t\t\t\t\tbutton?.querySelector( '[contenteditable]' ) ?? button\n\t\t\t\t)?.focus();\n\t\t\t} );\n\t\t};\n\n\t\tfocusButtonAt( effectiveActiveIndex );\n\t}, [\n\t\teffectiveActiveIndex,\n\t\thasSelectedInnerBlock,\n\t\tisBlockSelected,\n\t\ttabsClientId,\n\t\ttabsList.length,\n\t] );\n\n\tconst blockProps = useBlockProps( {\n\t\trole: 'tablist',\n\t\tref: menuRef,\n\t\t// Applied manually since this block has no inner blocks for the layout\n\t\t// support to add its container classes to.\n\t\tclassName: layoutClassNames,\n\t} );\n\n\tconst buttonClassName = clsx( colorProps.className, borderProps.className );\n\n\tconst buttonStyle = {\n\t\t...colorProps.style,\n\t\t...borderProps.style,\n\t\t...spacingProps.style,\n\t\t...shadowProps.style,\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"settings\">\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tariaLabel: undefined,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! ariaLabel }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { ariaLabel: undefined } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Briefly describe this tab section for screen reader users. Examples: Event information, Product details, and Account settings.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ ariaLabel || '' }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tariaLabel: value || undefined,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<TabMovers tabsClientId={ tabsClientId } />\n\t\t\t<TabToolbarControls tabsClientId={ tabsClientId } />\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ tabsList.map( ( tab, index ) => {\n\t\t\t\t\tconst isActive = index === effectiveActiveIndex;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={ tab.clientId || index }\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\taria-selected={ isActive }\n\t\t\t\t\t\t\tclassName={ buttonClassName || undefined }\n\t\t\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\t\t\t// Activate the matching panel whenever this tab\n\t\t\t\t\t\t\t// receives focus — whether from a click or the caret\n\t\t\t\t\t\t\t// moving into the label via the keyboard.\n\t\t\t\t\t\t\tonFocus={ () => {\n\t\t\t\t\t\t\t\tselectTabPanel( index );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\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\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Tab title' ) }\n\t\t\t\t\t\t\t\tvalue={ tab.label }\n\t\t\t\t\t\t\t\tonChange={ ( newLabel ) =>\n\t\t\t\t\t\t\t\t\thandleLabelChange( index, newLabel )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\t\t\tinsertTab( index + 1 )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonRemove={ () => removeTab( index ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default Edit;\n"],
5
+ "mappings": "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",
6
+ "names": ["useColorProps", "useBorderProps", "getSpacingClassesAndStyles", "getShadowClassesAndStyles", "blockEditorStore", "useTabActions", "clsx", "ToolsPanel", "ToolsPanelItem", "TabMovers", "TabToolbarControls"]
7
7
  }
@@ -44,11 +44,13 @@ function save({ attributes }) {
44
44
  const colorProps = (0, import_block_editor.__experimentalGetColorClassesAndStyles)(attributes);
45
45
  const borderProps = (0, import_block_editor.__experimentalGetBorderClassesAndStyles)(attributes);
46
46
  const spacingProps = (0, import_block_editor.__experimentalGetSpacingClassesAndStyles)(attributes);
47
+ const shadowProps = (0, import_block_editor.__experimentalGetShadowClassesAndStyles)(attributes);
47
48
  const buttonClassName = (0, import_clsx.default)(colorProps.className, borderProps.className);
48
49
  const buttonStyle = {
49
50
  ...colorProps.style,
50
51
  ...borderProps.style,
51
- ...spacingProps.style
52
+ ...spacingProps.style,
53
+ ...shadowProps.style
52
54
  };
53
55
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ...blockProps, children: tabs.map((tab, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
54
56
  import_block_editor.RichText.Content,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tab-list/save.jsx"],
4
- "sourcesContent": ["import clsx from 'clsx';\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { tabs } = attributes;\n\tconst blockProps = useBlockProps.save( {\n\t\trole: 'tablist',\n\t} );\n\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\tconst borderProps = getBorderClassesAndStyles( attributes );\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\n\tconst buttonClassName = clsx( colorProps.className, borderProps.className );\n\n\tconst buttonStyle = {\n\t\t...colorProps.style,\n\t\t...borderProps.style,\n\t\t...spacingProps.style,\n\t};\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ tabs.map( ( tab, index ) => (\n\t\t\t\t<RichText.Content\n\t\t\t\t\tkey={ index }\n\t\t\t\t\tclassName={ buttonClassName || undefined }\n\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\ttagName=\"button\"\n\t\t\t\t\tvalue={ tab.label }\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\trole=\"tab\"\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AACjB,0BAMO;AAuBH;AArBW,SAAR,KAAuB,EAAE,WAAW,GAAI;AAC9C,QAAM,EAAE,KAAK,IAAI;AACjB,QAAM,aAAa,kCAAc,KAAM;AAAA,IACtC,MAAM;AAAA,EACP,CAAE;AAEF,QAAM,iBAAa,oBAAAA,wCAA0B,UAAW;AACxD,QAAM,kBAAc,oBAAAC,yCAA2B,UAAW;AAC1D,QAAM,mBAAe,oBAAAC,0CAA4B,UAAW;AAE5D,QAAM,sBAAkB,YAAAC,SAAM,WAAW,WAAW,YAAY,SAAU;AAE1E,QAAM,cAAc;AAAA,IACnB,GAAG,WAAW;AAAA,IACd,GAAG,YAAY;AAAA,IACf,GAAG,aAAa;AAAA,EACjB;AAEA,SACC,4CAAC,SAAM,GAAG,YACP,eAAK,IAAK,CAAE,KAAK,UAClB;AAAA,IAAC,6BAAS;AAAA,IAAT;AAAA,MAEA,WAAY,mBAAmB;AAAA,MAC/B,OAAQ;AAAA,MACR,SAAQ;AAAA,MACR,OAAQ,IAAI;AAAA,MACZ,MAAK;AAAA,MACL,MAAK;AAAA;AAAA,IANC;AAAA,EAOP,CACC,GACH;AAEF;",
6
- "names": ["getColorClassesAndStyles", "getBorderClassesAndStyles", "getSpacingClassesAndStyles", "clsx"]
4
+ "sourcesContent": ["import clsx from 'clsx';\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { tabs } = attributes;\n\tconst blockProps = useBlockProps.save( {\n\t\trole: 'tablist',\n\t} );\n\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\tconst borderProps = getBorderClassesAndStyles( attributes );\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\n\tconst buttonClassName = clsx( colorProps.className, borderProps.className );\n\n\tconst buttonStyle = {\n\t\t...colorProps.style,\n\t\t...borderProps.style,\n\t\t...spacingProps.style,\n\t\t...shadowProps.style,\n\t};\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ tabs.map( ( tab, index ) => (\n\t\t\t\t<RichText.Content\n\t\t\t\t\tkey={ index }\n\t\t\t\t\tclassName={ buttonClassName || undefined }\n\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\ttagName=\"button\"\n\t\t\t\t\tvalue={ tab.label }\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\trole=\"tab\"\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AACjB,0BAOO;AAyBH;AAvBW,SAAR,KAAuB,EAAE,WAAW,GAAI;AAC9C,QAAM,EAAE,KAAK,IAAI;AACjB,QAAM,aAAa,kCAAc,KAAM;AAAA,IACtC,MAAM;AAAA,EACP,CAAE;AAEF,QAAM,iBAAa,oBAAAA,wCAA0B,UAAW;AACxD,QAAM,kBAAc,oBAAAC,yCAA2B,UAAW;AAC1D,QAAM,mBAAe,oBAAAC,0CAA4B,UAAW;AAC5D,QAAM,kBAAc,oBAAAC,yCAA2B,UAAW;AAE1D,QAAM,sBAAkB,YAAAC,SAAM,WAAW,WAAW,YAAY,SAAU;AAE1E,QAAM,cAAc;AAAA,IACnB,GAAG,WAAW;AAAA,IACd,GAAG,YAAY;AAAA,IACf,GAAG,aAAa;AAAA,IAChB,GAAG,YAAY;AAAA,EAChB;AAEA,SACC,4CAAC,SAAM,GAAG,YACP,eAAK,IAAK,CAAE,KAAK,UAClB;AAAA,IAAC,6BAAS;AAAA,IAAT;AAAA,MAEA,WAAY,mBAAmB;AAAA,MAC/B,OAAQ;AAAA,MACR,SAAQ;AAAA,MACR,OAAQ,IAAI;AAAA,MACZ,MAAK;AAAA,MACL,MAAK;AAAA;AAAA,IANC;AAAA,EAOP,CACC,GACH;AAEF;",
6
+ "names": ["getColorClassesAndStyles", "getBorderClassesAndStyles", "getSpacingClassesAndStyles", "getShadowClassesAndStyles", "clsx"]
7
7
  }
@@ -36,6 +36,9 @@
36
36
  "spacing": {
37
37
  "padding": true
38
38
  },
39
+ "dimensions": {
40
+ "minHeight": true
41
+ },
39
42
  "typography": {
40
43
  "fontSize": true,
41
44
  "lineHeight": true,
@@ -55,6 +55,9 @@
55
55
  "margin": true,
56
56
  "padding": true
57
57
  },
58
+ "dimensions": {
59
+ "minWidth": true
60
+ },
58
61
  "shadow": true,
59
62
  "typography": {
60
63
  "fontSize": true,
@@ -31,8 +31,13 @@
31
31
  },
32
32
  "shadow": true,
33
33
  "spacing": {
34
+ "margin": true,
34
35
  "padding": true
35
36
  },
37
+ "dimensions": {
38
+ "minHeight": true,
39
+ "minWidth": true
40
+ },
36
41
  "typography": {
37
42
  "fontSize": true,
38
43
  "lineHeight": true,
@@ -26,6 +26,10 @@
26
26
  "text": true
27
27
  }
28
28
  },
29
+ "dimensions": {
30
+ "minHeight": true,
31
+ "minWidth": true
32
+ },
29
33
  "spacing": {
30
34
  "padding": true,
31
35
  "margin": true
@@ -43,9 +43,14 @@
43
43
  "link": true
44
44
  }
45
45
  },
46
+ "dimensions": {
47
+ "minHeight": true,
48
+ "minWidth": true
49
+ },
46
50
  "shadow": true,
47
51
  "spacing": {
48
- "padding": true
52
+ "padding": true,
53
+ "margin": true
49
54
  },
50
55
  "typography": {
51
56
  "fontSize": true,
@@ -43,6 +43,10 @@
43
43
  "fontSize": true
44
44
  }
45
45
  },
46
+ "dimensions": {
47
+ "minHeight": true,
48
+ "minWidth": true
49
+ },
46
50
  "spacing": {
47
51
  "margin": true,
48
52
  "padding": true,
@@ -43,7 +43,7 @@ __export(waveform_utils_exports, {
43
43
  });
44
44
  module.exports = __toCommonJS(waveform_utils_exports);
45
45
  var import_colord = require("colord");
46
- var import_waveform_player = __toESM(require("@arraypress/waveform-player"));
46
+ var import_no_autoinit = __toESM(require("@arraypress/waveform-player/no-autoinit"));
47
47
  var DEFAULT_WAVEFORM_HEIGHT = 100;
48
48
  var DEFAULT_SEEK_LABEL = "Seek";
49
49
  function getComputedStyle(element) {
@@ -407,7 +407,7 @@ function initWaveformPlayer(element, {
407
407
  waveformStyle
408
408
  });
409
409
  element.appendChild(container);
410
- const instance = new import_waveform_player.default(container);
410
+ const instance = new import_no_autoinit.default(container);
411
411
  if (instance.artworkEl) {
412
412
  instance.artworkEl.alt = imageAlt || "";
413
413
  }