@wordpress/block-library 9.47.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 (552) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/build/columns/transforms.cjs +65 -0
  3. package/build/columns/transforms.cjs.map +2 -2
  4. package/build/comments/edit/placeholder.cjs +1 -1
  5. package/build/comments/edit/placeholder.cjs.map +2 -2
  6. package/build/cover/edit/inspector-controls.cjs +16 -4
  7. package/build/cover/edit/inspector-controls.cjs.map +2 -2
  8. package/build/gallery/edit.cjs +212 -331
  9. package/build/gallery/edit.cjs.map +2 -2
  10. package/build/gallery/transforms.cjs +43 -0
  11. package/build/gallery/transforms.cjs.map +2 -2
  12. package/build/heading/edit.cjs +0 -1
  13. package/build/heading/edit.cjs.map +2 -2
  14. package/build/image/image.cjs +14 -3
  15. package/build/image/image.cjs.map +2 -2
  16. package/build/image/use-open-image-media-editor-modal.cjs +8 -2
  17. package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
  18. package/build/list/edit.cjs +1 -8
  19. package/build/list/edit.cjs.map +2 -2
  20. package/build/list/ordered-list-settings.cjs +1 -44
  21. package/build/list/ordered-list-settings.cjs.map +2 -2
  22. package/build/list-item/hooks/use-merge.cjs +47 -24
  23. package/build/list-item/hooks/use-merge.cjs.map +2 -2
  24. package/build/navigation/edit/index.cjs +15 -26
  25. package/build/navigation/edit/index.cjs.map +2 -2
  26. package/build/navigation-link/edit.cjs +0 -1
  27. package/build/navigation-link/edit.cjs.map +2 -2
  28. package/build/navigation-submenu/edit.cjs +2 -1
  29. package/build/navigation-submenu/edit.cjs.map +2 -2
  30. package/build/paragraph/deprecated.cjs +1 -0
  31. package/build/paragraph/deprecated.cjs.map +2 -2
  32. package/build/paragraph/edit.cjs +10 -1
  33. package/build/paragraph/edit.cjs.map +3 -3
  34. package/build/playlist/block.json +12 -0
  35. package/build/playlist/edit.cjs +27 -1
  36. package/build/playlist/edit.cjs.map +2 -2
  37. package/build/playlist/save.cjs +8 -1
  38. package/build/playlist/save.cjs.map +2 -2
  39. package/build/playlist/view.cjs +1 -0
  40. package/build/playlist/view.cjs.map +2 -2
  41. package/build/post-featured-image/edit.cjs +6 -4
  42. package/build/post-featured-image/edit.cjs.map +2 -2
  43. package/build/post-time-to-read/index.cjs +1 -1
  44. package/build/post-time-to-read/index.cjs.map +2 -2
  45. package/build/post-time-to-read/variations.cjs +1 -1
  46. package/build/post-time-to-read/variations.cjs.map +2 -2
  47. package/build/pullquote/edit.cjs +2 -7
  48. package/build/pullquote/edit.cjs.map +2 -2
  49. package/build/quote/edit.cjs +4 -9
  50. package/build/quote/edit.cjs.map +2 -2
  51. package/build/shortcode/transforms.cjs +2 -2
  52. package/build/shortcode/transforms.cjs.map +2 -2
  53. package/build/site-logo/edit.cjs +4 -1
  54. package/build/site-logo/edit.cjs.map +2 -2
  55. package/build/utils/waveform-player.cjs +42 -9
  56. package/build/utils/waveform-player.cjs.map +2 -2
  57. package/build/utils/waveform-utils.cjs +6 -4
  58. package/build/utils/waveform-utils.cjs.map +2 -2
  59. package/build/video/edit-common-settings.cjs +3 -6
  60. package/build/video/edit-common-settings.cjs.map +2 -2
  61. package/build-module/columns/transforms.mjs +65 -0
  62. package/build-module/columns/transforms.mjs.map +2 -2
  63. package/build-module/comments/edit/placeholder.mjs +1 -1
  64. package/build-module/comments/edit/placeholder.mjs.map +2 -2
  65. package/build-module/cover/edit/inspector-controls.mjs +16 -4
  66. package/build-module/cover/edit/inspector-controls.mjs.map +2 -2
  67. package/build-module/gallery/edit.mjs +214 -334
  68. package/build-module/gallery/edit.mjs.map +2 -2
  69. package/build-module/gallery/transforms.mjs +43 -0
  70. package/build-module/gallery/transforms.mjs.map +2 -2
  71. package/build-module/heading/edit.mjs +1 -2
  72. package/build-module/heading/edit.mjs.map +2 -2
  73. package/build-module/image/image.mjs +15 -3
  74. package/build-module/image/image.mjs.map +2 -2
  75. package/build-module/image/use-open-image-media-editor-modal.mjs +8 -2
  76. package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
  77. package/build-module/list/edit.mjs +2 -9
  78. package/build-module/list/edit.mjs.map +2 -2
  79. package/build-module/list/ordered-list-settings.mjs +1 -45
  80. package/build-module/list/ordered-list-settings.mjs.map +2 -2
  81. package/build-module/list-item/hooks/use-merge.mjs +48 -25
  82. package/build-module/list-item/hooks/use-merge.mjs.map +2 -2
  83. package/build-module/navigation/edit/index.mjs +16 -33
  84. package/build-module/navigation/edit/index.mjs.map +2 -2
  85. package/build-module/navigation-link/edit.mjs +0 -1
  86. package/build-module/navigation-link/edit.mjs.map +2 -2
  87. package/build-module/navigation-submenu/edit.mjs +2 -1
  88. package/build-module/navigation-submenu/edit.mjs.map +2 -2
  89. package/build-module/paragraph/deprecated.mjs +1 -0
  90. package/build-module/paragraph/deprecated.mjs.map +2 -2
  91. package/build-module/paragraph/edit.mjs +12 -2
  92. package/build-module/paragraph/edit.mjs.map +2 -2
  93. package/build-module/playlist/block.json +12 -0
  94. package/build-module/playlist/edit.mjs +27 -1
  95. package/build-module/playlist/edit.mjs.map +2 -2
  96. package/build-module/playlist/save.mjs +8 -1
  97. package/build-module/playlist/save.mjs.map +2 -2
  98. package/build-module/playlist/view.mjs +1 -0
  99. package/build-module/playlist/view.mjs.map +2 -2
  100. package/build-module/post-featured-image/edit.mjs +6 -4
  101. package/build-module/post-featured-image/edit.mjs.map +2 -2
  102. package/build-module/post-time-to-read/index.mjs +1 -1
  103. package/build-module/post-time-to-read/index.mjs.map +2 -2
  104. package/build-module/post-time-to-read/variations.mjs +2 -2
  105. package/build-module/post-time-to-read/variations.mjs.map +2 -2
  106. package/build-module/pullquote/edit.mjs +2 -7
  107. package/build-module/pullquote/edit.mjs.map +2 -2
  108. package/build-module/quote/edit.mjs +5 -10
  109. package/build-module/quote/edit.mjs.map +2 -2
  110. package/build-module/shortcode/transforms.mjs +2 -2
  111. package/build-module/shortcode/transforms.mjs.map +2 -2
  112. package/build-module/site-logo/edit.mjs +5 -1
  113. package/build-module/site-logo/edit.mjs.map +2 -2
  114. package/build-module/utils/waveform-player.mjs +44 -11
  115. package/build-module/utils/waveform-player.mjs.map +2 -2
  116. package/build-module/utils/waveform-utils.mjs +6 -4
  117. package/build-module/utils/waveform-utils.mjs.map +2 -2
  118. package/build-module/video/edit-common-settings.mjs +4 -7
  119. package/build-module/video/edit-common-settings.mjs.map +2 -2
  120. package/build-style/comment-template/style-rtl.css +1 -0
  121. package/build-style/comment-template/style.css +1 -0
  122. package/build-style/common-rtl.css +30 -10
  123. package/build-style/common.css +30 -10
  124. package/build-style/cover/style-rtl.css +2 -1
  125. package/build-style/cover/style.css +2 -1
  126. package/build-style/editor-rtl.css +22 -11
  127. package/build-style/editor.css +22 -11
  128. package/build-style/form-input/style-rtl.css +2 -0
  129. package/build-style/form-input/style.css +2 -0
  130. package/build-style/gallery/style-rtl.css +4 -2
  131. package/build-style/gallery/style.css +4 -2
  132. package/build-style/media-text/style-rtl.css +2 -1
  133. package/build-style/media-text/style.css +2 -1
  134. package/build-style/playlist/style-rtl.css +3 -0
  135. package/build-style/playlist/style.css +3 -0
  136. package/build-style/query/editor-rtl.css +8 -4
  137. package/build-style/query/editor.css +8 -4
  138. package/build-style/read-more/style-rtl.css +1 -0
  139. package/build-style/read-more/style.css +1 -0
  140. package/build-style/reset-rtl.css +3 -1
  141. package/build-style/reset.css +3 -1
  142. package/build-style/search/style-rtl.css +3 -1
  143. package/build-style/search/style.css +3 -1
  144. package/build-style/site-logo/editor-rtl.css +2 -1
  145. package/build-style/site-logo/editor.css +2 -1
  146. package/build-style/style-rtl.css +53 -17
  147. package/build-style/style.css +53 -17
  148. package/build-style/tab/style-rtl.css +3 -1
  149. package/build-style/tab/style.css +3 -1
  150. package/build-style/template-part/editor-rtl.css +8 -4
  151. package/build-style/template-part/editor.css +8 -4
  152. package/build-style/video/style-rtl.css +2 -1
  153. package/build-style/video/style.css +2 -1
  154. package/package.json +51 -47
  155. package/src/accordion/README.md +97 -0
  156. package/src/accordion-heading/README.md +81 -0
  157. package/src/accordion-item/README.md +85 -0
  158. package/src/accordion-panel/README.md +74 -0
  159. package/src/archives/README.md +56 -0
  160. package/src/audio/README.md +55 -0
  161. package/src/avatar/README.md +74 -0
  162. package/src/block/README.md +56 -0
  163. package/src/breadcrumbs/README.md +67 -0
  164. package/src/button/README.md +93 -0
  165. package/src/buttons/README.md +80 -0
  166. package/src/calendar/README.md +51 -0
  167. package/src/categories/README.md +69 -0
  168. package/src/code/README.md +55 -0
  169. package/src/column/README.md +72 -0
  170. package/src/columns/README.md +90 -0
  171. package/src/columns/test/transforms.js +164 -0
  172. package/src/columns/transforms.js +74 -0
  173. package/src/comment-author-avatar/README.md +63 -0
  174. package/src/comment-author-name/README.md +67 -0
  175. package/src/comment-content/README.md +61 -0
  176. package/src/comment-date/README.md +67 -0
  177. package/src/comment-edit-link/README.md +67 -0
  178. package/src/comment-reply-link/README.md +63 -0
  179. package/src/comment-template/README.md +60 -0
  180. package/src/comments/README.md +88 -0
  181. package/src/comments/edit/placeholder.js +1 -1
  182. package/src/comments-pagination/README.md +77 -0
  183. package/src/comments-pagination-next/README.md +64 -0
  184. package/src/comments-pagination-numbers/README.md +64 -0
  185. package/src/comments-pagination-previous/README.md +64 -0
  186. package/src/comments-title/README.md +70 -0
  187. package/src/common.scss +63 -10
  188. package/src/cover/README.md +111 -0
  189. package/src/cover/edit/inspector-controls.js +61 -45
  190. package/src/cover/test/edit.js +38 -0
  191. package/src/details/README.md +65 -0
  192. package/src/embed/README.md +56 -0
  193. package/src/file/README.md +60 -0
  194. package/src/footnotes/README.md +64 -0
  195. package/src/form/README.md +90 -0
  196. package/src/form-input/README.md +74 -0
  197. package/src/form-submission-notification/README.md +50 -0
  198. package/src/form-submit-button/README.md +54 -0
  199. package/src/freeform/README.md +49 -0
  200. package/src/gallery/README.md +115 -0
  201. package/src/gallery/edit.js +213 -350
  202. package/src/gallery/test/transforms.js +155 -0
  203. package/src/gallery/transforms.js +47 -0
  204. package/src/group/README.md +80 -0
  205. package/src/heading/README.md +60 -0
  206. package/src/heading/edit.js +1 -2
  207. package/src/home-link/README.md +66 -0
  208. package/src/home-link/index.php +3 -15
  209. package/src/html/README.md +48 -0
  210. package/src/icon/README.md +63 -0
  211. package/src/image/README.md +102 -0
  212. package/src/image/image.js +50 -35
  213. package/src/image/index.php +4 -4
  214. package/src/image/test/use-open-image-media-editor-modal.js +41 -0
  215. package/src/image/use-open-image-media-editor-modal.js +7 -1
  216. package/src/latest-comments/README.md +57 -0
  217. package/src/latest-posts/README.md +71 -0
  218. package/src/list/README.md +70 -0
  219. package/src/list/edit.js +2 -9
  220. package/src/list/ordered-list-settings.js +46 -92
  221. package/src/list-item/README.md +71 -0
  222. package/src/list-item/hooks/use-merge.js +53 -46
  223. package/src/loginout/README.md +56 -0
  224. package/src/math/README.md +50 -0
  225. package/src/media-text/README.md +92 -0
  226. package/src/missing/README.md +55 -0
  227. package/src/more/README.md +49 -0
  228. package/src/navigation/README.md +115 -0
  229. package/src/navigation/edit/index.js +10 -30
  230. package/src/navigation-link/README.md +93 -0
  231. package/src/navigation-link/edit.js +0 -1
  232. package/src/navigation-link/index.php +1 -15
  233. package/src/navigation-link/test/__snapshots__/hooks.js.snap +45 -134
  234. package/src/navigation-overlay-close/README.md +48 -0
  235. package/src/navigation-submenu/README.md +84 -0
  236. package/src/navigation-submenu/edit.js +1 -0
  237. package/src/navigation-submenu/index.php +1 -17
  238. package/src/nextpage/README.md +50 -0
  239. package/src/page-list/README.md +84 -0
  240. package/src/page-list/index.php +3 -15
  241. package/src/page-list-item/README.md +77 -0
  242. package/src/paragraph/README.md +70 -0
  243. package/src/paragraph/deprecated.js +1 -0
  244. package/src/paragraph/edit.js +13 -1
  245. package/src/pattern/README.md +45 -0
  246. package/src/playlist/README.md +86 -0
  247. package/src/playlist/block.json +12 -0
  248. package/src/playlist/edit.js +27 -0
  249. package/src/playlist/index.php +10 -3
  250. package/src/playlist/save.js +9 -1
  251. package/src/playlist/style.scss +7 -0
  252. package/src/playlist/view.js +1 -0
  253. package/src/playlist-track/README.md +69 -0
  254. package/src/post-author/README.md +78 -0
  255. package/src/post-author-biography/README.md +59 -0
  256. package/src/post-author-name/README.md +63 -0
  257. package/src/post-author-name/index.php +1 -1
  258. package/src/post-comment/README.md +61 -0
  259. package/src/post-comments-count/README.md +58 -0
  260. package/src/post-comments-form/README.md +59 -0
  261. package/src/post-comments-link/README.md +60 -0
  262. package/src/post-content/README.md +71 -0
  263. package/src/post-date/README.md +65 -0
  264. package/src/post-date/index.php +1 -1
  265. package/src/post-excerpt/README.md +66 -0
  266. package/src/post-featured-image/README.md +85 -0
  267. package/src/post-featured-image/edit.js +15 -10
  268. package/src/post-featured-image/index.php +1 -1
  269. package/src/post-navigation-link/README.md +63 -0
  270. package/src/post-template/README.md +71 -0
  271. package/src/post-terms/README.md +65 -0
  272. package/src/post-time-to-read/README.md +63 -0
  273. package/src/post-time-to-read/index.js +1 -1
  274. package/src/post-time-to-read/variations.js +2 -2
  275. package/src/post-title/README.md +69 -0
  276. package/src/preformatted/README.md +50 -0
  277. package/src/pullquote/README.md +64 -0
  278. package/src/pullquote/edit.js +1 -7
  279. package/src/query/README.md +64 -0
  280. package/src/query-no-results/README.md +65 -0
  281. package/src/query-pagination/README.md +79 -0
  282. package/src/query-pagination-next/README.md +67 -0
  283. package/src/query-pagination-numbers/README.md +65 -0
  284. package/src/query-pagination-previous/README.md +67 -0
  285. package/src/query-title/README.md +65 -0
  286. package/src/query-total/README.md +66 -0
  287. package/src/quote/README.md +75 -0
  288. package/src/quote/edit.js +3 -9
  289. package/src/read-more/README.md +61 -0
  290. package/src/read-more/index.php +2 -2
  291. package/src/rss/README.md +62 -0
  292. package/src/search/README.md +66 -0
  293. package/src/separator/README.md +62 -0
  294. package/src/shortcode/README.md +44 -0
  295. package/src/shortcode/transforms.js +2 -2
  296. package/src/site-logo/README.md +72 -0
  297. package/src/site-logo/edit.js +5 -0
  298. package/src/site-tagline/README.md +56 -0
  299. package/src/site-title/README.md +57 -0
  300. package/src/social-link/README.md +64 -0
  301. package/src/social-links/README.md +98 -0
  302. package/src/spacer/README.md +53 -0
  303. package/src/tab/README.md +69 -0
  304. package/src/tab-list/README.md +79 -0
  305. package/src/tab-panel/README.md +75 -0
  306. package/src/tab-panels/README.md +75 -0
  307. package/src/table/README.md +71 -0
  308. package/src/table-of-contents/README.md +61 -0
  309. package/src/tabs/README.md +83 -0
  310. package/src/tag-cloud/README.md +62 -0
  311. package/src/template-part/README.md +48 -0
  312. package/src/term-count/README.md +59 -0
  313. package/src/term-description/README.md +60 -0
  314. package/src/term-name/README.md +65 -0
  315. package/src/term-template/README.md +65 -0
  316. package/src/terms-query/README.md +58 -0
  317. package/src/text-columns/README.md +51 -0
  318. package/src/utils/test/waveform-player.js +254 -0
  319. package/src/utils/waveform-player.js +90 -18
  320. package/src/utils/waveform-utils.js +15 -11
  321. package/src/verse/README.md +58 -0
  322. package/src/video/README.md +58 -0
  323. package/src/video/edit-common-settings.js +4 -7
  324. package/src/audio/edit.native.js +0 -250
  325. package/src/audio/style.native.scss +0 -13
  326. package/src/audio/test/__snapshots__/edit.native.js.snap +0 -546
  327. package/src/audio/test/__snapshots__/transforms.native.js.snap +0 -25
  328. package/src/audio/test/edit.native.js +0 -132
  329. package/src/audio/test/transforms.native.js +0 -43
  330. package/src/audio/transforms.native.js +0 -12
  331. package/src/block/edit-title.native.js +0 -67
  332. package/src/block/edit.native.js +0 -247
  333. package/src/block/editor.native.scss +0 -125
  334. package/src/block/test/__snapshots__/transforms.native.js.snap +0 -15
  335. package/src/block/test/edit.native.js +0 -262
  336. package/src/block/test/transforms.native.js +0 -40
  337. package/src/button/color-background.native.js +0 -41
  338. package/src/button/edit.native.js +0 -567
  339. package/src/button/editor.native.scss +0 -70
  340. package/src/button/rich-text.android.scss +0 -6
  341. package/src/button/rich-text.ios.scss +0 -6
  342. package/src/buttons/edit.native.js +0 -157
  343. package/src/buttons/editor.native.scss +0 -11
  344. package/src/buttons/test/__snapshots__/edit.native.js.snap +0 -99
  345. package/src/buttons/test/__snapshots__/transforms.native.js.snap +0 -31
  346. package/src/buttons/test/edit.native.js +0 -485
  347. package/src/buttons/test/transforms.native.js +0 -48
  348. package/src/buttons/transforms.native.js +0 -12
  349. package/src/code/edit.native.js +0 -70
  350. package/src/code/test/__snapshots__/edit.native.js.snap +0 -13
  351. package/src/code/test/edit.native.js +0 -65
  352. package/src/code/theme.native.scss +0 -22
  353. package/src/code/transforms.native.js +0 -12
  354. package/src/column/column-preview.native.js +0 -58
  355. package/src/column/edit.native.js +0 -273
  356. package/src/column/editor.native.scss +0 -75
  357. package/src/columns/columnCalculations.native.js +0 -178
  358. package/src/columns/edit.native.js +0 -507
  359. package/src/columns/editor.native.scss +0 -17
  360. package/src/columns/test/__snapshots__/edit.native.js.snap +0 -305
  361. package/src/columns/test/__snapshots__/transforms.native.js.snap +0 -61
  362. package/src/columns/test/edit.native.js +0 -496
  363. package/src/columns/test/transforms.native.js +0 -89
  364. package/src/columns/transforms.native.js +0 -12
  365. package/src/cover/controls.native.js +0 -307
  366. package/src/cover/edit.native.js +0 -708
  367. package/src/cover/focal-point-settings-button.native.js +0 -53
  368. package/src/cover/overlay-color-settings.native.js +0 -106
  369. package/src/cover/style.native.scss +0 -220
  370. package/src/cover/test/__snapshots__/edit.native.js.snap +0 -105
  371. package/src/cover/test/__snapshots__/transforms.native.js.snap +0 -73
  372. package/src/cover/test/edit.native.js +0 -701
  373. package/src/cover/test/transforms.native.js +0 -116
  374. package/src/cover/transforms.native.js +0 -12
  375. package/src/cover/use-cover-is-dark.native.js +0 -51
  376. package/src/embed/edit.native.js +0 -345
  377. package/src/embed/embed-controls.native.js +0 -65
  378. package/src/embed/embed-link-settings.native.js +0 -99
  379. package/src/embed/embed-loading.native.js +0 -29
  380. package/src/embed/embed-no-preview.native.js +0 -230
  381. package/src/embed/embed-placeholder.native.js +0 -178
  382. package/src/embed/embed-preview.native.js +0 -157
  383. package/src/embed/styles.native.scss +0 -196
  384. package/src/embed/test/__snapshots__/index.native.js.snap +0 -191
  385. package/src/embed/test/__snapshots__/transforms.native.js.snap +0 -23
  386. package/src/embed/test/index.native.js +0 -1125
  387. package/src/embed/test/transforms.native.js +0 -44
  388. package/src/embed/transforms.native.js +0 -12
  389. package/src/embed/wp-embed-preview.native.js +0 -80
  390. package/src/file/edit.native.js +0 -605
  391. package/src/file/style.native.scss +0 -79
  392. package/src/file/test/__snapshots__/edit.native.js.snap +0 -580
  393. package/src/file/test/__snapshots__/transforms.native.js.snap +0 -19
  394. package/src/file/test/edit.native.js +0 -93
  395. package/src/file/test/transforms.native.js +0 -43
  396. package/src/file/transforms.native.js +0 -12
  397. package/src/freeform/edit.native.js +0 -13
  398. package/src/freeform/test/__snapshots__/index.native.js.snap +0 -7
  399. package/src/freeform/test/__snapshots__/transforms.native.js.snap +0 -19
  400. package/src/freeform/test/index.native.js +0 -57
  401. package/src/freeform/test/transforms.native.js +0 -39
  402. package/src/gallery/gallery-styles.native.scss +0 -8
  403. package/src/gallery/gallery.native.js +0 -124
  404. package/src/gallery/styles.native.scss +0 -7
  405. package/src/gallery/test/__snapshots__/index.native.js.snap +0 -177
  406. package/src/gallery/test/__snapshots__/transforms.native.js.snap +0 -53
  407. package/src/gallery/test/helpers.native.js +0 -106
  408. package/src/gallery/test/index.native.js +0 -700
  409. package/src/gallery/test/transforms.native.js +0 -53
  410. package/src/gallery/test/use-get-media.native.js +0 -24
  411. package/src/gallery/transforms.native.js +0 -12
  412. package/src/gallery/use-get-media.native.js +0 -49
  413. package/src/group/edit.native.js +0 -137
  414. package/src/group/editor.native.scss +0 -56
  415. package/src/group/test/__snapshots__/edit.native.js.snap +0 -19
  416. package/src/group/test/__snapshots__/transforms.native.js.snap +0 -35
  417. package/src/group/test/edit.native.js +0 -100
  418. package/src/group/test/transforms.native.js +0 -73
  419. package/src/heading/edit.native.js +0 -159
  420. package/src/heading/test/__snapshots__/index.native.js.snap +0 -43
  421. package/src/heading/test/__snapshots__/transforms.native.js.snap +0 -47
  422. package/src/heading/test/index.native.js +0 -257
  423. package/src/heading/test/transforms.native.js +0 -46
  424. package/src/heading/transforms.native.js +0 -12
  425. package/src/html/transforms.native.js +0 -11
  426. package/src/image/edit.native.js +0 -959
  427. package/src/image/styles.native.scss +0 -70
  428. package/src/image/test/__snapshots__/transforms.native.js.snap +0 -49
  429. package/src/image/test/edit.native.js +0 -459
  430. package/src/image/test/transforms.native.js +0 -49
  431. package/src/image/transforms.native.js +0 -12
  432. package/src/index.native.js +0 -274
  433. package/src/latest-posts/edit.native.js +0 -294
  434. package/src/latest-posts/style.native.scss +0 -47
  435. package/src/latest-posts/test/__snapshots__/edit.native.js.snap +0 -3
  436. package/src/latest-posts/test/__snapshots__/transforms.native.js.snap +0 -15
  437. package/src/latest-posts/test/edit.native.js +0 -49
  438. package/src/latest-posts/test/transforms.native.js +0 -61
  439. package/src/list/tag-name.native.js +0 -12
  440. package/src/list/test/__snapshots__/edit.native.js.snap +0 -121
  441. package/src/list/test/__snapshots__/transforms.native.js.snap +0 -85
  442. package/src/list/test/edit.native.js +0 -602
  443. package/src/list/test/transforms.native.js +0 -56
  444. package/src/list/transforms.native.js +0 -12
  445. package/src/list-item/edit.native.js +0 -175
  446. package/src/list-item/hooks/use-enter.native.js +0 -81
  447. package/src/list-item/icons.native.js +0 -34
  448. package/src/list-item/list-style-type.native.js +0 -146
  449. package/src/list-item/style.native.scss +0 -57
  450. package/src/media-text/edit.native.js +0 -417
  451. package/src/media-text/icon-retry.native.js +0 -11
  452. package/src/media-text/media-container.native.js +0 -393
  453. package/src/media-text/style.native.scss +0 -191
  454. package/src/media-text/test/__snapshots__/transforms.native.js.snap +0 -73
  455. package/src/media-text/test/edit.native.js +0 -58
  456. package/src/media-text/test/transforms.native.js +0 -116
  457. package/src/media-text/transforms.native.js +0 -12
  458. package/src/missing/edit.native.js +0 -294
  459. package/src/missing/style.native.scss +0 -79
  460. package/src/missing/test/__snapshots__/edit.native.js.snap +0 -110
  461. package/src/missing/test/edit-integration.native.js +0 -168
  462. package/src/missing/test/edit.native.js +0 -81
  463. package/src/more/edit.native.js +0 -36
  464. package/src/more/editor.native.scss +0 -21
  465. package/src/more/test/__snapshots__/edit.native.js.snap +0 -7
  466. package/src/more/test/__snapshots__/transforms.native.js.snap +0 -19
  467. package/src/more/test/edit.native.js +0 -41
  468. package/src/more/test/transforms.native.js +0 -42
  469. package/src/more/transforms.native.js +0 -12
  470. package/src/navigation-link/shared/build-css-font-sizes.php +0 -43
  471. package/src/nextpage/edit.native.js +0 -58
  472. package/src/nextpage/editor.native.scss +0 -21
  473. package/src/nextpage/test/__snapshots__/transforms.native.js.snap +0 -19
  474. package/src/nextpage/test/transforms.native.js +0 -42
  475. package/src/nextpage/transforms.native.js +0 -12
  476. package/src/paragraph/edit.native.js +0 -116
  477. package/src/paragraph/test/__snapshots__/edit.native.js.snap +0 -88
  478. package/src/paragraph/test/__snapshots__/transforms.native.js.snap +0 -65
  479. package/src/paragraph/test/edit.native.js +0 -999
  480. package/src/paragraph/test/transforms.native.js +0 -51
  481. package/src/paragraph/transforms.native.js +0 -12
  482. package/src/preformatted/edit.native.js +0 -48
  483. package/src/preformatted/styles.native.scss +0 -30
  484. package/src/preformatted/test/__snapshots__/edit.native.js.snap +0 -95
  485. package/src/preformatted/test/__snapshots__/transforms.native.js.snap +0 -37
  486. package/src/preformatted/test/edit.native.js +0 -111
  487. package/src/preformatted/test/transforms.native.js +0 -47
  488. package/src/preformatted/transforms.native.js +0 -12
  489. package/src/pullquote/blockquote.native.js +0 -39
  490. package/src/pullquote/blockquote.native.scss +0 -8
  491. package/src/pullquote/edit.native.js +0 -128
  492. package/src/pullquote/figure.native.js +0 -33
  493. package/src/pullquote/figure.native.scss +0 -16
  494. package/src/pullquote/test/__snapshots__/transforms.native.js.snap +0 -47
  495. package/src/pullquote/test/edit.native.js +0 -73
  496. package/src/pullquote/test/transforms.native.js +0 -46
  497. package/src/pullquote/transforms.native.js +0 -12
  498. package/src/quote/test/__snapshots__/transforms.native.js.snap +0 -49
  499. package/src/quote/test/edit.native.js +0 -94
  500. package/src/quote/test/transforms.native.js +0 -69
  501. package/src/quote/transforms.native.js +0 -12
  502. package/src/search/edit.native.js +0 -486
  503. package/src/search/style.native.scss +0 -99
  504. package/src/search/test/__snapshots__/edit.native.js.snap +0 -827
  505. package/src/search/test/__snapshots__/transforms.native.js.snap +0 -15
  506. package/src/search/test/edit.native.js +0 -170
  507. package/src/search/test/transforms.native.js +0 -40
  508. package/src/separator/separator-settings.native.js +0 -3
  509. package/src/separator/test/__snapshots__/edit.native.js.snap +0 -7
  510. package/src/separator/test/__snapshots__/transforms.native.js.snap +0 -25
  511. package/src/separator/test/edit.native.js +0 -41
  512. package/src/separator/test/transforms.native.js +0 -42
  513. package/src/separator/transforms.native.js +0 -12
  514. package/src/shortcode/edit.native.js +0 -77
  515. package/src/shortcode/style.native.scss +0 -44
  516. package/src/shortcode/test/__snapshots__/edit.native.js.snap +0 -9
  517. package/src/shortcode/test/__snapshots__/transforms.native.js.snap +0 -19
  518. package/src/shortcode/test/edit.native.js +0 -70
  519. package/src/shortcode/test/transforms.native.js +0 -42
  520. package/src/shortcode/transforms.native.js +0 -12
  521. package/src/social-link/edit.native.js +0 -219
  522. package/src/social-link/editor.native.scss +0 -18
  523. package/src/social-links/edit.native.js +0 -147
  524. package/src/social-links/editor.native.scss +0 -25
  525. package/src/social-links/test/__snapshots__/edit.native.js.snap +0 -57
  526. package/src/social-links/test/__snapshots__/transforms.native.js.snap +0 -31
  527. package/src/social-links/test/edit.native.js +0 -266
  528. package/src/social-links/test/transforms.native.js +0 -53
  529. package/src/spacer/controls.native.js +0 -86
  530. package/src/spacer/edit.native.js +0 -110
  531. package/src/spacer/editor.native.scss +0 -18
  532. package/src/spacer/save.native.js +0 -18
  533. package/src/spacer/test/__snapshots__/index.native.js.snap +0 -43
  534. package/src/spacer/test/__snapshots__/transforms.native.js.snap +0 -25
  535. package/src/spacer/test/index.native.js +0 -257
  536. package/src/spacer/test/transforms.native.js +0 -42
  537. package/src/table/transforms.native.js +0 -11
  538. package/src/text-columns/transforms.native.js +0 -12
  539. package/src/utils/init-block.native.js +0 -40
  540. package/src/utils/transformation-categories.native.js +0 -47
  541. package/src/verse/test/__snapshots__/edit.native.js.snap +0 -13
  542. package/src/verse/test/__snapshots__/transforms.native.js.snap +0 -31
  543. package/src/verse/test/edit.native.js +0 -118
  544. package/src/verse/test/transforms.native.js +0 -46
  545. package/src/verse/transforms.native.js +0 -12
  546. package/src/video/edit.native.js +0 -406
  547. package/src/video/icon-retry.native.js +0 -11
  548. package/src/video/style.native.scss +0 -81
  549. package/src/video/test/__snapshots__/transforms.native.js.snap +0 -41
  550. package/src/video/test/edit.native.js +0 -53
  551. package/src/video/test/transforms.native.js +0 -49
  552. package/src/video/transforms.native.js +0 -12
@@ -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 ) => {
@@ -1,250 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { TouchableWithoutFeedback } from 'react-native';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { View } from '@wordpress/primitives';
10
- import {
11
- PanelBody,
12
- SelectControl,
13
- ToggleControl,
14
- ToolbarButton,
15
- ToolbarGroup,
16
- } from '@wordpress/components';
17
- import {
18
- AudioPlayer,
19
- BlockCaption,
20
- BlockControls,
21
- BlockIcon,
22
- InspectorControls,
23
- MediaPlaceholder,
24
- MediaUpload,
25
- MediaUploadProgress,
26
- RichText,
27
- store as blockEditorStore,
28
- } from '@wordpress/block-editor';
29
- import { __, _x, sprintf } from '@wordpress/i18n';
30
- import { audio as icon, replace } from '@wordpress/icons';
31
- import { useState } from '@wordpress/element';
32
- import { useDispatch, useSelect } from '@wordpress/data';
33
- import { store as noticesStore } from '@wordpress/notices';
34
- import { isURL, getProtocol } from '@wordpress/url';
35
-
36
- /**
37
- * Internal dependencies
38
- */
39
- import styles from './style.scss';
40
-
41
- const ALLOWED_MEDIA_TYPES = [ 'audio' ];
42
-
43
- function AudioEdit( {
44
- attributes,
45
- setAttributes,
46
- isSelected,
47
- insertBlocksAfter,
48
- onFocus,
49
- onBlur,
50
- clientId,
51
- } ) {
52
- const { id, autoplay, loop, preload, src } = attributes;
53
-
54
- const [ isCaptionSelected, setIsCaptionSelected ] = useState( false );
55
-
56
- const onFileChange = ( { mediaId, mediaUrl } ) => {
57
- setAttributes( { id: mediaId, src: mediaUrl } );
58
- };
59
-
60
- const { wasBlockJustInserted } = useSelect( ( select ) => ( {
61
- wasBlockJustInserted: select( blockEditorStore ).wasBlockJustInserted(
62
- clientId,
63
- 'inserter_menu'
64
- ),
65
- } ) );
66
-
67
- const { createErrorNotice } = useDispatch( noticesStore );
68
-
69
- function toggleAttribute( attribute ) {
70
- return ( newValue ) => {
71
- setAttributes( { [ attribute ]: newValue } );
72
- };
73
- }
74
-
75
- function onSelectURL( newSrc ) {
76
- if ( newSrc !== src ) {
77
- if ( isURL( newSrc ) && /^https?:/.test( getProtocol( newSrc ) ) ) {
78
- setAttributes( { src: newSrc, id: undefined } );
79
- } else {
80
- createErrorNotice( __( 'Invalid URL. Audio file not found.' ) );
81
- }
82
- }
83
- }
84
-
85
- function onSelectAudio( media ) {
86
- if ( ! media || ! media.url ) {
87
- // In this case there was an error and we should continue in the editing state
88
- // previous attributes should be removed because they may be temporary blob urls.
89
- setAttributes( { src: undefined, id: undefined } );
90
- return;
91
- }
92
- // Sets the block's attribute and updates the edit component from the
93
- // selected media, then switches off the editing UI.
94
- setAttributes( { src: media.url, id: media.id } );
95
- }
96
-
97
- function onAudioPress() {
98
- setIsCaptionSelected( false );
99
- }
100
-
101
- function onFocusCaption() {
102
- if ( ! isCaptionSelected ) {
103
- setIsCaptionSelected( true );
104
- }
105
- }
106
-
107
- if ( ! src ) {
108
- return (
109
- <View>
110
- <MediaPlaceholder
111
- icon={ <BlockIcon icon={ icon } /> }
112
- onSelect={ onSelectAudio }
113
- onSelectURL={ onSelectURL }
114
- accept="audio/*"
115
- allowedTypes={ ALLOWED_MEDIA_TYPES }
116
- value={ attributes }
117
- onFocus={ onFocus }
118
- autoOpenMediaUpload={ isSelected && wasBlockJustInserted }
119
- />
120
- </View>
121
- );
122
- }
123
-
124
- function getBlockControls( open ) {
125
- return (
126
- <BlockControls>
127
- <ToolbarGroup>
128
- <ToolbarButton
129
- title={ __( 'Replace audio' ) }
130
- icon={ replace }
131
- onClick={ open }
132
- />
133
- </ToolbarGroup>
134
- </BlockControls>
135
- );
136
- }
137
-
138
- function getBlockUI( open, getMediaOptions ) {
139
- return (
140
- <MediaUploadProgress
141
- mediaId={ id }
142
- onFinishMediaUploadWithSuccess={ onFileChange }
143
- onMediaUploadStateReset={ onFileChange }
144
- containerStyle={ styles.progressContainer }
145
- progressBarStyle={ styles.progressBar }
146
- spinnerStyle={ styles.spinner }
147
- renderContent={ ( {
148
- isUploadInProgress,
149
- isUploadFailed,
150
- retryMessage,
151
- } ) => {
152
- return (
153
- <>
154
- { ! isCaptionSelected &&
155
- ! isUploadInProgress &&
156
- getBlockControls( open ) }
157
- { getMediaOptions() }
158
- <AudioPlayer
159
- isUploadInProgress={ isUploadInProgress }
160
- isUploadFailed={ isUploadFailed }
161
- retryMessage={ retryMessage }
162
- attributes={ attributes }
163
- isSelected={ isSelected }
164
- />
165
- </>
166
- );
167
- } }
168
- />
169
- );
170
- }
171
-
172
- return (
173
- <TouchableWithoutFeedback
174
- accessible={ ! isSelected }
175
- onPress={ onAudioPress }
176
- disabled={ ! isSelected }
177
- >
178
- <View>
179
- <InspectorControls>
180
- <PanelBody title={ __( 'Settings' ) }>
181
- <ToggleControl
182
- label={ __( 'Autoplay' ) }
183
- onChange={ toggleAttribute( 'autoplay' ) }
184
- checked={ autoplay }
185
- help={ __(
186
- 'Autoplay may cause usability issues for some users.'
187
- ) }
188
- />
189
- <ToggleControl
190
- label={ __( 'Loop' ) }
191
- onChange={ toggleAttribute( 'loop' ) }
192
- checked={ loop }
193
- />
194
- <SelectControl
195
- label={ _x(
196
- 'Preload',
197
- 'noun; Audio block parameter'
198
- ) }
199
- value={ preload || '' }
200
- // `undefined` is required for the preload attribute to be unset.
201
- onChange={ ( value ) =>
202
- setAttributes( {
203
- preload: value || undefined,
204
- } )
205
- }
206
- options={ [
207
- { value: '', label: __( 'Browser default' ) },
208
- { value: 'auto', label: __( 'Auto' ) },
209
- { value: 'metadata', label: __( 'Metadata' ) },
210
- {
211
- value: 'none',
212
- label: _x( 'None', '"Preload" value' ),
213
- },
214
- ] }
215
- hideCancelButton
216
- />
217
- </PanelBody>
218
- </InspectorControls>
219
- <MediaUpload
220
- allowedTypes={ ALLOWED_MEDIA_TYPES }
221
- isReplacingMedia
222
- onSelect={ onSelectAudio }
223
- onSelectURL={ onSelectURL }
224
- render={ ( { open, getMediaOptions } ) => {
225
- return getBlockUI( open, getMediaOptions );
226
- } }
227
- />
228
- <BlockCaption
229
- accessible
230
- accessibilityLabelCreator={ ( caption ) =>
231
- RichText.isEmpty( caption )
232
- ? /* translators: accessibility text. Empty Audio caption. */
233
- __( 'Audio caption. Empty' )
234
- : sprintf(
235
- /* translators: accessibility text. %s: Audio caption. */
236
- __( 'Audio caption. %s' ),
237
- caption
238
- )
239
- }
240
- clientId={ clientId }
241
- isSelected={ isCaptionSelected }
242
- onFocus={ onFocusCaption }
243
- onBlur={ onBlur }
244
- insertBlocksAfter={ insertBlocksAfter }
245
- />
246
- </View>
247
- </TouchableWithoutFeedback>
248
- );
249
- }
250
- export default AudioEdit;
@@ -1,13 +0,0 @@
1
- .progressContainer {
2
- border-radius: 4px;
3
- overflow: hidden;
4
- }
5
-
6
- .progressBar {
7
- height: 4px;
8
- margin-bottom: -4px;
9
- }
10
-
11
- .spinner {
12
- height: 4px;
13
- }