@wordpress/block-library 11.0.2-next.v.202609171837.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/build/accordion/block.json +4 -1
  3. package/build/accordion-item/block.json +7 -1
  4. package/build/accordion-panel/block.json +9 -1
  5. package/build/archives/block.json +9 -0
  6. package/build/audio/block.json +8 -0
  7. package/build/breadcrumbs/block.json +3 -0
  8. package/build/breadcrumbs/edit.cjs.map +3 -3
  9. package/build/buttons/block.json +9 -0
  10. package/build/categories/block.json +12 -1
  11. package/build/code/block.json +9 -0
  12. package/build/column/block.json +9 -0
  13. package/build/columns/block.json +9 -0
  14. package/build/comment-author-name/block.json +3 -0
  15. package/build/comment-content/block.json +5 -0
  16. package/build/comment-date/block.json +3 -0
  17. package/build/comment-edit-link/block.json +3 -0
  18. package/build/comment-reply-link/block.json +3 -0
  19. package/build/comments/block.json +10 -0
  20. package/build/comments-pagination/block.json +3 -0
  21. package/build/comments-pagination-next/block.json +3 -0
  22. package/build/comments-pagination-numbers/block.json +3 -0
  23. package/build/comments-pagination-previous/block.json +6 -0
  24. package/build/comments-title/block.json +3 -0
  25. package/build/cover/edit/index.cjs +4 -1
  26. package/build/cover/edit/index.cjs.map +2 -2
  27. package/build/cover/edit/inspector-controls.cjs +52 -13
  28. package/build/cover/edit/inspector-controls.cjs.map +2 -2
  29. package/build/details/block.json +11 -0
  30. package/build/file/block.json +9 -0
  31. package/build/footnotes/block.json +9 -0
  32. package/build/gallery/block.json +9 -0
  33. package/build/gallery/edit.cjs +1 -2
  34. package/build/gallery/edit.cjs.map +2 -2
  35. package/build/group/block.json +1 -0
  36. package/build/heading/block.json +9 -0
  37. package/build/home-link/block.json +18 -0
  38. package/build/home-link/edit.cjs.map +3 -3
  39. package/build/image/image.cjs +10 -8
  40. package/build/image/image.cjs.map +3 -3
  41. package/build/image/use-open-image-media-editor-modal.cjs +20 -0
  42. package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
  43. package/build/latest-comments/block.json +10 -0
  44. package/build/latest-posts/block.json +10 -0
  45. package/build/loginout/block.json +10 -0
  46. package/build/math/block.json +10 -0
  47. package/build/media-text/block.json +1 -0
  48. package/build/navigation/edit/index.cjs +1 -4
  49. package/build/navigation/edit/index.cjs.map +2 -2
  50. package/build/navigation-link/link-ui/page-creator.cjs.map +3 -3
  51. package/build/navigation-link/shared/controls.cjs.map +3 -3
  52. package/build/navigation-link/shared/use-link-preview.cjs +13 -13
  53. package/build/navigation-link/shared/use-link-preview.cjs.map +2 -2
  54. package/build/navigation-overlay-close/block.json +7 -0
  55. package/build/navigation-submenu/block.json +6 -0
  56. package/build/navigation-submenu/edit.cjs +9 -1
  57. package/build/navigation-submenu/edit.cjs.map +3 -3
  58. package/build/page-list/block.json +10 -0
  59. package/build/paragraph/edit.cjs +1 -2
  60. package/build/paragraph/edit.cjs.map +2 -2
  61. package/build/playlist/block.json +1 -0
  62. package/build/post-author-biography/block.json +4 -0
  63. package/build/post-author-name/block.json +5 -0
  64. package/build/post-comments-count/block.json +3 -0
  65. package/build/post-comments-form/block.json +10 -0
  66. package/build/post-content/block.json +2 -0
  67. package/build/post-date/block.json +3 -0
  68. package/build/post-excerpt/block.json +5 -0
  69. package/build/post-featured-image/edit.cjs +11 -9
  70. package/build/post-featured-image/edit.cjs.map +2 -2
  71. package/build/post-navigation-link/block.json +30 -0
  72. package/build/post-navigation-link/edit.cjs +13 -2
  73. package/build/post-navigation-link/edit.cjs.map +3 -3
  74. package/build/post-template/block.json +13 -1
  75. package/build/post-terms/block.json +6 -0
  76. package/build/post-time-to-read/block.json +6 -0
  77. package/build/post-title/block.json +10 -0
  78. package/build/preformatted/block.json +7 -0
  79. package/build/pullquote/block.json +1 -0
  80. package/build/query-no-results/block.json +10 -2
  81. package/build/query-pagination/block.json +3 -0
  82. package/build/query-pagination-next/block.json +3 -0
  83. package/build/query-pagination-numbers/block.json +3 -0
  84. package/build/query-pagination-previous/block.json +3 -0
  85. package/build/query-title/block.json +3 -0
  86. package/build/query-total/block.json +6 -0
  87. package/build/quote/block.json +1 -0
  88. package/build/read-more/block.json +6 -0
  89. package/build/rss/block.json +6 -0
  90. package/build/site-tagline/block.json +8 -1
  91. package/build/site-title/block.json +7 -1
  92. package/build/social-links/block.json +3 -0
  93. package/build/social-links/edit.cjs +2 -3
  94. package/build/social-links/edit.cjs.map +2 -2
  95. package/build/tab-panel/block.json +25 -0
  96. package/build/tab-panel/controls.cjs.map +3 -3
  97. package/build/tab-panels/block.json +18 -1
  98. package/build/table-of-contents/block.json +7 -0
  99. package/build/tabs/block.json +24 -1
  100. package/build/tag-cloud/block.json +19 -0
  101. package/build/template-part/edit/selection-modal.cjs.map +1 -1
  102. package/build/term-count/block.json +7 -0
  103. package/build/term-description/block.json +9 -0
  104. package/build/term-name/block.json +10 -0
  105. package/build/term-template/block.json +10 -1
  106. package/build/utils/search-patterns.cjs +7 -43
  107. package/build/utils/search-patterns.cjs.map +3 -3
  108. package/build/utils/style-state.cjs +4 -6
  109. package/build/utils/style-state.cjs.map +2 -2
  110. package/build/video/block.json +6 -0
  111. package/build/video/edit.cjs +23 -15
  112. package/build/video/edit.cjs.map +3 -3
  113. package/build/video/index.cjs +0 -2
  114. package/build/video/index.cjs.map +3 -3
  115. package/build/video/save.cjs +5 -1
  116. package/build/video/save.cjs.map +3 -3
  117. package/build-module/accordion/block.json +4 -1
  118. package/build-module/accordion-item/block.json +7 -1
  119. package/build-module/accordion-panel/block.json +9 -1
  120. package/build-module/archives/block.json +9 -0
  121. package/build-module/audio/block.json +8 -0
  122. package/build-module/breadcrumbs/block.json +3 -0
  123. package/build-module/breadcrumbs/edit.mjs +3 -3
  124. package/build-module/breadcrumbs/edit.mjs.map +2 -2
  125. package/build-module/buttons/block.json +9 -0
  126. package/build-module/categories/block.json +12 -1
  127. package/build-module/code/block.json +9 -0
  128. package/build-module/column/block.json +9 -0
  129. package/build-module/columns/block.json +9 -0
  130. package/build-module/comment-author-name/block.json +3 -0
  131. package/build-module/comment-content/block.json +5 -0
  132. package/build-module/comment-date/block.json +3 -0
  133. package/build-module/comment-edit-link/block.json +3 -0
  134. package/build-module/comment-reply-link/block.json +3 -0
  135. package/build-module/comments/block.json +10 -0
  136. package/build-module/comments-pagination/block.json +3 -0
  137. package/build-module/comments-pagination-next/block.json +3 -0
  138. package/build-module/comments-pagination-numbers/block.json +3 -0
  139. package/build-module/comments-pagination-previous/block.json +6 -0
  140. package/build-module/comments-title/block.json +3 -0
  141. package/build-module/cover/edit/index.mjs +4 -1
  142. package/build-module/cover/edit/index.mjs.map +2 -2
  143. package/build-module/cover/edit/inspector-controls.mjs +57 -14
  144. package/build-module/cover/edit/inspector-controls.mjs.map +2 -2
  145. package/build-module/details/block.json +11 -0
  146. package/build-module/file/block.json +9 -0
  147. package/build-module/footnotes/block.json +9 -0
  148. package/build-module/gallery/block.json +9 -0
  149. package/build-module/gallery/edit.mjs +1 -2
  150. package/build-module/gallery/edit.mjs.map +2 -2
  151. package/build-module/group/block.json +1 -0
  152. package/build-module/heading/block.json +9 -0
  153. package/build-module/home-link/block.json +18 -0
  154. package/build-module/home-link/edit.mjs +2 -2
  155. package/build-module/home-link/edit.mjs.map +2 -2
  156. package/build-module/image/image.mjs +12 -10
  157. package/build-module/image/image.mjs.map +2 -2
  158. package/build-module/image/use-open-image-media-editor-modal.mjs +20 -0
  159. package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
  160. package/build-module/latest-comments/block.json +10 -0
  161. package/build-module/latest-posts/block.json +10 -0
  162. package/build-module/loginout/block.json +10 -0
  163. package/build-module/math/block.json +10 -0
  164. package/build-module/media-text/block.json +1 -0
  165. package/build-module/navigation/edit/index.mjs +1 -4
  166. package/build-module/navigation/edit/index.mjs.map +2 -2
  167. package/build-module/navigation-link/link-ui/page-creator.mjs +2 -2
  168. package/build-module/navigation-link/link-ui/page-creator.mjs.map +2 -2
  169. package/build-module/navigation-link/shared/controls.mjs +2 -2
  170. package/build-module/navigation-link/shared/controls.mjs.map +2 -2
  171. package/build-module/navigation-link/shared/use-link-preview.mjs +13 -13
  172. package/build-module/navigation-link/shared/use-link-preview.mjs.map +2 -2
  173. package/build-module/navigation-overlay-close/block.json +7 -0
  174. package/build-module/navigation-submenu/block.json +6 -0
  175. package/build-module/navigation-submenu/edit.mjs +11 -2
  176. package/build-module/navigation-submenu/edit.mjs.map +2 -2
  177. package/build-module/page-list/block.json +10 -0
  178. package/build-module/paragraph/edit.mjs +1 -2
  179. package/build-module/paragraph/edit.mjs.map +2 -2
  180. package/build-module/playlist/block.json +1 -0
  181. package/build-module/post-author-biography/block.json +4 -0
  182. package/build-module/post-author-name/block.json +5 -0
  183. package/build-module/post-comments-count/block.json +3 -0
  184. package/build-module/post-comments-form/block.json +10 -0
  185. package/build-module/post-content/block.json +2 -0
  186. package/build-module/post-date/block.json +3 -0
  187. package/build-module/post-excerpt/block.json +5 -0
  188. package/build-module/post-featured-image/edit.mjs +11 -9
  189. package/build-module/post-featured-image/edit.mjs.map +2 -2
  190. package/build-module/post-navigation-link/block.json +30 -0
  191. package/build-module/post-navigation-link/edit.mjs +17 -3
  192. package/build-module/post-navigation-link/edit.mjs.map +2 -2
  193. package/build-module/post-template/block.json +13 -1
  194. package/build-module/post-terms/block.json +6 -0
  195. package/build-module/post-time-to-read/block.json +6 -0
  196. package/build-module/post-title/block.json +10 -0
  197. package/build-module/preformatted/block.json +7 -0
  198. package/build-module/pullquote/block.json +1 -0
  199. package/build-module/query-no-results/block.json +10 -2
  200. package/build-module/query-pagination/block.json +3 -0
  201. package/build-module/query-pagination-next/block.json +3 -0
  202. package/build-module/query-pagination-numbers/block.json +3 -0
  203. package/build-module/query-pagination-previous/block.json +3 -0
  204. package/build-module/query-title/block.json +3 -0
  205. package/build-module/query-total/block.json +6 -0
  206. package/build-module/quote/block.json +1 -0
  207. package/build-module/read-more/block.json +6 -0
  208. package/build-module/rss/block.json +6 -0
  209. package/build-module/site-tagline/block.json +8 -1
  210. package/build-module/site-title/block.json +7 -1
  211. package/build-module/social-links/block.json +3 -0
  212. package/build-module/social-links/edit.mjs +2 -3
  213. package/build-module/social-links/edit.mjs.map +2 -2
  214. package/build-module/tab-panel/block.json +25 -0
  215. package/build-module/tab-panel/controls.mjs +2 -2
  216. package/build-module/tab-panel/controls.mjs.map +2 -2
  217. package/build-module/tab-panels/block.json +18 -1
  218. package/build-module/table-of-contents/block.json +7 -0
  219. package/build-module/tabs/block.json +24 -1
  220. package/build-module/tag-cloud/block.json +19 -0
  221. package/build-module/template-part/edit/selection-modal.mjs.map +1 -1
  222. package/build-module/term-count/block.json +7 -0
  223. package/build-module/term-description/block.json +9 -0
  224. package/build-module/term-name/block.json +10 -0
  225. package/build-module/term-template/block.json +10 -1
  226. package/build-module/utils/search-patterns.mjs +7 -32
  227. package/build-module/utils/search-patterns.mjs.map +2 -2
  228. package/build-module/utils/style-state.mjs +6 -4
  229. package/build-module/utils/style-state.mjs.map +2 -2
  230. package/build-module/video/block.json +6 -0
  231. package/build-module/video/edit.mjs +25 -16
  232. package/build-module/video/edit.mjs.map +2 -2
  233. package/build-module/video/index.mjs +0 -2
  234. package/build-module/video/index.mjs.map +2 -2
  235. package/build-module/video/save.mjs +7 -2
  236. package/build-module/video/save.mjs.map +2 -2
  237. package/build-style/editor-rtl.css +12 -2
  238. package/build-style/editor.css +12 -2
  239. package/build-style/image/editor-rtl.css +6 -0
  240. package/build-style/image/editor.css +6 -0
  241. package/build-style/navigation/style-rtl.css +18 -3
  242. package/build-style/navigation/style.css +18 -3
  243. package/build-style/navigation-link/editor-rtl.css +3 -1
  244. package/build-style/navigation-link/editor.css +3 -1
  245. package/build-style/navigation-overlay-close/style-rtl.css +1 -1
  246. package/build-style/navigation-overlay-close/style.css +1 -1
  247. package/build-style/navigation-submenu/editor-rtl.css +3 -1
  248. package/build-style/navigation-submenu/editor.css +3 -1
  249. package/build-style/post-navigation-link/style-rtl.css +3 -0
  250. package/build-style/post-navigation-link/style.css +3 -0
  251. package/build-style/style-rtl.css +24 -4
  252. package/build-style/style.css +24 -4
  253. package/build-style/tab-panel/style-rtl.css +2 -0
  254. package/build-style/tab-panel/style.css +2 -0
  255. package/package.json +41 -42
  256. package/src/accordion/README.md +3 -0
  257. package/src/accordion/block.json +4 -1
  258. package/src/accordion-item/README.md +5 -0
  259. package/src/accordion-item/block.json +7 -1
  260. package/src/accordion-panel/README.md +7 -0
  261. package/src/accordion-panel/block.json +9 -1
  262. package/src/archives/README.md +4 -0
  263. package/src/archives/block.json +9 -0
  264. package/src/audio/README.md +4 -0
  265. package/src/audio/block.json +8 -0
  266. package/src/breadcrumbs/README.md +2 -0
  267. package/src/breadcrumbs/block.json +3 -0
  268. package/src/breadcrumbs/edit.jsx +3 -3
  269. package/src/breadcrumbs/index.php +1 -1
  270. package/src/buttons/README.md +4 -0
  271. package/src/buttons/block.json +9 -0
  272. package/src/categories/README.md +6 -0
  273. package/src/categories/block.json +12 -1
  274. package/src/code/README.md +4 -0
  275. package/src/code/block.json +9 -0
  276. package/src/column/README.md +4 -0
  277. package/src/column/block.json +9 -0
  278. package/src/columns/README.md +4 -0
  279. package/src/columns/block.json +9 -0
  280. package/src/comment-author-name/README.md +2 -0
  281. package/src/comment-author-name/block.json +3 -0
  282. package/src/comment-content/README.md +4 -0
  283. package/src/comment-content/block.json +5 -0
  284. package/src/comment-date/README.md +2 -0
  285. package/src/comment-date/block.json +3 -0
  286. package/src/comment-edit-link/README.md +2 -0
  287. package/src/comment-edit-link/block.json +3 -0
  288. package/src/comment-reply-link/README.md +2 -0
  289. package/src/comment-reply-link/block.json +3 -0
  290. package/src/comments/README.md +5 -0
  291. package/src/comments/block.json +10 -0
  292. package/src/comments-pagination/README.md +2 -0
  293. package/src/comments-pagination/block.json +3 -0
  294. package/src/comments-pagination-next/README.md +2 -0
  295. package/src/comments-pagination-next/block.json +3 -0
  296. package/src/comments-pagination-numbers/README.md +2 -0
  297. package/src/comments-pagination-numbers/block.json +3 -0
  298. package/src/comments-pagination-previous/README.md +2 -0
  299. package/src/comments-pagination-previous/block.json +6 -0
  300. package/src/comments-title/README.md +2 -0
  301. package/src/comments-title/block.json +3 -0
  302. package/src/cover/edit/index.jsx +3 -0
  303. package/src/cover/edit/inspector-controls.jsx +64 -13
  304. package/src/cover/test/edit.browser.test.js +18 -2
  305. package/src/details/README.md +6 -0
  306. package/src/details/block.json +11 -0
  307. package/src/file/README.md +4 -0
  308. package/src/file/block.json +9 -0
  309. package/src/footnotes/README.md +4 -0
  310. package/src/footnotes/block.json +9 -0
  311. package/src/gallery/README.md +4 -0
  312. package/src/gallery/block.json +9 -0
  313. package/src/gallery/edit.jsx +1 -2
  314. package/src/group/README.md +1 -0
  315. package/src/group/block.json +1 -0
  316. package/src/heading/README.md +4 -0
  317. package/src/heading/block.json +9 -0
  318. package/src/home-link/README.md +5 -0
  319. package/src/home-link/block.json +18 -0
  320. package/src/home-link/edit.jsx +2 -2
  321. package/src/icon/index.php +9 -0
  322. package/src/image/editor.scss +8 -0
  323. package/src/image/image.jsx +13 -11
  324. package/src/image/test/use-open-image-media-editor-modal.jsdom.test.js +139 -0
  325. package/src/image/use-open-image-media-editor-modal.js +37 -0
  326. package/src/latest-comments/README.md +5 -0
  327. package/src/latest-comments/block.json +10 -0
  328. package/src/latest-posts/README.md +5 -0
  329. package/src/latest-posts/block.json +10 -0
  330. package/src/loginout/README.md +5 -0
  331. package/src/loginout/block.json +10 -0
  332. package/src/math/README.md +5 -0
  333. package/src/math/block.json +10 -0
  334. package/src/media-text/README.md +1 -0
  335. package/src/media-text/block.json +1 -0
  336. package/src/navigation/edit/index.jsx +2 -4
  337. package/src/navigation/style.scss +40 -4
  338. package/src/navigation-link/editor.scss +6 -1
  339. package/src/navigation-link/link-ui/page-creator.jsx +2 -2
  340. package/src/navigation-link/shared/controls.jsx +2 -2
  341. package/src/navigation-link/shared/test/use-link-preview.jsdom.test.js +22 -22
  342. package/src/navigation-link/shared/use-link-preview.js +15 -14
  343. package/src/navigation-overlay-close/README.md +1 -0
  344. package/src/navigation-overlay-close/block.json +7 -0
  345. package/src/navigation-overlay-close/style.scss +1 -1
  346. package/src/navigation-submenu/README.md +7 -0
  347. package/src/navigation-submenu/block.json +6 -0
  348. package/src/navigation-submenu/edit.jsx +11 -1
  349. package/src/navigation-submenu/editor.scss +6 -1
  350. package/src/navigation-submenu/index.php +11 -0
  351. package/src/page-list/README.md +5 -0
  352. package/src/page-list/block.json +10 -0
  353. package/src/paragraph/edit.jsx +1 -3
  354. package/src/playlist/README.md +1 -0
  355. package/src/playlist/block.json +1 -0
  356. package/src/post-author-biography/README.md +3 -0
  357. package/src/post-author-biography/block.json +4 -0
  358. package/src/post-author-name/README.md +4 -0
  359. package/src/post-author-name/block.json +5 -0
  360. package/src/post-comments-count/README.md +2 -0
  361. package/src/post-comments-count/block.json +3 -0
  362. package/src/post-comments-form/README.md +5 -0
  363. package/src/post-comments-form/block.json +10 -0
  364. package/src/post-content/README.md +2 -0
  365. package/src/post-content/block.json +2 -0
  366. package/src/post-date/README.md +2 -0
  367. package/src/post-date/block.json +3 -0
  368. package/src/post-excerpt/README.md +4 -0
  369. package/src/post-excerpt/block.json +5 -0
  370. package/src/post-featured-image/edit.jsx +11 -9
  371. package/src/post-navigation-link/README.md +12 -0
  372. package/src/post-navigation-link/block.json +30 -0
  373. package/src/post-navigation-link/edit.jsx +23 -2
  374. package/src/post-navigation-link/index.php +94 -5
  375. package/src/post-navigation-link/style.scss +2 -0
  376. package/src/post-template/README.md +7 -0
  377. package/src/post-template/block.json +13 -1
  378. package/src/post-terms/README.md +5 -0
  379. package/src/post-terms/block.json +6 -0
  380. package/src/post-time-to-read/README.md +5 -0
  381. package/src/post-time-to-read/block.json +6 -0
  382. package/src/post-title/README.md +5 -0
  383. package/src/post-title/block.json +10 -0
  384. package/src/preformatted/README.md +6 -0
  385. package/src/preformatted/block.json +7 -0
  386. package/src/pullquote/README.md +1 -0
  387. package/src/pullquote/block.json +1 -0
  388. package/src/query-no-results/README.md +7 -0
  389. package/src/query-no-results/block.json +10 -2
  390. package/src/query-pagination/README.md +2 -0
  391. package/src/query-pagination/block.json +3 -0
  392. package/src/query-pagination-next/README.md +2 -0
  393. package/src/query-pagination-next/block.json +3 -0
  394. package/src/query-pagination-numbers/README.md +2 -0
  395. package/src/query-pagination-numbers/block.json +3 -0
  396. package/src/query-pagination-previous/README.md +2 -0
  397. package/src/query-pagination-previous/block.json +3 -0
  398. package/src/query-title/README.md +2 -0
  399. package/src/query-title/block.json +3 -0
  400. package/src/query-total/README.md +5 -0
  401. package/src/query-total/block.json +6 -0
  402. package/src/quote/README.md +1 -0
  403. package/src/quote/block.json +1 -0
  404. package/src/read-more/README.md +5 -0
  405. package/src/read-more/block.json +6 -0
  406. package/src/rss/README.md +5 -0
  407. package/src/rss/block.json +6 -0
  408. package/src/site-tagline/README.md +6 -0
  409. package/src/site-tagline/block.json +8 -1
  410. package/src/site-title/README.md +5 -0
  411. package/src/site-title/block.json +7 -1
  412. package/src/social-links/README.md +2 -0
  413. package/src/social-links/block.json +3 -0
  414. package/src/social-links/edit.jsx +2 -3
  415. package/src/tab-panel/README.md +9 -0
  416. package/src/tab-panel/block.json +25 -0
  417. package/src/tab-panel/controls.jsx +2 -2
  418. package/src/tab-panel/style.scss +5 -2
  419. package/src/tab-panels/README.md +7 -0
  420. package/src/tab-panels/block.json +18 -1
  421. package/src/table-of-contents/README.md +6 -0
  422. package/src/table-of-contents/block.json +7 -0
  423. package/src/tabs/README.md +9 -0
  424. package/src/tabs/block.json +24 -1
  425. package/src/tag-cloud/README.md +9 -0
  426. package/src/tag-cloud/block.json +19 -0
  427. package/src/template-part/edit/selection-modal.jsx +1 -1
  428. package/src/term-count/README.md +6 -0
  429. package/src/term-count/block.json +7 -0
  430. package/src/term-description/README.md +5 -0
  431. package/src/term-description/block.json +9 -0
  432. package/src/term-name/README.md +5 -0
  433. package/src/term-name/block.json +10 -0
  434. package/src/term-name/index.php +1 -1
  435. package/src/term-template/README.md +5 -0
  436. package/src/term-template/block.json +10 -1
  437. package/src/utils/search-patterns.js +9 -53
  438. package/src/utils/style-state.js +6 -4
  439. package/src/utils/test/{search-patterns.js → search-patterns.jsdom.test.js} +1 -22
  440. package/src/video/README.md +7 -0
  441. package/src/video/block.json +6 -0
  442. package/src/video/edit.jsx +56 -51
  443. package/src/video/index.js +0 -2
  444. package/src/video/save.jsx +10 -1
  445. package/build/video/variations.cjs +0 -75
  446. package/build/video/variations.cjs.map +0 -7
  447. package/build-module/video/variations.mjs +0 -50
  448. package/build-module/video/variations.mjs.map +0 -7
  449. package/src/video/test/variations.js +0 -63
  450. package/src/video/variations.js +0 -62
@@ -20,14 +20,31 @@
20
20
  "supports": {
21
21
  "align": true,
22
22
  "anchor": true,
23
+ "background": {
24
+ "backgroundImage": true,
25
+ "backgroundSize": true,
26
+ "gradient": true,
27
+ "__experimentalDefaultControls": {
28
+ "backgroundImage": true
29
+ }
30
+ },
23
31
  "color": {
24
32
  "text": true,
25
33
  "background": true,
34
+ "heading": true,
35
+ "button": true,
36
+ "link": true,
26
37
  "__experimentalDefaultControls": {
27
38
  "text": true,
28
39
  "background": true
29
40
  }
30
41
  },
42
+ "__experimentalBorder": {
43
+ "color": true,
44
+ "radius": true,
45
+ "style": true,
46
+ "width": true
47
+ },
31
48
  "layout": {
32
49
  "allowEditing": false
33
50
  },
@@ -38,9 +55,15 @@
38
55
  "margin": true,
39
56
  "padding": true
40
57
  },
58
+ "shadow": true,
41
59
  "typography": {
42
60
  "fontSize": true,
43
- "__experimentalFontFamily": true
61
+ "lineHeight": true,
62
+ "__experimentalFontFamily": true,
63
+ "__experimentalFontWeight": true,
64
+ "__experimentalFontStyle": true,
65
+ "__experimentalTextTransform": true,
66
+ "__experimentalLetterSpacing": true
44
67
  }
45
68
  },
46
69
  "usesContext": [ "core/tabs-list", "core/tabs-id" ],
@@ -36,8 +36,27 @@
36
36
  ],
37
37
  "supports": {
38
38
  "anchor": true,
39
+ "background": {
40
+ "backgroundImage": true,
41
+ "backgroundSize": true,
42
+ "gradient": true,
43
+ "__experimentalDefaultControls": {
44
+ "backgroundImage": true,
45
+ "gradient": true
46
+ }
47
+ },
39
48
  "html": false,
40
49
  "align": true,
50
+ "color": {
51
+ "background": true,
52
+ "link": true,
53
+ "text": false,
54
+ "__experimentalDefaultControls": {
55
+ "background": true,
56
+ "link": true
57
+ }
58
+ },
59
+ "shadow": true,
41
60
  "spacing": {
42
61
  "margin": true,
43
62
  "padding": true
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/template-part/edit/selection-modal.jsx"],
4
- "sourcesContent": ["import { useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport {\n\tSearchControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n} from './utils/hooks';\nimport { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';\nimport { searchPatterns } from '../../utils/search-patterns';\n\nexport default function TemplatePartSelectionModal( {\n\tsetAttributes,\n\tonClose,\n\ttemplatePartId = null,\n\tarea,\n\tclientId,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\n\t// We can map template parts to block patters to reuse the BlockPatternsList UI\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tconst partsAsPatterns = templateParts.map( ( templatePart ) =>\n\t\t\tmapTemplatePartToBlockPattern( templatePart )\n\t\t);\n\n\t\treturn searchPatterns( partsAsPatterns, searchValue );\n\t}, [ templateParts, searchValue ] );\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\tconst onTemplatePartSelect = ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" inserted.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t\tonClose();\n\t};\n\n\tconst hasTemplateParts = !! filteredTemplateParts.length;\n\tconst hasBlockPatterns = !! filteredBlockPatterns.length;\n\n\treturn (\n\t\t<div className=\"block-library-template-part__selection-content\">\n\t\t\t<div className=\"block-library-template-part__selection-search\">\n\t\t\t\t<SearchControl\n\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ hasTemplateParts && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Existing template parts' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredTemplateParts }\n\t\t\t\t\t\tonClickPattern={ ( pattern ) => {\n\t\t\t\t\t\t\tonTemplatePartSelect( pattern.templatePart );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! hasTemplateParts && ! hasBlockPatterns && (\n\t\t\t\t<HStack alignment=\"center\">\n\t\t\t\t\t<p>{ __( 'No results found.' ) }</p>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
4
+ "sourcesContent": ["import { useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport {\n\tSearchControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n} from './utils/hooks';\nimport { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';\nimport { searchPatterns } from '../../utils/search-patterns';\n\nexport default function TemplatePartSelectionModal( {\n\tsetAttributes,\n\tonClose,\n\ttemplatePartId = null,\n\tarea,\n\tclientId,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\n\t// We can map template parts to block patterns to reuse the BlockPatternsList UI\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tconst partsAsPatterns = templateParts.map( ( templatePart ) =>\n\t\t\tmapTemplatePartToBlockPattern( templatePart )\n\t\t);\n\n\t\treturn searchPatterns( partsAsPatterns, searchValue );\n\t}, [ templateParts, searchValue ] );\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\tconst onTemplatePartSelect = ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" inserted.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t\tonClose();\n\t};\n\n\tconst hasTemplateParts = !! filteredTemplateParts.length;\n\tconst hasBlockPatterns = !! filteredBlockPatterns.length;\n\n\treturn (\n\t\t<div className=\"block-library-template-part__selection-content\">\n\t\t\t<div className=\"block-library-template-part__selection-search\">\n\t\t\t\t<SearchControl\n\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ hasTemplateParts && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Existing template parts' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredTemplateParts }\n\t\t\t\t\t\tonClickPattern={ ( pattern ) => {\n\t\t\t\t\t\t\tonTemplatePartSelect( pattern.templatePart );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! hasTemplateParts && ! hasBlockPatterns && (\n\t\t\t\t<HStack alignment=\"center\">\n\t\t\t\t\t<p>{ __( 'No results found.' ) }</p>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAkC;AAClC,kBAA4B;AAC5B,qBAAsC;AACtC,kBAA4B;AAC5B,0BAAqE;AACrE,wBAGO;AACP,mBAGO;AACP,gDAA8C;AAC9C,6BAA+B;AAuD3B;AArDW,SAAR,2BAA6C;AAAA,EACnD;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AACD,GAAI;AACH,QAAM,CAAE,aAAa,cAAe,QAAI,yBAAU,EAAG;AACrD,QAAM,EAAE,cAAc,QAAI;AAAA,IACzB;AAAA,IACA;AAAA,EACD;AAGA,QAAM,4BAAwB,wBAAS,MAAM;AAC5C,UAAM,kBAAkB,cAAc;AAAA,MAAK,CAAE,qBAC5C,yEAA+B,YAAa;AAAA,IAC7C;AAEA,eAAO,uCAAgB,iBAAiB,WAAY;AAAA,EACrD,GAAG,CAAE,eAAe,WAAY,CAAE;AAClC,QAAM,oBAAgB,0CAA6B,MAAM,QAAS;AAClE,QAAM,4BAAwB,wBAAS,MAAM;AAC5C,eAAO,uCAAgB,eAAe,WAAY;AAAA,EACnD,GAAG,CAAE,eAAe,WAAY,CAAE;AAElC,QAAM,EAAE,oBAAoB,QAAI,yBAAa,eAAAA,KAAa;AAE1D,QAAM,uBAAuB,CAAE,iBAAkB;AAChD,kBAAe;AAAA,MACd,MAAM,aAAa;AAAA,MACnB,OAAO,aAAa;AAAA,MACpB,MAAM;AAAA,IACP,CAAE;AACF;AAAA,UACC;AAAA;AAAA,YAEC,gBAAI,8BAA+B;AAAA,QACnC,aAAa,OAAO,YAAY,aAAa;AAAA,MAC9C;AAAA,MACA;AAAA,QACC,MAAM;AAAA,MACP;AAAA,IACD;AACA,YAAQ;AAAA,EACT;AAEA,QAAM,mBAAmB,CAAC,CAAE,sBAAsB;AAClD,QAAM,mBAAmB,CAAC,CAAE,sBAAsB;AAElD,SACC,6CAAC,SAAI,WAAU,kDACd;AAAA,gDAAC,SAAI,WAAU,iDACd;AAAA,MAAC;AAAA;AAAA,QACA,UAAW;AAAA,QACX,OAAQ;AAAA,QACR,WAAQ,gBAAI,QAAS;AAAA,QACrB,iBAAc,gBAAI,QAAS;AAAA;AAAA,IAC5B,GACD;AAAA,IACE,oBACD,6CAAC,SACA;AAAA,kDAAC,QAAK,8BAAI,yBAA0B,GAAG;AAAA,MACvC;AAAA,QAAC,oBAAAC;AAAA,QAAA;AAAA,UACA,eAAgB;AAAA,UAChB,gBAAiB,CAAE,YAAa;AAC/B,iCAAsB,QAAQ,YAAa;AAAA,UAC5C;AAAA;AAAA,MACD;AAAA,OACD;AAAA,IAGC,CAAE,oBAAoB,CAAE,oBACzB,4CAAC,kBAAAC,sBAAA,EAAO,WAAU,UACjB,sDAAC,OAAI,8BAAI,mBAAoB,GAAG,GACjC;AAAA,KAEF;AAEF;",
6
6
  "names": ["noticesStore", "BlockPatternsList", "HStack"]
7
7
  }
@@ -17,6 +17,11 @@
17
17
  "supports": {
18
18
  "anchor": true,
19
19
  "html": false,
20
+ "background": {
21
+ "backgroundImage": true,
22
+ "backgroundSize": true,
23
+ "gradient": true
24
+ },
20
25
  "color": {
21
26
  "gradients": true,
22
27
  "__experimentalDefaultControls": {
@@ -24,12 +29,14 @@
24
29
  "text": true
25
30
  }
26
31
  },
32
+ "shadow": true,
27
33
  "spacing": {
28
34
  "padding": true
29
35
  },
30
36
  "typography": {
31
37
  "fontSize": true,
32
38
  "lineHeight": true,
39
+ "textAlign": true,
33
40
  "__experimentalFontFamily": true,
34
41
  "__experimentalFontWeight": true,
35
42
  "__experimentalFontStyle": true,
@@ -11,6 +11,14 @@
11
11
  "anchor": true,
12
12
  "align": [ "wide", "full" ],
13
13
  "html": false,
14
+ "background": {
15
+ "backgroundImage": true,
16
+ "backgroundSize": true,
17
+ "gradient": true,
18
+ "__experimentalDefaultControls": {
19
+ "backgroundImage": true
20
+ }
21
+ },
14
22
  "color": {
15
23
  "link": true,
16
24
  "__experimentalDefaultControls": {
@@ -39,6 +47,7 @@
39
47
  "interactivity": {
40
48
  "clientNavigation": true
41
49
  },
50
+ "shadow": true,
42
51
  "__experimentalBorder": {
43
52
  "radius": true,
44
53
  "color": true,
@@ -25,6 +25,15 @@
25
25
  "anchor": true,
26
26
  "align": [ "wide", "full" ],
27
27
  "html": false,
28
+ "background": {
29
+ "backgroundImage": true,
30
+ "backgroundSize": true,
31
+ "gradient": true,
32
+ "__experimentalDefaultControls": {
33
+ "backgroundImage": true,
34
+ "gradient": true
35
+ }
36
+ },
28
37
  "color": {
29
38
  "gradients": true,
30
39
  "link": true,
@@ -34,6 +43,7 @@
34
43
  "link": true
35
44
  }
36
45
  },
46
+ "shadow": true,
37
47
  "spacing": {
38
48
  "padding": true
39
49
  },
@@ -14,6 +14,14 @@
14
14
  "html": false,
15
15
  "align": [ "wide", "full" ],
16
16
  "layout": true,
17
+ "background": {
18
+ "backgroundImage": true,
19
+ "backgroundSize": true,
20
+ "gradient": true,
21
+ "__experimentalDefaultControls": {
22
+ "backgroundImage": true
23
+ }
24
+ },
17
25
  "color": {
18
26
  "gradients": true,
19
27
  "link": true,
@@ -55,7 +63,8 @@
55
63
  "color": true,
56
64
  "width": true,
57
65
  "style": true
58
- }
66
+ },
67
+ "shadow": true
59
68
  },
60
69
  "style": "wp-block-term-template",
61
70
  "editorStyle": "wp-block-term-template-editor"
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,62 +15,28 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
 
30
20
  // packages/block-library/src/utils/search-patterns.js
31
21
  var search_patterns_exports = {};
32
22
  __export(search_patterns_exports, {
33
- getPatternSearchRank: () => getPatternSearchRank,
34
23
  normalizeSearchInput: () => normalizeSearchInput,
35
24
  searchPatterns: () => searchPatterns
36
25
  });
37
26
  module.exports = __toCommonJS(search_patterns_exports);
38
- var import_remove_accents = __toESM(require("remove-accents"));
27
+ var import_block_editor = require("@wordpress/block-editor");
28
+ var import_lock_unlock = require("../lock-unlock.cjs");
29
+ var { normalizeString, searchItems } = (0, import_lock_unlock.unlock)(import_block_editor.privateApis);
39
30
  function normalizeSearchInput(input = "") {
40
- input = (0, import_remove_accents.default)(input);
41
- input = input.trim().toLowerCase();
42
- return input;
43
- }
44
- function getPatternSearchRank(pattern, searchValue) {
45
- const normalizedSearchValue = normalizeSearchInput(searchValue);
46
- const normalizedTitle = normalizeSearchInput(pattern.title);
47
- let rank = 0;
48
- if (normalizedSearchValue === normalizedTitle) {
49
- rank += 30;
50
- } else if (normalizedTitle.startsWith(normalizedSearchValue)) {
51
- rank += 20;
52
- } else {
53
- const searchTerms = normalizedSearchValue.split(" ");
54
- const hasMatchedTerms = searchTerms.every(
55
- (searchTerm) => normalizedTitle.includes(searchTerm)
56
- );
57
- if (hasMatchedTerms) {
58
- rank += 10;
59
- }
60
- }
61
- return rank;
31
+ return normalizeString(input).trim();
62
32
  }
63
33
  function searchPatterns(patterns = [], searchValue = "") {
64
- if (!searchValue) {
65
- return patterns;
66
- }
67
- const rankedPatterns = patterns.map((pattern) => {
68
- return [pattern, getPatternSearchRank(pattern, searchValue)];
69
- }).filter(([, rank]) => rank > 0);
70
- rankedPatterns.sort(([, rank1], [, rank2]) => rank2 - rank1);
71
- return rankedPatterns.map(([pattern]) => pattern);
34
+ return searchItems(patterns, searchValue, {
35
+ fields: [{ get: (pattern) => pattern.title }]
36
+ });
72
37
  }
73
38
  // Annotate the CommonJS export names for ESM import in node:
74
39
  0 && (module.exports = {
75
- getPatternSearchRank,
76
40
  normalizeSearchInput,
77
41
  searchPatterns
78
42
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/search-patterns.js"],
4
- "sourcesContent": ["import removeAccents from 'remove-accents';\n\n/**\n * Sanitizes the search input string.\n *\n * @param {string} input The search input to normalize.\n *\n * @return {string} The normalized search input.\n */\nexport function normalizeSearchInput( input = '' ) {\n\t// Disregard diacritics.\n\tinput = removeAccents( input );\n\n\t// Trim & Lowercase.\n\tinput = input.trim().toLowerCase();\n\n\treturn input;\n}\n\n/**\n * Get the search rank for a given pattern and a specific search term.\n *\n * @param {Object} pattern Pattern to rank\n * @param {string} searchValue Search term\n * @return {number} A pattern search rank\n */\nexport function getPatternSearchRank( pattern, searchValue ) {\n\tconst normalizedSearchValue = normalizeSearchInput( searchValue );\n\tconst normalizedTitle = normalizeSearchInput( pattern.title );\n\n\tlet rank = 0;\n\n\tif ( normalizedSearchValue === normalizedTitle ) {\n\t\trank += 30;\n\t} else if ( normalizedTitle.startsWith( normalizedSearchValue ) ) {\n\t\trank += 20;\n\t} else {\n\t\tconst searchTerms = normalizedSearchValue.split( ' ' );\n\t\tconst hasMatchedTerms = searchTerms.every( ( searchTerm ) =>\n\t\t\tnormalizedTitle.includes( searchTerm )\n\t\t);\n\n\t\t// Prefer pattern with every search word in the title.\n\t\tif ( hasMatchedTerms ) {\n\t\t\trank += 10;\n\t\t}\n\t}\n\n\treturn rank;\n}\n\n/**\n * Filters an pattern list given a search term.\n *\n * @param {Array} patterns Item list\n * @param {string} searchValue Search input.\n *\n * @return {Array} Filtered pattern list.\n */\nexport function searchPatterns( patterns = [], searchValue = '' ) {\n\tif ( ! searchValue ) {\n\t\treturn patterns;\n\t}\n\n\tconst rankedPatterns = patterns\n\t\t.map( ( pattern ) => {\n\t\t\treturn [ pattern, getPatternSearchRank( pattern, searchValue ) ];\n\t\t} )\n\t\t.filter( ( [ , rank ] ) => rank > 0 );\n\n\trankedPatterns.sort( ( [ , rank1 ], [ , rank2 ] ) => rank2 - rank1 );\n\treturn rankedPatterns.map( ( [ pattern ] ) => pattern );\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAA0B;AASnB,SAAS,qBAAsB,QAAQ,IAAK;AAElD,cAAQ,sBAAAA,SAAe,KAAM;AAG7B,UAAQ,MAAM,KAAK,EAAE,YAAY;AAEjC,SAAO;AACR;AASO,SAAS,qBAAsB,SAAS,aAAc;AAC5D,QAAM,wBAAwB,qBAAsB,WAAY;AAChE,QAAM,kBAAkB,qBAAsB,QAAQ,KAAM;AAE5D,MAAI,OAAO;AAEX,MAAK,0BAA0B,iBAAkB;AAChD,YAAQ;AAAA,EACT,WAAY,gBAAgB,WAAY,qBAAsB,GAAI;AACjE,YAAQ;AAAA,EACT,OAAO;AACN,UAAM,cAAc,sBAAsB,MAAO,GAAI;AACrD,UAAM,kBAAkB,YAAY;AAAA,MAAO,CAAE,eAC5C,gBAAgB,SAAU,UAAW;AAAA,IACtC;AAGA,QAAK,iBAAkB;AACtB,cAAQ;AAAA,IACT;AAAA,EACD;AAEA,SAAO;AACR;AAUO,SAAS,eAAgB,WAAW,CAAC,GAAG,cAAc,IAAK;AACjE,MAAK,CAAE,aAAc;AACpB,WAAO;AAAA,EACR;AAEA,QAAM,iBAAiB,SACrB,IAAK,CAAE,YAAa;AACpB,WAAO,CAAE,SAAS,qBAAsB,SAAS,WAAY,CAAE;AAAA,EAChE,CAAE,EACD,OAAQ,CAAE,CAAE,EAAE,IAAK,MAAO,OAAO,CAAE;AAErC,iBAAe,KAAM,CAAE,CAAE,EAAE,KAAM,GAAG,CAAE,EAAE,KAAM,MAAO,QAAQ,KAAM;AACnE,SAAO,eAAe,IAAK,CAAE,CAAE,OAAQ,MAAO,OAAQ;AACvD;",
6
- "names": ["removeAccents"]
4
+ "sourcesContent": ["import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { unlock } from '../lock-unlock';\n\nconst { normalizeString, searchItems } = unlock( blockEditorPrivateApis );\n\n/**\n * Sanitizes the search input string.\n *\n * @param {string} input The search input to normalize.\n *\n * @return {string} The normalized search input.\n */\nexport function normalizeSearchInput( input = '' ) {\n\treturn normalizeString( input ).trim();\n}\n\n/**\n * Filters a pattern list given a search term.\n *\n * @param {Array} patterns Item list\n * @param {string} searchValue Search input.\n *\n * @return {Array} Filtered pattern list.\n */\nexport function searchPatterns( patterns = [], searchValue = '' ) {\n\treturn searchItems( patterns, searchValue, {\n\t\tfields: [ { get: ( pattern ) => pattern.title } ],\n\t} );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAsD;AACtD,yBAAuB;AAEvB,IAAM,EAAE,iBAAiB,YAAY,QAAI,2BAAQ,oBAAAA,WAAuB;AASjE,SAAS,qBAAsB,QAAQ,IAAK;AAClD,SAAO,gBAAiB,KAAM,EAAE,KAAK;AACtC;AAUO,SAAS,eAAgB,WAAW,CAAC,GAAG,cAAc,IAAK;AACjE,SAAO,YAAa,UAAU,aAAa;AAAA,IAC1C,QAAQ,CAAE,EAAE,KAAK,CAAE,YAAa,QAAQ,MAAM,CAAE;AAAA,EACjD,CAAE;AACH;",
6
+ "names": ["blockEditorPrivateApis"]
7
7
  }
@@ -32,11 +32,9 @@ __export(style_state_exports, {
32
32
  module.exports = __toCommonJS(style_state_exports);
33
33
  var import_block_editor = require("@wordpress/block-editor");
34
34
  var import_lock_unlock = require("../lock-unlock.cjs");
35
- var { cleanEmptyObject, getStyleForState, setStyleForState } = (0, import_lock_unlock.unlock)(
36
- import_block_editor.privateApis
37
- );
35
+ var { cleanEmptyObject } = (0, import_lock_unlock.unlock)(import_block_editor.privateApis);
38
36
  function getStateStyle(style, selectedState) {
39
- return getStyleForState(style, selectedState) || {};
37
+ return (0, import_block_editor.getStyleForState)(style, selectedState) || {};
40
38
  }
41
39
  function getMappedDimensions(dimensions, dimensionKeyMap = {}) {
42
40
  return Object.fromEntries(
@@ -83,7 +81,7 @@ function getActiveDimensionValue(options = {}) {
83
81
  }
84
82
  function setStateDimensions(style, selectedState, nextDimensions) {
85
83
  const stateStyle = getStateStyle(style, selectedState);
86
- return setStyleForState(
84
+ return (0, import_block_editor.setStyleForState)(
87
85
  style,
88
86
  selectedState,
89
87
  cleanEmptyObject({
@@ -131,7 +129,7 @@ function resetDimensions(style, keys) {
131
129
  });
132
130
  }
133
131
  function resetStateDimensions(style, selectedState, keys) {
134
- return setStyleForState(
132
+ return (0, import_block_editor.setStyleForState)(
135
133
  style,
136
134
  selectedState,
137
135
  resetDimensions(getStateStyle(style, selectedState), keys)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/style-state.js"],
4
- "sourcesContent": ["import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { unlock } from '../lock-unlock';\n\nconst { cleanEmptyObject, getStyleForState, setStyleForState } = unlock(\n\tblockEditorPrivateApis\n);\n\nfunction getStateStyle( style, selectedState ) {\n\treturn getStyleForState( style, selectedState ) || {};\n}\n\nfunction getMappedDimensions( dimensions, dimensionKeyMap = {} ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( dimensions ).map( ( [ key, value ] ) => [\n\t\t\tdimensionKeyMap[ key ] || key,\n\t\t\tvalue,\n\t\t] )\n\t);\n}\n\nfunction getControlledDimensions( dimensions, dimensionKeys ) {\n\tif ( ! dimensionKeys ) {\n\t\treturn dimensions;\n\t}\n\n\treturn Object.fromEntries(\n\t\tdimensionKeys.map( ( key ) => [ key, dimensions[ key ] ] )\n\t);\n}\n\nexport function getStyleStateKey( selectedState ) {\n\treturn [\n\t\tselectedState?.viewport || 'default',\n\t\tselectedState?.pseudo || 'default',\n\t].join( ':' );\n}\n\nexport function getStateDimensions( style, selectedState ) {\n\treturn getStateStyle( style, selectedState )?.dimensions || {};\n}\n\nexport function getActiveDimensionValue( options = {} ) {\n\tconst {\n\t\tattributes = {},\n\t\tstyle = attributes?.style,\n\t\tselectedState,\n\t\thasSelectedStyleState,\n\t\tattributeKey,\n\t\tstyleKey = attributeKey,\n\t\trootValue,\n\t} = options;\n\n\tif ( hasSelectedStyleState ) {\n\t\treturn getStateDimensions( style, selectedState )?.[ styleKey ];\n\t}\n\n\tif ( Object.hasOwn( options, 'rootValue' ) ) {\n\t\treturn rootValue;\n\t}\n\n\treturn attributes?.[ attributeKey ];\n}\n\nexport function setStateDimensions( style, selectedState, nextDimensions ) {\n\tconst stateStyle = getStateStyle( style, selectedState );\n\n\treturn setStyleForState(\n\t\tstyle,\n\t\tselectedState,\n\t\tcleanEmptyObject( {\n\t\t\t...stateStyle,\n\t\t\tdimensions: cleanEmptyObject( {\n\t\t\t\t...stateStyle?.dimensions,\n\t\t\t\t...nextDimensions,\n\t\t\t} ),\n\t\t} )\n\t);\n}\n\nexport function getDimensionUpdateAttributes( {\n\tstyle,\n\tselectedState,\n\thasSelectedStyleState,\n\tnextDimensions,\n\tdimensionKeyMap,\n\tdimensionKeys,\n} ) {\n\tconst controlledDimensions = getControlledDimensions(\n\t\tnextDimensions,\n\t\tdimensionKeys\n\t);\n\n\tif ( ! hasSelectedStyleState ) {\n\t\treturn controlledDimensions;\n\t}\n\n\treturn {\n\t\tstyle: setStateDimensions(\n\t\t\tstyle,\n\t\t\tselectedState,\n\t\t\tgetMappedDimensions( controlledDimensions, dimensionKeyMap )\n\t\t),\n\t};\n}\n\nexport function resetDimensions( style, keys ) {\n\tconst dimensionsReset = Object.fromEntries(\n\t\tkeys.map( ( key ) => [ key, undefined ] )\n\t);\n\n\treturn cleanEmptyObject( {\n\t\t...style,\n\t\tdimensions: cleanEmptyObject( {\n\t\t\t...style?.dimensions,\n\t\t\t...dimensionsReset,\n\t\t} ),\n\t} );\n}\n\nexport function resetStateDimensions( style, selectedState, keys ) {\n\treturn setStyleForState(\n\t\tstyle,\n\t\tselectedState,\n\t\tresetDimensions( getStateStyle( style, selectedState ), keys )\n\t);\n}\n\nexport function getDimensionResetAttributes( {\n\tattributes = {},\n\tstyle = attributes?.style,\n\tselectedState,\n\thasSelectedStyleState,\n\tkeys,\n\tdefaultAttributes = {},\n} ) {\n\treturn {\n\t\t...( hasSelectedStyleState\n\t\t\t? {}\n\t\t\t: { ...attributes, ...defaultAttributes } ),\n\t\tstyle: hasSelectedStyleState\n\t\t\t? resetStateDimensions( style, selectedState, keys )\n\t\t\t: resetDimensions( style, keys ),\n\t};\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n\tgetStyleForState,\n\tsetStyleForState,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { unlock } from '../lock-unlock';\n\nconst { cleanEmptyObject } = unlock( blockEditorPrivateApis );\n\nfunction getStateStyle( style, selectedState ) {\n\treturn getStyleForState( style, selectedState ) || {};\n}\n\nfunction getMappedDimensions( dimensions, dimensionKeyMap = {} ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( dimensions ).map( ( [ key, value ] ) => [\n\t\t\tdimensionKeyMap[ key ] || key,\n\t\t\tvalue,\n\t\t] )\n\t);\n}\n\nfunction getControlledDimensions( dimensions, dimensionKeys ) {\n\tif ( ! dimensionKeys ) {\n\t\treturn dimensions;\n\t}\n\n\treturn Object.fromEntries(\n\t\tdimensionKeys.map( ( key ) => [ key, dimensions[ key ] ] )\n\t);\n}\n\nexport function getStyleStateKey( selectedState ) {\n\treturn [\n\t\tselectedState?.viewport || 'default',\n\t\tselectedState?.pseudo || 'default',\n\t].join( ':' );\n}\n\nexport function getStateDimensions( style, selectedState ) {\n\treturn getStateStyle( style, selectedState )?.dimensions || {};\n}\n\nexport function getActiveDimensionValue( options = {} ) {\n\tconst {\n\t\tattributes = {},\n\t\tstyle = attributes?.style,\n\t\tselectedState,\n\t\thasSelectedStyleState,\n\t\tattributeKey,\n\t\tstyleKey = attributeKey,\n\t\trootValue,\n\t} = options;\n\n\tif ( hasSelectedStyleState ) {\n\t\treturn getStateDimensions( style, selectedState )?.[ styleKey ];\n\t}\n\n\tif ( Object.hasOwn( options, 'rootValue' ) ) {\n\t\treturn rootValue;\n\t}\n\n\treturn attributes?.[ attributeKey ];\n}\n\nexport function setStateDimensions( style, selectedState, nextDimensions ) {\n\tconst stateStyle = getStateStyle( style, selectedState );\n\n\treturn setStyleForState(\n\t\tstyle,\n\t\tselectedState,\n\t\tcleanEmptyObject( {\n\t\t\t...stateStyle,\n\t\t\tdimensions: cleanEmptyObject( {\n\t\t\t\t...stateStyle?.dimensions,\n\t\t\t\t...nextDimensions,\n\t\t\t} ),\n\t\t} )\n\t);\n}\n\nexport function getDimensionUpdateAttributes( {\n\tstyle,\n\tselectedState,\n\thasSelectedStyleState,\n\tnextDimensions,\n\tdimensionKeyMap,\n\tdimensionKeys,\n} ) {\n\tconst controlledDimensions = getControlledDimensions(\n\t\tnextDimensions,\n\t\tdimensionKeys\n\t);\n\n\tif ( ! hasSelectedStyleState ) {\n\t\treturn controlledDimensions;\n\t}\n\n\treturn {\n\t\tstyle: setStateDimensions(\n\t\t\tstyle,\n\t\t\tselectedState,\n\t\t\tgetMappedDimensions( controlledDimensions, dimensionKeyMap )\n\t\t),\n\t};\n}\n\nexport function resetDimensions( style, keys ) {\n\tconst dimensionsReset = Object.fromEntries(\n\t\tkeys.map( ( key ) => [ key, undefined ] )\n\t);\n\n\treturn cleanEmptyObject( {\n\t\t...style,\n\t\tdimensions: cleanEmptyObject( {\n\t\t\t...style?.dimensions,\n\t\t\t...dimensionsReset,\n\t\t} ),\n\t} );\n}\n\nexport function resetStateDimensions( style, selectedState, keys ) {\n\treturn setStyleForState(\n\t\tstyle,\n\t\tselectedState,\n\t\tresetDimensions( getStateStyle( style, selectedState ), keys )\n\t);\n}\n\nexport function getDimensionResetAttributes( {\n\tattributes = {},\n\tstyle = attributes?.style,\n\tselectedState,\n\thasSelectedStyleState,\n\tkeys,\n\tdefaultAttributes = {},\n} ) {\n\treturn {\n\t\t...( hasSelectedStyleState\n\t\t\t? {}\n\t\t\t: { ...attributes, ...defaultAttributes } ),\n\t\tstyle: hasSelectedStyleState\n\t\t\t? resetStateDimensions( style, selectedState, keys )\n\t\t\t: resetDimensions( style, keys ),\n\t};\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorPrivateApis"]
7
7
  }
@@ -101,8 +101,14 @@
101
101
  },
102
102
  "interactivity": {
103
103
  "clientNavigation": true
104
+ },
105
+ "shadow": {
106
+ "__experimentalSkipSerialization": true
104
107
  }
105
108
  },
109
+ "selectors": {
110
+ "shadow": ".wp-block-video video"
111
+ },
106
112
  "editorStyle": "wp-block-video-editor",
107
113
  "style": "wp-block-video"
108
114
  }
@@ -50,7 +50,6 @@ var import_tracks_editor = __toESM(require("./tracks-editor.cjs"));
50
50
  var import_tracks = __toESM(require("./tracks.cjs"));
51
51
  var import_caption = require("../utils/caption.cjs");
52
52
  var import_poster_image = __toESM(require("../utils/poster-image.cjs"));
53
- var import_variations = require("./variations.cjs");
54
53
  var import_jsx_runtime = require("react/jsx-runtime");
55
54
  var ALLOWED_MEDIA_TYPES = ["video"];
56
55
  function VideoEdit({
@@ -62,9 +61,24 @@ function VideoEdit({
62
61
  onReplace
63
62
  }) {
64
63
  const videoPlayer = (0, import_element.useRef)();
65
- const { id, controls, poster, src, tracks, width, height } = attributes;
66
- const isGif = (0, import_variations.isGifVariation)(attributes);
64
+ const {
65
+ id,
66
+ controls,
67
+ poster,
68
+ src,
69
+ tracks,
70
+ width,
71
+ height,
72
+ autoplay,
73
+ loop,
74
+ muted,
75
+ playsInline
76
+ } = attributes;
67
77
  const aspectRatio = width && height ? `${width} / ${height}` : void 0;
78
+ const videoStyle = {
79
+ ...aspectRatio && { aspectRatio },
80
+ ...(0, import_block_editor.__experimentalGetShadowClassesAndStyles)(attributes).style
81
+ };
68
82
  const [temporaryURL, setTemporaryURL] = (0, import_element.useState)(attributes.blob);
69
83
  const dropdownMenuProps = (0, import_hooks.useToolsPanelDropdownMenuProps)();
70
84
  const blockEditingMode = (0, import_block_editor.useBlockEditingMode)();
@@ -80,12 +94,6 @@ function VideoEdit({
80
94
  videoPlayer.current.load();
81
95
  }
82
96
  }, [poster]);
83
- (0, import_element.useEffect)(() => {
84
- if (isGif) {
85
- videoPlayer.current?.play().catch(() => {
86
- });
87
- }
88
- }, [isGif, src, poster]);
89
97
  function onSelectVideo(media) {
90
98
  if (!media || !media.url) {
91
99
  setAttributes({
@@ -196,7 +204,7 @@ function VideoEdit({
196
204
  }
197
205
  ) })
198
206
  ] }),
199
- !isGif && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.InspectorControls, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
207
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.InspectorControls, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
200
208
  import_components.__experimentalToolsPanel,
201
209
  {
202
210
  label: (0, import_i18n.__)("Settings"),
@@ -241,13 +249,13 @@ function VideoEdit({
241
249
  poster,
242
250
  src: src || temporaryURL,
243
251
  ref: videoPlayer,
244
- autoPlay: isGif,
245
- loop: isGif,
246
- muted: isGif,
247
- playsInline: isGif,
252
+ autoPlay: autoplay,
253
+ loop,
254
+ muted,
255
+ playsInline,
248
256
  width,
249
257
  height,
250
- style: aspectRatio ? { aspectRatio } : void 0,
258
+ style: Object.keys(videoStyle).length ? videoStyle : void 0,
251
259
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tracks.default, { tracks })
252
260
  }
253
261
  ),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/video/edit.jsx"],
4
- "sourcesContent": ["import clsx from 'clsx';\nimport { isBlobURL } from '@wordpress/blob';\nimport {\n\tSpinner,\n\tPlaceholder,\n\t__experimentalToolsPanel as ToolsPanel,\n} from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useRef, useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch } from '@wordpress/data';\nimport { video as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { prependHTTPS } from '@wordpress/url';\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport {\n\tuseUploadMediaFromBlobURL,\n\tuseToolsPanelDropdownMenuProps,\n} from '../utils/hooks';\nimport VideoCommonSettings from './edit-common-settings';\nimport TracksEditor from './tracks-editor';\nimport Tracks from './tracks';\nimport { Caption } from '../utils/caption';\nimport PosterImage from '../utils/poster-image';\nimport { isGifVariation } from './variations';\n\nconst ALLOWED_MEDIA_TYPES = [ 'video' ];\n\nfunction VideoEdit( {\n\tisSelected: isSingleSelected,\n\tattributes,\n\tclassName,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tonReplace,\n} ) {\n\tconst videoPlayer = useRef();\n\tconst { id, controls, poster, src, tracks, width, height } = attributes;\n\tconst isGif = isGifVariation( attributes );\n\t// Give the <video> an explicit (non-`auto`) aspect ratio derived from the\n\t// stored dimensions. The width/height attributes alone only yield\n\t// `aspect-ratio: auto W/H`, whose `auto` keyword defers to the element's\n\t// natural ratio while the poster/metadata load - during which Chrome briefly\n\t// computes a runaway height (tens of thousands of pixels) before settling.\n\t// That spike is what reads as a duplicated image during the GIF-to-video\n\t// swap. A non-`auto` ratio governs the box height throughout the load.\n\tconst aspectRatio =\n\t\twidth && height ? `${ width } / ${ height }` : undefined;\n\tconst [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst hasNonContentControls = blockEditingMode === 'default';\n\n\tuseUploadMediaFromBlobURL( {\n\t\turl: temporaryURL,\n\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\tonChange: onSelectVideo,\n\t\tonError: onUploadError,\n\t} );\n\n\tuseEffect( () => {\n\t\t// Placeholder may be rendered.\n\t\tif ( videoPlayer.current ) {\n\t\t\tvideoPlayer.current.load();\n\t\t}\n\t}, [ poster ] );\n\n\t// The GIF variation plays like an animated GIF in the editor (the playback\n\t// attributes are applied to the preview <video> below). Regular videos do\n\t// not autoplay in the editor, so only nudge GIFs into playing after a\n\t// source change in case the muted autoplay did not start on its own.\n\tuseEffect( () => {\n\t\tif ( isGif ) {\n\t\t\t// Browsers allow muted videos to be played programmatically.\n\t\t\tvideoPlayer.current?.play().catch( () => {} );\n\t\t}\n\t}, [ isGif, src, poster ] );\n\n\t// TODO: Whether the video was obtained from the media library or was provided by URL, obtain the `videoWidth` and `videoHeight` of the video once its metadata has loaded and persist in the block attributes.\n\tfunction onSelectVideo( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\t// In this case there was an error\n\t\t\t// previous attributes should be removed\n\t\t\t// because they may be temporary blob urls.\n\t\t\tsetAttributes( {\n\t\t\t\tsrc: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tposter: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t\tblob: undefined,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\t// Sets the block's attribute and updates the edit component from the\n\t\t// selected media.\n\t\tsetAttributes( {\n\t\t\tblob: undefined,\n\t\t\tsrc: media.url,\n\t\t\tid: media.id,\n\t\t\tposter:\n\t\t\t\tmedia.image?.src !== media.icon ? media.image?.src : undefined,\n\t\t\tcaption: media.caption,\n\t\t} );\n\t\tsetTemporaryURL();\n\t}\n\n\tfunction onSelectURL( newSrc ) {\n\t\tif ( newSrc !== src ) {\n\t\t\tconst url = prependHTTPS( newSrc );\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock && onReplace ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAttributes( {\n\t\t\t\tblob: undefined,\n\t\t\t\tsrc: url,\n\t\t\t\tid: undefined,\n\t\t\t\tposter: undefined,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\n\t\t}\n\t}\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName=\"block-editor-media-placeholder\"\n\t\t\t\twithIllustration={ ! isSingleSelected }\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ __( 'Video' ) }\n\t\t\t\tinstructions={ __(\n\t\t\t\t\t'Drag and drop a video, upload, or choose from your library.'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\tconst classes = clsx( className, {\n\t\t'is-transient': !! temporaryURL,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\n\tif ( ! src && ! temporaryURL ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ isSingleSelected && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls>\n\t\t\t\t\t\t<TracksEditor\n\t\t\t\t\t\t\ttracks={ tracks }\n\t\t\t\t\t\t\tonChange={ ( newTracks ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { tracks: newTracks } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t\t\tonReset={ () => onSelectVideo( undefined ) }\n\t\t\t\t\t\t\tvariant=\"toolbar\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ ! isGif && (\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tautoplay: false,\n\t\t\t\t\t\t\t\tcontrols: true,\n\t\t\t\t\t\t\t\tloop: false,\n\t\t\t\t\t\t\t\tmuted: false,\n\t\t\t\t\t\t\t\tplaysInline: false,\n\t\t\t\t\t\t\t\tpreload: 'metadata',\n\t\t\t\t\t\t\t\tposter: undefined,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t<VideoCommonSettings\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PosterImage\n\t\t\t\t\t\t\tposter={ poster }\n\t\t\t\t\t\t\tonChange={ ( posterImage ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tposter: posterImage?.url,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t<video\n\t\t\t\t\tcontrols={ controls }\n\t\t\t\t\tinert={ ! isSingleSelected ? 'true' : undefined }\n\t\t\t\t\tposter={ poster }\n\t\t\t\t\tsrc={ src || temporaryURL }\n\t\t\t\t\tref={ videoPlayer }\n\t\t\t\t\tautoPlay={ isGif }\n\t\t\t\t\tloop={ isGif }\n\t\t\t\t\tmuted={ isGif }\n\t\t\t\t\tplaysInline={ isGif }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height }\n\t\t\t\t\tstyle={ aspectRatio ? { aspectRatio } : undefined }\n\t\t\t\t>\n\t\t\t\t\t<Tracks tracks={ tracks } />\n\t\t\t\t</video>\n\t\t\t\t{ !! temporaryURL && <Spinner /> }\n\t\t\t\t<Caption\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSingleSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tlabel={ __( 'Video caption text' ) }\n\t\t\t\t\tshowToolbarButton={\n\t\t\t\t\t\tisSingleSelected && hasNonContentControls\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n\nexport default VideoEdit;\n"],
5
- "mappings": "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",
6
- "names": ["noticesStore", "icon", "clsx", "TracksEditor", "ToolsPanel", "VideoCommonSettings", "PosterImage", "Tracks"]
4
+ "sourcesContent": ["import clsx from 'clsx';\nimport { isBlobURL } from '@wordpress/blob';\nimport {\n\tSpinner,\n\tPlaceholder,\n\t__experimentalToolsPanel as ToolsPanel,\n} from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\tuseBlockEditingMode,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n} from '@wordpress/block-editor';\nimport { useRef, useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch } from '@wordpress/data';\nimport { video as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { prependHTTPS } from '@wordpress/url';\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport {\n\tuseUploadMediaFromBlobURL,\n\tuseToolsPanelDropdownMenuProps,\n} from '../utils/hooks';\nimport VideoCommonSettings from './edit-common-settings';\nimport TracksEditor from './tracks-editor';\nimport Tracks from './tracks';\nimport { Caption } from '../utils/caption';\nimport PosterImage from '../utils/poster-image';\n\nconst ALLOWED_MEDIA_TYPES = [ 'video' ];\n\nfunction VideoEdit( {\n\tisSelected: isSingleSelected,\n\tattributes,\n\tclassName,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tonReplace,\n} ) {\n\tconst videoPlayer = useRef();\n\tconst {\n\t\tid,\n\t\tcontrols,\n\t\tposter,\n\t\tsrc,\n\t\ttracks,\n\t\twidth,\n\t\theight,\n\t\tautoplay,\n\t\tloop,\n\t\tmuted,\n\t\tplaysInline,\n\t} = attributes;\n\t// Give the <video> an explicit (non-`auto`) aspect ratio derived from the\n\t// stored dimensions. The width/height attributes alone only yield\n\t// `aspect-ratio: auto W/H`, whose `auto` keyword defers to the element's\n\t// natural ratio while the poster/metadata load - during which Chrome briefly\n\t// computes a runaway height (tens of thousands of pixels) before settling.\n\t// That spike is what reads as a duplicated image during the GIF-to-video\n\t// swap. A non-`auto` ratio governs the box height throughout the load.\n\tconst aspectRatio =\n\t\twidth && height ? `${ width } / ${ height }` : undefined;\n\tconst videoStyle = {\n\t\t...( aspectRatio && { aspectRatio } ),\n\t\t...getShadowClassesAndStyles( attributes ).style,\n\t};\n\tconst [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst hasNonContentControls = blockEditingMode === 'default';\n\n\tuseUploadMediaFromBlobURL( {\n\t\turl: temporaryURL,\n\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\tonChange: onSelectVideo,\n\t\tonError: onUploadError,\n\t} );\n\n\tuseEffect( () => {\n\t\t// Placeholder may be rendered.\n\t\tif ( videoPlayer.current ) {\n\t\t\tvideoPlayer.current.load();\n\t\t}\n\t}, [ poster ] );\n\t// TODO: Whether the video was obtained from the media library or was provided by URL, obtain the `videoWidth` and `videoHeight` of the video once its metadata has loaded and persist in the block attributes.\n\tfunction onSelectVideo( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\t// In this case there was an error\n\t\t\t// previous attributes should be removed\n\t\t\t// because they may be temporary blob urls.\n\t\t\tsetAttributes( {\n\t\t\t\tsrc: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tposter: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t\tblob: undefined,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\t// Sets the block's attribute and updates the edit component from the\n\t\t// selected media.\n\t\tsetAttributes( {\n\t\t\tblob: undefined,\n\t\t\tsrc: media.url,\n\t\t\tid: media.id,\n\t\t\tposter:\n\t\t\t\tmedia.image?.src !== media.icon ? media.image?.src : undefined,\n\t\t\tcaption: media.caption,\n\t\t} );\n\t\tsetTemporaryURL();\n\t}\n\n\tfunction onSelectURL( newSrc ) {\n\t\tif ( newSrc !== src ) {\n\t\t\tconst url = prependHTTPS( newSrc );\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock && onReplace ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAttributes( {\n\t\t\t\tblob: undefined,\n\t\t\t\tsrc: url,\n\t\t\t\tid: undefined,\n\t\t\t\tposter: undefined,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\n\t\t}\n\t}\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName=\"block-editor-media-placeholder\"\n\t\t\t\twithIllustration={ ! isSingleSelected }\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ __( 'Video' ) }\n\t\t\t\tinstructions={ __(\n\t\t\t\t\t'Drag and drop a video, upload, or choose from your library.'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\tconst classes = clsx( className, {\n\t\t'is-transient': !! temporaryURL,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\n\tif ( ! src && ! temporaryURL ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ isSingleSelected && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls>\n\t\t\t\t\t\t<TracksEditor\n\t\t\t\t\t\t\ttracks={ tracks }\n\t\t\t\t\t\t\tonChange={ ( newTracks ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { tracks: newTracks } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t\t\tonReset={ () => onSelectVideo( undefined ) }\n\t\t\t\t\t\t\tvariant=\"toolbar\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tautoplay: false,\n\t\t\t\t\t\t\tcontrols: true,\n\t\t\t\t\t\t\tloop: false,\n\t\t\t\t\t\t\tmuted: false,\n\t\t\t\t\t\t\tplaysInline: false,\n\t\t\t\t\t\t\tpreload: 'metadata',\n\t\t\t\t\t\t\tposter: undefined,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<VideoCommonSettings\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t/>\n\t\t\t\t\t<PosterImage\n\t\t\t\t\t\tposter={ poster }\n\t\t\t\t\t\tonChange={ ( posterImage ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tposter: posterImage?.url,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t<video\n\t\t\t\t\tcontrols={ controls }\n\t\t\t\t\tinert={ ! isSingleSelected ? 'true' : undefined }\n\t\t\t\t\tposter={ poster }\n\t\t\t\t\tsrc={ src || temporaryURL }\n\t\t\t\t\tref={ videoPlayer }\n\t\t\t\t\tautoPlay={ autoplay }\n\t\t\t\t\tloop={ loop }\n\t\t\t\t\tmuted={ muted }\n\t\t\t\t\tplaysInline={ playsInline }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height }\n\t\t\t\t\tstyle={\n\t\t\t\t\t\tObject.keys( videoStyle ).length\n\t\t\t\t\t\t\t? videoStyle\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<Tracks tracks={ tracks } />\n\t\t\t\t</video>\n\t\t\t\t{ !! temporaryURL && <Spinner /> }\n\t\t\t\t<Caption\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSingleSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tlabel={ __( 'Video caption text' ) }\n\t\t\t\t\tshowToolbarButton={\n\t\t\t\t\t\tisSingleSelected && hasNonContentControls\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n\nexport default VideoEdit;\n"],
5
+ "mappings": "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",
6
+ "names": ["getShadowClassesAndStyles", "noticesStore", "icon", "clsx", "TracksEditor", "ToolsPanel", "VideoCommonSettings", "PosterImage", "Tracks"]
7
7
  }
@@ -44,7 +44,6 @@ var import_edit = __toESM(require("./edit.cjs"));
44
44
  var import_block = __toESM(require("./block.json"));
45
45
  var import_save = __toESM(require("./save.cjs"));
46
46
  var import_transforms = __toESM(require("./transforms.cjs"));
47
- var import_variations = __toESM(require("./variations.cjs"));
48
47
  var { name } = import_block.default;
49
48
  var settings = {
50
49
  icon: import_icons.video,
@@ -56,7 +55,6 @@ var settings = {
56
55
  }
57
56
  },
58
57
  transforms: import_transforms.default,
59
- variations: import_variations.default,
60
58
  deprecated: import_deprecated.default,
61
59
  edit: import_edit.default,
62
60
  save: import_save.default
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/video/index.js"],
4
- "sourcesContent": ["import { __ } from '@wordpress/i18n';\nimport { video as icon } from '@wordpress/icons';\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\nimport variations from './variations';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tsrc: 'https://upload.wikimedia.org/wikipedia/commons/c/ca/Wood_thrush_in_Central_Park_switch_sides_%2816510%29.webm',\n\t\t\t// translators: Caption accompanying a video of the wood thrush singing, which serves as an example for the Video block.\n\t\t\tcaption: __( 'Wood thrush singing in Central Park, NYC.' ),\n\t\t},\n\t},\n\ttransforms,\n\tvariations,\n\tdeprecated,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,+BAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,kBAAmB;AACnB,mBAA8B;AAC9B,wBAAsB;AACtB,wBAAuB;AACvB,kBAAiB;AACjB,mBAAqB;AACrB,kBAAiB;AACjB,wBAAuB;AACvB,wBAAuB;AAEvB,IAAM,EAAE,KAAK,IAAI,aAAAA;AAIV,IAAM,WAAW;AAAA,EACvB,mBAAAC;AAAA,EACA,SAAS;AAAA,IACR,YAAY;AAAA,MACX,KAAK;AAAA;AAAA,MAEL,aAAS,gBAAI,2CAA4C;AAAA,IAC1D;AAAA,EACD;AAAA,EACA,8BAAAC;AAAA,EACA,8BAAAC;AAAA,EACA,8BAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,kBAAAC;AACD;AAEO,IAAM,OAAO,UAAM,kBAAAC,SAAW,EAAE,MAAM,uBAAAC,SAAU,SAAS,CAAE;",
6
- "names": ["metadata", "icon", "transforms", "variations", "deprecated", "edit", "save", "initBlock", "metadata"]
4
+ "sourcesContent": ["import { __ } from '@wordpress/i18n';\nimport { video as icon } from '@wordpress/icons';\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tsrc: 'https://upload.wikimedia.org/wikipedia/commons/c/ca/Wood_thrush_in_Central_Park_switch_sides_%2816510%29.webm',\n\t\t\t// translators: Caption accompanying a video of the wood thrush singing, which serves as an example for the Video block.\n\t\t\tcaption: __( 'Wood thrush singing in Central Park, NYC.' ),\n\t\t},\n\t},\n\ttransforms,\n\tdeprecated,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,+BAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,kBAAmB;AACnB,mBAA8B;AAC9B,wBAAsB;AACtB,wBAAuB;AACvB,kBAAiB;AACjB,mBAAqB;AACrB,kBAAiB;AACjB,wBAAuB;AAEvB,IAAM,EAAE,KAAK,IAAI,aAAAA;AAIV,IAAM,WAAW;AAAA,EACvB,mBAAAC;AAAA,EACA,SAAS;AAAA,IACR,YAAY;AAAA,MACX,KAAK;AAAA;AAAA,MAEL,aAAS,gBAAI,2CAA4C;AAAA,IAC1D;AAAA,EACD;AAAA,EACA,8BAAAC;AAAA,EACA,8BAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,kBAAAC;AACD;AAEO,IAAM,OAAO,UAAM,kBAAAC,SAAW,EAAE,MAAM,uBAAAC,SAAU,SAAS,CAAE;",
6
+ "names": ["metadata", "icon", "transforms", "deprecated", "edit", "save", "initBlock", "metadata"]
7
7
  }
@@ -52,6 +52,10 @@ function save({ attributes }) {
52
52
  height
53
53
  } = attributes;
54
54
  const aspectRatio = width && height ? `${width} / ${height}` : void 0;
55
+ const videoStyle = {
56
+ ...aspectRatio && { aspectRatio },
57
+ ...(0, import_block_editor.__experimentalGetShadowClassesAndStyles)(attributes).style
58
+ };
55
59
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("figure", { ...import_block_editor.useBlockProps.save(), children: [
56
60
  src && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
57
61
  "video",
@@ -66,7 +70,7 @@ function save({ attributes }) {
66
70
  playsInline,
67
71
  width,
68
72
  height,
69
- style: aspectRatio ? { aspectRatio } : void 0,
73
+ style: Object.keys(videoStyle).length ? videoStyle : void 0,
70
74
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tracks.default, { tracks })
71
75
  }
72
76
  ),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/video/save.jsx"],
4
- "sourcesContent": ["import {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport Tracks from './tracks';\n\nexport default function save( { attributes } ) {\n\tconst {\n\t\tautoplay,\n\t\tcaption,\n\t\tcontrols,\n\t\tloop,\n\t\tmuted,\n\t\tposter,\n\t\tpreload,\n\t\tsrc,\n\t\tplaysInline,\n\t\ttracks,\n\t\twidth,\n\t\theight,\n\t} = attributes;\n\t// Match the editor: an explicit (non-`auto`) aspect ratio keeps the\n\t// converted GIF video from briefly blowing up to a runaway height while the\n\t// poster/metadata load, which would otherwise flash on the front end and\n\t// cause layout shift. The width/height attributes only yield\n\t// `aspect-ratio: auto W/H`, whose `auto` keyword is unreliable during load.\n\tconst aspectRatio =\n\t\twidth && height ? `${ width } / ${ height }` : undefined;\n\treturn (\n\t\t<figure { ...useBlockProps.save() }>\n\t\t\t{ src && (\n\t\t\t\t<video\n\t\t\t\t\tautoPlay={ autoplay }\n\t\t\t\t\tcontrols={ controls }\n\t\t\t\t\tloop={ loop }\n\t\t\t\t\tmuted={ muted }\n\t\t\t\t\tposter={ poster }\n\t\t\t\t\tpreload={ preload !== 'metadata' ? preload : undefined }\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tplaysInline={ playsInline }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height }\n\t\t\t\t\tstyle={ aspectRatio ? { aspectRatio } : undefined }\n\t\t\t\t>\n\t\t\t\t\t<Tracks tracks={ tracks } />\n\t\t\t\t</video>\n\t\t\t) }\n\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t<RichText.Content\n\t\t\t\t\tclassName={ __experimentalGetElementClassName( 'caption' ) }\n\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\tvalue={ caption }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</figure>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAIO;AACP,oBAAmB;AAyBjB;AAvBa,SAAR,KAAuB,EAAE,WAAW,GAAI;AAC9C,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI;AAMJ,QAAM,cACL,SAAS,SAAS,GAAI,KAAM,MAAO,MAAO,KAAK;AAChD,SACC,6CAAC,YAAS,GAAG,kCAAc,KAAK,GAC7B;AAAA,WACD;AAAA,MAAC;AAAA;AAAA,QACA,UAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAU,YAAY,aAAa,UAAU;AAAA,QAC7C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAQ,cAAc,EAAE,YAAY,IAAI;AAAA,QAExC,sDAAC,cAAAA,SAAA,EAAO,QAAkB;AAAA;AAAA,IAC3B;AAAA,IAEC,CAAE,6BAAS,QAAS,OAAQ,KAC7B;AAAA,MAAC,6BAAS;AAAA,MAAT;AAAA,QACA,eAAY,uDAAmC,SAAU;AAAA,QACzD,SAAQ;AAAA,QACR,OAAQ;AAAA;AAAA,IACT;AAAA,KAEF;AAEF;",
6
- "names": ["Tracks"]
4
+ "sourcesContent": ["import {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetElementClassName,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n} from '@wordpress/block-editor';\nimport Tracks from './tracks';\n\nexport default function save( { attributes } ) {\n\tconst {\n\t\tautoplay,\n\t\tcaption,\n\t\tcontrols,\n\t\tloop,\n\t\tmuted,\n\t\tposter,\n\t\tpreload,\n\t\tsrc,\n\t\tplaysInline,\n\t\ttracks,\n\t\twidth,\n\t\theight,\n\t} = attributes;\n\t// Match the editor: an explicit (non-`auto`) aspect ratio keeps the\n\t// converted GIF video from briefly blowing up to a runaway height while the\n\t// poster/metadata load, which would otherwise flash on the front end and\n\t// cause layout shift. The width/height attributes only yield\n\t// `aspect-ratio: auto W/H`, whose `auto` keyword is unreliable during load.\n\tconst aspectRatio =\n\t\twidth && height ? `${ width } / ${ height }` : undefined;\n\tconst videoStyle = {\n\t\t...( aspectRatio && { aspectRatio } ),\n\t\t...getShadowClassesAndStyles( attributes ).style,\n\t};\n\treturn (\n\t\t<figure { ...useBlockProps.save() }>\n\t\t\t{ src && (\n\t\t\t\t<video\n\t\t\t\t\tautoPlay={ autoplay }\n\t\t\t\t\tcontrols={ controls }\n\t\t\t\t\tloop={ loop }\n\t\t\t\t\tmuted={ muted }\n\t\t\t\t\tposter={ poster }\n\t\t\t\t\tpreload={ preload !== 'metadata' ? preload : undefined }\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tplaysInline={ playsInline }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height }\n\t\t\t\t\tstyle={\n\t\t\t\t\t\tObject.keys( videoStyle ).length\n\t\t\t\t\t\t\t? videoStyle\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<Tracks tracks={ tracks } />\n\t\t\t\t</video>\n\t\t\t) }\n\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t<RichText.Content\n\t\t\t\t\tclassName={ __experimentalGetElementClassName( 'caption' ) }\n\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\tvalue={ caption }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</figure>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAKO;AACP,oBAAmB;AA6BjB;AA3Ba,SAAR,KAAuB,EAAE,WAAW,GAAI;AAC9C,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI;AAMJ,QAAM,cACL,SAAS,SAAS,GAAI,KAAM,MAAO,MAAO,KAAK;AAChD,QAAM,aAAa;AAAA,IAClB,GAAK,eAAe,EAAE,YAAY;AAAA,IAClC,OAAG,oBAAAA,yCAA2B,UAAW,EAAE;AAAA,EAC5C;AACA,SACC,6CAAC,YAAS,GAAG,kCAAc,KAAK,GAC7B;AAAA,WACD;AAAA,MAAC;AAAA;AAAA,QACA,UAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAU,YAAY,aAAa,UAAU;AAAA,QAC7C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OACC,OAAO,KAAM,UAAW,EAAE,SACvB,aACA;AAAA,QAGJ,sDAAC,cAAAC,SAAA,EAAO,QAAkB;AAAA;AAAA,IAC3B;AAAA,IAEC,CAAE,6BAAS,QAAS,OAAQ,KAC7B;AAAA,MAAC,6BAAS;AAAA,MAAT;AAAA,QACA,eAAY,uDAAmC,SAAU;AAAA,QACzD,SAAQ;AAAA,QACR,OAAQ;AAAA;AAAA,IACT;AAAA,KAEF;AAEF;",
6
+ "names": ["getShadowClassesAndStyles", "Tracks"]
7
7
  }
@@ -20,7 +20,10 @@
20
20
  },
21
21
  "color": {
22
22
  "background": true,
23
- "gradients": true
23
+ "gradients": true,
24
+ "link": true,
25
+ "heading": true,
26
+ "button": true
24
27
  },
25
28
  "__experimentalBorder": {
26
29
  "color": true,