@wordpress/block-library 9.48.1 → 10.0.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 (638) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/audio/edit.cjs +8 -1
  3. package/build/audio/edit.cjs.map +2 -2
  4. package/build/breadcrumbs/edit.cjs +1 -2
  5. package/build/breadcrumbs/edit.cjs.map +2 -2
  6. package/build/button/edit.cjs +1 -2
  7. package/build/button/edit.cjs.map +2 -2
  8. package/build/categories/edit.cjs +1 -1
  9. package/build/categories/edit.cjs.map +1 -1
  10. package/build/code/edit.cjs +1 -1
  11. package/build/code/edit.cjs.map +2 -2
  12. package/build/code/index.cjs +1 -1
  13. package/build/code/index.cjs.map +1 -1
  14. package/build/columns/utils.cjs.map +1 -1
  15. package/build/comments/edit/comments-legacy.cjs +1 -1
  16. package/build/comments/edit/comments-legacy.cjs.map +1 -1
  17. package/build/comments/edit/placeholder.cjs +4 -4
  18. package/build/comments/edit/placeholder.cjs.map +1 -1
  19. package/build/comments-pagination-next/edit.cjs +2 -2
  20. package/build/comments-pagination-next/edit.cjs.map +1 -1
  21. package/build/comments-pagination-previous/edit.cjs +2 -2
  22. package/build/comments-pagination-previous/edit.cjs.map +1 -1
  23. package/build/cover/deprecated.cjs +3 -3
  24. package/build/cover/deprecated.cjs.map +2 -2
  25. package/build/cover/edit/block-controls.cjs +13 -0
  26. package/build/cover/edit/block-controls.cjs.map +2 -2
  27. package/build/cover/edit/embed-video-url-input.cjs +0 -1
  28. package/build/cover/edit/embed-video-url-input.cjs.map +2 -2
  29. package/build/cover/edit/index.cjs +61 -2
  30. package/build/cover/edit/index.cjs.map +3 -3
  31. package/build/cover/edit/inspector-controls.cjs +93 -35
  32. package/build/cover/edit/inspector-controls.cjs.map +2 -2
  33. package/build/details/edit.cjs +1 -2
  34. package/build/details/edit.cjs.map +2 -2
  35. package/build/embed/embed-placeholder.cjs +1 -1
  36. package/build/embed/embed-placeholder.cjs.map +2 -2
  37. package/build/file/edit.cjs +3 -11
  38. package/build/file/edit.cjs.map +2 -2
  39. package/build/file/index.cjs +3 -1
  40. package/build/file/index.cjs.map +3 -3
  41. package/build/file/transforms.cjs +11 -32
  42. package/build/file/transforms.cjs.map +2 -2
  43. package/build/{freeform/convert-to-blocks-button.cjs → file/variations.cjs} +16 -18
  44. package/build/file/variations.cjs.map +7 -0
  45. package/build/footnotes/edit.cjs +1 -1
  46. package/build/footnotes/edit.cjs.map +2 -2
  47. package/build/form/edit.cjs +0 -2
  48. package/build/form/edit.cjs.map +2 -2
  49. package/build/form-input/edit.cjs +1 -3
  50. package/build/form-input/edit.cjs.map +2 -2
  51. package/build/freeform/edit.cjs +6 -15
  52. package/build/freeform/edit.cjs.map +3 -3
  53. package/build/freeform/migration-notice.cjs.map +2 -2
  54. package/build/gallery/edit.cjs +2 -2
  55. package/build/gallery/edit.cjs.map +2 -2
  56. package/build/home-link/edit.cjs +1 -2
  57. package/build/home-link/edit.cjs.map +2 -2
  58. package/build/html/index.cjs +1 -1
  59. package/build/html/index.cjs.map +2 -2
  60. package/build/html/modal.cjs +9 -6
  61. package/build/html/modal.cjs.map +2 -2
  62. package/build/icon/block.json +12 -0
  63. package/build/icon/edit.cjs +90 -41
  64. package/build/icon/edit.cjs.map +3 -3
  65. package/build/icon/index.cjs +3 -1
  66. package/build/icon/index.cjs.map +3 -3
  67. package/build/{tab/save.cjs → icon/variations.cjs} +14 -15
  68. package/build/icon/variations.cjs.map +7 -0
  69. package/build/image/block.json +1 -0
  70. package/build/image/edit.cjs +4 -3
  71. package/build/image/edit.cjs.map +2 -2
  72. package/build/image/image.cjs +91 -29
  73. package/build/image/image.cjs.map +2 -2
  74. package/build/image/index.cjs +1 -1
  75. package/build/image/index.cjs.map +2 -2
  76. package/build/image/transforms.cjs +9 -3
  77. package/build/image/transforms.cjs.map +2 -2
  78. package/build/image/use-open-image-media-editor-modal.cjs +5 -25
  79. package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
  80. package/build/index.cjs +1 -3
  81. package/build/index.cjs.map +2 -2
  82. package/build/latest-posts/edit.cjs +1 -1
  83. package/build/latest-posts/edit.cjs.map +1 -1
  84. package/build/list/ordered-list-settings.cjs +0 -1
  85. package/build/list/ordered-list-settings.cjs.map +2 -2
  86. package/build/math/edit.cjs +1 -1
  87. package/build/math/index.cjs +1 -1
  88. package/build/math/index.cjs.map +1 -1
  89. package/build/media-text/constants.cjs +1 -1
  90. package/build/media-text/constants.cjs.map +2 -2
  91. package/build/media-text/index.cjs +1 -1
  92. package/build/media-text/index.cjs.map +2 -2
  93. package/build/missing/edit.cjs +2 -2
  94. package/build/missing/edit.cjs.map +1 -1
  95. package/build/navigation/edit/index.cjs +19 -13
  96. package/build/navigation/edit/index.cjs.map +2 -2
  97. package/build/navigation/edit/navigation-menu-name-control.cjs +0 -1
  98. package/build/navigation/edit/navigation-menu-name-control.cjs.map +2 -2
  99. package/build/navigation/edit/navigation-menu-selector.cjs +1 -1
  100. package/build/navigation/edit/navigation-menu-selector.cjs.map +2 -2
  101. package/build/navigation/edit/placeholder/index.cjs +1 -1
  102. package/build/navigation/edit/placeholder/index.cjs.map +2 -2
  103. package/build/navigation-link/block.json +1 -1
  104. package/build/navigation-link/edit.cjs +1 -1
  105. package/build/navigation-link/edit.cjs.map +2 -2
  106. package/build/navigation-link/link-ui/page-creator.cjs +0 -1
  107. package/build/navigation-link/link-ui/page-creator.cjs.map +2 -2
  108. package/build/navigation-link/shared/controls.cjs +0 -2
  109. package/build/navigation-link/shared/controls.cjs.map +2 -2
  110. package/build/navigation-submenu/block.json +7 -0
  111. package/build/navigation-submenu/edit.cjs +1 -1
  112. package/build/navigation-submenu/edit.cjs.map +2 -2
  113. package/build/page-list/block.json +2 -5
  114. package/build/page-list/edit.cjs +1 -11
  115. package/build/page-list/edit.cjs.map +2 -2
  116. package/build/playlist-track/edit.cjs +0 -3
  117. package/build/playlist-track/edit.cjs.map +2 -2
  118. package/build/post-author/edit.cjs +1 -1
  119. package/build/post-author/edit.cjs.map +2 -2
  120. package/build/post-author/utils.cjs +1 -1
  121. package/build/post-author/utils.cjs.map +2 -2
  122. package/build/post-comment/edit.cjs +0 -1
  123. package/build/post-comment/edit.cjs.map +2 -2
  124. package/build/post-date/edit.cjs +2 -2
  125. package/build/post-date/edit.cjs.map +2 -2
  126. package/build/post-excerpt/edit.cjs +2 -2
  127. package/build/post-excerpt/edit.cjs.map +2 -2
  128. package/build/post-featured-image/block.json +1 -0
  129. package/build/post-featured-image/dimension-controls.cjs +90 -178
  130. package/build/post-featured-image/dimension-controls.cjs.map +3 -3
  131. package/build/post-featured-image/edit.cjs +47 -18
  132. package/build/post-featured-image/edit.cjs.map +2 -2
  133. package/build/post-navigation-link/edit.cjs +2 -2
  134. package/build/post-navigation-link/edit.cjs.map +2 -2
  135. package/build/post-terms/edit.cjs +0 -1
  136. package/build/post-terms/edit.cjs.map +2 -2
  137. package/build/post-time-to-read/edit.cjs +1 -1
  138. package/build/post-time-to-read/edit.cjs.map +1 -1
  139. package/build/post-title/edit.cjs +0 -1
  140. package/build/post-title/edit.cjs.map +2 -2
  141. package/build/preformatted/edit.cjs +1 -1
  142. package/build/preformatted/edit.cjs.map +2 -2
  143. package/build/pullquote/block.json +1 -3
  144. package/build/pullquote/deprecated.cjs +114 -9
  145. package/build/pullquote/deprecated.cjs.map +3 -3
  146. package/build/pullquote/edit.cjs +43 -61
  147. package/build/pullquote/edit.cjs.map +3 -3
  148. package/build/pullquote/save.cjs +5 -26
  149. package/build/pullquote/save.cjs.map +3 -3
  150. package/build/query/edit/enhanced-pagination-modal.cjs +10 -1
  151. package/build/query/edit/enhanced-pagination-modal.cjs.map +3 -3
  152. package/build/query/edit/inspector-controls/enhanced-pagination-control.cjs +1 -1
  153. package/build/query/edit/inspector-controls/enhanced-pagination-control.cjs.map +1 -1
  154. package/build/query/edit/inspector-controls/index.cjs +0 -1
  155. package/build/query/edit/inspector-controls/index.cjs.map +2 -2
  156. package/build/query/edit/inspector-controls/order-control.cjs +2 -2
  157. package/build/query/edit/inspector-controls/order-control.cjs.map +2 -2
  158. package/build/query/utils.cjs +2 -2
  159. package/build/query/utils.cjs.map +2 -2
  160. package/build/query-pagination-next/edit.cjs +2 -2
  161. package/build/query-pagination-next/edit.cjs.map +1 -1
  162. package/build/query-pagination-previous/edit.cjs +2 -2
  163. package/build/query-pagination-previous/edit.cjs.map +1 -1
  164. package/build/query-title/edit.cjs +1 -1
  165. package/build/query-title/edit.cjs.map +2 -2
  166. package/build/query-total/edit.cjs +1 -1
  167. package/build/query-total/edit.cjs.map +2 -2
  168. package/build/quote/index.cjs +1 -1
  169. package/build/quote/index.cjs.map +2 -2
  170. package/build/read-more/edit.cjs +1 -1
  171. package/build/read-more/edit.cjs.map +2 -2
  172. package/build/rss/edit.cjs +1 -2
  173. package/build/rss/edit.cjs.map +2 -2
  174. package/build/search/block.json +4 -0
  175. package/build/search/edit.cjs +244 -206
  176. package/build/search/edit.cjs.map +2 -2
  177. package/build/shortcode/edit.cjs +1 -1
  178. package/build/shortcode/edit.cjs.map +2 -2
  179. package/build/site-logo/edit.cjs +2 -1
  180. package/build/site-logo/edit.cjs.map +2 -2
  181. package/build/site-tagline/edit.cjs +1 -1
  182. package/build/site-tagline/edit.cjs.map +2 -2
  183. package/build/site-title/edit.cjs +1 -1
  184. package/build/site-title/edit.cjs.map +2 -2
  185. package/build/social-link/edit.cjs +0 -3
  186. package/build/social-link/edit.cjs.map +2 -2
  187. package/build/tab-list/block.json +33 -20
  188. package/build/tab-list/edit.cjs +122 -12
  189. package/build/tab-list/edit.cjs.map +3 -3
  190. package/build/tab-list/init.cjs +28 -0
  191. package/build/tab-list/init.cjs.map +7 -0
  192. package/build/tab-list/save.cjs +33 -3
  193. package/build/tab-list/save.cjs.map +3 -3
  194. package/build/tab-panel/add-tab-toolbar-control.cjs +19 -8
  195. package/build/tab-panel/add-tab-toolbar-control.cjs.map +2 -2
  196. package/build/tab-panel/block.json +2 -6
  197. package/build/tab-panel/edit.cjs +0 -9
  198. package/build/tab-panel/edit.cjs.map +2 -2
  199. package/build/tab-panel/remove-tab-toolbar-control.cjs +9 -14
  200. package/build/tab-panel/remove-tab-toolbar-control.cjs.map +2 -2
  201. package/build/tab-panel/save.cjs +2 -1
  202. package/build/tab-panel/save.cjs.map +2 -2
  203. package/build/tab-panels/block.json +2 -28
  204. package/build/tab-panels/init.cjs +28 -0
  205. package/build/tab-panels/init.cjs.map +7 -0
  206. package/build/table/edit.cjs +0 -2
  207. package/build/table/edit.cjs.map +2 -2
  208. package/build/table/index.cjs +1 -1
  209. package/build/table/index.cjs.map +2 -2
  210. package/build/tabs/block.json +3 -17
  211. package/build/tabs/edit.cjs +7 -21
  212. package/build/tabs/edit.cjs.map +3 -3
  213. package/build/tabs/index.cjs +6 -10
  214. package/build/tabs/index.cjs.map +2 -2
  215. package/build/tabs/use-tab-list-items-sync.cjs +53 -0
  216. package/build/tabs/use-tab-list-items-sync.cjs.map +7 -0
  217. package/build/tabs/view.cjs +22 -104
  218. package/build/tabs/view.cjs.map +2 -2
  219. package/build/template-part/edit/advanced-controls.cjs +0 -1
  220. package/build/template-part/edit/advanced-controls.cjs.map +2 -2
  221. package/build/template-part/edit/title-modal.cjs +1 -2
  222. package/build/template-part/edit/title-modal.cjs.map +2 -2
  223. package/build/terms-query/edit/inspector-controls/order-control.cjs +2 -2
  224. package/build/terms-query/edit/inspector-controls/order-control.cjs.map +2 -2
  225. package/build/utils/style-state.cjs +164 -0
  226. package/build/utils/style-state.cjs.map +7 -0
  227. package/build/utils/waveform-player.cjs +1 -1
  228. package/build/verse/edit.cjs +1 -1
  229. package/build/verse/edit.cjs.map +2 -2
  230. package/build/video/edit.cjs +3 -2
  231. package/build/video/edit.cjs.map +2 -2
  232. package/build/video/tracks-editor.cjs +0 -2
  233. package/build/video/tracks-editor.cjs.map +2 -2
  234. package/build-module/audio/edit.mjs +8 -2
  235. package/build-module/audio/edit.mjs.map +2 -2
  236. package/build-module/breadcrumbs/edit.mjs +1 -2
  237. package/build-module/breadcrumbs/edit.mjs.map +2 -2
  238. package/build-module/button/edit.mjs +1 -2
  239. package/build-module/button/edit.mjs.map +2 -2
  240. package/build-module/categories/edit.mjs +1 -1
  241. package/build-module/categories/edit.mjs.map +1 -1
  242. package/build-module/code/edit.mjs +1 -1
  243. package/build-module/code/edit.mjs.map +2 -2
  244. package/build-module/code/index.mjs +1 -1
  245. package/build-module/code/index.mjs.map +1 -1
  246. package/build-module/columns/utils.mjs.map +1 -1
  247. package/build-module/comments/edit/comments-legacy.mjs +1 -1
  248. package/build-module/comments/edit/comments-legacy.mjs.map +1 -1
  249. package/build-module/comments/edit/placeholder.mjs +4 -4
  250. package/build-module/comments/edit/placeholder.mjs.map +1 -1
  251. package/build-module/comments-pagination-next/edit.mjs +2 -2
  252. package/build-module/comments-pagination-next/edit.mjs.map +1 -1
  253. package/build-module/comments-pagination-previous/edit.mjs +2 -2
  254. package/build-module/comments-pagination-previous/edit.mjs.map +1 -1
  255. package/build-module/cover/deprecated.mjs +3 -3
  256. package/build-module/cover/deprecated.mjs.map +2 -2
  257. package/build-module/cover/edit/block-controls.mjs +15 -2
  258. package/build-module/cover/edit/block-controls.mjs.map +2 -2
  259. package/build-module/cover/edit/embed-video-url-input.mjs +0 -1
  260. package/build-module/cover/edit/embed-video-url-input.mjs.map +2 -2
  261. package/build-module/cover/edit/index.mjs +64 -3
  262. package/build-module/cover/edit/index.mjs.map +2 -2
  263. package/build-module/cover/edit/inspector-controls.mjs +98 -35
  264. package/build-module/cover/edit/inspector-controls.mjs.map +2 -2
  265. package/build-module/details/edit.mjs +1 -2
  266. package/build-module/details/edit.mjs.map +2 -2
  267. package/build-module/embed/embed-placeholder.mjs +1 -1
  268. package/build-module/embed/embed-placeholder.mjs.map +2 -2
  269. package/build-module/file/edit.mjs +5 -13
  270. package/build-module/file/edit.mjs.map +2 -2
  271. package/build-module/file/index.mjs +3 -1
  272. package/build-module/file/index.mjs.map +2 -2
  273. package/build-module/file/transforms.mjs +11 -32
  274. package/build-module/file/transforms.mjs.map +2 -2
  275. package/build-module/file/variations.mjs +17 -0
  276. package/build-module/file/variations.mjs.map +7 -0
  277. package/build-module/footnotes/edit.mjs +1 -1
  278. package/build-module/footnotes/edit.mjs.map +2 -2
  279. package/build-module/form/edit.mjs +0 -2
  280. package/build-module/form/edit.mjs.map +2 -2
  281. package/build-module/form-input/edit.mjs +1 -3
  282. package/build-module/form-input/edit.mjs.map +2 -2
  283. package/build-module/freeform/edit.mjs +6 -15
  284. package/build-module/freeform/edit.mjs.map +2 -2
  285. package/build-module/freeform/migration-notice.mjs.map +2 -2
  286. package/build-module/gallery/edit.mjs +2 -2
  287. package/build-module/gallery/edit.mjs.map +2 -2
  288. package/build-module/home-link/edit.mjs +1 -2
  289. package/build-module/home-link/edit.mjs.map +2 -2
  290. package/build-module/html/index.mjs +1 -1
  291. package/build-module/html/index.mjs.map +2 -2
  292. package/build-module/html/modal.mjs +9 -6
  293. package/build-module/html/modal.mjs.map +2 -2
  294. package/build-module/icon/block.json +12 -0
  295. package/build-module/icon/edit.mjs +94 -42
  296. package/build-module/icon/edit.mjs.map +2 -2
  297. package/build-module/icon/index.mjs +3 -1
  298. package/build-module/icon/index.mjs.map +2 -2
  299. package/build-module/icon/variations.mjs +13 -0
  300. package/build-module/icon/variations.mjs.map +7 -0
  301. package/build-module/image/block.json +1 -0
  302. package/build-module/image/edit.mjs +4 -3
  303. package/build-module/image/edit.mjs.map +2 -2
  304. package/build-module/image/image.mjs +96 -29
  305. package/build-module/image/image.mjs.map +2 -2
  306. package/build-module/image/index.mjs +1 -1
  307. package/build-module/image/index.mjs.map +2 -2
  308. package/build-module/image/transforms.mjs +9 -3
  309. package/build-module/image/transforms.mjs.map +2 -2
  310. package/build-module/image/use-open-image-media-editor-modal.mjs +5 -25
  311. package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
  312. package/build-module/index.mjs +1 -3
  313. package/build-module/index.mjs.map +2 -2
  314. package/build-module/latest-posts/edit.mjs +1 -1
  315. package/build-module/latest-posts/edit.mjs.map +1 -1
  316. package/build-module/list/ordered-list-settings.mjs +0 -1
  317. package/build-module/list/ordered-list-settings.mjs.map +2 -2
  318. package/build-module/math/edit.mjs +1 -1
  319. package/build-module/math/index.mjs +1 -1
  320. package/build-module/math/index.mjs.map +1 -1
  321. package/build-module/media-text/constants.mjs +1 -1
  322. package/build-module/media-text/constants.mjs.map +2 -2
  323. package/build-module/media-text/index.mjs +1 -1
  324. package/build-module/media-text/index.mjs.map +2 -2
  325. package/build-module/missing/edit.mjs +2 -2
  326. package/build-module/missing/edit.mjs.map +1 -1
  327. package/build-module/navigation/edit/index.mjs +19 -13
  328. package/build-module/navigation/edit/index.mjs.map +2 -2
  329. package/build-module/navigation/edit/navigation-menu-name-control.mjs +0 -1
  330. package/build-module/navigation/edit/navigation-menu-name-control.mjs.map +2 -2
  331. package/build-module/navigation/edit/navigation-menu-selector.mjs +1 -1
  332. package/build-module/navigation/edit/navigation-menu-selector.mjs.map +2 -2
  333. package/build-module/navigation/edit/placeholder/index.mjs +1 -1
  334. package/build-module/navigation/edit/placeholder/index.mjs.map +2 -2
  335. package/build-module/navigation-link/block.json +1 -1
  336. package/build-module/navigation-link/edit.mjs +1 -1
  337. package/build-module/navigation-link/edit.mjs.map +2 -2
  338. package/build-module/navigation-link/link-ui/page-creator.mjs +0 -1
  339. package/build-module/navigation-link/link-ui/page-creator.mjs.map +2 -2
  340. package/build-module/navigation-link/shared/controls.mjs +0 -2
  341. package/build-module/navigation-link/shared/controls.mjs.map +2 -2
  342. package/build-module/navigation-submenu/block.json +7 -0
  343. package/build-module/navigation-submenu/edit.mjs +1 -1
  344. package/build-module/navigation-submenu/edit.mjs.map +2 -2
  345. package/build-module/page-list/block.json +2 -5
  346. package/build-module/page-list/edit.mjs +1 -11
  347. package/build-module/page-list/edit.mjs.map +2 -2
  348. package/build-module/playlist-track/edit.mjs +0 -3
  349. package/build-module/playlist-track/edit.mjs.map +2 -2
  350. package/build-module/post-author/edit.mjs +1 -1
  351. package/build-module/post-author/edit.mjs.map +2 -2
  352. package/build-module/post-author/utils.mjs +1 -1
  353. package/build-module/post-author/utils.mjs.map +2 -2
  354. package/build-module/post-comment/edit.mjs +0 -1
  355. package/build-module/post-comment/edit.mjs.map +2 -2
  356. package/build-module/post-date/edit.mjs +2 -2
  357. package/build-module/post-date/edit.mjs.map +2 -2
  358. package/build-module/post-excerpt/edit.mjs +2 -2
  359. package/build-module/post-excerpt/edit.mjs.map +2 -2
  360. package/build-module/post-featured-image/block.json +1 -0
  361. package/build-module/post-featured-image/dimension-controls.mjs +99 -187
  362. package/build-module/post-featured-image/dimension-controls.mjs.map +2 -2
  363. package/build-module/post-featured-image/edit.mjs +47 -18
  364. package/build-module/post-featured-image/edit.mjs.map +2 -2
  365. package/build-module/post-navigation-link/edit.mjs +2 -2
  366. package/build-module/post-navigation-link/edit.mjs.map +2 -2
  367. package/build-module/post-terms/edit.mjs +0 -1
  368. package/build-module/post-terms/edit.mjs.map +2 -2
  369. package/build-module/post-time-to-read/edit.mjs +1 -1
  370. package/build-module/post-time-to-read/edit.mjs.map +1 -1
  371. package/build-module/post-title/edit.mjs +0 -1
  372. package/build-module/post-title/edit.mjs.map +2 -2
  373. package/build-module/preformatted/edit.mjs +1 -1
  374. package/build-module/preformatted/edit.mjs.map +2 -2
  375. package/build-module/pullquote/block.json +1 -3
  376. package/build-module/pullquote/deprecated.mjs +114 -9
  377. package/build-module/pullquote/deprecated.mjs.map +2 -2
  378. package/build-module/pullquote/edit.mjs +44 -67
  379. package/build-module/pullquote/edit.mjs.map +2 -2
  380. package/build-module/pullquote/save.mjs +5 -16
  381. package/build-module/pullquote/save.mjs.map +2 -2
  382. package/build-module/query/edit/enhanced-pagination-modal.mjs +10 -1
  383. package/build-module/query/edit/enhanced-pagination-modal.mjs.map +2 -2
  384. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.mjs +1 -1
  385. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.mjs.map +1 -1
  386. package/build-module/query/edit/inspector-controls/index.mjs +0 -1
  387. package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
  388. package/build-module/query/edit/inspector-controls/order-control.mjs +2 -2
  389. package/build-module/query/edit/inspector-controls/order-control.mjs.map +2 -2
  390. package/build-module/query/utils.mjs +2 -2
  391. package/build-module/query/utils.mjs.map +2 -2
  392. package/build-module/query-pagination-next/edit.mjs +2 -2
  393. package/build-module/query-pagination-next/edit.mjs.map +1 -1
  394. package/build-module/query-pagination-previous/edit.mjs +2 -2
  395. package/build-module/query-pagination-previous/edit.mjs.map +1 -1
  396. package/build-module/query-title/edit.mjs +1 -1
  397. package/build-module/query-title/edit.mjs.map +2 -2
  398. package/build-module/query-total/edit.mjs +1 -1
  399. package/build-module/query-total/edit.mjs.map +2 -2
  400. package/build-module/quote/index.mjs +1 -1
  401. package/build-module/quote/index.mjs.map +2 -2
  402. package/build-module/read-more/edit.mjs +1 -1
  403. package/build-module/read-more/edit.mjs.map +2 -2
  404. package/build-module/rss/edit.mjs +1 -2
  405. package/build-module/rss/edit.mjs.map +2 -2
  406. package/build-module/search/block.json +4 -0
  407. package/build-module/search/edit.mjs +244 -206
  408. package/build-module/search/edit.mjs.map +2 -2
  409. package/build-module/shortcode/edit.mjs +1 -1
  410. package/build-module/shortcode/edit.mjs.map +2 -2
  411. package/build-module/site-logo/edit.mjs +2 -1
  412. package/build-module/site-logo/edit.mjs.map +2 -2
  413. package/build-module/site-tagline/edit.mjs +1 -1
  414. package/build-module/site-tagline/edit.mjs.map +2 -2
  415. package/build-module/site-title/edit.mjs +1 -1
  416. package/build-module/site-title/edit.mjs.map +2 -2
  417. package/build-module/social-link/edit.mjs +0 -3
  418. package/build-module/social-link/edit.mjs.map +2 -2
  419. package/build-module/tab-list/block.json +33 -20
  420. package/build-module/tab-list/edit.mjs +128 -15
  421. package/build-module/tab-list/edit.mjs.map +2 -2
  422. package/build-module/tab-list/init.mjs +7 -0
  423. package/build-module/tab-list/init.mjs.map +7 -0
  424. package/build-module/tab-list/save.mjs +29 -4
  425. package/build-module/tab-list/save.mjs.map +2 -2
  426. package/build-module/tab-panel/add-tab-toolbar-control.mjs +19 -8
  427. package/build-module/tab-panel/add-tab-toolbar-control.mjs.map +2 -2
  428. package/build-module/tab-panel/block.json +2 -6
  429. package/build-module/tab-panel/edit.mjs +1 -10
  430. package/build-module/tab-panel/edit.mjs.map +2 -2
  431. package/build-module/tab-panel/remove-tab-toolbar-control.mjs +9 -14
  432. package/build-module/tab-panel/remove-tab-toolbar-control.mjs.map +2 -2
  433. package/build-module/tab-panel/save.mjs +2 -1
  434. package/build-module/tab-panel/save.mjs.map +2 -2
  435. package/build-module/tab-panels/block.json +2 -28
  436. package/build-module/tab-panels/init.mjs +7 -0
  437. package/build-module/tab-panels/init.mjs.map +7 -0
  438. package/build-module/table/edit.mjs +0 -2
  439. package/build-module/table/edit.mjs.map +2 -2
  440. package/build-module/table/index.mjs +1 -1
  441. package/build-module/table/index.mjs.map +2 -2
  442. package/build-module/tabs/block.json +3 -17
  443. package/build-module/tabs/edit.mjs +7 -21
  444. package/build-module/tabs/edit.mjs.map +2 -2
  445. package/build-module/tabs/index.mjs +6 -10
  446. package/build-module/tabs/index.mjs.map +2 -2
  447. package/build-module/tabs/use-tab-list-items-sync.mjs +32 -0
  448. package/build-module/tabs/use-tab-list-items-sync.mjs.map +7 -0
  449. package/build-module/tabs/view.mjs +22 -104
  450. package/build-module/tabs/view.mjs.map +2 -2
  451. package/build-module/template-part/edit/advanced-controls.mjs +0 -1
  452. package/build-module/template-part/edit/advanced-controls.mjs.map +2 -2
  453. package/build-module/template-part/edit/title-modal.mjs +1 -2
  454. package/build-module/template-part/edit/title-modal.mjs.map +2 -2
  455. package/build-module/terms-query/edit/inspector-controls/order-control.mjs +2 -2
  456. package/build-module/terms-query/edit/inspector-controls/order-control.mjs.map +2 -2
  457. package/build-module/utils/style-state.mjs +132 -0
  458. package/build-module/utils/style-state.mjs.map +7 -0
  459. package/build-module/utils/waveform-player.mjs +1 -1
  460. package/build-module/verse/edit.mjs +1 -1
  461. package/build-module/verse/edit.mjs.map +2 -2
  462. package/build-module/video/edit.mjs +3 -3
  463. package/build-module/video/edit.mjs.map +2 -2
  464. package/build-module/video/tracks-editor.mjs +0 -2
  465. package/build-module/video/tracks-editor.mjs.map +2 -2
  466. package/build-style/editor-rtl.css +0 -19
  467. package/build-style/editor.css +0 -19
  468. package/build-style/icon/style-rtl.css +9 -0
  469. package/build-style/icon/style.css +9 -0
  470. package/build-style/style-rtl.css +11 -24
  471. package/build-style/style.css +11 -24
  472. package/build-style/{tab → tab-list}/style-rtl.css +2 -2
  473. package/build-style/{tab → tab-list}/style.css +2 -2
  474. package/build-style/tab-panel/style-rtl.css +0 -17
  475. package/build-style/tab-panel/style.css +0 -17
  476. package/package.json +48 -45
  477. package/src/audio/edit.js +5 -9
  478. package/src/avatar/index.php +2 -2
  479. package/src/block/index.php +2 -26
  480. package/src/breadcrumbs/edit.js +0 -1
  481. package/src/button/edit.js +0 -1
  482. package/src/comment-author-avatar/index.php +3 -3
  483. package/src/comment-author-name/index.php +1 -1
  484. package/src/comment-date/index.php +1 -1
  485. package/src/cover/edit/block-controls.js +14 -2
  486. package/src/cover/edit/embed-video-url-input.js +0 -1
  487. package/src/cover/edit/index.js +86 -0
  488. package/src/cover/edit/inspector-controls.js +124 -54
  489. package/src/cover/test/edit.js +51 -2
  490. package/src/details/edit.js +0 -1
  491. package/src/editor.scss +0 -2
  492. package/src/file/edit.js +3 -16
  493. package/src/file/index.js +2 -0
  494. package/src/file/transforms.js +12 -31
  495. package/src/file/variations.js +17 -0
  496. package/src/form/edit.js +0 -2
  497. package/src/form-input/edit.js +0 -2
  498. package/src/freeform/edit.js +6 -29
  499. package/src/freeform/migration-notice.js +2 -4
  500. package/src/gallery/edit.js +13 -13
  501. package/src/home-link/edit.js +0 -1
  502. package/src/html/modal.js +3 -0
  503. package/src/icon/README.md +3 -0
  504. package/src/icon/block.json +12 -0
  505. package/src/icon/edit.js +85 -37
  506. package/src/icon/index.js +3 -1
  507. package/src/icon/index.php +23 -0
  508. package/src/icon/style.scss +12 -0
  509. package/src/icon/variations.js +9 -0
  510. package/src/image/README.md +1 -0
  511. package/src/image/block.json +1 -0
  512. package/src/image/edit.js +8 -3
  513. package/src/image/image.js +120 -56
  514. package/src/image/index.php +0 -1
  515. package/src/image/test/use-open-image-media-editor-modal.js +20 -26
  516. package/src/image/transforms.js +34 -8
  517. package/src/image/use-open-image-media-editor-modal.js +24 -42
  518. package/src/index.js +4 -11
  519. package/src/list/ordered-list-settings.js +0 -1
  520. package/src/navigation/edit/index.js +25 -16
  521. package/src/navigation/edit/navigation-menu-name-control.js +0 -1
  522. package/src/navigation/index.php +58 -0
  523. package/src/navigation-link/README.md +1 -1
  524. package/src/navigation-link/block.json +1 -1
  525. package/src/navigation-link/link-ui/page-creator.js +0 -1
  526. package/src/navigation-link/shared/controls.js +0 -2
  527. package/src/navigation-link/test/__snapshots__/hooks.js.snap +5 -0
  528. package/src/navigation-submenu/README.md +5 -0
  529. package/src/navigation-submenu/block.json +7 -0
  530. package/src/page-list/README.md +1 -1
  531. package/src/page-list/block.json +2 -5
  532. package/src/page-list/edit.js +0 -11
  533. package/src/page-list/index.php +1 -1
  534. package/src/playlist-track/edit.js +0 -3
  535. package/src/post-comment/edit.js +0 -1
  536. package/src/post-date/edit.js +2 -2
  537. package/src/post-featured-image/README.md +1 -0
  538. package/src/post-featured-image/block.json +1 -0
  539. package/src/post-featured-image/dimension-controls.js +105 -184
  540. package/src/post-featured-image/edit.js +53 -22
  541. package/src/post-featured-image/index.php +24 -22
  542. package/src/post-terms/edit.js +0 -1
  543. package/src/post-title/edit.js +0 -1
  544. package/src/pullquote/README.md +1 -1
  545. package/src/pullquote/block.json +1 -3
  546. package/src/pullquote/deprecated.js +121 -9
  547. package/src/pullquote/edit.js +7 -31
  548. package/src/pullquote/save.js +2 -13
  549. package/src/query/edit/enhanced-pagination-modal.js +11 -1
  550. package/src/query/edit/inspector-controls/index.js +0 -1
  551. package/src/rss/edit.js +0 -1
  552. package/src/search/README.md +1 -0
  553. package/src/search/block.json +4 -0
  554. package/src/search/edit.js +106 -55
  555. package/src/search/index.php +25 -1
  556. package/src/site-logo/edit.js +3 -1
  557. package/src/social-link/edit.js +0 -3
  558. package/src/style.scss +1 -2
  559. package/src/tab-list/README.md +19 -17
  560. package/src/tab-list/block.json +33 -20
  561. package/src/tab-list/edit.js +153 -15
  562. package/src/tab-list/index.php +24 -33
  563. package/src/tab-list/init.js +6 -0
  564. package/src/tab-list/save.js +39 -4
  565. package/src/{tab → tab-list}/style.scss +2 -3
  566. package/src/tab-panel/README.md +0 -3
  567. package/src/tab-panel/add-tab-toolbar-control.js +24 -11
  568. package/src/tab-panel/block.json +2 -6
  569. package/src/tab-panel/edit.js +1 -14
  570. package/src/tab-panel/index.php +2 -25
  571. package/src/tab-panel/remove-tab-toolbar-control.js +10 -14
  572. package/src/tab-panel/save.js +1 -0
  573. package/src/tab-panel/style.scss +0 -17
  574. package/src/tab-panels/README.md +0 -16
  575. package/src/tab-panels/block.json +2 -28
  576. package/src/tab-panels/init.js +6 -0
  577. package/src/table/edit.js +0 -2
  578. package/src/tabs/README.md +1 -7
  579. package/src/tabs/block.json +3 -17
  580. package/src/tabs/edit.js +8 -19
  581. package/src/tabs/index.js +6 -10
  582. package/src/tabs/index.php +12 -32
  583. package/src/tabs/use-tab-list-items-sync.js +49 -0
  584. package/src/tabs/view.js +22 -110
  585. package/src/template-part/edit/advanced-controls.js +0 -1
  586. package/src/template-part/edit/title-modal.js +0 -1
  587. package/src/utils/style-state.js +151 -0
  588. package/src/utils/test/style-state.js +307 -0
  589. package/src/video/edit.js +9 -16
  590. package/src/video/tracks-editor.js +0 -2
  591. package/babel-plugin.cjs +0 -150
  592. package/build/freeform/convert-to-blocks-button.cjs.map +0 -7
  593. package/build/list-item/utils.cjs +0 -57
  594. package/build/list-item/utils.cjs.map +0 -7
  595. package/build/tab/block.json +0 -56
  596. package/build/tab/controls.cjs +0 -46
  597. package/build/tab/controls.cjs.map +0 -7
  598. package/build/tab/edit.cjs +0 -135
  599. package/build/tab/edit.cjs.map +0 -7
  600. package/build/tab/index.cjs +0 -58
  601. package/build/tab/index.cjs.map +0 -7
  602. package/build/tab/save.cjs.map +0 -7
  603. package/build/tabs/use-tab-list-sync.cjs +0 -190
  604. package/build/tabs/use-tab-list-sync.cjs.map +0 -7
  605. package/build-module/freeform/convert-to-blocks-button.mjs +0 -19
  606. package/build-module/freeform/convert-to-blocks-button.mjs.map +0 -7
  607. package/build-module/list-item/utils.mjs +0 -32
  608. package/build-module/list-item/utils.mjs.map +0 -7
  609. package/build-module/tab/block.json +0 -56
  610. package/build-module/tab/controls.mjs +0 -15
  611. package/build-module/tab/controls.mjs.map +0 -7
  612. package/build-module/tab/edit.mjs +0 -108
  613. package/build-module/tab/edit.mjs.map +0 -7
  614. package/build-module/tab/index.mjs +0 -20
  615. package/build-module/tab/index.mjs.map +0 -7
  616. package/build-module/tab/save.mjs +0 -14
  617. package/build-module/tab/save.mjs.map +0 -7
  618. package/build-module/tabs/use-tab-list-sync.mjs +0 -169
  619. package/build-module/tabs/use-tab-list-sync.mjs.map +0 -7
  620. package/build-style/tab/editor-rtl.css +0 -11
  621. package/build-style/tab/editor.css +0 -11
  622. package/build-style/tab-list/editor-rtl.css +0 -6
  623. package/build-style/tab-list/editor.css +0 -6
  624. package/build-style/tab-panels/style-rtl.css +0 -4
  625. package/build-style/tab-panels/style.css +0 -4
  626. package/src/freeform/convert-to-blocks-button.js +0 -18
  627. package/src/list-item/utils.js +0 -34
  628. package/src/tab/README.md +0 -69
  629. package/src/tab/block.json +0 -56
  630. package/src/tab/controls.js +0 -19
  631. package/src/tab/edit.js +0 -141
  632. package/src/tab/editor.scss +0 -14
  633. package/src/tab/index.js +0 -24
  634. package/src/tab/index.php +0 -70
  635. package/src/tab/save.js +0 -13
  636. package/src/tab-list/editor.scss +0 -10
  637. package/src/tab-panels/style.scss +0 -4
  638. package/src/tabs/use-tab-list-sync.js +0 -237
@@ -67,7 +67,7 @@ function render_block_core_avatar( $attributes, $content, $block ) {
67
67
  // translators: 1: Author archive link. 2: Link target. %3$s Aria label. %4$s Avatar image.
68
68
  $avatar_block = sprintf( '<a href="%1$s" target="%2$s" %3$s class="wp-block-avatar__link">%4$s</a>', esc_url( get_author_posts_url( $author_id ) ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block );
69
69
  }
70
- return sprintf( '<div %1s>%2s</div>', $wrapper_attributes, $avatar_block );
70
+ return sprintf( '<div %1$s>%2$s</div>', $wrapper_attributes, $avatar_block );
71
71
  }
72
72
  $comment = get_comment( $block->context['commentId'] );
73
73
  if ( ! $comment ) {
@@ -93,7 +93,7 @@ function render_block_core_avatar( $attributes, $content, $block ) {
93
93
  }
94
94
  $avatar_block = sprintf( '<a href="%1$s" target="%2$s" %3$s class="wp-block-avatar__link">%4$s</a>', esc_url( $comment->comment_author_url ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block );
95
95
  }
96
- return sprintf( '<div %1s>%2s</div>', $wrapper_attributes, $avatar_block );
96
+ return sprintf( '<div %1$s>%2$s</div>', $wrapper_attributes, $avatar_block );
97
97
  }
98
98
 
99
99
  /**
@@ -1,4 +1,4 @@
1
- <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName // Needed for WP_Block_Cloner helper class.
1
+ <?php
2
2
  /**
3
3
  * Server-side rendering of the `core/block` block.
4
4
  *
@@ -83,31 +83,7 @@ function render_block_core_block( $attributes, $content, $block_instance ) {
83
83
  */
84
84
  $block_instance->parsed_block['innerBlocks'] = parse_blocks( $content );
85
85
  $block_instance->parsed_block['innerContent'] = array_fill( 0, count( $block_instance->parsed_block['innerBlocks'] ), null );
86
- if ( method_exists( $block_instance, 'refresh_context_dependents' ) ) {
87
- // WP_Block::refresh_context_dependents() was introduced in WordPress 6.8.
88
- $block_instance->refresh_context_dependents();
89
- } else {
90
- // This branch can be removed once Gutenberg requires WordPress 6.8 or later.
91
- if ( ! class_exists( 'WP_Block_Cloner' ) ) {
92
- // phpcs:ignore Gutenberg.Commenting.SinceTag.MissingClassSinceTag
93
- class WP_Block_Cloner extends WP_Block {
94
- /**
95
- * Static methods of subclasses have access to protected properties
96
- * of instances of the parent class.
97
- * In this case, this gives us access to `available_context` and `registry`.
98
- */
99
- // phpcs:ignore Gutenberg.Commenting.SinceTag.MissingMethodSinceTag
100
- public static function clone_instance( $instance ) {
101
- return new WP_Block(
102
- $instance->parsed_block,
103
- $instance->available_context,
104
- $instance->registry
105
- );
106
- }
107
- }
108
- }
109
- $block_instance = WP_Block_Cloner::clone_instance( $block_instance );
110
- }
86
+ $block_instance->refresh_context_dependents();
111
87
 
112
88
  $content = $block_instance->render( array( 'dynamic' => false ) );
113
89
  unset( $seen_refs[ $attributes['ref'] ] );
@@ -264,7 +264,6 @@ export default function BreadcrumbEdit( {
264
264
  }
265
265
  >
266
266
  <TextControl
267
- __next40pxDefaultSize
268
267
  autoComplete="off"
269
268
  label={ __( 'Separator' ) }
270
269
  value={ separator }
@@ -449,7 +449,6 @@ function ButtonEdit( props ) {
449
449
  />
450
450
  { isLinkTag && (
451
451
  <TextControl
452
- __next40pxDefaultSize
453
452
  label={ __( 'Link relation' ) }
454
453
  help={ createInterpolateElement(
455
454
  __(
@@ -57,14 +57,14 @@ function render_block_core_comment_author_avatar( $attributes, $content, $block
57
57
  array(
58
58
  'height' => $height,
59
59
  'width' => $width,
60
- 'extra_attr' => sprintf( 'style="%1s"', $styles ),
60
+ 'extra_attr' => sprintf( 'style="%s"', $styles ),
61
61
  'class' => $classes,
62
62
  )
63
63
  );
64
64
  if ( isset( $spacing_attributes ) ) {
65
- return sprintf( '<div style="%1s">%2s</div>', esc_attr( $spacing_string ), $avatar_block );
65
+ return sprintf( '<div style="%1$s">%2$s</div>', esc_attr( $spacing_string ), $avatar_block );
66
66
  }
67
- return sprintf( '<div>%1s</div>', $avatar_block );
67
+ return sprintf( '<div>%s</div>', $avatar_block );
68
68
  }
69
69
 
70
70
  /**
@@ -40,7 +40,7 @@ function render_block_core_comment_author_name( $attributes, $content, $block )
40
40
  $link = get_comment_author_url( $comment );
41
41
 
42
42
  if ( ! empty( $link ) && ! empty( $attributes['isLink'] ) && ! empty( $attributes['linkTarget'] ) ) {
43
- $comment_author = sprintf( '<a rel="external nofollow ugc" href="%1s" target="%2s" >%3s</a>', esc_url( $link ), esc_attr( $attributes['linkTarget'] ), $comment_author );
43
+ $comment_author = sprintf( '<a rel="external nofollow ugc" href="%1$s" target="%2$s" >%3$s</a>', esc_url( $link ), esc_attr( $attributes['linkTarget'] ), $comment_author );
44
44
  }
45
45
  if ( '0' === $comment->comment_approved && ! $show_pending_links ) {
46
46
  $comment_author = wp_kses( $comment_author, array() );
@@ -37,7 +37,7 @@ function render_block_core_comment_date( $attributes, $content, $block ) {
37
37
  $link = get_comment_link( $comment );
38
38
 
39
39
  if ( ! empty( $attributes['isLink'] ) ) {
40
- $formatted_date = sprintf( '<a href="%1s">%2s</a>', esc_url( $link ), $formatted_date );
40
+ $formatted_date = sprintf( '<a href="%1$s">%2$s</a>', esc_url( $link ), $formatted_date );
41
41
  }
42
42
 
43
43
  return sprintf(
@@ -11,8 +11,8 @@ import {
11
11
  privateApis as blockEditorPrivateApis,
12
12
  } from '@wordpress/block-editor';
13
13
  import { __ } from '@wordpress/i18n';
14
- import { MenuItem } from '@wordpress/components';
15
- import { link } from '@wordpress/icons';
14
+ import { MenuItem, ToolbarButton } from '@wordpress/components';
15
+ import { crop, link } from '@wordpress/icons';
16
16
 
17
17
  /**
18
18
  * Internal dependencies
@@ -31,6 +31,9 @@ export default function CoverBlockControls( {
31
31
  toggleUseFeaturedImage,
32
32
  onClearMedia,
33
33
  onSelectEmbedUrl,
34
+ onEditMedia,
35
+ editMediaButtonRef,
36
+ showEditMediaButton,
34
37
  blockEditingMode,
35
38
  } ) {
36
39
  const {
@@ -106,6 +109,15 @@ export default function CoverBlockControls( {
106
109
  onToggle={ toggleMinFullHeight }
107
110
  isDisabled={ ! hasInnerBlocks }
108
111
  />
112
+ { showEditMediaButton && (
113
+ <ToolbarButton
114
+ ref={ editMediaButtonRef }
115
+ icon={ crop }
116
+ label={ __( 'Crop background image' ) }
117
+ onClick={ onEditMedia }
118
+ aria-haspopup="dialog"
119
+ />
120
+ ) }
109
121
  </BlockControls>
110
122
  ) }
111
123
  <BlockControls group="other">
@@ -58,7 +58,6 @@ export default function EmbedVideoUrlInput( {
58
58
  ) }
59
59
  <TextControl
60
60
  type="url"
61
- __next40pxDefaultSize
62
61
  label={ __( 'Video URL' ) }
63
62
  value={ url }
64
63
  onChange={ ( value ) => {
@@ -8,6 +8,7 @@ import clsx from 'clsx';
8
8
  */
9
9
  import { useEntityProp, store as coreStore } from '@wordpress/core-data';
10
10
  import {
11
+ useCallback,
11
12
  useEffect,
12
13
  useLayoutEffect,
13
14
  useMemo,
@@ -24,6 +25,7 @@ import {
24
25
  __experimentalUseGradient,
25
26
  store as blockEditorStore,
26
27
  useBlockEditingMode,
28
+ privateApis as blockEditorPrivateApis,
27
29
  } from '@wordpress/block-editor';
28
30
  import { __ } from '@wordpress/i18n';
29
31
  import { useSelect, useDispatch } from '@wordpress/data';
@@ -55,6 +57,9 @@ import {
55
57
  } from './color-utils';
56
58
  import { DEFAULT_MEDIA_SIZE_SLUG } from '../constants';
57
59
  import { getBackgroundEmbedHtml } from '../embed-video-utils';
60
+ import { unlock } from '../../lock-unlock';
61
+
62
+ const { openMediaEditorModalKey } = unlock( blockEditorPrivateApis );
58
63
 
59
64
  function getInnerBlocksTemplate( attributes ) {
60
65
  return [
@@ -123,6 +128,11 @@ function CoverEdit( {
123
128
  postId
124
129
  );
125
130
  const { getSettings } = useSelect( blockEditorStore );
131
+ const openMediaEditorModal = useSelect(
132
+ ( select ) =>
133
+ select( blockEditorStore ).getSettings()[ openMediaEditorModalKey ],
134
+ []
135
+ );
126
136
 
127
137
  const { __unstableMarkNextChangeAsNotPersistent } =
128
138
  useDispatch( blockEditorStore );
@@ -490,6 +500,7 @@ function CoverEdit( {
490
500
  );
491
501
 
492
502
  const mediaElement = useRef();
503
+ const editMediaButtonRef = useRef();
493
504
  const currentSettings = {
494
505
  isVideoBackground,
495
506
  isImageBackground,
@@ -500,6 +511,78 @@ function CoverEdit( {
500
511
  overlayColor,
501
512
  };
502
513
 
514
+ const openCoverMediaEditorModal = useCallback( () => {
515
+ if ( ! id || ! openMediaEditorModal ) {
516
+ return;
517
+ }
518
+
519
+ openMediaEditorModal( {
520
+ id,
521
+ onClose: () => {
522
+ editMediaButtonRef.current?.focus();
523
+ },
524
+ onUpdate: async ( { id: newId, url: newUrl } ) => {
525
+ if ( typeof newId !== 'number' ) {
526
+ return;
527
+ }
528
+
529
+ const nextAttributes = {
530
+ id: newId,
531
+ backgroundType: IMAGE_BACKGROUND_TYPE,
532
+ ...( newUrl ? { url: newUrl } : {} ),
533
+ ...( newId !== id
534
+ ? { sizeSlug: DEFAULT_MEDIA_SIZE_SLUG }
535
+ : {} ),
536
+ };
537
+
538
+ if ( newUrl ) {
539
+ const averageBackgroundColor =
540
+ await getMediaColor( newUrl );
541
+
542
+ // Read latest values after await to avoid stale closures.
543
+ const {
544
+ attributes: currentAttrs,
545
+ overlayColor: currentOverlay,
546
+ } = propsRef.current;
547
+
548
+ let newOverlayColor = currentOverlay.color;
549
+ if ( ! currentAttrs.isUserOverlayColor ) {
550
+ newOverlayColor = averageBackgroundColor;
551
+ setOverlayColor( newOverlayColor );
552
+
553
+ // Make undo revert the next setAttributes and the previous setOverlayColor.
554
+ __unstableMarkNextChangeAsNotPersistent();
555
+ }
556
+
557
+ nextAttributes.isDark = compositeIsDark(
558
+ currentAttrs.dimRatio,
559
+ newOverlayColor,
560
+ averageBackgroundColor
561
+ );
562
+ nextAttributes.isUserOverlayColor =
563
+ currentAttrs.isUserOverlayColor || false;
564
+ }
565
+
566
+ setAttributes( nextAttributes );
567
+ },
568
+ } );
569
+ }, [
570
+ id,
571
+ openMediaEditorModal,
572
+ setAttributes,
573
+ setOverlayColor,
574
+ __unstableMarkNextChangeAsNotPersistent,
575
+ ] );
576
+
577
+ const showEditMediaButton =
578
+ hasNonContentControls &&
579
+ ! useFeaturedImage &&
580
+ isImageBackground &&
581
+ !! id &&
582
+ !! url &&
583
+ ! isUploadingMedia &&
584
+ !! openMediaEditorModal;
585
+
503
586
  const toggleUseFeaturedImage = async () => {
504
587
  const newUseFeaturedImage = ! useFeaturedImage;
505
588
 
@@ -556,6 +639,9 @@ function CoverEdit( {
556
639
  toggleUseFeaturedImage={ toggleUseFeaturedImage }
557
640
  onClearMedia={ onClearMedia }
558
641
  blockEditingMode={ blockEditingMode }
642
+ onEditMedia={ openCoverMediaEditorModal }
643
+ editMediaButtonRef={ editMediaButtonRef }
644
+ showEditMediaButton={ showEditMediaButton }
559
645
  />
560
646
  );
561
647
 
@@ -34,12 +34,21 @@ import { Link } from '@wordpress/ui';
34
34
  import { COVER_MIN_HEIGHT, mediaPosition } from '../shared';
35
35
  import { unlock } from '../../lock-unlock';
36
36
  import { useToolsPanelDropdownMenuProps } from '../../utils/hooks';
37
+ import {
38
+ getActiveDimensionValue,
39
+ getDimensionResetAttributes,
40
+ getDimensionUpdateAttributes,
41
+ getStyleStateKey,
42
+ } from '../../utils/style-state';
37
43
  import { DEFAULT_MEDIA_SIZE_SLUG } from '../constants';
38
44
  import PosterImage from '../../utils/poster-image';
39
45
 
40
- const { cleanEmptyObject, ResolutionTool, HTMLElementControl } = unlock(
41
- blockEditorPrivateApis
42
- );
46
+ const {
47
+ cleanEmptyObject,
48
+ isDefaultBlockStyleState,
49
+ ResolutionTool,
50
+ HTMLElementControl,
51
+ } = unlock( blockEditorPrivateApis );
43
52
 
44
53
  function CoverHeightInput( {
45
54
  onChange,
@@ -124,20 +133,45 @@ export default function CoverInspectorControls( {
124
133
  const sizeSlug = attributes.sizeSlug || DEFAULT_MEDIA_SIZE_SLUG;
125
134
 
126
135
  const { gradientValue, setGradient } = __experimentalUseGradient();
127
- const { imageSizes, hasSelectedStyleState } = useSelect(
136
+ const { imageSizes, selectedStyleState } = useSelect(
128
137
  ( select ) => {
129
- const {
130
- getSettings,
131
- hasSelectedStyleState: hasSelectedBlockStyleState,
132
- } = unlock( select( blockEditorStore ) );
138
+ const { getSettings, getSelectedBlockStyleState } = unlock(
139
+ select( blockEditorStore )
140
+ );
133
141
 
134
142
  return {
135
143
  imageSizes: getSettings()?.imageSizes,
136
- hasSelectedStyleState: hasSelectedBlockStyleState( clientId ),
144
+ selectedStyleState: getSelectedBlockStyleState( clientId ),
137
145
  };
138
146
  },
139
147
  [ clientId ]
140
148
  );
149
+ const hasSelectedStyleState =
150
+ ! isDefaultBlockStyleState( selectedStyleState );
151
+ const selectedStyleStateKey = getStyleStateKey( selectedStyleState );
152
+ const stateMinHeight = getActiveDimensionValue( {
153
+ attributes,
154
+ selectedState: selectedStyleState,
155
+ hasSelectedStyleState,
156
+ attributeKey: 'minHeight',
157
+ styleKey: 'minHeight',
158
+ rootValue: undefined,
159
+ } );
160
+ const [ stateMinHeightValue, stateMinHeightUnit ] =
161
+ parseQuantityAndUnitFromRawValue( stateMinHeight || '' );
162
+ const activeMinHeight = hasSelectedStyleState
163
+ ? stateMinHeightValue
164
+ : minHeight;
165
+ const activeMinHeightUnit = hasSelectedStyleState
166
+ ? stateMinHeightUnit || minHeightUnit
167
+ : minHeightUnit;
168
+ const activeAspectRatio = getActiveDimensionValue( {
169
+ attributes,
170
+ selectedState: selectedStyleState,
171
+ hasSelectedStyleState,
172
+ attributeKey: 'aspectRatio',
173
+ rootValue: attributes?.style?.dimensions?.aspectRatio,
174
+ } );
141
175
 
142
176
  const image = useSelect(
143
177
  ( select ) =>
@@ -203,6 +237,52 @@ export default function CoverInspectorControls( {
203
237
  const showOverlayControls =
204
238
  colorGradientSettings.hasColorsOrGradients && ! hasSelectedStyleState;
205
239
 
240
+ const setMinHeightAttributes = ( nextMinHeight, nextUnit ) => {
241
+ if ( hasSelectedStyleState ) {
242
+ setAttributes(
243
+ getDimensionUpdateAttributes( {
244
+ style: attributes.style,
245
+ selectedState: selectedStyleState,
246
+ hasSelectedStyleState,
247
+ nextDimensions: {
248
+ minHeight:
249
+ nextMinHeight === undefined
250
+ ? undefined
251
+ : `${ nextMinHeight }${
252
+ nextUnit || activeMinHeightUnit || 'px'
253
+ }`,
254
+ aspectRatio: undefined,
255
+ },
256
+ } )
257
+ );
258
+ return;
259
+ }
260
+
261
+ setAttributes( {
262
+ minHeight: nextMinHeight,
263
+ style: cleanEmptyObject( {
264
+ ...attributes?.style,
265
+ dimensions: {
266
+ ...attributes?.style?.dimensions,
267
+ aspectRatio: undefined, // Reset aspect ratio when minHeight is set.
268
+ },
269
+ } ),
270
+ } );
271
+ };
272
+
273
+ const getResetMinHeightAttributes = ( attrs = attributes ) => {
274
+ return getDimensionResetAttributes( {
275
+ style: attrs.style,
276
+ selectedState: selectedStyleState,
277
+ hasSelectedStyleState,
278
+ keys: [ 'minHeight' ],
279
+ defaultAttributes: {
280
+ minHeight: undefined,
281
+ minHeightUnit: undefined,
282
+ },
283
+ } );
284
+ };
285
+
206
286
  const dropdownMenuProps = useToolsPanelDropdownMenuProps();
207
287
 
208
288
  return (
@@ -401,53 +481,43 @@ export default function CoverInspectorControls( {
401
481
  </ToolsPanelItem>
402
482
  </InspectorControls>
403
483
  ) }
404
- { ! hasSelectedStyleState && (
405
- <InspectorControls group="dimensions">
406
- <ToolsPanelItem
407
- className="single-column"
408
- hasValue={ () => !! minHeight }
409
- label={ __( 'Minimum height' ) }
410
- onDeselect={ () =>
411
- setAttributes( {
412
- minHeight: undefined,
413
- minHeightUnit: undefined,
414
- } )
484
+ <InspectorControls group="dimensions">
485
+ <ToolsPanelItem
486
+ key={ selectedStyleStateKey }
487
+ className="single-column"
488
+ hasValue={ () => !! activeMinHeight }
489
+ label={ __( 'Minimum height' ) }
490
+ onDeselect={ () =>
491
+ setAttributes( getResetMinHeightAttributes() )
492
+ }
493
+ resetAllFilter={ getResetMinHeightAttributes }
494
+ isShownByDefault
495
+ panelId={ clientId }
496
+ >
497
+ <CoverHeightInput
498
+ value={ activeAspectRatio ? '' : activeMinHeight }
499
+ unit={ activeMinHeightUnit }
500
+ onChange={ ( newMinHeight ) =>
501
+ setMinHeightAttributes( newMinHeight )
415
502
  }
416
- resetAllFilter={ () => ( {
417
- minHeight: undefined,
418
- minHeightUnit: undefined,
419
- } ) }
420
- isShownByDefault
421
- panelId={ clientId }
422
- >
423
- <CoverHeightInput
424
- value={
425
- attributes?.style?.dimensions?.aspectRatio
426
- ? ''
427
- : minHeight
428
- }
429
- unit={ minHeightUnit }
430
- onChange={ ( newMinHeight ) =>
431
- setAttributes( {
432
- minHeight: newMinHeight,
433
- style: cleanEmptyObject( {
434
- ...attributes?.style,
435
- dimensions: {
436
- ...attributes?.style?.dimensions,
437
- aspectRatio: undefined, // Reset aspect ratio when minHeight is set.
438
- },
439
- } ),
440
- } )
441
- }
442
- onUnitChange={ ( nextUnit ) =>
443
- setAttributes( {
444
- minHeightUnit: nextUnit,
445
- } )
503
+ onUnitChange={ ( nextUnit ) => {
504
+ if ( hasSelectedStyleState ) {
505
+ if ( activeMinHeight !== undefined ) {
506
+ setMinHeightAttributes(
507
+ activeMinHeight,
508
+ nextUnit
509
+ );
510
+ }
511
+ return;
446
512
  }
447
- />
448
- </ToolsPanelItem>
449
- </InspectorControls>
450
- ) }
513
+
514
+ setAttributes( {
515
+ minHeightUnit: nextUnit,
516
+ } );
517
+ } }
518
+ />
519
+ </ToolsPanelItem>
520
+ </InspectorControls>
451
521
  <InspectorControls group="advanced">
452
522
  <HTMLElementControl
453
523
  tagName={ tagName }
@@ -39,6 +39,50 @@ const disabledColorSettings = {
39
39
  disableCustomGradients: true,
40
40
  };
41
41
 
42
+ /**
43
+ * Runs `callback` with `requestAnimationFrame` callbacks flushed on a microtask
44
+ * ahead of any pending `setTimeout( 0 )` timers, then restores the original.
45
+ *
46
+ * In a browser, Ariakit normalizes the matrix's roving tabindex in a
47
+ * `requestAnimationFrame` before `useFocusOnMount`'s `setTimeout( 0 )` focuses
48
+ * the active (center) cell, so opening the dropdown leaves the content position
49
+ * untouched. JSDOM implements `requestAnimationFrame` as a ~16ms timer, which
50
+ * inverts the ordering and would otherwise focus and select the first DOM cell.
51
+ *
52
+ * @param {() => ( Promise< unknown > | unknown )} callback
53
+ * @return {Promise< unknown >} Resolves with the callback's return value.
54
+ */
55
+ async function withAnimationFramesBeforeTimers( callback ) {
56
+ const originalRequestAnimationFrame = global.requestAnimationFrame;
57
+
58
+ let flushing = false;
59
+ global.requestAnimationFrame = ( frameCallback ) => {
60
+ // Frames scheduled while flushing fall back to the real implementation
61
+ // so self-rescheduling loops (e.g. Popover's Floating UI `autoUpdate`)
62
+ // don't spin forever on the microtask queue.
63
+ if ( flushing ) {
64
+ return originalRequestAnimationFrame( frameCallback );
65
+ }
66
+
67
+ queueMicrotask( () => {
68
+ flushing = true;
69
+ try {
70
+ frameCallback( performance.now() );
71
+ } finally {
72
+ flushing = false;
73
+ }
74
+ } );
75
+
76
+ return 0;
77
+ };
78
+
79
+ try {
80
+ return await callback();
81
+ } finally {
82
+ global.requestAnimationFrame = originalRequestAnimationFrame;
83
+ }
84
+ }
85
+
42
86
  async function setup( attributes, useCoreBlocks, customSettings ) {
43
87
  const testBlock = { name: 'core/cover', attributes };
44
88
  const settings = customSettings || defaultSettings;
@@ -149,8 +193,13 @@ describe( 'Cover block', () => {
149
193
  await setup();
150
194
  await createAndSelectBlock();
151
195
 
152
- await userEvent.click(
153
- screen.getByLabelText( 'Change content position' )
196
+ // Open the matrix dropdown with browser-like frame ordering so
197
+ // focus-on-mount lands on the active cell instead of dirtying the
198
+ // content position.
199
+ await withAnimationFramesBeforeTimers( () =>
200
+ userEvent.click(
201
+ screen.getByLabelText( 'Change content position' )
202
+ )
154
203
  );
155
204
 
156
205
  expect( screen.getByLabelText( 'Block: Cover' ) ).not.toHaveClass(
@@ -105,7 +105,6 @@ function DetailsEdit( { attributes, setAttributes, clientId } ) {
105
105
  </InspectorControls>
106
106
  <InspectorControls group="advanced">
107
107
  <TextControl
108
- __next40pxDefaultSize
109
108
  label={ __( 'Name attribute' ) }
110
109
  value={ name || '' }
111
110
  onChange={ ( newName ) =>
package/src/editor.scss CHANGED
@@ -49,8 +49,6 @@
49
49
  @use "./social-links/editor.scss" as *;
50
50
  @use "./spacer/editor.scss" as *;
51
51
  @use "./table/editor.scss" as *;
52
- @use "./tab-list/editor.scss" as *;
53
- @use "./tab/editor.scss" as *;
54
52
  @use "./template-part/editor.scss" as *;
55
53
  @use "./term-template/editor.scss" as *;
56
54
  @use "./text-columns/editor.scss" as *;
package/src/file/edit.js CHANGED
@@ -23,9 +23,9 @@ import {
23
23
  store as blockEditorStore,
24
24
  __experimentalGetElementClassName,
25
25
  } from '@wordpress/block-editor';
26
- import { useEffect, useState } from '@wordpress/element';
26
+ import { useState } from '@wordpress/element';
27
27
  import { useCopyToClipboard } from '@wordpress/compose';
28
- import { __, _x } from '@wordpress/i18n';
28
+ import { __ } from '@wordpress/i18n';
29
29
  import { file as icon } from '@wordpress/icons';
30
30
  import { store as coreStore } from '@wordpress/core-data';
31
31
  import { store as noticesStore } from '@wordpress/notices';
@@ -90,8 +90,7 @@ function FileEdit( { attributes, isSelected, setAttributes, clientId } ) {
90
90
  );
91
91
 
92
92
  const { createErrorNotice } = useDispatch( noticesStore );
93
- const { toggleSelection, __unstableMarkNextChangeAsNotPersistent } =
94
- useDispatch( blockEditorStore );
93
+ const { toggleSelection } = useDispatch( blockEditorStore );
95
94
 
96
95
  useUploadMediaFromBlobURL( {
97
96
  url: temporaryURL,
@@ -99,18 +98,6 @@ function FileEdit( { attributes, isSelected, setAttributes, clientId } ) {
99
98
  onError: onUploadError,
100
99
  } );
101
100
 
102
- // Note: Handle setting a default value for `downloadButtonText` via HTML API
103
- // when it supports replacing text content for HTML tags.
104
- useEffect( () => {
105
- if ( RichText.isEmpty( downloadButtonText ) ) {
106
- __unstableMarkNextChangeAsNotPersistent();
107
- setAttributes( {
108
- downloadButtonText: _x( 'Download', 'button label' ),
109
- } );
110
- }
111
- // This effect should only run on mount.
112
- }, [] );
113
-
114
101
  function onSelectFile( newMedia ) {
115
102
  if ( ! newMedia || ! newMedia.url ) {
116
103
  // Reset attributes.
package/src/file/index.js CHANGED
@@ -14,6 +14,7 @@ import edit from './edit';
14
14
  import metadata from './block.json';
15
15
  import save from './save';
16
16
  import transforms from './transforms';
17
+ import variations from './variations';
17
18
  import { unlock } from '../lock-unlock';
18
19
 
19
20
  const { fieldsKey, formKey } = unlock( blocksPrivateApis );
@@ -34,6 +35,7 @@ export const settings = {
34
35
  deprecated,
35
36
  edit,
36
37
  save,
38
+ variations,
37
39
  };
38
40
 
39
41
  if ( window.__experimentalContentOnlyInspectorFields ) {