@wordpress/block-library 10.1.0 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (926) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/build/accordion/block.json +1 -0
  3. package/build/accordion/edit.cjs +0 -1
  4. package/build/accordion/edit.cjs.map +2 -2
  5. package/build/accordion/view.cjs +23 -0
  6. package/build/accordion/view.cjs.map +2 -2
  7. package/build/accordion-heading/deprecated.cjs +121 -1
  8. package/build/accordion-heading/deprecated.cjs.map +2 -2
  9. package/build/accordion-heading/edit.cjs +18 -1
  10. package/build/accordion-heading/edit.cjs.map +3 -3
  11. package/build/accordion-heading/save.cjs +18 -1
  12. package/build/accordion-heading/save.cjs.map +3 -3
  13. package/build/accordion-panel/edit.cjs +1 -1
  14. package/build/accordion-panel/edit.cjs.map +2 -2
  15. package/build/archives/edit.cjs +0 -1
  16. package/build/archives/edit.cjs.map +2 -2
  17. package/build/audio/edit.cjs +0 -1
  18. package/build/audio/edit.cjs.map +2 -2
  19. package/build/avatar/edit.cjs +0 -1
  20. package/build/avatar/edit.cjs.map +2 -2
  21. package/build/avatar/user-control.cjs +0 -1
  22. package/build/avatar/user-control.cjs.map +2 -2
  23. package/build/button/edit.cjs +18 -8
  24. package/build/button/edit.cjs.map +2 -2
  25. package/build/categories/edit.cjs +0 -1
  26. package/build/categories/edit.cjs.map +2 -2
  27. package/build/code/transforms.cjs +5 -3
  28. package/build/code/transforms.cjs.map +2 -2
  29. package/build/column/edit.cjs +0 -1
  30. package/build/column/edit.cjs.map +2 -2
  31. package/build/columns/edit.cjs +0 -1
  32. package/build/columns/edit.cjs.map +2 -2
  33. package/build/columns/transforms.cjs +9 -2
  34. package/build/columns/transforms.cjs.map +2 -2
  35. package/build/comment-author-avatar/edit.cjs +0 -1
  36. package/build/comment-author-avatar/edit.cjs.map +2 -2
  37. package/build/comments-pagination/comments-pagination-arrow-controls.cjs +0 -1
  38. package/build/comments-pagination/comments-pagination-arrow-controls.cjs.map +2 -2
  39. package/build/cover/block.json +11 -0
  40. package/build/cover/edit/block-controls.cjs +11 -4
  41. package/build/cover/edit/block-controls.cjs.map +2 -2
  42. package/build/cover/edit/embed-video-url-input.cjs +5 -3
  43. package/build/cover/edit/embed-video-url-input.cjs.map +3 -3
  44. package/build/cover/edit/index.cjs +1 -1
  45. package/build/cover/edit/index.cjs.map +2 -2
  46. package/build/cover/edit/inspector-controls.cjs +1 -3
  47. package/build/cover/edit/inspector-controls.cjs.map +2 -2
  48. package/build/cover/embed-video-utils.cjs +17 -7
  49. package/build/cover/embed-video-utils.cjs.map +2 -2
  50. package/build/details/transforms.cjs +1 -1
  51. package/build/details/transforms.cjs.map +2 -2
  52. package/build/embed/edit.cjs +2 -3
  53. package/build/embed/edit.cjs.map +2 -2
  54. package/build/embed/embed-placeholder.cjs +20 -21
  55. package/build/embed/embed-placeholder.cjs.map +3 -3
  56. package/build/file/edit.cjs +4 -3
  57. package/build/file/edit.cjs.map +2 -2
  58. package/build/file/inspector.cjs +0 -2
  59. package/build/file/inspector.cjs.map +2 -2
  60. package/build/file/transforms.cjs +25 -60
  61. package/build/file/transforms.cjs.map +2 -2
  62. package/build/form/edit.cjs +0 -2
  63. package/build/form/edit.cjs.map +2 -2
  64. package/build/freeform/convert-to-blocks-button.cjs +52 -0
  65. package/build/freeform/convert-to-blocks-button.cjs.map +7 -0
  66. package/build/freeform/edit.cjs +14 -33
  67. package/build/freeform/edit.cjs.map +3 -3
  68. package/build/freeform/index.cjs +1 -7
  69. package/build/freeform/index.cjs.map +3 -3
  70. package/build/gallery/block.json +8 -3
  71. package/build/gallery/dynamic-gallery.cjs +263 -0
  72. package/build/gallery/dynamic-gallery.cjs.map +7 -0
  73. package/build/gallery/dynamic-source.cjs +85 -0
  74. package/build/gallery/dynamic-source.cjs.map +7 -0
  75. package/build/gallery/edit.cjs +286 -206
  76. package/build/gallery/edit.cjs.map +3 -3
  77. package/build/gallery/gallery.cjs +0 -3
  78. package/build/gallery/gallery.cjs.map +2 -2
  79. package/build/gallery/gap-styles.cjs +49 -13
  80. package/build/gallery/gap-styles.cjs.map +3 -3
  81. package/build/gallery/index.cjs +2 -0
  82. package/build/gallery/index.cjs.map +3 -3
  83. package/build/gallery/save.cjs +16 -12
  84. package/build/gallery/save.cjs.map +2 -2
  85. package/build/gallery/use-dynamic-gallery.cjs +181 -0
  86. package/build/gallery/use-dynamic-gallery.cjs.map +7 -0
  87. package/build/gallery/variations.cjs +54 -0
  88. package/build/gallery/variations.cjs.map +7 -0
  89. package/build/group/edit.cjs +1 -2
  90. package/build/group/edit.cjs.map +2 -2
  91. package/build/group/transforms.cjs +3 -7
  92. package/build/group/transforms.cjs.map +2 -2
  93. package/build/heading/edit.cjs +10 -3
  94. package/build/heading/edit.cjs.map +2 -2
  95. package/build/html/block.json +2 -2
  96. package/build/html/edit.cjs +65 -23
  97. package/build/html/edit.cjs.map +3 -3
  98. package/build/html/index.cjs +3 -3
  99. package/build/html/index.cjs.map +2 -2
  100. package/build/html/modal.cjs +4 -8
  101. package/build/html/modal.cjs.map +2 -2
  102. package/build/html/save.cjs +2 -4
  103. package/build/html/save.cjs.map +2 -2
  104. package/build/html/transforms.cjs +7 -5
  105. package/build/html/transforms.cjs.map +2 -2
  106. package/build/icon/components/custom-inserter/icon-grid.cjs +25 -12
  107. package/build/icon/components/custom-inserter/icon-grid.cjs.map +2 -2
  108. package/build/icon/components/custom-inserter/index.cjs +100 -31
  109. package/build/icon/components/custom-inserter/index.cjs.map +3 -3
  110. package/build/icon/edit.cjs +11 -12
  111. package/build/icon/edit.cjs.map +2 -2
  112. package/build/image/block.json +1 -1
  113. package/build/image/image.cjs +23 -70
  114. package/build/image/image.cjs.map +3 -3
  115. package/build/image/transforms.cjs +78 -0
  116. package/build/image/transforms.cjs.map +3 -3
  117. package/build/index.cjs +18 -8
  118. package/build/index.cjs.map +2 -2
  119. package/build/latest-comments/edit.cjs +0 -2
  120. package/build/latest-comments/edit.cjs.map +2 -2
  121. package/build/latest-posts/block.json +8 -9
  122. package/build/latest-posts/constants.cjs +0 -3
  123. package/build/latest-posts/constants.cjs.map +2 -2
  124. package/build/latest-posts/deprecated.cjs +100 -8
  125. package/build/latest-posts/deprecated.cjs.map +2 -2
  126. package/build/latest-posts/edit.cjs +67 -84
  127. package/build/latest-posts/edit.cjs.map +2 -2
  128. package/build/list/ordered-list-settings.cjs +0 -1
  129. package/build/list/ordered-list-settings.cjs.map +2 -2
  130. package/build/list-item/edit.cjs +1 -1
  131. package/build/list-item/edit.cjs.map +2 -2
  132. package/build/list-item/hooks/use-enter.cjs +14 -17
  133. package/build/list-item/hooks/use-enter.cjs.map +3 -3
  134. package/build/list-item/hooks/use-space.cjs +3 -2
  135. package/build/list-item/hooks/use-space.cjs.map +3 -3
  136. package/build/media-text/edit.cjs +0 -1
  137. package/build/media-text/edit.cjs.map +2 -2
  138. package/build/missing/edit.cjs +1 -3
  139. package/build/missing/edit.cjs.map +2 -2
  140. package/build/navigation/edit/index.cjs +0 -1
  141. package/build/navigation/edit/index.cjs.map +2 -2
  142. package/build/navigation/edit/overlay-menu-preview-controls.cjs +0 -1
  143. package/build/navigation/edit/overlay-menu-preview-controls.cjs.map +2 -2
  144. package/build/navigation/edit/overlay-menu-preview.cjs +0 -1
  145. package/build/navigation/edit/overlay-menu-preview.cjs.map +2 -2
  146. package/build/navigation/edit/overlay-template-part-selector.cjs +0 -1
  147. package/build/navigation/edit/overlay-template-part-selector.cjs.map +2 -2
  148. package/build/navigation/edit/overlay-visibility-control.cjs +0 -1
  149. package/build/navigation/edit/overlay-visibility-control.cjs.map +2 -2
  150. package/build/navigation-link/shared/use-link-preview.cjs +11 -1
  151. package/build/navigation-link/shared/use-link-preview.cjs.map +2 -2
  152. package/build/navigation-overlay-close/edit.cjs +0 -1
  153. package/build/navigation-overlay-close/edit.cjs.map +2 -2
  154. package/build/page-list/edit.cjs +0 -1
  155. package/build/page-list/edit.cjs.map +2 -2
  156. package/build/paragraph/block.json +1 -0
  157. package/build/paragraph/use-enter.cjs +3 -7
  158. package/build/paragraph/use-enter.cjs.map +3 -3
  159. package/build/playlist/block.json +28 -15
  160. package/build/playlist/context.cjs +36 -0
  161. package/build/playlist/context.cjs.map +7 -0
  162. package/build/playlist/edit.cjs +257 -81
  163. package/build/playlist/edit.cjs.map +3 -3
  164. package/build/playlist/index.cjs +1 -1
  165. package/build/playlist/index.cjs.map +2 -2
  166. package/build/playlist/utils.cjs +19 -8
  167. package/build/playlist/utils.cjs.map +3 -3
  168. package/build/playlist/view.cjs +87 -17
  169. package/build/playlist/view.cjs.map +2 -2
  170. package/build/playlist-track/block.json +4 -5
  171. package/build/playlist-track/edit.cjs +114 -70
  172. package/build/playlist-track/edit.cjs.map +3 -3
  173. package/build/post-author/edit.cjs +0 -2
  174. package/build/post-author/edit.cjs.map +2 -2
  175. package/build/post-content/block.json +1 -0
  176. package/build/post-excerpt/edit.cjs +0 -1
  177. package/build/post-excerpt/edit.cjs.map +2 -2
  178. package/build/post-featured-image/overlay-controls.cjs +1 -2
  179. package/build/post-featured-image/overlay-controls.cjs.map +2 -2
  180. package/build/post-navigation-link/edit.cjs +0 -2
  181. package/build/post-navigation-link/edit.cjs.map +2 -2
  182. package/build/post-template/block.json +2 -1
  183. package/build/post-template/edit.cjs +10 -1
  184. package/build/post-template/edit.cjs.map +2 -2
  185. package/build/pullquote/block.json +3 -1
  186. package/build/query/block.json +3 -2
  187. package/build/query/edit/inspector-controls/author-control.cjs +1 -2
  188. package/build/query/edit/inspector-controls/author-control.cjs.map +2 -2
  189. package/build/query/edit/inspector-controls/format-controls.cjs +1 -2
  190. package/build/query/edit/inspector-controls/format-controls.cjs.map +2 -2
  191. package/build/query/edit/inspector-controls/index.cjs +38 -7
  192. package/build/query/edit/inspector-controls/index.cjs.map +2 -2
  193. package/build/query/edit/inspector-controls/offset-controls.cjs +0 -1
  194. package/build/query/edit/inspector-controls/offset-controls.cjs.map +2 -2
  195. package/build/query/edit/inspector-controls/order-control.cjs +0 -1
  196. package/build/query/edit/inspector-controls/order-control.cjs.map +2 -2
  197. package/build/query/edit/inspector-controls/pages-control.cjs +0 -1
  198. package/build/query/edit/inspector-controls/pages-control.cjs.map +2 -2
  199. package/build/query/edit/inspector-controls/parent-control.cjs +0 -1
  200. package/build/query/edit/inspector-controls/parent-control.cjs.map +2 -2
  201. package/build/query/edit/inspector-controls/per-page-control.cjs +0 -1
  202. package/build/query/edit/inspector-controls/per-page-control.cjs.map +2 -2
  203. package/build/query/edit/inspector-controls/sticky-control.cjs +0 -1
  204. package/build/query/edit/inspector-controls/sticky-control.cjs.map +2 -2
  205. package/build/query/edit/inspector-controls/taxonomy-controls.cjs +1 -2
  206. package/build/query/edit/inspector-controls/taxonomy-controls.cjs.map +2 -2
  207. package/build/query/edit/query-content.cjs +10 -3
  208. package/build/query/edit/query-content.cjs.map +2 -2
  209. package/build/query/index.cjs +2 -1
  210. package/build/query/index.cjs.map +2 -2
  211. package/build/query-pagination/query-pagination-arrow-controls.cjs +0 -1
  212. package/build/query-pagination/query-pagination-arrow-controls.cjs.map +2 -2
  213. package/build/query-pagination-numbers/edit.cjs +0 -1
  214. package/build/query-pagination-numbers/edit.cjs.map +2 -2
  215. package/build/quote/block.json +3 -1
  216. package/build/quote/transforms.cjs +1 -7
  217. package/build/quote/transforms.cjs.map +2 -2
  218. package/build/rss/edit.cjs +0 -4
  219. package/build/rss/edit.cjs.map +2 -2
  220. package/build/search/edit.cjs +0 -4
  221. package/build/search/edit.cjs.map +2 -2
  222. package/build/separator/edit.cjs +1 -2
  223. package/build/separator/edit.cjs.map +2 -2
  224. package/build/site-logo/edit.cjs +34 -63
  225. package/build/site-logo/edit.cjs.map +3 -3
  226. package/build/social-links/edit.cjs +0 -1
  227. package/build/social-links/edit.cjs.map +2 -2
  228. package/build/spacer/controls.cjs +2 -4
  229. package/build/spacer/controls.cjs.map +2 -2
  230. package/build/spacer/edit.cjs +1 -2
  231. package/build/spacer/edit.cjs.map +2 -2
  232. package/build/tab-list/block.json +5 -4
  233. package/build/tab-list/edit.cjs +95 -54
  234. package/build/tab-list/edit.cjs.map +3 -3
  235. package/build/tab-list/save.cjs +4 -3
  236. package/build/tab-list/save.cjs.map +2 -2
  237. package/build/tab-panel/block.json +1 -6
  238. package/build/tab-panel/controls.cjs +2 -4
  239. package/build/tab-panel/controls.cjs.map +3 -3
  240. package/build/tab-panel/edit.cjs +15 -15
  241. package/build/tab-panel/edit.cjs.map +2 -2
  242. package/build/tab-panels/block.json +0 -1
  243. package/build/tab-panels/edit.cjs +2 -4
  244. package/build/tab-panels/edit.cjs.map +3 -3
  245. package/build/table-of-contents/edit.cjs +0 -1
  246. package/build/table-of-contents/edit.cjs.map +2 -2
  247. package/build/tabs/block.json +0 -5
  248. package/build/tabs/edit.cjs +6 -41
  249. package/build/tabs/edit.cjs.map +3 -3
  250. package/build/tabs/tab-toolbar-controls.cjs +74 -0
  251. package/build/tabs/tab-toolbar-controls.cjs.map +7 -0
  252. package/build/tabs/use-tab-actions.cjs +87 -0
  253. package/build/tabs/use-tab-actions.cjs.map +7 -0
  254. package/build/tabs/use-tab-list-items-sync.cjs +23 -5
  255. package/build/tabs/use-tab-list-items-sync.cjs.map +2 -2
  256. package/build/tag-cloud/edit.cjs +2 -6
  257. package/build/tag-cloud/edit.cjs.map +2 -2
  258. package/build/template-part/edit/advanced-controls.cjs +0 -1
  259. package/build/template-part/edit/advanced-controls.cjs.map +2 -2
  260. package/build/template-part/edit/import-controls.cjs +1 -2
  261. package/build/template-part/edit/import-controls.cjs.map +2 -2
  262. package/build/term-name/block.json +1 -3
  263. package/build/term-name/deprecated.cjs +105 -0
  264. package/build/term-name/deprecated.cjs.map +7 -0
  265. package/build/term-name/edit.cjs +11 -37
  266. package/build/term-name/edit.cjs.map +3 -3
  267. package/build/term-name/index.cjs +3 -1
  268. package/build/term-name/index.cjs.map +3 -3
  269. package/build/terms-query/edit/inspector-controls/include-control.cjs +0 -1
  270. package/build/terms-query/edit/inspector-controls/include-control.cjs.map +2 -2
  271. package/build/terms-query/edit/inspector-controls/inherit-control.cjs +0 -1
  272. package/build/terms-query/edit/inspector-controls/inherit-control.cjs.map +2 -2
  273. package/build/terms-query/edit/inspector-controls/max-terms-control.cjs +0 -1
  274. package/build/terms-query/edit/inspector-controls/max-terms-control.cjs.map +2 -2
  275. package/build/terms-query/edit/inspector-controls/order-control.cjs +0 -1
  276. package/build/terms-query/edit/inspector-controls/order-control.cjs.map +2 -2
  277. package/build/terms-query/edit/inspector-controls/taxonomy-control.cjs +0 -1
  278. package/build/terms-query/edit/inspector-controls/taxonomy-control.cjs.map +2 -2
  279. package/build/text-columns/edit.cjs +0 -1
  280. package/build/text-columns/edit.cjs.map +2 -2
  281. package/build/utils/waveform-player.cjs +138 -22
  282. package/build/utils/waveform-player.cjs.map +2 -2
  283. package/build/utils/waveform-utils.cjs +315 -17
  284. package/build/utils/waveform-utils.cjs.map +2 -2
  285. package/build/verse/block.json +3 -1
  286. package/build/video/block.json +6 -0
  287. package/build/video/edit-common-settings.cjs +0 -1
  288. package/build/video/edit-common-settings.cjs.map +2 -2
  289. package/build/video/edit.cjs +17 -1
  290. package/build/video/edit.cjs.map +2 -2
  291. package/build/video/index.cjs +2 -0
  292. package/build/video/index.cjs.map +3 -3
  293. package/build/video/save.cjs +7 -1
  294. package/build/video/save.cjs.map +2 -2
  295. package/build/video/tracks-editor.cjs +0 -1
  296. package/build/video/tracks-editor.cjs.map +2 -2
  297. package/build/video/variations.cjs +75 -0
  298. package/build/video/variations.cjs.map +7 -0
  299. package/build-module/accordion/block.json +1 -0
  300. package/build-module/accordion/edit.mjs +0 -1
  301. package/build-module/accordion/edit.mjs.map +2 -2
  302. package/build-module/accordion/view.mjs +23 -0
  303. package/build-module/accordion/view.mjs.map +2 -2
  304. package/build-module/accordion-heading/deprecated.mjs +121 -1
  305. package/build-module/accordion-heading/deprecated.mjs.map +2 -2
  306. package/build-module/accordion-heading/edit.mjs +8 -1
  307. package/build-module/accordion-heading/edit.mjs.map +2 -2
  308. package/build-module/accordion-heading/save.mjs +8 -1
  309. package/build-module/accordion-heading/save.mjs.map +2 -2
  310. package/build-module/accordion-panel/edit.mjs +1 -1
  311. package/build-module/accordion-panel/edit.mjs.map +2 -2
  312. package/build-module/archives/edit.mjs +0 -1
  313. package/build-module/archives/edit.mjs.map +2 -2
  314. package/build-module/audio/edit.mjs +0 -1
  315. package/build-module/audio/edit.mjs.map +2 -2
  316. package/build-module/avatar/edit.mjs +0 -1
  317. package/build-module/avatar/edit.mjs.map +2 -2
  318. package/build-module/avatar/user-control.mjs +0 -1
  319. package/build-module/avatar/user-control.mjs.map +2 -2
  320. package/build-module/button/edit.mjs +19 -14
  321. package/build-module/button/edit.mjs.map +2 -2
  322. package/build-module/categories/edit.mjs +0 -1
  323. package/build-module/categories/edit.mjs.map +2 -2
  324. package/build-module/code/transforms.mjs +6 -4
  325. package/build-module/code/transforms.mjs.map +2 -2
  326. package/build-module/column/edit.mjs +0 -1
  327. package/build-module/column/edit.mjs.map +2 -2
  328. package/build-module/columns/edit.mjs +0 -1
  329. package/build-module/columns/edit.mjs.map +2 -2
  330. package/build-module/columns/transforms.mjs +9 -2
  331. package/build-module/columns/transforms.mjs.map +2 -2
  332. package/build-module/comment-author-avatar/edit.mjs +0 -1
  333. package/build-module/comment-author-avatar/edit.mjs.map +2 -2
  334. package/build-module/comments-pagination/comments-pagination-arrow-controls.mjs +0 -1
  335. package/build-module/comments-pagination/comments-pagination-arrow-controls.mjs.map +2 -2
  336. package/build-module/cover/block.json +11 -0
  337. package/build-module/cover/edit/block-controls.mjs +11 -4
  338. package/build-module/cover/edit/block-controls.mjs.map +2 -2
  339. package/build-module/cover/edit/embed-video-url-input.mjs +5 -4
  340. package/build-module/cover/edit/embed-video-url-input.mjs.map +2 -2
  341. package/build-module/cover/edit/index.mjs +1 -1
  342. package/build-module/cover/edit/index.mjs.map +2 -2
  343. package/build-module/cover/edit/inspector-controls.mjs +1 -3
  344. package/build-module/cover/edit/inspector-controls.mjs.map +2 -2
  345. package/build-module/cover/embed-video-utils.mjs +16 -7
  346. package/build-module/cover/embed-video-utils.mjs.map +2 -2
  347. package/build-module/details/transforms.mjs +2 -2
  348. package/build-module/details/transforms.mjs.map +2 -2
  349. package/build-module/embed/edit.mjs +2 -3
  350. package/build-module/embed/edit.mjs.map +2 -2
  351. package/build-module/embed/embed-placeholder.mjs +20 -24
  352. package/build-module/embed/embed-placeholder.mjs.map +2 -2
  353. package/build-module/file/edit.mjs +4 -3
  354. package/build-module/file/edit.mjs.map +2 -2
  355. package/build-module/file/inspector.mjs +0 -2
  356. package/build-module/file/inspector.mjs.map +2 -2
  357. package/build-module/file/transforms.mjs +25 -60
  358. package/build-module/file/transforms.mjs.map +2 -2
  359. package/build-module/form/edit.mjs +0 -2
  360. package/build-module/form/edit.mjs.map +2 -2
  361. package/build-module/freeform/convert-to-blocks-button.mjs +31 -0
  362. package/build-module/freeform/convert-to-blocks-button.mjs.map +7 -0
  363. package/build-module/freeform/edit.mjs +15 -34
  364. package/build-module/freeform/edit.mjs.map +2 -2
  365. package/build-module/freeform/index.mjs +1 -7
  366. package/build-module/freeform/index.mjs.map +2 -2
  367. package/build-module/gallery/block.json +8 -3
  368. package/build-module/gallery/dynamic-gallery.mjs +253 -0
  369. package/build-module/gallery/dynamic-gallery.mjs.map +7 -0
  370. package/build-module/gallery/dynamic-source.mjs +55 -0
  371. package/build-module/gallery/dynamic-source.mjs.map +7 -0
  372. package/build-module/gallery/edit.mjs +291 -209
  373. package/build-module/gallery/edit.mjs.map +2 -2
  374. package/build-module/gallery/gallery.mjs +0 -3
  375. package/build-module/gallery/gallery.mjs.map +2 -2
  376. package/build-module/gallery/gap-styles.mjs +53 -14
  377. package/build-module/gallery/gap-styles.mjs.map +2 -2
  378. package/build-module/gallery/index.mjs +2 -0
  379. package/build-module/gallery/index.mjs.map +2 -2
  380. package/build-module/gallery/save.mjs +16 -12
  381. package/build-module/gallery/save.mjs.map +2 -2
  382. package/build-module/gallery/use-dynamic-gallery.mjs +167 -0
  383. package/build-module/gallery/use-dynamic-gallery.mjs.map +7 -0
  384. package/build-module/gallery/variations.mjs +33 -0
  385. package/build-module/gallery/variations.mjs.map +7 -0
  386. package/build-module/group/edit.mjs +1 -2
  387. package/build-module/group/edit.mjs.map +2 -2
  388. package/build-module/group/transforms.mjs +4 -8
  389. package/build-module/group/transforms.mjs.map +2 -2
  390. package/build-module/heading/edit.mjs +11 -4
  391. package/build-module/heading/edit.mjs.map +2 -2
  392. package/build-module/html/block.json +2 -2
  393. package/build-module/html/edit.mjs +69 -25
  394. package/build-module/html/edit.mjs.map +2 -2
  395. package/build-module/html/index.mjs +3 -3
  396. package/build-module/html/index.mjs.map +2 -2
  397. package/build-module/html/modal.mjs +4 -8
  398. package/build-module/html/modal.mjs.map +2 -2
  399. package/build-module/html/save.mjs +2 -4
  400. package/build-module/html/save.mjs.map +2 -2
  401. package/build-module/html/transforms.mjs +8 -6
  402. package/build-module/html/transforms.mjs.map +2 -2
  403. package/build-module/icon/components/custom-inserter/icon-grid.mjs +25 -12
  404. package/build-module/icon/components/custom-inserter/icon-grid.mjs.map +2 -2
  405. package/build-module/icon/components/custom-inserter/index.mjs +102 -33
  406. package/build-module/icon/components/custom-inserter/index.mjs.map +2 -2
  407. package/build-module/icon/edit.mjs +11 -12
  408. package/build-module/icon/edit.mjs.map +2 -2
  409. package/build-module/image/block.json +1 -1
  410. package/build-module/image/image.mjs +23 -71
  411. package/build-module/image/image.mjs.map +2 -2
  412. package/build-module/image/transforms.mjs +78 -0
  413. package/build-module/image/transforms.mjs.map +2 -2
  414. package/build-module/index.mjs +18 -8
  415. package/build-module/index.mjs.map +2 -2
  416. package/build-module/latest-comments/edit.mjs +0 -2
  417. package/build-module/latest-comments/edit.mjs.map +2 -2
  418. package/build-module/latest-posts/block.json +8 -9
  419. package/build-module/latest-posts/constants.mjs +0 -2
  420. package/build-module/latest-posts/constants.mjs.map +2 -2
  421. package/build-module/latest-posts/deprecated.mjs +100 -8
  422. package/build-module/latest-posts/deprecated.mjs.map +2 -2
  423. package/build-module/latest-posts/edit.mjs +67 -85
  424. package/build-module/latest-posts/edit.mjs.map +2 -2
  425. package/build-module/list/ordered-list-settings.mjs +0 -1
  426. package/build-module/list/ordered-list-settings.mjs.map +2 -2
  427. package/build-module/list-item/edit.mjs +1 -1
  428. package/build-module/list-item/edit.mjs.map +2 -2
  429. package/build-module/list-item/hooks/use-enter.mjs +15 -21
  430. package/build-module/list-item/hooks/use-enter.mjs.map +2 -2
  431. package/build-module/list-item/hooks/use-space.mjs +4 -6
  432. package/build-module/list-item/hooks/use-space.mjs.map +2 -2
  433. package/build-module/media-text/edit.mjs +0 -1
  434. package/build-module/media-text/edit.mjs.map +2 -2
  435. package/build-module/missing/edit.mjs +1 -3
  436. package/build-module/missing/edit.mjs.map +2 -2
  437. package/build-module/navigation/edit/index.mjs +0 -1
  438. package/build-module/navigation/edit/index.mjs.map +2 -2
  439. package/build-module/navigation/edit/overlay-menu-preview-controls.mjs +0 -1
  440. package/build-module/navigation/edit/overlay-menu-preview-controls.mjs.map +2 -2
  441. package/build-module/navigation/edit/overlay-menu-preview.mjs +0 -1
  442. package/build-module/navigation/edit/overlay-menu-preview.mjs.map +2 -2
  443. package/build-module/navigation/edit/overlay-template-part-selector.mjs +0 -1
  444. package/build-module/navigation/edit/overlay-template-part-selector.mjs.map +2 -2
  445. package/build-module/navigation/edit/overlay-visibility-control.mjs +0 -1
  446. package/build-module/navigation/edit/overlay-visibility-control.mjs.map +2 -2
  447. package/build-module/navigation-link/shared/use-link-preview.mjs +11 -1
  448. package/build-module/navigation-link/shared/use-link-preview.mjs.map +2 -2
  449. package/build-module/navigation-overlay-close/edit.mjs +0 -1
  450. package/build-module/navigation-overlay-close/edit.mjs.map +2 -2
  451. package/build-module/page-list/edit.mjs +0 -1
  452. package/build-module/page-list/edit.mjs.map +2 -2
  453. package/build-module/paragraph/block.json +1 -0
  454. package/build-module/paragraph/use-enter.mjs +4 -11
  455. package/build-module/paragraph/use-enter.mjs.map +2 -2
  456. package/build-module/playlist/block.json +28 -15
  457. package/build-module/playlist/context.mjs +11 -0
  458. package/build-module/playlist/context.mjs.map +7 -0
  459. package/build-module/playlist/edit.mjs +262 -84
  460. package/build-module/playlist/edit.mjs.map +2 -2
  461. package/build-module/playlist/index.mjs +1 -1
  462. package/build-module/playlist/index.mjs.map +2 -2
  463. package/build-module/playlist/utils.mjs +17 -7
  464. package/build-module/playlist/utils.mjs.map +2 -2
  465. package/build-module/playlist/view.mjs +93 -18
  466. package/build-module/playlist/view.mjs.map +2 -2
  467. package/build-module/playlist-track/block.json +4 -5
  468. package/build-module/playlist-track/edit.mjs +117 -72
  469. package/build-module/playlist-track/edit.mjs.map +2 -2
  470. package/build-module/post-author/edit.mjs +0 -2
  471. package/build-module/post-author/edit.mjs.map +2 -2
  472. package/build-module/post-content/block.json +1 -0
  473. package/build-module/post-excerpt/edit.mjs +0 -1
  474. package/build-module/post-excerpt/edit.mjs.map +2 -2
  475. package/build-module/post-featured-image/overlay-controls.mjs +1 -2
  476. package/build-module/post-featured-image/overlay-controls.mjs.map +2 -2
  477. package/build-module/post-navigation-link/edit.mjs +0 -2
  478. package/build-module/post-navigation-link/edit.mjs.map +2 -2
  479. package/build-module/post-template/block.json +2 -1
  480. package/build-module/post-template/edit.mjs +10 -1
  481. package/build-module/post-template/edit.mjs.map +2 -2
  482. package/build-module/pullquote/block.json +3 -1
  483. package/build-module/query/block.json +3 -2
  484. package/build-module/query/edit/inspector-controls/author-control.mjs +1 -2
  485. package/build-module/query/edit/inspector-controls/author-control.mjs.map +2 -2
  486. package/build-module/query/edit/inspector-controls/format-controls.mjs +1 -2
  487. package/build-module/query/edit/inspector-controls/format-controls.mjs.map +2 -2
  488. package/build-module/query/edit/inspector-controls/index.mjs +40 -8
  489. package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
  490. package/build-module/query/edit/inspector-controls/offset-controls.mjs +0 -1
  491. package/build-module/query/edit/inspector-controls/offset-controls.mjs.map +2 -2
  492. package/build-module/query/edit/inspector-controls/order-control.mjs +0 -1
  493. package/build-module/query/edit/inspector-controls/order-control.mjs.map +2 -2
  494. package/build-module/query/edit/inspector-controls/pages-control.mjs +0 -1
  495. package/build-module/query/edit/inspector-controls/pages-control.mjs.map +2 -2
  496. package/build-module/query/edit/inspector-controls/parent-control.mjs +0 -1
  497. package/build-module/query/edit/inspector-controls/parent-control.mjs.map +2 -2
  498. package/build-module/query/edit/inspector-controls/per-page-control.mjs +0 -1
  499. package/build-module/query/edit/inspector-controls/per-page-control.mjs.map +2 -2
  500. package/build-module/query/edit/inspector-controls/sticky-control.mjs +0 -1
  501. package/build-module/query/edit/inspector-controls/sticky-control.mjs.map +2 -2
  502. package/build-module/query/edit/inspector-controls/taxonomy-controls.mjs +1 -2
  503. package/build-module/query/edit/inspector-controls/taxonomy-controls.mjs.map +2 -2
  504. package/build-module/query/edit/query-content.mjs +10 -3
  505. package/build-module/query/edit/query-content.mjs.map +2 -2
  506. package/build-module/query/index.mjs +2 -1
  507. package/build-module/query/index.mjs.map +2 -2
  508. package/build-module/query-pagination/query-pagination-arrow-controls.mjs +0 -1
  509. package/build-module/query-pagination/query-pagination-arrow-controls.mjs.map +2 -2
  510. package/build-module/query-pagination-numbers/edit.mjs +0 -1
  511. package/build-module/query-pagination-numbers/edit.mjs.map +2 -2
  512. package/build-module/quote/block.json +3 -1
  513. package/build-module/quote/transforms.mjs +6 -8
  514. package/build-module/quote/transforms.mjs.map +2 -2
  515. package/build-module/rss/edit.mjs +0 -4
  516. package/build-module/rss/edit.mjs.map +2 -2
  517. package/build-module/search/edit.mjs +0 -4
  518. package/build-module/search/edit.mjs.map +2 -2
  519. package/build-module/separator/edit.mjs +1 -2
  520. package/build-module/separator/edit.mjs.map +2 -2
  521. package/build-module/site-logo/edit.mjs +34 -64
  522. package/build-module/site-logo/edit.mjs.map +2 -2
  523. package/build-module/social-links/edit.mjs +0 -1
  524. package/build-module/social-links/edit.mjs.map +2 -2
  525. package/build-module/spacer/controls.mjs +2 -4
  526. package/build-module/spacer/controls.mjs.map +2 -2
  527. package/build-module/spacer/edit.mjs +1 -2
  528. package/build-module/spacer/edit.mjs.map +2 -2
  529. package/build-module/tab-list/block.json +5 -4
  530. package/build-module/tab-list/edit.mjs +102 -56
  531. package/build-module/tab-list/edit.mjs.map +2 -2
  532. package/build-module/tab-list/save.mjs +5 -3
  533. package/build-module/tab-list/save.mjs.map +2 -2
  534. package/build-module/tab-panel/block.json +1 -6
  535. package/build-module/tab-panel/controls.mjs +2 -4
  536. package/build-module/tab-panel/controls.mjs.map +2 -2
  537. package/build-module/tab-panel/edit.mjs +16 -16
  538. package/build-module/tab-panel/edit.mjs.map +2 -2
  539. package/build-module/tab-panels/block.json +0 -1
  540. package/build-module/tab-panels/edit.mjs +2 -4
  541. package/build-module/tab-panels/edit.mjs.map +2 -2
  542. package/build-module/table-of-contents/edit.mjs +0 -1
  543. package/build-module/table-of-contents/edit.mjs.map +2 -2
  544. package/build-module/tabs/block.json +0 -5
  545. package/build-module/tabs/edit.mjs +7 -47
  546. package/build-module/tabs/edit.mjs.map +2 -2
  547. package/build-module/tabs/tab-toolbar-controls.mjs +46 -0
  548. package/build-module/tabs/tab-toolbar-controls.mjs.map +7 -0
  549. package/build-module/tabs/use-tab-actions.mjs +66 -0
  550. package/build-module/tabs/use-tab-actions.mjs.map +7 -0
  551. package/build-module/tabs/use-tab-list-items-sync.mjs +25 -7
  552. package/build-module/tabs/use-tab-list-items-sync.mjs.map +2 -2
  553. package/build-module/tag-cloud/edit.mjs +2 -6
  554. package/build-module/tag-cloud/edit.mjs.map +2 -2
  555. package/build-module/template-part/edit/advanced-controls.mjs +0 -1
  556. package/build-module/template-part/edit/advanced-controls.mjs.map +2 -2
  557. package/build-module/template-part/edit/import-controls.mjs +1 -2
  558. package/build-module/template-part/edit/import-controls.mjs.map +2 -2
  559. package/build-module/term-name/block.json +1 -3
  560. package/build-module/term-name/deprecated.mjs +74 -0
  561. package/build-module/term-name/deprecated.mjs.map +7 -0
  562. package/build-module/term-name/edit.mjs +11 -28
  563. package/build-module/term-name/edit.mjs.map +2 -2
  564. package/build-module/term-name/index.mjs +3 -1
  565. package/build-module/term-name/index.mjs.map +2 -2
  566. package/build-module/terms-query/edit/inspector-controls/include-control.mjs +0 -1
  567. package/build-module/terms-query/edit/inspector-controls/include-control.mjs.map +2 -2
  568. package/build-module/terms-query/edit/inspector-controls/inherit-control.mjs +0 -1
  569. package/build-module/terms-query/edit/inspector-controls/inherit-control.mjs.map +2 -2
  570. package/build-module/terms-query/edit/inspector-controls/max-terms-control.mjs +0 -1
  571. package/build-module/terms-query/edit/inspector-controls/max-terms-control.mjs.map +2 -2
  572. package/build-module/terms-query/edit/inspector-controls/order-control.mjs +0 -1
  573. package/build-module/terms-query/edit/inspector-controls/order-control.mjs.map +2 -2
  574. package/build-module/terms-query/edit/inspector-controls/taxonomy-control.mjs +0 -1
  575. package/build-module/terms-query/edit/inspector-controls/taxonomy-control.mjs.map +2 -2
  576. package/build-module/text-columns/edit.mjs +0 -1
  577. package/build-module/text-columns/edit.mjs.map +2 -2
  578. package/build-module/utils/waveform-player.mjs +144 -23
  579. package/build-module/utils/waveform-player.mjs.map +2 -2
  580. package/build-module/utils/waveform-utils.mjs +310 -16
  581. package/build-module/utils/waveform-utils.mjs.map +2 -2
  582. package/build-module/verse/block.json +3 -1
  583. package/build-module/video/block.json +6 -0
  584. package/build-module/video/edit-common-settings.mjs +0 -1
  585. package/build-module/video/edit-common-settings.mjs.map +2 -2
  586. package/build-module/video/edit.mjs +17 -1
  587. package/build-module/video/edit.mjs.map +2 -2
  588. package/build-module/video/index.mjs +2 -0
  589. package/build-module/video/index.mjs.map +2 -2
  590. package/build-module/video/save.mjs +7 -1
  591. package/build-module/video/save.mjs.map +2 -2
  592. package/build-module/video/tracks-editor.mjs +0 -1
  593. package/build-module/video/tracks-editor.mjs.map +2 -2
  594. package/build-module/video/variations.mjs +50 -0
  595. package/build-module/video/variations.mjs.map +7 -0
  596. package/build-style/accordion-panel/style-rtl.css +1 -2
  597. package/build-style/accordion-panel/style.css +1 -2
  598. package/build-style/audio/style-rtl.css +6 -0
  599. package/build-style/audio/style.css +6 -0
  600. package/build-style/audio/theme-rtl.css +6 -0
  601. package/build-style/audio/theme.css +6 -0
  602. package/build-style/columns/style-rtl.css +6 -0
  603. package/build-style/columns/style.css +6 -0
  604. package/build-style/common-rtl.css +6 -4
  605. package/build-style/common.css +6 -4
  606. package/build-style/editor-rtl.css +84 -24
  607. package/build-style/editor.css +84 -24
  608. package/build-style/embed/style-rtl.css +6 -0
  609. package/build-style/embed/style.css +6 -0
  610. package/build-style/embed/theme-rtl.css +6 -0
  611. package/build-style/embed/theme.css +6 -0
  612. package/build-style/freeform/editor-rtl.css +6 -0
  613. package/build-style/freeform/editor.css +6 -0
  614. package/build-style/gallery/editor-rtl.css +27 -3
  615. package/build-style/gallery/editor.css +27 -3
  616. package/build-style/gallery/style-rtl.css +6 -0
  617. package/build-style/gallery/style.css +6 -0
  618. package/build-style/gallery/theme-rtl.css +6 -0
  619. package/build-style/gallery/theme.css +6 -0
  620. package/build-style/html/editor-rtl.css +13 -0
  621. package/build-style/html/editor.css +13 -0
  622. package/build-style/icon/editor-rtl.css +80 -7
  623. package/build-style/icon/editor.css +80 -7
  624. package/build-style/image/editor-rtl.css +10 -0
  625. package/build-style/image/editor.css +10 -0
  626. package/build-style/image/style-rtl.css +6 -1
  627. package/build-style/image/style.css +6 -1
  628. package/build-style/image/theme-rtl.css +6 -0
  629. package/build-style/image/theme.css +6 -0
  630. package/build-style/latest-posts/style-rtl.css +26 -15
  631. package/build-style/latest-posts/style.css +26 -15
  632. package/build-style/more/editor-rtl.css +2 -2
  633. package/build-style/more/editor.css +2 -2
  634. package/build-style/navigation/editor-rtl.css +9 -4
  635. package/build-style/navigation/editor.css +9 -4
  636. package/build-style/navigation/style-rtl.css +6 -0
  637. package/build-style/navigation/style.css +6 -0
  638. package/build-style/navigation-link/editor-rtl.css +1 -1
  639. package/build-style/navigation-link/editor.css +1 -1
  640. package/build-style/navigation-submenu/editor-rtl.css +6 -0
  641. package/build-style/navigation-submenu/editor.css +6 -0
  642. package/build-style/nextpage/editor-rtl.css +2 -2
  643. package/build-style/nextpage/editor.css +2 -2
  644. package/build-style/page-list/editor-rtl.css +6 -0
  645. package/build-style/page-list/editor.css +6 -0
  646. package/build-style/playlist/editor-rtl.css +6 -0
  647. package/build-style/playlist/editor.css +6 -0
  648. package/build-style/playlist/style-rtl.css +158 -20
  649. package/build-style/playlist/style.css +158 -20
  650. package/build-style/playlist-track/style-rtl.css +10 -0
  651. package/build-style/playlist-track/style.css +10 -0
  652. package/build-style/post-template/style-rtl.css +6 -0
  653. package/build-style/post-template/style.css +6 -0
  654. package/build-style/query/editor-rtl.css +6 -0
  655. package/build-style/query/editor.css +6 -0
  656. package/build-style/rss/style-rtl.css +6 -0
  657. package/build-style/rss/style.css +6 -0
  658. package/build-style/shortcode/editor-rtl.css +6 -0
  659. package/build-style/shortcode/editor.css +6 -0
  660. package/build-style/style-rtl.css +192 -39
  661. package/build-style/style.css +192 -39
  662. package/build-style/table/editor-rtl.css +6 -0
  663. package/build-style/table/editor.css +6 -0
  664. package/build-style/table/theme-rtl.css +6 -0
  665. package/build-style/table/theme.css +6 -0
  666. package/build-style/template-part/editor-rtl.css +6 -0
  667. package/build-style/template-part/editor.css +6 -0
  668. package/build-style/theme-rtl.css +6 -0
  669. package/build-style/theme.css +6 -0
  670. package/build-style/video/editor-rtl.css +1 -1
  671. package/build-style/video/editor.css +1 -1
  672. package/build-style/video/style-rtl.css +6 -0
  673. package/build-style/video/style.css +6 -0
  674. package/build-style/video/theme-rtl.css +6 -0
  675. package/build-style/video/theme.css +6 -0
  676. package/build-types/table-of-contents/list.d.ts +1 -1
  677. package/build-types/table-of-contents/list.d.ts.map +1 -1
  678. package/package.json +48 -44
  679. package/src/accordion/README.md +2 -1
  680. package/src/accordion/block.json +1 -0
  681. package/src/accordion/edit.js +0 -1
  682. package/src/accordion/view.js +24 -0
  683. package/src/accordion-heading/README.md +1 -1
  684. package/src/accordion-heading/deprecated.js +122 -1
  685. package/src/accordion-heading/edit.js +12 -1
  686. package/src/accordion-heading/save.js +12 -1
  687. package/src/accordion-item/README.md +1 -1
  688. package/src/accordion-item/index.php +2 -1
  689. package/src/accordion-panel/edit.js +1 -1
  690. package/src/accordion-panel/style.scss +1 -4
  691. package/src/archives/edit.js +0 -1
  692. package/src/audio/edit.js +0 -1
  693. package/src/avatar/edit.js +0 -1
  694. package/src/avatar/user-control.js +0 -1
  695. package/src/button/edit.js +21 -15
  696. package/src/categories/edit.js +0 -1
  697. package/src/code/transforms.js +6 -4
  698. package/src/column/edit.js +0 -1
  699. package/src/columns/edit.js +0 -1
  700. package/src/columns/transforms.js +9 -2
  701. package/src/comment-author-avatar/edit.js +0 -1
  702. package/src/comments-pagination/comments-pagination-arrow-controls.js +0 -1
  703. package/src/common.scss +0 -4
  704. package/src/cover/README.md +60 -0
  705. package/src/cover/block.json +11 -0
  706. package/src/cover/edit/block-controls.js +21 -11
  707. package/src/cover/edit/embed-video-url-input.js +5 -4
  708. package/src/cover/edit/index.js +9 -11
  709. package/src/cover/edit/inspector-controls.js +0 -2
  710. package/src/cover/embed-video-utils.js +38 -13
  711. package/src/cover/test/edit.js +4 -4
  712. package/src/details/transforms.js +2 -2
  713. package/src/embed/edit.js +4 -5
  714. package/src/embed/embed-placeholder.js +16 -20
  715. package/src/file/edit.js +8 -8
  716. package/src/file/inspector.js +0 -2
  717. package/src/file/transforms.js +28 -60
  718. package/src/form/edit.js +0 -2
  719. package/src/freeform/convert-to-blocks-button.js +33 -0
  720. package/src/freeform/edit.js +11 -21
  721. package/src/freeform/index.js +1 -9
  722. package/src/gallery/README.md +4 -1
  723. package/src/gallery/block.json +8 -3
  724. package/src/gallery/dynamic-gallery.js +384 -0
  725. package/src/gallery/dynamic-source.js +117 -0
  726. package/src/gallery/edit.js +155 -49
  727. package/src/gallery/editor.scss +32 -4
  728. package/src/gallery/gallery.js +0 -7
  729. package/src/gallery/gap-styles.js +79 -20
  730. package/src/gallery/index.js +2 -0
  731. package/src/gallery/index.php +379 -42
  732. package/src/gallery/save.js +22 -11
  733. package/src/gallery/test/dynamic-source.js +90 -0
  734. package/src/gallery/use-dynamic-gallery.js +275 -0
  735. package/src/gallery/variations.js +37 -0
  736. package/src/group/edit.js +2 -3
  737. package/src/group/transforms.js +4 -8
  738. package/src/heading/edit.js +19 -14
  739. package/src/home-link/index.php +1 -1
  740. package/src/html/README.md +2 -1
  741. package/src/html/block.json +2 -2
  742. package/src/html/edit.js +86 -14
  743. package/src/html/editor.scss +10 -0
  744. package/src/html/index.js +3 -4
  745. package/src/html/modal.js +5 -9
  746. package/src/html/save.js +4 -7
  747. package/src/html/test/index.js +143 -0
  748. package/src/html/transforms.js +11 -6
  749. package/src/icon/components/custom-inserter/icon-grid.js +40 -11
  750. package/src/icon/components/custom-inserter/index.js +98 -25
  751. package/src/icon/edit.js +11 -17
  752. package/src/icon/editor.scss +33 -8
  753. package/src/icon/index.php +38 -45
  754. package/src/image/README.md +1 -1
  755. package/src/image/block.json +1 -1
  756. package/src/image/editor.scss +11 -0
  757. package/src/image/image.js +105 -169
  758. package/src/image/style.scss +0 -1
  759. package/src/image/test/use-open-image-media-editor-modal.js +19 -4
  760. package/src/image/transforms.js +128 -0
  761. package/src/index.js +19 -9
  762. package/src/latest-comments/edit.js +0 -2
  763. package/src/latest-posts/README.md +2 -2
  764. package/src/latest-posts/block.json +8 -9
  765. package/src/latest-posts/constants.js +0 -1
  766. package/src/latest-posts/deprecated.js +112 -9
  767. package/src/latest-posts/edit.js +38 -53
  768. package/src/latest-posts/index.php +60 -19
  769. package/src/latest-posts/style.scss +12 -2
  770. package/src/latest-posts/test/deprecated.js +153 -0
  771. package/src/list/ordered-list-settings.js +0 -1
  772. package/src/list-item/edit.js +1 -1
  773. package/src/list-item/hooks/use-enter.js +15 -22
  774. package/src/list-item/hooks/use-space.js +4 -6
  775. package/src/media-text/edit.js +0 -1
  776. package/src/media-text/editor.scss +1 -0
  777. package/src/missing/edit.js +1 -3
  778. package/src/more/editor.scss +1 -1
  779. package/src/navigation/edit/index.js +0 -1
  780. package/src/navigation/edit/overlay-menu-preview-controls.js +0 -1
  781. package/src/navigation/edit/overlay-menu-preview.js +0 -1
  782. package/src/navigation/edit/overlay-template-part-selector.js +0 -1
  783. package/src/navigation/edit/overlay-visibility-control.js +0 -1
  784. package/src/navigation/editor.scss +1 -2
  785. package/src/navigation-link/editor.scss +1 -1
  786. package/src/navigation-link/index.php +6 -3
  787. package/src/navigation-link/shared/test/controls.js +0 -4
  788. package/src/navigation-link/shared/test/use-entity-binding.js +8 -12
  789. package/src/navigation-link/shared/test/use-handle-link-change.test.js +0 -4
  790. package/src/navigation-link/shared/test/use-link-preview.test.js +17 -4
  791. package/src/navigation-link/shared/use-link-preview.js +24 -4
  792. package/src/navigation-overlay-close/edit.js +0 -1
  793. package/src/navigation-submenu/index.php +6 -3
  794. package/src/nextpage/editor.scss +1 -1
  795. package/src/page-list/edit.js +0 -1
  796. package/src/page-list/index.php +1 -1
  797. package/src/paragraph/README.md +1 -0
  798. package/src/paragraph/block.json +1 -0
  799. package/src/paragraph/use-enter.js +4 -11
  800. package/src/playlist/README.md +17 -20
  801. package/src/playlist/block.json +28 -15
  802. package/src/playlist/context.js +9 -0
  803. package/src/playlist/edit.js +298 -97
  804. package/src/playlist/editor.scss +6 -0
  805. package/src/playlist/index.js +1 -1
  806. package/src/playlist/index.php +91 -36
  807. package/src/playlist/style.scss +51 -6
  808. package/src/playlist/test/edit.js +13 -12
  809. package/src/playlist/utils.js +24 -12
  810. package/src/playlist/view.js +101 -20
  811. package/src/playlist-track/README.md +3 -5
  812. package/src/playlist-track/block.json +4 -5
  813. package/src/playlist-track/edit.js +116 -83
  814. package/src/playlist-track/index.php +24 -17
  815. package/src/playlist-track/style.scss +10 -0
  816. package/src/playlist-track/test/edit.js +169 -0
  817. package/src/post-author/edit.js +0 -2
  818. package/src/post-content/README.md +1 -0
  819. package/src/post-content/block.json +1 -0
  820. package/src/post-excerpt/edit.js +0 -1
  821. package/src/post-featured-image/overlay-controls.js +0 -1
  822. package/src/post-navigation-link/edit.js +0 -2
  823. package/src/post-template/README.md +1 -0
  824. package/src/post-template/block.json +2 -1
  825. package/src/post-template/edit.js +9 -0
  826. package/src/pullquote/README.md +1 -0
  827. package/src/pullquote/block.json +3 -1
  828. package/src/query/README.md +2 -1
  829. package/src/query/block.json +3 -2
  830. package/src/query/edit/inspector-controls/author-control.js +0 -1
  831. package/src/query/edit/inspector-controls/format-controls.js +0 -1
  832. package/src/query/edit/inspector-controls/index.js +43 -6
  833. package/src/query/edit/inspector-controls/offset-controls.js +0 -1
  834. package/src/query/edit/inspector-controls/order-control.js +0 -1
  835. package/src/query/edit/inspector-controls/pages-control.js +0 -1
  836. package/src/query/edit/inspector-controls/parent-control.js +0 -1
  837. package/src/query/edit/inspector-controls/per-page-control.js +0 -1
  838. package/src/query/edit/inspector-controls/sticky-control.js +0 -1
  839. package/src/query/edit/inspector-controls/taxonomy-controls.js +0 -1
  840. package/src/query/edit/query-content.js +19 -3
  841. package/src/query/index.js +1 -0
  842. package/src/query-pagination/query-pagination-arrow-controls.js +0 -1
  843. package/src/query-pagination-numbers/edit.js +0 -1
  844. package/src/quote/README.md +1 -0
  845. package/src/quote/block.json +3 -1
  846. package/src/quote/transforms.js +6 -8
  847. package/src/rss/edit.js +0 -4
  848. package/src/rss/index.php +1 -1
  849. package/src/search/edit.js +0 -4
  850. package/src/separator/edit.js +0 -1
  851. package/src/site-logo/edit.js +38 -78
  852. package/src/social-links/edit.js +0 -1
  853. package/src/spacer/controls.js +2 -4
  854. package/src/spacer/edit.js +2 -3
  855. package/src/tab-list/README.md +4 -5
  856. package/src/tab-list/block.json +5 -4
  857. package/src/tab-list/edit.js +133 -73
  858. package/src/tab-list/index.php +9 -4
  859. package/src/tab-list/save.js +5 -4
  860. package/src/tab-panel/README.md +4 -6
  861. package/src/tab-panel/block.json +1 -6
  862. package/src/tab-panel/controls.js +2 -4
  863. package/src/tab-panel/edit.js +19 -24
  864. package/src/tab-panels/README.md +5 -3
  865. package/src/tab-panels/block.json +0 -1
  866. package/src/tab-panels/edit.js +2 -4
  867. package/src/table-of-contents/edit.js +0 -1
  868. package/src/tabs/README.md +18 -9
  869. package/src/tabs/block.json +0 -5
  870. package/src/tabs/edit.js +8 -65
  871. package/src/tabs/tab-toolbar-controls.js +58 -0
  872. package/src/tabs/use-tab-actions.js +102 -0
  873. package/src/tabs/use-tab-list-items-sync.js +31 -12
  874. package/src/tag-cloud/edit.js +0 -4
  875. package/src/tag-cloud/index.php +1 -1
  876. package/src/template-part/edit/advanced-controls.js +0 -1
  877. package/src/template-part/edit/import-controls.js +0 -1
  878. package/src/template-part/index.php +1 -16
  879. package/src/term-name/README.md +1 -1
  880. package/src/term-name/block.json +1 -3
  881. package/src/term-name/deprecated.js +74 -0
  882. package/src/term-name/edit.js +2 -18
  883. package/src/term-name/index.js +2 -0
  884. package/src/terms-query/edit/inspector-controls/include-control.js +0 -1
  885. package/src/terms-query/edit/inspector-controls/inherit-control.js +0 -1
  886. package/src/terms-query/edit/inspector-controls/max-terms-control.js +0 -1
  887. package/src/terms-query/edit/inspector-controls/order-control.js +0 -1
  888. package/src/terms-query/edit/inspector-controls/taxonomy-control.js +0 -1
  889. package/src/text-columns/edit.js +0 -1
  890. package/src/utils/media-control.scss +1 -5
  891. package/src/utils/test/waveform-player.js +297 -38
  892. package/src/utils/test/waveform-utils.js +410 -9
  893. package/src/utils/waveform-player.js +189 -59
  894. package/src/utils/waveform-utils.js +443 -40
  895. package/src/verse/README.md +1 -0
  896. package/src/verse/block.json +3 -1
  897. package/src/video/README.md +2 -0
  898. package/src/video/block.json +6 -0
  899. package/src/video/edit-common-settings.js +0 -1
  900. package/src/video/edit.js +30 -1
  901. package/src/video/editor.scss +1 -1
  902. package/src/video/index.js +2 -0
  903. package/src/video/save.js +12 -0
  904. package/src/video/test/variations.js +65 -0
  905. package/src/video/tracks-editor.js +0 -1
  906. package/src/video/variations.js +65 -0
  907. package/build/freeform/migration-notice.cjs +0 -58
  908. package/build/freeform/migration-notice.cjs.map +0 -7
  909. package/build/tab-panel/add-tab-toolbar-control.cjs +0 -90
  910. package/build/tab-panel/add-tab-toolbar-control.cjs.map +0 -7
  911. package/build/tab-panel/remove-tab-toolbar-control.cjs +0 -99
  912. package/build/tab-panel/remove-tab-toolbar-control.cjs.map +0 -7
  913. package/build/tabs/controls.cjs +0 -45
  914. package/build/tabs/controls.cjs.map +0 -7
  915. package/build-module/freeform/migration-notice.mjs +0 -37
  916. package/build-module/freeform/migration-notice.mjs.map +0 -7
  917. package/build-module/tab-panel/add-tab-toolbar-control.mjs +0 -72
  918. package/build-module/tab-panel/add-tab-toolbar-control.mjs.map +0 -7
  919. package/build-module/tab-panel/remove-tab-toolbar-control.mjs +0 -81
  920. package/build-module/tab-panel/remove-tab-toolbar-control.mjs.map +0 -7
  921. package/build-module/tabs/controls.mjs +0 -14
  922. package/build-module/tabs/controls.mjs.map +0 -7
  923. package/src/freeform/migration-notice.js +0 -49
  924. package/src/tab-panel/add-tab-toolbar-control.js +0 -90
  925. package/src/tab-panel/remove-tab-toolbar-control.js +0 -110
  926. package/src/tabs/controls.js +0 -14
@@ -0,0 +1,117 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Source discriminator for "images attached to the post" — the only dynamic
8
+ * source implemented so far. Kept as a named constant since it's referenced from
9
+ * several call sites (the query builder, the descriptor, and the entry points
10
+ * that switch a gallery into dynamic mode).
11
+ */
12
+ export const ATTACHED_MEDIA = 'core/attached-media';
13
+
14
+ /**
15
+ * Default ordering for a dynamic source. `menu_order` (the manual media-library
16
+ * order) is intentionally not used: it isn't a valid `orderby` value on the
17
+ * media REST endpoint, so the editor preview couldn't reproduce it. Both the
18
+ * editor query and the server resolver default to the same REST-supported order
19
+ * so the preview matches the frontend.
20
+ */
21
+ export const DEFAULT_ORDERBY = 'date';
22
+ export const DEFAULT_ORDER = 'desc';
23
+
24
+ /**
25
+ * Per-source copy, keyed by the `source` discriminator in a gallery's
26
+ * `dynamicContent`. Adding a dynamic source means adding an entry here; the
27
+ * editor components read these strings instead of hardcoding source-specific
28
+ * wording. The fields also map onto a future "Choose source" control: `title`
29
+ * becomes an option label, `description` its help text, and `emptyMessage` the
30
+ * canvas preview when the source resolves to nothing.
31
+ */
32
+ const DYNAMIC_SOURCES = {
33
+ [ ATTACHED_MEDIA ]: {
34
+ // Short label for the entry affordance / future source chooser. Mirrors
35
+ // the "Attached images" media inserter category name.
36
+ title: __( 'Use attached images' ),
37
+ // Help text shown beneath the Source controls.
38
+ description: __( 'Images attached to the post.' ),
39
+ // Empty-state copy for the canvas preview.
40
+ emptyMessage: __( 'Images attached to the post will appear here.' ),
41
+ },
42
+ };
43
+
44
+ /**
45
+ * Returns the descriptor for a dynamic source, or `undefined` for an unknown or
46
+ * not-yet-implemented source.
47
+ *
48
+ * @param {?string} source The `dynamicContent.source` discriminator.
49
+ * @return {?Object} The source descriptor (`title`, `description`, `emptyMessage`).
50
+ */
51
+ export function getDynamicSource( source ) {
52
+ return DYNAMIC_SOURCES[ source ];
53
+ }
54
+
55
+ /**
56
+ * Upper bound on the number of images a dynamic source resolves, until the
57
+ * gallery supports pagination. Kept in sync with the `posts_per_page` cap in
58
+ * `block_core_gallery_resolve_dynamic_source()`.
59
+ */
60
+ export const MAX_IMAGES = 100;
61
+
62
+ /**
63
+ * Maps a gallery's `dynamicContent` attribute to a query for the `attachment`
64
+ * entity (i.e. `/wp/v2/media` collection params), used to resolve the source to
65
+ * a list of media in the editor.
66
+ *
67
+ * The `source` key is the dispatch discriminator and `args` holds the
68
+ * source's parameters. This `{ source, args }` shape mirrors the Block
69
+ * Bindings metadata shape (`metadata.bindings.<key> = { source, args }`) so
70
+ * dynamic mode can migrate to an `innerBlocks` binding with minimal change.
71
+ * `args` keys are camelCase (the block-attribute convention, as used by the
72
+ * Query block's `query` attribute); each source's resolver maps them to the
73
+ * REST/transport names it needs. `core/attached-media` is a context-relative anchor
74
+ * resolved here to the REST `parent` param. The server-side counterpart is
75
+ * `block_core_gallery_resolve_dynamic_source()` in `index.php`.
76
+ *
77
+ * @param {Object} dynamicContent The gallery's `dynamicContent` attribute.
78
+ * @param {Object} context Resolution context.
79
+ * @param {number} context.postId The current post ID.
80
+ * @return {Object|null} A `getEntityRecords` query, or `null` when the source
81
+ * cannot be resolved (unknown source or missing context).
82
+ */
83
+ export function getSourceQuery( dynamicContent, { postId } ) {
84
+ const { source, args = {} } = dynamicContent ?? {};
85
+
86
+ switch ( source ) {
87
+ case ATTACHED_MEDIA:
88
+ if ( ! postId ) {
89
+ return null;
90
+ }
91
+ return {
92
+ parent: postId,
93
+ per_page: MAX_IMAGES,
94
+ // The gallery only accepts images, so constrain the source to
95
+ // image media (matching the server resolver). This keeps the
96
+ // editor preview in step with the rendered output for posts
97
+ // that also have non-image attachments.
98
+ media_type: 'image',
99
+ // Map the camelCase `args` to the REST-named media collection
100
+ // params. Unexpected values (only reachable via hand-edited
101
+ // markup) are coerced back to the defaults — mirroring the server
102
+ // resolver's allow list — so the editor preview stays in step with
103
+ // the frontend instead of issuing an invalid REST query.
104
+ orderby:
105
+ args.orderBy === 'date' || args.orderBy === 'title'
106
+ ? args.orderBy
107
+ : DEFAULT_ORDERBY,
108
+ order:
109
+ args.order === 'asc' || args.order === 'desc'
110
+ ? args.order
111
+ : DEFAULT_ORDER,
112
+ };
113
+ }
114
+
115
+ // Unknown or not-yet-implemented source.
116
+ return null;
117
+ }
@@ -17,6 +17,7 @@ import {
17
17
  __experimentalToggleGroupControl as ToggleGroupControl,
18
18
  __experimentalToggleGroupControlOption as ToggleGroupControlOption,
19
19
  ToolbarDropdownMenu,
20
+ Button,
20
21
  } from '@wordpress/components';
21
22
  import {
22
23
  store as blockEditorStore,
@@ -24,6 +25,7 @@ import {
24
25
  InspectorControls,
25
26
  useBlockProps,
26
27
  useInnerBlocksProps,
28
+ useBlockEditingMode,
27
29
  BlockControls,
28
30
  MediaReplaceFlow,
29
31
  useSettings,
@@ -31,7 +33,6 @@ import {
31
33
  import { useEffect, useMemo } from '@wordpress/element';
32
34
  import { __, _x, sprintf } from '@wordpress/i18n';
33
35
  import { useSelect, useDispatch } from '@wordpress/data';
34
- import { View } from '@wordpress/primitives';
35
36
  import { createBlock } from '@wordpress/blocks';
36
37
  import { createBlobURL } from '@wordpress/blob';
37
38
  import { store as noticesStore } from '@wordpress/notices';
@@ -65,7 +66,10 @@ import {
65
66
  import useImageSizes from './use-image-sizes';
66
67
  import useGetNewImages from './use-get-new-images';
67
68
  import useGetMedia from './use-get-media';
68
- import GapStyles from './gap-styles';
69
+ import GalleryGapCustomProperties from './gap-styles';
70
+ import useDynamicGallery from './use-dynamic-gallery';
71
+ import { GallerySourcePanel, GalleryDynamicView } from './dynamic-gallery';
72
+ import { getDynamicSource, ATTACHED_MEDIA } from './dynamic-source';
69
73
 
70
74
  const MAX_COLUMNS = 8;
71
75
  const LINK_OPTIONS = [
@@ -127,8 +131,20 @@ export default function GalleryEdit( props ) {
127
131
  isSelected,
128
132
  insertBlocksAfter,
129
133
  isContentLocked,
134
+ context,
135
+ __unstableLayoutClassNames: layoutClassNames,
130
136
  } = props;
131
137
 
138
+ const postId = context?.postId;
139
+ const postType = context?.postType;
140
+
141
+ // Entering dynamic mode is a structural change (it discards inner blocks and
142
+ // switches the block's mode), so the entry point is only offered when the
143
+ // block is fully editable — mirroring the dynamic view's "Edit images"
144
+ // toolbar control. Under a content lock the mode is `'contentOnly'`/
145
+ // `'disabled'`, where structural affordances are hidden.
146
+ const blockEditingMode = useBlockEditingMode();
147
+
132
148
  const [ lightboxSetting, defaultRatios, themeRatios, showDefaultRatios ] =
133
149
  useSettings(
134
150
  'blocks.core/image.lightbox',
@@ -144,6 +160,7 @@ export default function GalleryEdit( props ) {
144
160
  : LINK_OPTIONS;
145
161
 
146
162
  const {
163
+ align,
147
164
  navigationButtonType,
148
165
  columns,
149
166
  imageCrop,
@@ -206,15 +223,44 @@ export default function GalleryEdit( props ) {
206
223
 
207
224
  const newImages = useGetNewImages( images, imageData );
208
225
 
209
- // Check if there is at least one image with lightbox enabled
210
- const hasLightboxImages = lightboxSetting?.enabled
211
- ? images.filter(
226
+ const hasImages = !! images.length;
227
+ const isDynamic = !! attributes.dynamicContent;
228
+
229
+ // Dynamic mode (resolving images from a source instead of inner blocks):
230
+ // source resolution, the editor-preview blocks, and the mode/ordering
231
+ // actions.
232
+ const dynamic = useDynamicGallery( {
233
+ attributes,
234
+ setAttributes,
235
+ clientId,
236
+ postId,
237
+ postType,
238
+ } );
239
+
240
+ // State that drives counts/size options should reflect the dynamic media
241
+ // when the gallery is in dynamic mode.
242
+ const displayedImageCount = isDynamic
243
+ ? dynamic.dynamicMedia.length
244
+ : images.length;
245
+
246
+ // Check if there is at least one image with lightbox enabled. In dynamic
247
+ // mode the images inherit the gallery's link setting, so the lightbox is on
248
+ // when the gallery links images to the lightbox.
249
+ let hasLightboxImages;
250
+ if ( isDynamic ) {
251
+ hasLightboxImages = linkTo === LINK_DESTINATION_LIGHTBOX;
252
+ } else if ( lightboxSetting?.enabled ) {
253
+ hasLightboxImages =
254
+ images.filter(
212
255
  ( image ) =>
213
256
  image.attributes?.lightbox?.enabled === undefined ||
214
257
  image.attributes?.lightbox?.enabled === true
215
- ).length > 0
216
- : images.filter( ( image ) => image.attributes.lightbox?.enabled )
258
+ ).length > 0;
259
+ } else {
260
+ hasLightboxImages =
261
+ images.filter( ( image ) => image.attributes.lightbox?.enabled )
217
262
  .length > 0;
263
+ }
218
264
 
219
265
  const themeOptions = themeRatios?.map( ( { name, ratio } ) => ( {
220
266
  label: name,
@@ -249,7 +295,7 @@ export default function GalleryEdit( props ) {
249
295
  }, [ newImages ] );
250
296
 
251
297
  const imageSizeOptions = useImageSizes(
252
- imageData,
298
+ isDynamic ? dynamic.dynamicMedia : imageData,
253
299
  isSelected,
254
300
  getSettings
255
301
  );
@@ -567,7 +613,6 @@ export default function GalleryEdit( props ) {
567
613
  }
568
614
  }, [ linkTo ] );
569
615
 
570
- const hasImages = !! images.length;
571
616
  const hasImageIds = hasImages && images.some( ( image ) => !! image.id );
572
617
  const imagesUploading = images.some(
573
618
  ( img ) => ! img.id && img.url?.indexOf( 'blob:' ) === 0
@@ -578,24 +623,27 @@ export default function GalleryEdit( props ) {
578
623
  disableMediaButtons: imagesUploading,
579
624
  value: {},
580
625
  };
581
- const mediaPlaceholder = (
582
- <MediaPlaceholder
583
- handleUpload={ false }
584
- icon={ sharedIcon }
585
- labels={ {
586
- title: __( 'Gallery' ),
587
- instructions: PLACEHOLDER_TEXT,
588
- } }
589
- onSelect={ updateImages }
590
- allowedTypes={ ALLOWED_MEDIA_TYPES }
591
- multiple
592
- onError={ onUploadError }
593
- { ...mediaPlaceholderProps }
594
- />
595
- );
596
626
 
597
627
  const blockProps = useBlockProps( {
598
- className: clsx( className, 'has-nested-images' ),
628
+ className: clsx(
629
+ className,
630
+ 'has-nested-images',
631
+ // In dynamic mode there are no inner blocks and the gallery isn't
632
+ // rendered through the `Gallery` component, so the classes that
633
+ // component normally composes onto the `<figure>` (see `gallery.js`)
634
+ // must be added here to keep the preview's flex/crop layout matching
635
+ // the static gallery and the frontend.
636
+ isDynamic && [
637
+ layoutClassNames,
638
+ 'blocks-gallery-grid',
639
+ {
640
+ [ `align${ align }` ]: align,
641
+ [ `columns-${ columns }` ]: columns !== undefined,
642
+ 'columns-default': columns === undefined,
643
+ 'is-cropped': imageCrop,
644
+ },
645
+ ]
646
+ ),
599
647
  } );
600
648
 
601
649
  const innerBlocksProps = useInnerBlocksProps( blockProps, {
@@ -603,16 +651,59 @@ export default function GalleryEdit( props ) {
603
651
  directInsert: true,
604
652
  orientation: 'horizontal',
605
653
  renderAppender: false,
654
+ // In dynamic mode nothing may be inserted: the images are resolved from
655
+ // the source, not authored as inner blocks. `allowedBlocks: []` enforces
656
+ // this in every context — unlike `templateLock: 'all'`, it isn't relaxed
657
+ // to `contentOnly` by a content-locked ancestor — so it blocks insertion
658
+ // and drag-and-drop (via `canInsertBlockType`). It's also what opts the
659
+ // gallery out of the List View: a block that can't be inserted into and
660
+ // has no inner blocks has nothing to navigate or add (see
661
+ // `shouldRenderBlockListView`). This reaches the block's list settings
662
+ // only while the inner blocks are mounted, which is why the dynamic view
663
+ // still renders the (empty) inner blocks.
664
+ allowedBlocks: isDynamic ? EMPTY_ARRAY : undefined,
606
665
  } );
607
666
 
608
667
  const dropdownMenuProps = useToolsPanelDropdownMenuProps();
609
668
 
610
- if ( ! hasImages ) {
669
+ if ( ! hasImages && ! isDynamic ) {
611
670
  return (
612
- <View { ...innerBlocksProps }>
671
+ <div { ...innerBlocksProps }>
613
672
  { innerBlocksProps.children }
614
- { mediaPlaceholder }
615
- </View>
673
+ <MediaPlaceholder
674
+ handleUpload={ false }
675
+ icon={ sharedIcon }
676
+ labels={ {
677
+ title: __( 'Gallery' ),
678
+ instructions: PLACEHOLDER_TEXT,
679
+ } }
680
+ onSelect={ updateImages }
681
+ allowedTypes={ ALLOWED_MEDIA_TYPES }
682
+ multiple
683
+ onError={ onUploadError }
684
+ { ...mediaPlaceholderProps }
685
+ >
686
+ { /*
687
+ * Entry into dynamic mode. Gated on the editing mode so it's
688
+ * hidden in content-only editing (where this structural change
689
+ * isn't allowed), but intentionally not hidden by
690
+ * `canUseDynamicSource` the way the inspector is (see
691
+ * `dynamic-gallery.js`): even with no
692
+ * post type to preview against, the source still resolves at
693
+ * render time via `get_the_ID()` (see `index.php`) — e.g. in a
694
+ * template part or pattern shown on a singular page.
695
+ */ }
696
+ { blockEditingMode === 'default' && (
697
+ <Button
698
+ __next40pxDefaultSize
699
+ variant="secondary"
700
+ onClick={ dynamic.enableDynamicMode }
701
+ >
702
+ { getDynamicSource( ATTACHED_MEDIA ).title }
703
+ </Button>
704
+ ) }
705
+ </MediaPlaceholder>
706
+ </div>
616
707
  );
617
708
  }
618
709
 
@@ -621,6 +712,11 @@ export default function GalleryEdit( props ) {
621
712
  return (
622
713
  <>
623
714
  <InspectorControls>
715
+ <GallerySourcePanel
716
+ dynamic={ dynamic }
717
+ dropdownMenuProps={ dropdownMenuProps }
718
+ hasImages={ hasImages }
719
+ />
624
720
  <ToolsPanel
625
721
  label={ __( 'Settings' ) }
626
722
  resetAll={ () => {
@@ -643,12 +739,12 @@ export default function GalleryEdit( props ) {
643
739
  } }
644
740
  dropdownMenuProps={ dropdownMenuProps }
645
741
  >
646
- { images.length > 1 && (
742
+ { displayedImageCount > 1 && (
647
743
  <ToolsPanelItem
648
744
  isShownByDefault
649
745
  label={ __( 'Columns' ) }
650
746
  hasValue={ () =>
651
- !! columns && columns !== images.length
747
+ !! columns && columns !== displayedImageCount
652
748
  }
653
749
  onDeselect={ () => setColumnsNumber( undefined ) }
654
750
  >
@@ -657,13 +753,17 @@ export default function GalleryEdit( props ) {
657
753
  value={
658
754
  columns
659
755
  ? columns
660
- : defaultColumnsNumber( images.length )
756
+ : defaultColumnsNumber(
757
+ displayedImageCount
758
+ )
661
759
  }
662
760
  onChange={ setColumnsNumber }
663
761
  min={ 1 }
664
- max={ Math.min( MAX_COLUMNS, images.length ) }
762
+ max={ Math.min(
763
+ MAX_COLUMNS,
764
+ displayedImageCount
765
+ ) }
665
766
  required
666
- __next40pxDefaultSize
667
767
  />
668
768
  </ToolsPanelItem>
669
769
  ) }
@@ -687,7 +787,6 @@ export default function GalleryEdit( props ) {
687
787
  options={ imageSizeOptions }
688
788
  onChange={ updateImagesSize }
689
789
  hideCancelButton
690
- size="__unstable-large"
691
790
  />
692
791
  </ToolsPanelItem>
693
792
  ) }
@@ -743,7 +842,6 @@ export default function GalleryEdit( props ) {
743
842
  isShownByDefault
744
843
  >
745
844
  <SelectControl
746
- __next40pxDefaultSize
747
845
  label={ __( 'Aspect ratio' ) }
748
846
  help={ __(
749
847
  'Set a consistent aspect ratio for all images in the gallery.'
@@ -774,7 +872,6 @@ export default function GalleryEdit( props ) {
774
872
  } )
775
873
  }
776
874
  isBlock
777
- __next40pxDefaultSize
778
875
  help={ __(
779
876
  'Adjust the appearance of buttons in the lightbox.'
780
877
  ) }
@@ -828,7 +925,7 @@ export default function GalleryEdit( props ) {
828
925
  </ToolbarDropdownMenu>
829
926
  </BlockControls>
830
927
  <>
831
- { ! multiGallerySelection && (
928
+ { ! multiGallerySelection && ! isDynamic && (
832
929
  <BlockControls group="other">
833
930
  <MediaReplaceFlow
834
931
  allowedTypes={ ALLOWED_MEDIA_TYPES }
@@ -844,20 +941,29 @@ export default function GalleryEdit( props ) {
844
941
  />
845
942
  </BlockControls>
846
943
  ) }
847
- <GapStyles
848
- blockGap={ attributes.style?.spacing?.blockGap }
944
+ <GalleryGapCustomProperties
945
+ style={ attributes.style }
849
946
  clientId={ clientId }
850
947
  />
851
948
  </>
852
- <Gallery
853
- { ...props }
854
- isContentLocked={ isContentLocked }
855
- images={ images }
856
- mediaPlaceholder={ ! hasImages ? mediaPlaceholder : undefined }
857
- blockProps={ innerBlocksProps }
858
- insertBlocksAfter={ insertBlocksAfter }
859
- multiGallerySelection={ multiGallerySelection }
860
- />
949
+ { isDynamic ? (
950
+ <GalleryDynamicView
951
+ { ...props }
952
+ dynamic={ dynamic }
953
+ blockProps={ blockProps }
954
+ innerBlocksProps={ innerBlocksProps }
955
+ multiGallerySelection={ multiGallerySelection }
956
+ />
957
+ ) : (
958
+ <Gallery
959
+ { ...props }
960
+ isContentLocked={ isContentLocked }
961
+ images={ images }
962
+ blockProps={ innerBlocksProps }
963
+ insertBlocksAfter={ insertBlocksAfter }
964
+ multiGallerySelection={ multiGallerySelection }
965
+ />
966
+ ) }
861
967
  </>
862
968
  );
863
969
  }
@@ -17,10 +17,6 @@
17
17
  flex: 0 0 100%;
18
18
  }
19
19
 
20
- > .blocks-gallery-media-placeholder-wrapper {
21
- flex-basis: 100%;
22
- }
23
-
24
20
  // @todo this deserves a refactor, by being moved to the toolbar.
25
21
  .block-editor-media-placeholder.is-appender {
26
22
  .components-placeholder__label {
@@ -118,3 +114,35 @@
118
114
  justify-content: flex-end;
119
115
  gap: $grid-unit-15;
120
116
  }
117
+
118
+ // The Source controls are a plain (non-ToolsPanelItem) child of the Source
119
+ // ToolsPanel, so they span both grid columns. The description sits above the
120
+ // button so the button is the last element, keeping the same vertical rhythm to
121
+ // the next control (control -> grid row-gap -> next label) as the other rows.
122
+ .wp-block-gallery__source-settings {
123
+ grid-column: 1 / -1;
124
+ display: flex;
125
+ flex-direction: column;
126
+ gap: $grid-unit-10;
127
+
128
+ // Muted help-text styling for the source description.
129
+ .wp-block-gallery__source-description {
130
+ margin: 0;
131
+ color: $gray-700;
132
+ font-size: $helptext-font-size;
133
+ }
134
+
135
+ // Full-width action button, matching other inspector buttons (e.g. the
136
+ // "Apply globally" control).
137
+ .components-button {
138
+ justify-content: center;
139
+ width: 100%;
140
+ }
141
+ }
142
+
143
+ // The "showing the first N" notice is a plain (non-ToolsPanelItem) child of the
144
+ // Source ToolsPanel, so span both grid columns rather than defaulting to one.
145
+ .wp-block-gallery__source-notice {
146
+ grid-column: 1 / -1;
147
+ margin: 0;
148
+ }
@@ -7,7 +7,6 @@ import clsx from 'clsx';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { __ } from '@wordpress/i18n';
10
- import { View } from '@wordpress/primitives';
11
10
 
12
11
  /**
13
12
  * Internal dependencies
@@ -19,7 +18,6 @@ export default function Gallery( props ) {
19
18
  attributes,
20
19
  isSelected,
21
20
  setAttributes,
22
- mediaPlaceholder,
23
21
  insertBlocksAfter,
24
22
  blockProps,
25
23
  __unstableLayoutClassNames: layoutClassNames,
@@ -45,11 +43,6 @@ export default function Gallery( props ) {
45
43
  ) }
46
44
  >
47
45
  { blockProps.children }
48
- { isSelected && ! blockProps.children && (
49
- <View className="blocks-gallery-media-placeholder-wrapper">
50
- { mediaPlaceholder }
51
- </View>
52
- ) }
53
46
  <Caption
54
47
  attributes={ attributes }
55
48
  setAttributes={ setAttributes }
@@ -3,35 +3,94 @@
3
3
  */
4
4
  import {
5
5
  __experimentalGetGapCSSValue as getGapCSSValue,
6
+ privateApis as blockEditorPrivateApis,
7
+ store as blockEditorStore,
6
8
  useStyleOverride,
9
+ useSettings,
7
10
  } from '@wordpress/block-editor';
11
+ import { useSelect } from '@wordpress/data';
12
+ import { privateApis as globalStylesEnginePrivateApis } from '@wordpress/global-styles-engine';
8
13
 
9
- export default function GapStyles( { blockGap, clientId } ) {
10
- // --gallery-block--gutter-size is deprecated. --wp--style--gallery-gap-default should be used by themes that want to set a default
11
- // gap on the gallery.
12
- const fallbackValue = `var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )`;
13
- let gapValue = fallbackValue;
14
- let column = fallbackValue;
15
- let row;
16
-
17
- // Check for the possibility of split block gap values. See: https://github.com/WordPress/gutenberg/pull/37736
18
- if ( !! blockGap ) {
19
- row =
20
- typeof blockGap === 'string'
21
- ? getGapCSSValue( blockGap )
22
- : getGapCSSValue( blockGap?.top ) || fallbackValue;
14
+ /**
15
+ * Internal dependencies
16
+ */
17
+ import { unlock } from '../lock-unlock';
18
+
19
+ const { getResponsiveMediaQueries } = unlock( globalStylesEnginePrivateApis );
20
+ const { globalStylesDataKey } = unlock( blockEditorPrivateApis );
21
+ const GALLERY_BLOCK_NAME = 'core/gallery';
22
+
23
+ // --gallery-block--gutter-size is deprecated. --wp--style--gallery-gap-default should be used by themes that want to set a default
24
+ // gap on the gallery.
25
+ const FALLBACK_VALUE = `var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )`;
26
+
27
+ function getGalleryGapCustomPropertyStyle( selector, blockGap ) {
28
+ let column = FALLBACK_VALUE;
29
+ if ( blockGap ) {
23
30
  column =
24
31
  typeof blockGap === 'string'
25
- ? getGapCSSValue( blockGap )
26
- : getGapCSSValue( blockGap?.left ) || fallbackValue;
27
- gapValue = row === column ? row : `${ row } ${ column }`;
32
+ ? getGapCSSValue( blockGap ) || FALLBACK_VALUE
33
+ : getGapCSSValue( blockGap?.left ) || FALLBACK_VALUE;
28
34
  }
29
35
 
30
36
  // The unstable gallery gap calculation requires a real value (such as `0px`) and not `0`.
31
- const gap = `#block-${ clientId } {
32
- --wp--style--unstable-gallery-gap: ${ column === '0' ? '0px' : column };
33
- gap: ${ gapValue }
37
+ return `${ selector } {
38
+ --wp--style--unstable-gallery-gap: ${ column === '0' ? '0px' : column }
34
39
  }`;
40
+ }
41
+
42
+ function getBlockGapValue( style ) {
43
+ if ( ! Object.hasOwn( style?.spacing || {}, 'blockGap' ) ) {
44
+ return undefined;
45
+ }
46
+
47
+ return style.spacing.blockGap;
48
+ }
49
+
50
+ export default function GalleryGapCustomProperties( { style, clientId } ) {
51
+ const selector = `#block-${ clientId }`;
52
+ const [ viewportSettings ] = useSettings( 'viewport' );
53
+ const globalStyles = useSelect(
54
+ ( select ) =>
55
+ select( blockEditorStore ).getSettings()?.[ globalStylesDataKey ],
56
+ []
57
+ );
58
+ const globalGalleryStyles =
59
+ globalStyles?.blocks?.[ GALLERY_BLOCK_NAME ] || {};
60
+ const styleBlockGap = getBlockGapValue( style );
61
+ const globalGalleryBlockGap =
62
+ globalGalleryStyles?.spacing?.blockGap ?? FALLBACK_VALUE;
63
+ // Prefer the block's own gap value, then Gallery global styles. Missing
64
+ // values fall back to the Gallery blockGap default.
65
+ const blockGap =
66
+ styleBlockGap === undefined ? globalGalleryBlockGap : styleBlockGap;
67
+ let gap = getGalleryGapCustomPropertyStyle( selector, blockGap );
68
+
69
+ Object.entries( getResponsiveMediaQueries( viewportSettings ) ).forEach(
70
+ ( [ viewport, mediaQuery ] ) => {
71
+ const styleViewportBlockGap = getBlockGapValue(
72
+ style?.[ viewport ]
73
+ );
74
+ // Viewport-specific block values win. Gallery global viewport values
75
+ // only apply when the block has no base gap, so they do not override an instance value.
76
+ const globalViewportBlockGap =
77
+ styleBlockGap === undefined
78
+ ? globalGalleryStyles?.[ viewport ]?.spacing?.blockGap
79
+ : undefined;
80
+ const viewportBlockGap =
81
+ styleViewportBlockGap === undefined
82
+ ? globalViewportBlockGap
83
+ : styleViewportBlockGap;
84
+ if ( viewportBlockGap === undefined || viewportBlockGap === null ) {
85
+ return;
86
+ }
87
+
88
+ gap += `${ mediaQuery }{${ getGalleryGapCustomPropertyStyle(
89
+ selector,
90
+ viewportBlockGap
91
+ ) }}`;
92
+ }
93
+ );
35
94
 
36
95
  useStyleOverride( { css: gap } );
37
96
 
@@ -12,6 +12,7 @@ import edit from './edit';
12
12
  import metadata from './block.json';
13
13
  import save from './save';
14
14
  import transforms from './transforms';
15
+ import variations from './variations';
15
16
 
16
17
  const { name } = metadata;
17
18
 
@@ -39,6 +40,7 @@ export const settings = {
39
40
  ],
40
41
  },
41
42
  transforms,
43
+ variations,
42
44
  edit,
43
45
  save,
44
46
  deprecated,