@wordpress/block-library 9.48.0 → 9.48.1

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 (519) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/build/columns/transforms.cjs +65 -0
  3. package/build/columns/transforms.cjs.map +2 -2
  4. package/build/gallery/edit.cjs +212 -331
  5. package/build/gallery/edit.cjs.map +2 -2
  6. package/build/gallery/transforms.cjs +43 -0
  7. package/build/gallery/transforms.cjs.map +2 -2
  8. package/build/heading/edit.cjs +0 -1
  9. package/build/heading/edit.cjs.map +2 -2
  10. package/build/list/edit.cjs +1 -8
  11. package/build/list/edit.cjs.map +2 -2
  12. package/build/list/ordered-list-settings.cjs +1 -44
  13. package/build/list/ordered-list-settings.cjs.map +2 -2
  14. package/build/list-item/hooks/use-merge.cjs +47 -24
  15. package/build/list-item/hooks/use-merge.cjs.map +2 -2
  16. package/build/navigation/edit/index.cjs +15 -26
  17. package/build/navigation/edit/index.cjs.map +2 -2
  18. package/build/navigation-link/edit.cjs +0 -1
  19. package/build/navigation-link/edit.cjs.map +2 -2
  20. package/build/navigation-submenu/edit.cjs +2 -1
  21. package/build/navigation-submenu/edit.cjs.map +2 -2
  22. package/build/paragraph/deprecated.cjs +1 -0
  23. package/build/paragraph/deprecated.cjs.map +2 -2
  24. package/build/paragraph/edit.cjs +10 -1
  25. package/build/paragraph/edit.cjs.map +3 -3
  26. package/build/playlist/block.json +12 -0
  27. package/build/playlist/edit.cjs +27 -1
  28. package/build/playlist/edit.cjs.map +2 -2
  29. package/build/playlist/save.cjs +8 -1
  30. package/build/playlist/save.cjs.map +2 -2
  31. package/build/playlist/view.cjs +1 -0
  32. package/build/playlist/view.cjs.map +2 -2
  33. package/build/post-time-to-read/index.cjs +1 -1
  34. package/build/post-time-to-read/index.cjs.map +2 -2
  35. package/build/post-time-to-read/variations.cjs +1 -1
  36. package/build/post-time-to-read/variations.cjs.map +2 -2
  37. package/build/pullquote/edit.cjs +2 -7
  38. package/build/pullquote/edit.cjs.map +2 -2
  39. package/build/quote/edit.cjs +4 -9
  40. package/build/quote/edit.cjs.map +2 -2
  41. package/build/shortcode/transforms.cjs +2 -2
  42. package/build/shortcode/transforms.cjs.map +2 -2
  43. package/build/utils/waveform-player.cjs +42 -9
  44. package/build/utils/waveform-player.cjs.map +2 -2
  45. package/build/utils/waveform-utils.cjs +6 -4
  46. package/build/utils/waveform-utils.cjs.map +2 -2
  47. package/build/video/edit-common-settings.cjs +3 -6
  48. package/build/video/edit-common-settings.cjs.map +2 -2
  49. package/build-module/columns/transforms.mjs +65 -0
  50. package/build-module/columns/transforms.mjs.map +2 -2
  51. package/build-module/gallery/edit.mjs +214 -334
  52. package/build-module/gallery/edit.mjs.map +2 -2
  53. package/build-module/gallery/transforms.mjs +43 -0
  54. package/build-module/gallery/transforms.mjs.map +2 -2
  55. package/build-module/heading/edit.mjs +1 -2
  56. package/build-module/heading/edit.mjs.map +2 -2
  57. package/build-module/list/edit.mjs +2 -9
  58. package/build-module/list/edit.mjs.map +2 -2
  59. package/build-module/list/ordered-list-settings.mjs +1 -45
  60. package/build-module/list/ordered-list-settings.mjs.map +2 -2
  61. package/build-module/list-item/hooks/use-merge.mjs +48 -25
  62. package/build-module/list-item/hooks/use-merge.mjs.map +2 -2
  63. package/build-module/navigation/edit/index.mjs +16 -33
  64. package/build-module/navigation/edit/index.mjs.map +2 -2
  65. package/build-module/navigation-link/edit.mjs +0 -1
  66. package/build-module/navigation-link/edit.mjs.map +2 -2
  67. package/build-module/navigation-submenu/edit.mjs +2 -1
  68. package/build-module/navigation-submenu/edit.mjs.map +2 -2
  69. package/build-module/paragraph/deprecated.mjs +1 -0
  70. package/build-module/paragraph/deprecated.mjs.map +2 -2
  71. package/build-module/paragraph/edit.mjs +12 -2
  72. package/build-module/paragraph/edit.mjs.map +2 -2
  73. package/build-module/playlist/block.json +12 -0
  74. package/build-module/playlist/edit.mjs +27 -1
  75. package/build-module/playlist/edit.mjs.map +2 -2
  76. package/build-module/playlist/save.mjs +8 -1
  77. package/build-module/playlist/save.mjs.map +2 -2
  78. package/build-module/playlist/view.mjs +1 -0
  79. package/build-module/playlist/view.mjs.map +2 -2
  80. package/build-module/post-time-to-read/index.mjs +1 -1
  81. package/build-module/post-time-to-read/index.mjs.map +2 -2
  82. package/build-module/post-time-to-read/variations.mjs +2 -2
  83. package/build-module/post-time-to-read/variations.mjs.map +2 -2
  84. package/build-module/pullquote/edit.mjs +2 -7
  85. package/build-module/pullquote/edit.mjs.map +2 -2
  86. package/build-module/quote/edit.mjs +5 -10
  87. package/build-module/quote/edit.mjs.map +2 -2
  88. package/build-module/shortcode/transforms.mjs +2 -2
  89. package/build-module/shortcode/transforms.mjs.map +2 -2
  90. package/build-module/utils/waveform-player.mjs +44 -11
  91. package/build-module/utils/waveform-player.mjs.map +2 -2
  92. package/build-module/utils/waveform-utils.mjs +6 -4
  93. package/build-module/utils/waveform-utils.mjs.map +2 -2
  94. package/build-module/video/edit-common-settings.mjs +4 -7
  95. package/build-module/video/edit-common-settings.mjs.map +2 -2
  96. package/build-style/comment-template/style-rtl.css +1 -0
  97. package/build-style/comment-template/style.css +1 -0
  98. package/build-style/common-rtl.css +30 -10
  99. package/build-style/common.css +30 -10
  100. package/build-style/cover/style-rtl.css +2 -1
  101. package/build-style/cover/style.css +2 -1
  102. package/build-style/editor-rtl.css +22 -11
  103. package/build-style/editor.css +22 -11
  104. package/build-style/form-input/style-rtl.css +2 -0
  105. package/build-style/form-input/style.css +2 -0
  106. package/build-style/gallery/style-rtl.css +4 -2
  107. package/build-style/gallery/style.css +4 -2
  108. package/build-style/media-text/style-rtl.css +2 -1
  109. package/build-style/media-text/style.css +2 -1
  110. package/build-style/playlist/style-rtl.css +3 -0
  111. package/build-style/playlist/style.css +3 -0
  112. package/build-style/query/editor-rtl.css +8 -4
  113. package/build-style/query/editor.css +8 -4
  114. package/build-style/read-more/style-rtl.css +1 -0
  115. package/build-style/read-more/style.css +1 -0
  116. package/build-style/reset-rtl.css +3 -1
  117. package/build-style/reset.css +3 -1
  118. package/build-style/search/style-rtl.css +3 -1
  119. package/build-style/search/style.css +3 -1
  120. package/build-style/site-logo/editor-rtl.css +2 -1
  121. package/build-style/site-logo/editor.css +2 -1
  122. package/build-style/style-rtl.css +53 -17
  123. package/build-style/style.css +53 -17
  124. package/build-style/tab/style-rtl.css +3 -1
  125. package/build-style/tab/style.css +3 -1
  126. package/build-style/template-part/editor-rtl.css +8 -4
  127. package/build-style/template-part/editor.css +8 -4
  128. package/build-style/video/style-rtl.css +2 -1
  129. package/build-style/video/style.css +2 -1
  130. package/package.json +49 -45
  131. package/src/accordion/README.md +97 -0
  132. package/src/accordion-heading/README.md +81 -0
  133. package/src/accordion-item/README.md +85 -0
  134. package/src/accordion-panel/README.md +74 -0
  135. package/src/archives/README.md +56 -0
  136. package/src/audio/README.md +55 -0
  137. package/src/avatar/README.md +74 -0
  138. package/src/block/README.md +56 -0
  139. package/src/breadcrumbs/README.md +67 -0
  140. package/src/button/README.md +93 -0
  141. package/src/buttons/README.md +80 -0
  142. package/src/calendar/README.md +51 -0
  143. package/src/categories/README.md +69 -0
  144. package/src/code/README.md +55 -0
  145. package/src/column/README.md +72 -0
  146. package/src/columns/README.md +90 -0
  147. package/src/columns/test/transforms.js +164 -0
  148. package/src/columns/transforms.js +74 -0
  149. package/src/comment-author-avatar/README.md +63 -0
  150. package/src/comment-author-name/README.md +67 -0
  151. package/src/comment-content/README.md +61 -0
  152. package/src/comment-date/README.md +67 -0
  153. package/src/comment-edit-link/README.md +67 -0
  154. package/src/comment-reply-link/README.md +63 -0
  155. package/src/comment-template/README.md +60 -0
  156. package/src/comments/README.md +88 -0
  157. package/src/comments-pagination/README.md +77 -0
  158. package/src/comments-pagination-next/README.md +64 -0
  159. package/src/comments-pagination-numbers/README.md +64 -0
  160. package/src/comments-pagination-previous/README.md +64 -0
  161. package/src/comments-title/README.md +70 -0
  162. package/src/common.scss +63 -10
  163. package/src/cover/README.md +111 -0
  164. package/src/details/README.md +65 -0
  165. package/src/embed/README.md +56 -0
  166. package/src/file/README.md +60 -0
  167. package/src/footnotes/README.md +64 -0
  168. package/src/form/README.md +90 -0
  169. package/src/form-input/README.md +74 -0
  170. package/src/form-submission-notification/README.md +50 -0
  171. package/src/form-submit-button/README.md +54 -0
  172. package/src/freeform/README.md +49 -0
  173. package/src/gallery/README.md +115 -0
  174. package/src/gallery/edit.js +213 -350
  175. package/src/gallery/test/transforms.js +155 -0
  176. package/src/gallery/transforms.js +47 -0
  177. package/src/group/README.md +80 -0
  178. package/src/heading/README.md +60 -0
  179. package/src/heading/edit.js +1 -2
  180. package/src/home-link/README.md +66 -0
  181. package/src/home-link/index.php +3 -15
  182. package/src/html/README.md +48 -0
  183. package/src/icon/README.md +63 -0
  184. package/src/image/README.md +102 -0
  185. package/src/image/index.php +4 -4
  186. package/src/latest-comments/README.md +57 -0
  187. package/src/latest-posts/README.md +71 -0
  188. package/src/list/README.md +70 -0
  189. package/src/list/edit.js +2 -9
  190. package/src/list/ordered-list-settings.js +46 -92
  191. package/src/list-item/README.md +71 -0
  192. package/src/list-item/hooks/use-merge.js +53 -46
  193. package/src/loginout/README.md +56 -0
  194. package/src/math/README.md +50 -0
  195. package/src/media-text/README.md +92 -0
  196. package/src/missing/README.md +55 -0
  197. package/src/more/README.md +49 -0
  198. package/src/navigation/README.md +115 -0
  199. package/src/navigation/edit/index.js +10 -30
  200. package/src/navigation-link/README.md +93 -0
  201. package/src/navigation-link/edit.js +0 -1
  202. package/src/navigation-link/index.php +1 -15
  203. package/src/navigation-overlay-close/README.md +48 -0
  204. package/src/navigation-submenu/README.md +84 -0
  205. package/src/navigation-submenu/edit.js +1 -0
  206. package/src/navigation-submenu/index.php +1 -17
  207. package/src/nextpage/README.md +50 -0
  208. package/src/page-list/README.md +84 -0
  209. package/src/page-list/index.php +3 -15
  210. package/src/page-list-item/README.md +77 -0
  211. package/src/paragraph/README.md +70 -0
  212. package/src/paragraph/deprecated.js +1 -0
  213. package/src/paragraph/edit.js +13 -1
  214. package/src/pattern/README.md +45 -0
  215. package/src/playlist/README.md +86 -0
  216. package/src/playlist/block.json +12 -0
  217. package/src/playlist/edit.js +27 -0
  218. package/src/playlist/index.php +10 -3
  219. package/src/playlist/save.js +9 -1
  220. package/src/playlist/style.scss +7 -0
  221. package/src/playlist/view.js +1 -0
  222. package/src/playlist-track/README.md +69 -0
  223. package/src/post-author/README.md +78 -0
  224. package/src/post-author-biography/README.md +59 -0
  225. package/src/post-author-name/README.md +63 -0
  226. package/src/post-author-name/index.php +1 -1
  227. package/src/post-comment/README.md +61 -0
  228. package/src/post-comments-count/README.md +58 -0
  229. package/src/post-comments-form/README.md +59 -0
  230. package/src/post-comments-link/README.md +60 -0
  231. package/src/post-content/README.md +71 -0
  232. package/src/post-date/README.md +65 -0
  233. package/src/post-date/index.php +1 -1
  234. package/src/post-excerpt/README.md +66 -0
  235. package/src/post-featured-image/README.md +85 -0
  236. package/src/post-featured-image/index.php +1 -1
  237. package/src/post-navigation-link/README.md +63 -0
  238. package/src/post-template/README.md +71 -0
  239. package/src/post-terms/README.md +65 -0
  240. package/src/post-time-to-read/README.md +63 -0
  241. package/src/post-time-to-read/index.js +1 -1
  242. package/src/post-time-to-read/variations.js +2 -2
  243. package/src/post-title/README.md +69 -0
  244. package/src/preformatted/README.md +50 -0
  245. package/src/pullquote/README.md +64 -0
  246. package/src/pullquote/edit.js +1 -7
  247. package/src/query/README.md +64 -0
  248. package/src/query-no-results/README.md +65 -0
  249. package/src/query-pagination/README.md +79 -0
  250. package/src/query-pagination-next/README.md +67 -0
  251. package/src/query-pagination-numbers/README.md +65 -0
  252. package/src/query-pagination-previous/README.md +67 -0
  253. package/src/query-title/README.md +65 -0
  254. package/src/query-total/README.md +66 -0
  255. package/src/quote/README.md +75 -0
  256. package/src/quote/edit.js +3 -9
  257. package/src/read-more/README.md +61 -0
  258. package/src/read-more/index.php +2 -2
  259. package/src/rss/README.md +62 -0
  260. package/src/search/README.md +66 -0
  261. package/src/separator/README.md +62 -0
  262. package/src/shortcode/README.md +44 -0
  263. package/src/shortcode/transforms.js +2 -2
  264. package/src/site-logo/README.md +72 -0
  265. package/src/site-tagline/README.md +56 -0
  266. package/src/site-title/README.md +57 -0
  267. package/src/social-link/README.md +64 -0
  268. package/src/social-links/README.md +98 -0
  269. package/src/spacer/README.md +53 -0
  270. package/src/tab/README.md +69 -0
  271. package/src/tab-list/README.md +79 -0
  272. package/src/tab-panel/README.md +75 -0
  273. package/src/tab-panels/README.md +75 -0
  274. package/src/table/README.md +71 -0
  275. package/src/table-of-contents/README.md +61 -0
  276. package/src/tabs/README.md +83 -0
  277. package/src/tag-cloud/README.md +62 -0
  278. package/src/template-part/README.md +48 -0
  279. package/src/term-count/README.md +59 -0
  280. package/src/term-description/README.md +60 -0
  281. package/src/term-name/README.md +65 -0
  282. package/src/term-template/README.md +65 -0
  283. package/src/terms-query/README.md +58 -0
  284. package/src/text-columns/README.md +51 -0
  285. package/src/utils/test/waveform-player.js +254 -0
  286. package/src/utils/waveform-player.js +90 -18
  287. package/src/utils/waveform-utils.js +15 -11
  288. package/src/verse/README.md +58 -0
  289. package/src/video/README.md +58 -0
  290. package/src/video/edit-common-settings.js +4 -7
  291. package/src/audio/edit.native.js +0 -250
  292. package/src/audio/style.native.scss +0 -13
  293. package/src/audio/test/__snapshots__/edit.native.js.snap +0 -546
  294. package/src/audio/test/__snapshots__/transforms.native.js.snap +0 -25
  295. package/src/audio/test/edit.native.js +0 -132
  296. package/src/audio/test/transforms.native.js +0 -43
  297. package/src/audio/transforms.native.js +0 -12
  298. package/src/block/edit-title.native.js +0 -67
  299. package/src/block/edit.native.js +0 -247
  300. package/src/block/editor.native.scss +0 -125
  301. package/src/block/test/__snapshots__/transforms.native.js.snap +0 -15
  302. package/src/block/test/edit.native.js +0 -262
  303. package/src/block/test/transforms.native.js +0 -40
  304. package/src/button/color-background.native.js +0 -41
  305. package/src/button/edit.native.js +0 -567
  306. package/src/button/editor.native.scss +0 -70
  307. package/src/button/rich-text.android.scss +0 -6
  308. package/src/button/rich-text.ios.scss +0 -6
  309. package/src/buttons/edit.native.js +0 -157
  310. package/src/buttons/editor.native.scss +0 -11
  311. package/src/buttons/test/__snapshots__/edit.native.js.snap +0 -99
  312. package/src/buttons/test/__snapshots__/transforms.native.js.snap +0 -31
  313. package/src/buttons/test/edit.native.js +0 -485
  314. package/src/buttons/test/transforms.native.js +0 -48
  315. package/src/buttons/transforms.native.js +0 -12
  316. package/src/code/edit.native.js +0 -70
  317. package/src/code/test/__snapshots__/edit.native.js.snap +0 -13
  318. package/src/code/test/edit.native.js +0 -65
  319. package/src/code/theme.native.scss +0 -22
  320. package/src/code/transforms.native.js +0 -12
  321. package/src/column/column-preview.native.js +0 -58
  322. package/src/column/edit.native.js +0 -273
  323. package/src/column/editor.native.scss +0 -75
  324. package/src/columns/columnCalculations.native.js +0 -178
  325. package/src/columns/edit.native.js +0 -507
  326. package/src/columns/editor.native.scss +0 -17
  327. package/src/columns/test/__snapshots__/edit.native.js.snap +0 -305
  328. package/src/columns/test/__snapshots__/transforms.native.js.snap +0 -61
  329. package/src/columns/test/edit.native.js +0 -496
  330. package/src/columns/test/transforms.native.js +0 -89
  331. package/src/columns/transforms.native.js +0 -12
  332. package/src/cover/controls.native.js +0 -307
  333. package/src/cover/edit.native.js +0 -708
  334. package/src/cover/focal-point-settings-button.native.js +0 -53
  335. package/src/cover/overlay-color-settings.native.js +0 -106
  336. package/src/cover/style.native.scss +0 -220
  337. package/src/cover/test/__snapshots__/edit.native.js.snap +0 -105
  338. package/src/cover/test/__snapshots__/transforms.native.js.snap +0 -73
  339. package/src/cover/test/edit.native.js +0 -701
  340. package/src/cover/test/transforms.native.js +0 -116
  341. package/src/cover/transforms.native.js +0 -12
  342. package/src/cover/use-cover-is-dark.native.js +0 -51
  343. package/src/embed/edit.native.js +0 -345
  344. package/src/embed/embed-controls.native.js +0 -65
  345. package/src/embed/embed-link-settings.native.js +0 -99
  346. package/src/embed/embed-loading.native.js +0 -29
  347. package/src/embed/embed-no-preview.native.js +0 -230
  348. package/src/embed/embed-placeholder.native.js +0 -178
  349. package/src/embed/embed-preview.native.js +0 -157
  350. package/src/embed/styles.native.scss +0 -196
  351. package/src/embed/test/__snapshots__/index.native.js.snap +0 -191
  352. package/src/embed/test/__snapshots__/transforms.native.js.snap +0 -23
  353. package/src/embed/test/index.native.js +0 -1125
  354. package/src/embed/test/transforms.native.js +0 -44
  355. package/src/embed/transforms.native.js +0 -12
  356. package/src/embed/wp-embed-preview.native.js +0 -80
  357. package/src/file/edit.native.js +0 -605
  358. package/src/file/style.native.scss +0 -79
  359. package/src/file/test/__snapshots__/edit.native.js.snap +0 -580
  360. package/src/file/test/__snapshots__/transforms.native.js.snap +0 -19
  361. package/src/file/test/edit.native.js +0 -93
  362. package/src/file/test/transforms.native.js +0 -43
  363. package/src/file/transforms.native.js +0 -12
  364. package/src/freeform/edit.native.js +0 -13
  365. package/src/freeform/test/__snapshots__/index.native.js.snap +0 -7
  366. package/src/freeform/test/__snapshots__/transforms.native.js.snap +0 -19
  367. package/src/freeform/test/index.native.js +0 -57
  368. package/src/freeform/test/transforms.native.js +0 -39
  369. package/src/gallery/gallery-styles.native.scss +0 -8
  370. package/src/gallery/gallery.native.js +0 -124
  371. package/src/gallery/styles.native.scss +0 -7
  372. package/src/gallery/test/__snapshots__/index.native.js.snap +0 -177
  373. package/src/gallery/test/__snapshots__/transforms.native.js.snap +0 -53
  374. package/src/gallery/test/helpers.native.js +0 -106
  375. package/src/gallery/test/index.native.js +0 -700
  376. package/src/gallery/test/transforms.native.js +0 -53
  377. package/src/gallery/test/use-get-media.native.js +0 -24
  378. package/src/gallery/transforms.native.js +0 -12
  379. package/src/gallery/use-get-media.native.js +0 -49
  380. package/src/group/edit.native.js +0 -137
  381. package/src/group/editor.native.scss +0 -56
  382. package/src/group/test/__snapshots__/edit.native.js.snap +0 -19
  383. package/src/group/test/__snapshots__/transforms.native.js.snap +0 -35
  384. package/src/group/test/edit.native.js +0 -100
  385. package/src/group/test/transforms.native.js +0 -73
  386. package/src/heading/edit.native.js +0 -159
  387. package/src/heading/test/__snapshots__/index.native.js.snap +0 -43
  388. package/src/heading/test/__snapshots__/transforms.native.js.snap +0 -47
  389. package/src/heading/test/index.native.js +0 -257
  390. package/src/heading/test/transforms.native.js +0 -46
  391. package/src/heading/transforms.native.js +0 -12
  392. package/src/html/transforms.native.js +0 -11
  393. package/src/image/edit.native.js +0 -959
  394. package/src/image/styles.native.scss +0 -70
  395. package/src/image/test/__snapshots__/transforms.native.js.snap +0 -49
  396. package/src/image/test/edit.native.js +0 -459
  397. package/src/image/test/transforms.native.js +0 -49
  398. package/src/image/transforms.native.js +0 -12
  399. package/src/index.native.js +0 -274
  400. package/src/latest-posts/edit.native.js +0 -294
  401. package/src/latest-posts/style.native.scss +0 -47
  402. package/src/latest-posts/test/__snapshots__/edit.native.js.snap +0 -3
  403. package/src/latest-posts/test/__snapshots__/transforms.native.js.snap +0 -15
  404. package/src/latest-posts/test/edit.native.js +0 -49
  405. package/src/latest-posts/test/transforms.native.js +0 -61
  406. package/src/list/tag-name.native.js +0 -12
  407. package/src/list/test/__snapshots__/edit.native.js.snap +0 -121
  408. package/src/list/test/__snapshots__/transforms.native.js.snap +0 -85
  409. package/src/list/test/edit.native.js +0 -602
  410. package/src/list/test/transforms.native.js +0 -56
  411. package/src/list/transforms.native.js +0 -12
  412. package/src/list-item/edit.native.js +0 -175
  413. package/src/list-item/hooks/use-enter.native.js +0 -81
  414. package/src/list-item/icons.native.js +0 -34
  415. package/src/list-item/list-style-type.native.js +0 -146
  416. package/src/list-item/style.native.scss +0 -57
  417. package/src/media-text/edit.native.js +0 -417
  418. package/src/media-text/icon-retry.native.js +0 -11
  419. package/src/media-text/media-container.native.js +0 -393
  420. package/src/media-text/style.native.scss +0 -191
  421. package/src/media-text/test/__snapshots__/transforms.native.js.snap +0 -73
  422. package/src/media-text/test/edit.native.js +0 -58
  423. package/src/media-text/test/transforms.native.js +0 -116
  424. package/src/media-text/transforms.native.js +0 -12
  425. package/src/missing/edit.native.js +0 -294
  426. package/src/missing/style.native.scss +0 -79
  427. package/src/missing/test/__snapshots__/edit.native.js.snap +0 -110
  428. package/src/missing/test/edit-integration.native.js +0 -168
  429. package/src/missing/test/edit.native.js +0 -81
  430. package/src/more/edit.native.js +0 -36
  431. package/src/more/editor.native.scss +0 -21
  432. package/src/more/test/__snapshots__/edit.native.js.snap +0 -7
  433. package/src/more/test/__snapshots__/transforms.native.js.snap +0 -19
  434. package/src/more/test/edit.native.js +0 -41
  435. package/src/more/test/transforms.native.js +0 -42
  436. package/src/more/transforms.native.js +0 -12
  437. package/src/navigation-link/shared/build-css-font-sizes.php +0 -43
  438. package/src/nextpage/edit.native.js +0 -58
  439. package/src/nextpage/editor.native.scss +0 -21
  440. package/src/nextpage/test/__snapshots__/transforms.native.js.snap +0 -19
  441. package/src/nextpage/test/transforms.native.js +0 -42
  442. package/src/nextpage/transforms.native.js +0 -12
  443. package/src/paragraph/edit.native.js +0 -116
  444. package/src/paragraph/test/__snapshots__/edit.native.js.snap +0 -88
  445. package/src/paragraph/test/__snapshots__/transforms.native.js.snap +0 -65
  446. package/src/paragraph/test/edit.native.js +0 -999
  447. package/src/paragraph/test/transforms.native.js +0 -51
  448. package/src/paragraph/transforms.native.js +0 -12
  449. package/src/preformatted/edit.native.js +0 -48
  450. package/src/preformatted/styles.native.scss +0 -30
  451. package/src/preformatted/test/__snapshots__/edit.native.js.snap +0 -95
  452. package/src/preformatted/test/__snapshots__/transforms.native.js.snap +0 -37
  453. package/src/preformatted/test/edit.native.js +0 -111
  454. package/src/preformatted/test/transforms.native.js +0 -47
  455. package/src/preformatted/transforms.native.js +0 -12
  456. package/src/pullquote/blockquote.native.js +0 -39
  457. package/src/pullquote/blockquote.native.scss +0 -8
  458. package/src/pullquote/edit.native.js +0 -128
  459. package/src/pullquote/figure.native.js +0 -33
  460. package/src/pullquote/figure.native.scss +0 -16
  461. package/src/pullquote/test/__snapshots__/transforms.native.js.snap +0 -47
  462. package/src/pullquote/test/edit.native.js +0 -73
  463. package/src/pullquote/test/transforms.native.js +0 -46
  464. package/src/pullquote/transforms.native.js +0 -12
  465. package/src/quote/test/__snapshots__/transforms.native.js.snap +0 -49
  466. package/src/quote/test/edit.native.js +0 -94
  467. package/src/quote/test/transforms.native.js +0 -69
  468. package/src/quote/transforms.native.js +0 -12
  469. package/src/search/edit.native.js +0 -486
  470. package/src/search/style.native.scss +0 -99
  471. package/src/search/test/__snapshots__/edit.native.js.snap +0 -827
  472. package/src/search/test/__snapshots__/transforms.native.js.snap +0 -15
  473. package/src/search/test/edit.native.js +0 -170
  474. package/src/search/test/transforms.native.js +0 -40
  475. package/src/separator/separator-settings.native.js +0 -3
  476. package/src/separator/test/__snapshots__/edit.native.js.snap +0 -7
  477. package/src/separator/test/__snapshots__/transforms.native.js.snap +0 -25
  478. package/src/separator/test/edit.native.js +0 -41
  479. package/src/separator/test/transforms.native.js +0 -42
  480. package/src/separator/transforms.native.js +0 -12
  481. package/src/shortcode/edit.native.js +0 -77
  482. package/src/shortcode/style.native.scss +0 -44
  483. package/src/shortcode/test/__snapshots__/edit.native.js.snap +0 -9
  484. package/src/shortcode/test/__snapshots__/transforms.native.js.snap +0 -19
  485. package/src/shortcode/test/edit.native.js +0 -70
  486. package/src/shortcode/test/transforms.native.js +0 -42
  487. package/src/shortcode/transforms.native.js +0 -12
  488. package/src/social-link/edit.native.js +0 -219
  489. package/src/social-link/editor.native.scss +0 -18
  490. package/src/social-links/edit.native.js +0 -147
  491. package/src/social-links/editor.native.scss +0 -25
  492. package/src/social-links/test/__snapshots__/edit.native.js.snap +0 -57
  493. package/src/social-links/test/__snapshots__/transforms.native.js.snap +0 -31
  494. package/src/social-links/test/edit.native.js +0 -266
  495. package/src/social-links/test/transforms.native.js +0 -53
  496. package/src/spacer/controls.native.js +0 -86
  497. package/src/spacer/edit.native.js +0 -110
  498. package/src/spacer/editor.native.scss +0 -18
  499. package/src/spacer/save.native.js +0 -18
  500. package/src/spacer/test/__snapshots__/index.native.js.snap +0 -43
  501. package/src/spacer/test/__snapshots__/transforms.native.js.snap +0 -25
  502. package/src/spacer/test/index.native.js +0 -257
  503. package/src/spacer/test/transforms.native.js +0 -42
  504. package/src/table/transforms.native.js +0 -11
  505. package/src/text-columns/transforms.native.js +0 -12
  506. package/src/utils/init-block.native.js +0 -40
  507. package/src/utils/transformation-categories.native.js +0 -47
  508. package/src/verse/test/__snapshots__/edit.native.js.snap +0 -13
  509. package/src/verse/test/__snapshots__/transforms.native.js.snap +0 -31
  510. package/src/verse/test/edit.native.js +0 -118
  511. package/src/verse/test/transforms.native.js +0 -46
  512. package/src/verse/transforms.native.js +0 -12
  513. package/src/video/edit.native.js +0 -406
  514. package/src/video/icon-retry.native.js +0 -11
  515. package/src/video/style.native.scss +0 -81
  516. package/src/video/test/__snapshots__/transforms.native.js.snap +0 -41
  517. package/src/video/test/edit.native.js +0 -53
  518. package/src/video/test/transforms.native.js +0 -49
  519. package/src/video/transforms.native.js +0 -12
@@ -0,0 +1,254 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+
5
+ /**
6
+ * External dependencies
7
+ */
8
+ import '@testing-library/jest-dom';
9
+ import { act, render } from '@testing-library/react';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+ import { WaveformPlayer } from '../waveform-player';
15
+ import { initWaveformPlayer } from '../waveform-utils';
16
+
17
+ jest.mock( '../waveform-utils', () => ( {
18
+ initWaveformPlayer: jest.fn(),
19
+ } ) );
20
+
21
+ /**
22
+ * Create a fake player instance that mimics the parts of the waveform
23
+ * player instance the component manipulates.
24
+ *
25
+ * @param {Object} options Options passed to initWaveformPlayer.
26
+ * @param {Element} element The element passed to initWaveformPlayer.
27
+ * @return {Object} The fake player.
28
+ */
29
+ function createFakePlayer( options, element ) {
30
+ const titleEl = document.createElement( 'span' );
31
+ titleEl.textContent = options.title ?? '';
32
+ // The subtitle and artwork elements only exist when the track had an
33
+ // artist/image when the player was created, mirroring the library markup.
34
+ let subtitleEl = null;
35
+ if ( options.artist ) {
36
+ subtitleEl = document.createElement( 'span' );
37
+ subtitleEl.textContent = options.artist;
38
+ }
39
+ let artworkEl = null;
40
+ if ( options.image ) {
41
+ artworkEl = document.createElement( 'img' );
42
+ artworkEl.src = options.image;
43
+ }
44
+
45
+ element.append( titleEl );
46
+ if ( subtitleEl ) {
47
+ element.append( subtitleEl );
48
+ }
49
+ if ( artworkEl ) {
50
+ element.append( artworkEl );
51
+ }
52
+
53
+ return {
54
+ instance: { titleEl, subtitleEl, artworkEl },
55
+ destroy: jest.fn(),
56
+ };
57
+ }
58
+
59
+ describe( 'WaveformPlayer', () => {
60
+ beforeEach( () => {
61
+ jest.useFakeTimers();
62
+ initWaveformPlayer.mockImplementation( ( element, options ) =>
63
+ createFakePlayer( options, element )
64
+ );
65
+ } );
66
+
67
+ afterEach( () => {
68
+ jest.runOnlyPendingTimers();
69
+ jest.useRealTimers();
70
+ initWaveformPlayer.mockReset();
71
+ } );
72
+
73
+ const baseProps = {
74
+ src: 'https://example.com/song.mp3',
75
+ title: 'Original Title',
76
+ artist: 'Original Artist',
77
+ image: 'https://example.com/cover.jpg',
78
+ onEnded: () => {},
79
+ };
80
+
81
+ it( 'initializes the player once with the provided metadata', () => {
82
+ render( <WaveformPlayer { ...baseProps } /> );
83
+
84
+ act( () => {
85
+ jest.advanceTimersByTime( 100 );
86
+ } );
87
+
88
+ expect( initWaveformPlayer ).toHaveBeenCalledTimes( 1 );
89
+ expect( initWaveformPlayer ).toHaveBeenCalledWith(
90
+ expect.anything(),
91
+ expect.objectContaining( {
92
+ src: baseProps.src,
93
+ title: 'Original Title',
94
+ artist: 'Original Artist',
95
+ image: 'https://example.com/cover.jpg',
96
+ } )
97
+ );
98
+ } );
99
+
100
+ it( 'updates metadata on the live player without recreating it', () => {
101
+ const { rerender } = render( <WaveformPlayer { ...baseProps } /> );
102
+
103
+ act( () => {
104
+ jest.advanceTimersByTime( 100 );
105
+ } );
106
+
107
+ const player = initWaveformPlayer.mock.results[ 0 ].value;
108
+
109
+ rerender(
110
+ <WaveformPlayer
111
+ { ...baseProps }
112
+ title="New Title"
113
+ artist="New Artist"
114
+ image="https://example.com/new.jpg"
115
+ />
116
+ );
117
+
118
+ // The player is updated in place, not destroyed and recreated.
119
+ expect( initWaveformPlayer ).toHaveBeenCalledTimes( 1 );
120
+ expect( player.destroy ).not.toHaveBeenCalled();
121
+ expect( player.instance.titleEl ).toHaveTextContent( 'New Title' );
122
+ expect( player.instance.subtitleEl ).toHaveTextContent( 'New Artist' );
123
+ expect( player.instance.artworkEl ).toHaveAttribute(
124
+ 'src',
125
+ 'https://example.com/new.jpg'
126
+ );
127
+ } );
128
+
129
+ it( 'recreates the player when the src changes', () => {
130
+ const { rerender } = render( <WaveformPlayer { ...baseProps } /> );
131
+
132
+ act( () => {
133
+ jest.advanceTimersByTime( 100 );
134
+ } );
135
+
136
+ const player = initWaveformPlayer.mock.results[ 0 ].value;
137
+
138
+ rerender(
139
+ <WaveformPlayer
140
+ { ...baseProps }
141
+ src="https://example.com/other.mp3"
142
+ />
143
+ );
144
+
145
+ act( () => {
146
+ jest.advanceTimersByTime( 100 );
147
+ } );
148
+
149
+ expect( player.destroy ).toHaveBeenCalledTimes( 1 );
150
+ expect( initWaveformPlayer ).toHaveBeenCalledTimes( 2 );
151
+ } );
152
+
153
+ it( 'recreates the player to show an image added to a track that had none', () => {
154
+ const { rerender } = render(
155
+ <WaveformPlayer { ...baseProps } image="" />
156
+ );
157
+
158
+ act( () => {
159
+ jest.advanceTimersByTime( 100 );
160
+ } );
161
+
162
+ const firstPlayer = initWaveformPlayer.mock.results[ 0 ].value;
163
+ // No artwork element exists when the track started without an image.
164
+ expect( firstPlayer.instance.artworkEl ).toBeNull();
165
+
166
+ rerender(
167
+ <WaveformPlayer
168
+ { ...baseProps }
169
+ image="https://example.com/added.jpg"
170
+ />
171
+ );
172
+
173
+ act( () => {
174
+ jest.advanceTimersByTime( 100 );
175
+ } );
176
+
177
+ expect( firstPlayer.destroy ).toHaveBeenCalledTimes( 1 );
178
+ expect( initWaveformPlayer ).toHaveBeenCalledTimes( 2 );
179
+ const secondPlayer = initWaveformPlayer.mock.results[ 1 ].value;
180
+ expect( secondPlayer.instance.artworkEl ).toHaveAttribute(
181
+ 'src',
182
+ 'https://example.com/added.jpg'
183
+ );
184
+ } );
185
+
186
+ it( 'recreates the player when the image is removed', () => {
187
+ const { rerender } = render( <WaveformPlayer { ...baseProps } /> );
188
+
189
+ act( () => {
190
+ jest.advanceTimersByTime( 100 );
191
+ } );
192
+
193
+ const player = initWaveformPlayer.mock.results[ 0 ].value;
194
+
195
+ rerender( <WaveformPlayer { ...baseProps } image="" /> );
196
+
197
+ act( () => {
198
+ jest.advanceTimersByTime( 100 );
199
+ } );
200
+
201
+ expect( player.destroy ).toHaveBeenCalledTimes( 1 );
202
+ expect( initWaveformPlayer ).toHaveBeenCalledTimes( 2 );
203
+ const secondPlayer = initWaveformPlayer.mock.results[ 1 ].value;
204
+ expect( secondPlayer.instance.artworkEl ).toBeNull();
205
+ } );
206
+
207
+ it( 'updates the player in place to show an artist added to a track that had none', () => {
208
+ const { rerender } = render(
209
+ <WaveformPlayer { ...baseProps } artist="" />
210
+ );
211
+
212
+ act( () => {
213
+ jest.advanceTimersByTime( 100 );
214
+ } );
215
+
216
+ const firstPlayer = initWaveformPlayer.mock.results[ 0 ].value;
217
+ // The editor seeds a hidden subtitle element so artist edits can
218
+ // update in place.
219
+ expect( firstPlayer.instance.subtitleEl ).toHaveTextContent( '' );
220
+ expect( firstPlayer.instance.subtitleEl ).toHaveStyle( {
221
+ display: 'none',
222
+ } );
223
+
224
+ rerender( <WaveformPlayer { ...baseProps } artist="New Artist" /> );
225
+
226
+ expect( firstPlayer.destroy ).not.toHaveBeenCalled();
227
+ expect( initWaveformPlayer ).toHaveBeenCalledTimes( 1 );
228
+ expect( firstPlayer.instance.subtitleEl ).toHaveTextContent(
229
+ 'New Artist'
230
+ );
231
+ expect( firstPlayer.instance.subtitleEl ).not.toHaveStyle( {
232
+ display: 'none',
233
+ } );
234
+ } );
235
+
236
+ it( 'updates the player in place when the artist is removed', () => {
237
+ const { rerender } = render( <WaveformPlayer { ...baseProps } /> );
238
+
239
+ act( () => {
240
+ jest.advanceTimersByTime( 100 );
241
+ } );
242
+
243
+ const player = initWaveformPlayer.mock.results[ 0 ].value;
244
+
245
+ rerender( <WaveformPlayer { ...baseProps } artist="" /> );
246
+
247
+ expect( player.destroy ).not.toHaveBeenCalled();
248
+ expect( initWaveformPlayer ).toHaveBeenCalledTimes( 1 );
249
+ expect( player.instance.subtitleEl ).toHaveTextContent( '' );
250
+ expect( player.instance.subtitleEl ).toHaveStyle( {
251
+ display: 'none',
252
+ } );
253
+ } );
254
+ } );
@@ -1,36 +1,103 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useRef } from '@wordpress/element';
5
- import { useRefEffect } from '@wordpress/compose';
4
+ import { useEffect, useRef } from '@wordpress/element';
5
+ import { useEvent, useRefEffect } from '@wordpress/compose';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
10
  import { initWaveformPlayer } from './waveform-utils';
11
11
 
12
+ const EMPTY_ARTIST_PLACEHOLDER = '\u00a0';
13
+
14
+ /**
15
+ * Update a live waveform player's metadata elements in place.
16
+ *
17
+ * The title element always exists, so the title is updated in place. The
18
+ * subtitle element is seeded during editor player creation, so it can be
19
+ * updated in place and hidden when the track has no artist. The artwork
20
+ * element only exists when the track had an image when the player was created,
21
+ * so its value is updated in place here; adding or removing an image (which
22
+ * creates or tears down that element) is instead handled by recreating the
23
+ * player, keyed on the `hasImage` dependency.
24
+ *
25
+ * The library's only metadata API is `loadTrack()`, which re-fetches and
26
+ * re-decodes the audio and regenerates the waveform (resetting playback), so
27
+ * it's unsuitable for live metadata edits. We instead write to the title,
28
+ * subtitle, and artwork elements directly, which is what `loadTrack()` itself
29
+ * does internally for these fields.
30
+ *
31
+ * @param {Object} instance - The waveform player instance.
32
+ * @param {Object} metadata - The track metadata.
33
+ * @param {string} metadata.title - The track title.
34
+ * @param {string} metadata.artist - The artist name.
35
+ * @param {string} metadata.image - The artwork image URL.
36
+ */
37
+ function updatePlayerMetadata( instance, { title, artist, image } ) {
38
+ if ( instance.titleEl ) {
39
+ instance.titleEl.textContent = title ?? '';
40
+ }
41
+ if ( instance.subtitleEl ) {
42
+ instance.subtitleEl.textContent = artist ?? '';
43
+ instance.subtitleEl.style.display = artist ? '' : 'none';
44
+ }
45
+ if ( instance.artworkEl && image ) {
46
+ instance.artworkEl.src = image;
47
+ }
48
+ }
49
+
12
50
  /**
13
51
  * A reusable WaveformPlayer component for the block editor.
14
52
  *
15
53
  * Renders an audio waveform visualization with play/pause controls.
16
54
  * Automatically inherits colors from the parent block's text color.
17
55
  *
18
- * @param {Object} props - Component props.
19
- * @param {string} props.src - The audio file URL.
20
- * @param {string} props.title - The track title.
21
- * @param {string} props.artist - The artist name.
22
- * @param {string} props.image - The artwork image URL.
23
- * @param {Function} props.onEnded - Callback when the track finishes playing.
56
+ * @param {Object} props - Component props.
57
+ * @param {string} props.src - The audio file URL.
58
+ * @param {string} props.title - The track title.
59
+ * @param {string} props.artist - The artist name.
60
+ * @param {string} props.image - The artwork image URL.
61
+ * @param {string} props.waveformStyle - Waveform style (bars, mirror, line, blocks, dots, seekbar).
62
+ * @param {Function} props.onEnded - Callback when the track finishes playing.
24
63
  * @return {Element} The WaveformPlayer element.
25
64
  */
26
- export function WaveformPlayer( { src, title, artist, image, onEnded } ) {
27
- // Store onEnded in a ref so it doesn't need to be a useRefEffect dependency.
65
+ export function WaveformPlayer( {
66
+ src,
67
+ title,
68
+ artist,
69
+ image,
70
+ waveformStyle,
71
+ onEnded,
72
+ } ) {
73
+ // Store onEnded in a stable callback so it doesn't need to be a useRefEffect dependency.
28
74
  // The callback changes reference on every render (its dependency chain
29
75
  // includes an unstable array), which would cause useRefEffect to destroy
30
76
  // and recreate the entire player on every re-render, making it disappear
31
77
  // during editor resizes.
32
- const onEndedRef = useRef( onEnded );
33
- onEndedRef.current = onEnded;
78
+ const onEndedEvent = useEvent( onEnded );
79
+ const metadataRef = useRef( { title, artist, image } );
80
+ const playerRef = useRef();
81
+
82
+ // The artwork element only exists when an image was present when the
83
+ // player was created. Recreate the player when one is added or removed so
84
+ // that element is created or torn down; value changes to an existing
85
+ // element are applied in place below.
86
+ const hasImage = !! image;
87
+
88
+ // Keep the freshest metadata available to init() (which runs on a
89
+ // deferred timeout) and update the live player in place when metadata
90
+ // changes. Updating in place avoids destroying and recreating the
91
+ // player, which would flash it on every keystroke while editing a
92
+ // track's title or artist.
93
+ useEffect( () => {
94
+ metadataRef.current = { title, artist, image };
95
+
96
+ const instance = playerRef.current?.instance;
97
+ if ( instance ) {
98
+ updatePlayerMetadata( instance, { title, artist, image } );
99
+ }
100
+ }, [ title, artist, image ] );
34
101
 
35
102
  const ref = useRefEffect(
36
103
  ( element ) => {
@@ -45,13 +112,17 @@ export function WaveformPlayer( { src, title, artist, image, onEnded } ) {
45
112
  if ( cancelled ) {
46
113
  return;
47
114
  }
48
- const { destroy } = initWaveformPlayer( element, {
115
+ const player = initWaveformPlayer( element, {
49
116
  src,
50
- title,
51
- artist,
52
- image,
53
- onEnded: () => onEndedRef.current?.(),
117
+ ...metadataRef.current,
118
+ waveformStyle,
119
+ artist:
120
+ metadataRef.current.artist || EMPTY_ARTIST_PLACEHOLDER,
121
+ onEnded: () => onEndedEvent?.(),
54
122
  } );
123
+ playerRef.current = player;
124
+ updatePlayerMetadata( player.instance, metadataRef.current );
125
+ const { destroy } = player;
55
126
  playerDestroy = destroy;
56
127
  }
57
128
 
@@ -67,10 +138,11 @@ export function WaveformPlayer( { src, title, artist, image, onEnded } ) {
67
138
  return () => {
68
139
  cancelled = true;
69
140
  clearTimeout( timeoutId );
141
+ playerRef.current = undefined;
70
142
  playerDestroy?.();
71
143
  };
72
144
  },
73
- [ src, title, artist, image ]
145
+ [ onEndedEvent, src, waveformStyle, hasImage ]
74
146
  );
75
147
 
76
148
  return <div ref={ ref } className="wp-block-playlist__waveform-player" />;
@@ -51,6 +51,7 @@ export function getWaveformColors( element ) {
51
51
  * @param {string} options.progressColor - The progress indicator color.
52
52
  * @param {string} options.buttonColor - The play button color.
53
53
  * @param {number} options.height - The waveform height in pixels.
54
+ * @param {string} options.waveformStyle - The visualization style (bars, mirror, line, blocks, dots, seekbar).
54
55
  * @return {Element} The configured container element.
55
56
  */
56
57
  export function createWaveformContainer( {
@@ -62,12 +63,13 @@ export function createWaveformContainer( {
62
63
  progressColor,
63
64
  buttonColor,
64
65
  height = DEFAULT_WAVEFORM_HEIGHT,
66
+ waveformStyle = 'bars',
65
67
  } ) {
66
68
  const container = document.createElement( 'div' );
67
69
  container.setAttribute( 'data-waveform-player', '' );
68
70
  container.setAttribute( 'data-url', url );
69
71
  container.setAttribute( 'data-height', String( height ) );
70
- container.setAttribute( 'data-waveform-style', 'bars' );
72
+ container.setAttribute( 'data-waveform-style', waveformStyle );
71
73
  container.setAttribute( 'data-waveform-color', waveformColor );
72
74
  container.setAttribute( 'data-progress-color', progressColor );
73
75
  container.setAttribute( 'data-button-color', buttonColor );
@@ -158,20 +160,21 @@ export function logPlayError( error ) {
158
160
  * This is the shared core logic used by both the React component (editor)
159
161
  * and the Interactivity API (frontend).
160
162
  *
161
- * @param {Element} element - The container element (must be in DOM).
162
- * @param {Object} options - Configuration options.
163
- * @param {string} options.src - The audio file URL.
164
- * @param {string} options.title - The track title.
165
- * @param {string} options.artist - The artist name.
166
- * @param {string} options.image - The artwork image URL.
167
- * @param {boolean} options.autoPlay - Whether to auto-play when ready.
168
- * @param {Function} options.onEnded - Callback when track ends.
169
- * @param {Object} options.labels - Translated button labels.
163
+ * @param {Element} element - The container element (must be in DOM).
164
+ * @param {Object} options - Configuration options.
165
+ * @param {string} options.src - The audio file URL.
166
+ * @param {string} options.title - The track title.
167
+ * @param {string} options.artist - The artist name.
168
+ * @param {string} options.image - The artwork image URL.
169
+ * @param {boolean} options.autoPlay - Whether to auto-play when ready.
170
+ * @param {Function} options.onEnded - Callback when track ends.
171
+ * @param {Object} options.labels - Translated button labels.
172
+ * @param {string} options.waveformStyle - Waveform style (bars, mirror, line, blocks, dots, seekbar).
170
173
  * @return {Object} Object with instance, container, and destroy function.
171
174
  */
172
175
  export function initWaveformPlayer(
173
176
  element,
174
- { src, title, artist, image, autoPlay, onEnded, labels }
177
+ { src, title, artist, image, autoPlay, onEnded, labels, waveformStyle }
175
178
  ) {
176
179
  // Get colors from computed styles.
177
180
  const { textColor, waveformColor, progressColor } =
@@ -186,6 +189,7 @@ export function initWaveformPlayer(
186
189
  waveformColor,
187
190
  progressColor,
188
191
  buttonColor: textColor,
192
+ waveformStyle,
189
193
  } );
190
194
  element.appendChild( container );
191
195
 
@@ -0,0 +1,58 @@
1
+ # Poetry
2
+
3
+ <!-- START TOKEN(Autogenerated block API docs) -->
4
+ Insert poetry. Use special spacing formats. Or quote song lyrics.
5
+
6
+ - **Name:** `core/verse`
7
+ - **Category:** [text](https://developer.wordpress.org/block-editor/reference-guides/core-blocks/core-blocks-text/)
8
+ - **API Version:** [3](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-api-versions/)
9
+ - **Block Type:** [Static](https://developer.wordpress.org/block-editor/getting-started/fundamentals/static-dynamic-rendering/) (saved in post content)
10
+ - **Keywords:** `poetry`, `poem`, `verse`, `stanza`, `song`, `lyrics`
11
+
12
+ ## Attributes
13
+
14
+ _Defined via the [`attributes`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/) property in block.json._
15
+
16
+ | Attribute | [Type](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#type-validation) | [Default](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#default-value) | Description |
17
+ |-----------|------|---------|-------------|
18
+ | `content` | `rich-text` | — | [Source](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `rich-text`. [Selector](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `pre`. [Role](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#role): `content` |
19
+
20
+ ## Supports
21
+
22
+ _Defined via the [`supports`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/) property in block.json._
23
+
24
+ - [`anchor`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#anchor): `true`
25
+ - [`background`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#background):
26
+ - `backgroundImage`: `true`
27
+ - `backgroundSize`: `true`
28
+ - [`color`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#color):
29
+ - [`gradients`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#color-gradients): `true`
30
+ - [`link`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#color-link): `true`
31
+ - [`dimensions`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#dimensions):
32
+ - `minHeight`: `true`
33
+ - [`typography`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#typography):
34
+ - [`fontSize`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#typography-fontsize): `true`
35
+ - [`lineHeight`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#typography-lineheight): `true`
36
+ - [`textAlign`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#typography-textalign): `true`
37
+ - [`spacing`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#spacing):
38
+ - `margin`: `true`
39
+ - `padding`: `true`
40
+ - [`interactivity`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#interactivity):
41
+ - `clientNavigation`: `true`
42
+
43
+ ## Block Markup
44
+
45
+ This is a [**static block**](https://developer.wordpress.org/block-editor/getting-started/fundamentals/static-dynamic-rendering/). The markup is saved directly in the post content.
46
+
47
+ ```html
48
+ <!-- wp:core/verse -->
49
+ <pre class="wp-block-verse">A <em>verse</em>…<br>And more!</pre>
50
+ <!-- /wp:core/verse -->
51
+ ```
52
+
53
+ ## Source
54
+
55
+ - [block.json](https://github.com/WordPress/gutenberg/tree/trunk/packages/block-library/src/verse/block.json) ([reference](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-metadata/))
56
+ - [Source directory](https://github.com/WordPress/gutenberg/tree/trunk/packages/block-library/src/verse/) — browse `edit.js`, `save.js`, `index.php`, and more.
57
+
58
+ <!-- END TOKEN(Autogenerated block API docs) -->
@@ -0,0 +1,58 @@
1
+ # Video
2
+
3
+ <!-- START TOKEN(Autogenerated block API docs) -->
4
+ Embed a video from your media library or upload a new one.
5
+
6
+ - **Name:** `core/video`
7
+ - **Category:** [media](https://developer.wordpress.org/block-editor/reference-guides/core-blocks/core-blocks-media/)
8
+ - **API Version:** [3](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-api-versions/)
9
+ - **Block Type:** [Hybrid](https://developer.wordpress.org/block-editor/getting-started/fundamentals/static-dynamic-rendering/) (static save + server enhancements)
10
+ - **Keywords:** `movie`
11
+
12
+ ## Attributes
13
+
14
+ _Defined via the [`attributes`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/) property in block.json._
15
+
16
+ | Attribute | [Type](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#type-validation) | [Default](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#default-value) | Description |
17
+ |-----------|------|---------|-------------|
18
+ | `autoplay` | `boolean` | — | [Source](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `attribute`. [Selector](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `video`. [HTML attr](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#attribute-source): `autoplay` |
19
+ | `caption` | `rich-text` | — | [Source](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `rich-text`. [Selector](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `figcaption`. [Role](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#role): `content` |
20
+ | `controls` | `boolean` | `true` | [Source](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `attribute`. [Selector](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `video`. [HTML attr](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#attribute-source): `controls` |
21
+ | `id` | `number` | — | [Role](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#role): `content` |
22
+ | `loop` | `boolean` | — | [Source](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `attribute`. [Selector](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `video`. [HTML attr](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#attribute-source): `loop` |
23
+ | `muted` | `boolean` | — | [Source](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `attribute`. [Selector](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `video`. [HTML attr](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#attribute-source): `muted` |
24
+ | `poster` | `string` | — | [Source](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `attribute`. [Selector](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `video`. [HTML attr](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#attribute-source): `poster` |
25
+ | `preload` | `string` | `"metadata"` | [Source](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `attribute`. [Selector](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `video`. [HTML attr](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#attribute-source): `preload` |
26
+ | `blob` | `string` | — | [Role](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#role): `local` |
27
+ | `src` | `string` | — | [Source](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `attribute`. [Selector](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `video`. [HTML attr](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#attribute-source): `src`. [Role](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#role): `content` |
28
+ | `playsInline` | `boolean` | — | [Source](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `attribute`. [Selector](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#value-source): `video`. [HTML attr](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#attribute-source): `playsinline` |
29
+ | `tracks` | `array` | `[]` | [Role](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-attributes/#role): `content` |
30
+
31
+ ## Supports
32
+
33
+ _Defined via the [`supports`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/) property in block.json._
34
+
35
+ - [`anchor`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#anchor): `true`
36
+ - [`align`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#align): `true`
37
+ - [`spacing`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#spacing):
38
+ - `margin`: `true`
39
+ - `padding`: `true`
40
+ - [`interactivity`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#interactivity):
41
+ - `clientNavigation`: `true`
42
+
43
+ ## Block Markup
44
+
45
+ This is a [**hybrid block**](https://developer.wordpress.org/block-editor/getting-started/fundamentals/static-dynamic-rendering/). It saves static markup that the server may enhance during rendering.
46
+
47
+ ```html
48
+ <!-- wp:core/video -->
49
+ <figure class="wp-block-video"><video controls src="data:video/mp4;base64,AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAC721kYXQhEAUgpBv/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3pwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCEQBSCkG//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADengAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAsJtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAALwABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAB7HRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAIAAAAAAAAALwAAAAAAAAAAAAAAAQEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAC8AAAAAAAEAAAAAAWRtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAAKxEAAAIAFXEAAAAAAAtaGRscgAAAAAAAAAAc291bgAAAAAAAAAAAAAAAFNvdW5kSGFuZGxlcgAAAAEPbWluZgAAABBzbWhkAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAADTc3RibAAAAGdzdHNkAAAAAAAAAAEAAABXbXA0YQAAAAAAAAABAAAAAAAAAAAAAgAQAAAAAKxEAAAAAAAzZXNkcwAAAAADgICAIgACAASAgIAUQBUAAAAAAfQAAAHz+QWAgIACEhAGgICAAQIAAAAYc3R0cwAAAAAAAAABAAAAAgAABAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAIAAAABAAAAHHN0c3oAAAAAAAAAAAAAAAIAAAFzAAABdAAAABRzdGNvAAAAAAAAAAEAAAAsAAAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAtaWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1Ni40MC4xMDE="></video><figcaption class="wp-element-caption">My video</figcaption></figure>
50
+ <!-- /wp:core/video -->
51
+ ```
52
+
53
+ ## Source
54
+
55
+ - [block.json](https://github.com/WordPress/gutenberg/tree/trunk/packages/block-library/src/video/block.json) ([reference](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-metadata/))
56
+ - [Source directory](https://github.com/WordPress/gutenberg/tree/trunk/packages/block-library/src/video/) — browse `edit.js`, `save.js`, `index.php`, and more.
57
+
58
+ <!-- END TOKEN(Autogenerated block API docs) -->
@@ -7,7 +7,7 @@ import {
7
7
  SelectControl,
8
8
  __experimentalToolsPanelItem as ToolsPanelItem,
9
9
  } from '@wordpress/components';
10
- import { useMemo, useCallback, Platform } from '@wordpress/element';
10
+ import { useMemo, useCallback } from '@wordpress/element';
11
11
 
12
12
  const options = [
13
13
  { value: 'auto', label: __( 'Auto' ) },
@@ -23,12 +23,9 @@ const VideoSettings = ( { setAttributes, attributes } ) => {
23
23
  'Autoplay may cause usability issues for some users.'
24
24
  );
25
25
 
26
- const getAutoplayHelp = Platform.select( {
27
- web: useCallback( ( checked ) => {
28
- return checked ? autoPlayHelpText : null;
29
- }, [] ),
30
- native: autoPlayHelpText,
31
- } );
26
+ const getAutoplayHelp = useCallback( ( checked ) => {
27
+ return checked ? autoPlayHelpText : null;
28
+ }, [] );
32
29
 
33
30
  const toggleFactory = useMemo( () => {
34
31
  const toggleAttribute = ( attribute ) => {