@wordpress/block-library 9.48.0 → 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 (1102) hide show
  1. package/CHANGELOG.md +19 -1
  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/transforms.cjs +65 -0
  15. package/build/columns/transforms.cjs.map +2 -2
  16. package/build/columns/utils.cjs.map +1 -1
  17. package/build/comments/edit/comments-legacy.cjs +1 -1
  18. package/build/comments/edit/comments-legacy.cjs.map +1 -1
  19. package/build/comments/edit/placeholder.cjs +4 -4
  20. package/build/comments/edit/placeholder.cjs.map +1 -1
  21. package/build/comments-pagination-next/edit.cjs +2 -2
  22. package/build/comments-pagination-next/edit.cjs.map +1 -1
  23. package/build/comments-pagination-previous/edit.cjs +2 -2
  24. package/build/comments-pagination-previous/edit.cjs.map +1 -1
  25. package/build/cover/deprecated.cjs +3 -3
  26. package/build/cover/deprecated.cjs.map +2 -2
  27. package/build/cover/edit/block-controls.cjs +13 -0
  28. package/build/cover/edit/block-controls.cjs.map +2 -2
  29. package/build/cover/edit/embed-video-url-input.cjs +0 -1
  30. package/build/cover/edit/embed-video-url-input.cjs.map +2 -2
  31. package/build/cover/edit/index.cjs +61 -2
  32. package/build/cover/edit/index.cjs.map +3 -3
  33. package/build/cover/edit/inspector-controls.cjs +93 -35
  34. package/build/cover/edit/inspector-controls.cjs.map +2 -2
  35. package/build/details/edit.cjs +1 -2
  36. package/build/details/edit.cjs.map +2 -2
  37. package/build/embed/embed-placeholder.cjs +1 -1
  38. package/build/embed/embed-placeholder.cjs.map +2 -2
  39. package/build/file/edit.cjs +3 -11
  40. package/build/file/edit.cjs.map +2 -2
  41. package/build/file/index.cjs +3 -1
  42. package/build/file/index.cjs.map +3 -3
  43. package/build/file/transforms.cjs +11 -32
  44. package/build/file/transforms.cjs.map +2 -2
  45. package/build/{freeform/convert-to-blocks-button.cjs → file/variations.cjs} +16 -18
  46. package/build/file/variations.cjs.map +7 -0
  47. package/build/footnotes/edit.cjs +1 -1
  48. package/build/footnotes/edit.cjs.map +2 -2
  49. package/build/form/edit.cjs +0 -2
  50. package/build/form/edit.cjs.map +2 -2
  51. package/build/form-input/edit.cjs +1 -3
  52. package/build/form-input/edit.cjs.map +2 -2
  53. package/build/freeform/edit.cjs +6 -15
  54. package/build/freeform/edit.cjs.map +3 -3
  55. package/build/freeform/migration-notice.cjs.map +2 -2
  56. package/build/gallery/edit.cjs +212 -331
  57. package/build/gallery/edit.cjs.map +2 -2
  58. package/build/gallery/transforms.cjs +43 -0
  59. package/build/gallery/transforms.cjs.map +2 -2
  60. package/build/heading/edit.cjs +0 -1
  61. package/build/heading/edit.cjs.map +2 -2
  62. package/build/home-link/edit.cjs +1 -2
  63. package/build/home-link/edit.cjs.map +2 -2
  64. package/build/html/index.cjs +1 -1
  65. package/build/html/index.cjs.map +2 -2
  66. package/build/html/modal.cjs +9 -6
  67. package/build/html/modal.cjs.map +2 -2
  68. package/build/icon/block.json +12 -0
  69. package/build/icon/edit.cjs +90 -41
  70. package/build/icon/edit.cjs.map +3 -3
  71. package/build/icon/index.cjs +3 -1
  72. package/build/icon/index.cjs.map +3 -3
  73. package/build/{tab/save.cjs → icon/variations.cjs} +14 -15
  74. package/build/icon/variations.cjs.map +7 -0
  75. package/build/image/block.json +1 -0
  76. package/build/image/edit.cjs +4 -3
  77. package/build/image/edit.cjs.map +2 -2
  78. package/build/image/image.cjs +91 -29
  79. package/build/image/image.cjs.map +2 -2
  80. package/build/image/index.cjs +1 -1
  81. package/build/image/index.cjs.map +2 -2
  82. package/build/image/transforms.cjs +9 -3
  83. package/build/image/transforms.cjs.map +2 -2
  84. package/build/image/use-open-image-media-editor-modal.cjs +5 -25
  85. package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
  86. package/build/index.cjs +1 -3
  87. package/build/index.cjs.map +2 -2
  88. package/build/latest-posts/edit.cjs +1 -1
  89. package/build/latest-posts/edit.cjs.map +1 -1
  90. package/build/list/edit.cjs +1 -8
  91. package/build/list/edit.cjs.map +2 -2
  92. package/build/list/ordered-list-settings.cjs +1 -45
  93. package/build/list/ordered-list-settings.cjs.map +2 -2
  94. package/build/list-item/hooks/use-merge.cjs +47 -24
  95. package/build/list-item/hooks/use-merge.cjs.map +2 -2
  96. package/build/math/edit.cjs +1 -1
  97. package/build/math/index.cjs +1 -1
  98. package/build/math/index.cjs.map +1 -1
  99. package/build/media-text/constants.cjs +1 -1
  100. package/build/media-text/constants.cjs.map +2 -2
  101. package/build/media-text/index.cjs +1 -1
  102. package/build/media-text/index.cjs.map +2 -2
  103. package/build/missing/edit.cjs +2 -2
  104. package/build/missing/edit.cjs.map +1 -1
  105. package/build/navigation/edit/index.cjs +34 -39
  106. package/build/navigation/edit/index.cjs.map +2 -2
  107. package/build/navigation/edit/navigation-menu-name-control.cjs +0 -1
  108. package/build/navigation/edit/navigation-menu-name-control.cjs.map +2 -2
  109. package/build/navigation/edit/navigation-menu-selector.cjs +1 -1
  110. package/build/navigation/edit/navigation-menu-selector.cjs.map +2 -2
  111. package/build/navigation/edit/placeholder/index.cjs +1 -1
  112. package/build/navigation/edit/placeholder/index.cjs.map +2 -2
  113. package/build/navigation-link/block.json +1 -1
  114. package/build/navigation-link/edit.cjs +1 -2
  115. package/build/navigation-link/edit.cjs.map +2 -2
  116. package/build/navigation-link/link-ui/page-creator.cjs +0 -1
  117. package/build/navigation-link/link-ui/page-creator.cjs.map +2 -2
  118. package/build/navigation-link/shared/controls.cjs +0 -2
  119. package/build/navigation-link/shared/controls.cjs.map +2 -2
  120. package/build/navigation-submenu/block.json +7 -0
  121. package/build/navigation-submenu/edit.cjs +3 -2
  122. package/build/navigation-submenu/edit.cjs.map +2 -2
  123. package/build/page-list/block.json +2 -5
  124. package/build/page-list/edit.cjs +1 -11
  125. package/build/page-list/edit.cjs.map +2 -2
  126. package/build/paragraph/deprecated.cjs +1 -0
  127. package/build/paragraph/deprecated.cjs.map +2 -2
  128. package/build/paragraph/edit.cjs +10 -1
  129. package/build/paragraph/edit.cjs.map +3 -3
  130. package/build/playlist/block.json +12 -0
  131. package/build/playlist/edit.cjs +27 -1
  132. package/build/playlist/edit.cjs.map +2 -2
  133. package/build/playlist/save.cjs +8 -1
  134. package/build/playlist/save.cjs.map +2 -2
  135. package/build/playlist/view.cjs +1 -0
  136. package/build/playlist/view.cjs.map +2 -2
  137. package/build/playlist-track/edit.cjs +0 -3
  138. package/build/playlist-track/edit.cjs.map +2 -2
  139. package/build/post-author/edit.cjs +1 -1
  140. package/build/post-author/edit.cjs.map +2 -2
  141. package/build/post-author/utils.cjs +1 -1
  142. package/build/post-author/utils.cjs.map +2 -2
  143. package/build/post-comment/edit.cjs +0 -1
  144. package/build/post-comment/edit.cjs.map +2 -2
  145. package/build/post-date/edit.cjs +2 -2
  146. package/build/post-date/edit.cjs.map +2 -2
  147. package/build/post-excerpt/edit.cjs +2 -2
  148. package/build/post-excerpt/edit.cjs.map +2 -2
  149. package/build/post-featured-image/block.json +1 -0
  150. package/build/post-featured-image/dimension-controls.cjs +90 -178
  151. package/build/post-featured-image/dimension-controls.cjs.map +3 -3
  152. package/build/post-featured-image/edit.cjs +47 -18
  153. package/build/post-featured-image/edit.cjs.map +2 -2
  154. package/build/post-navigation-link/edit.cjs +2 -2
  155. package/build/post-navigation-link/edit.cjs.map +2 -2
  156. package/build/post-terms/edit.cjs +0 -1
  157. package/build/post-terms/edit.cjs.map +2 -2
  158. package/build/post-time-to-read/edit.cjs +1 -1
  159. package/build/post-time-to-read/edit.cjs.map +1 -1
  160. package/build/post-time-to-read/index.cjs +1 -1
  161. package/build/post-time-to-read/index.cjs.map +2 -2
  162. package/build/post-time-to-read/variations.cjs +1 -1
  163. package/build/post-time-to-read/variations.cjs.map +2 -2
  164. package/build/post-title/edit.cjs +0 -1
  165. package/build/post-title/edit.cjs.map +2 -2
  166. package/build/preformatted/edit.cjs +1 -1
  167. package/build/preformatted/edit.cjs.map +2 -2
  168. package/build/pullquote/block.json +1 -3
  169. package/build/pullquote/deprecated.cjs +114 -9
  170. package/build/pullquote/deprecated.cjs.map +3 -3
  171. package/build/pullquote/edit.cjs +43 -66
  172. package/build/pullquote/edit.cjs.map +3 -3
  173. package/build/pullquote/save.cjs +5 -26
  174. package/build/pullquote/save.cjs.map +3 -3
  175. package/build/query/edit/enhanced-pagination-modal.cjs +10 -1
  176. package/build/query/edit/enhanced-pagination-modal.cjs.map +3 -3
  177. package/build/query/edit/inspector-controls/enhanced-pagination-control.cjs +1 -1
  178. package/build/query/edit/inspector-controls/enhanced-pagination-control.cjs.map +1 -1
  179. package/build/query/edit/inspector-controls/index.cjs +0 -1
  180. package/build/query/edit/inspector-controls/index.cjs.map +2 -2
  181. package/build/query/edit/inspector-controls/order-control.cjs +2 -2
  182. package/build/query/edit/inspector-controls/order-control.cjs.map +2 -2
  183. package/build/query/utils.cjs +2 -2
  184. package/build/query/utils.cjs.map +2 -2
  185. package/build/query-pagination-next/edit.cjs +2 -2
  186. package/build/query-pagination-next/edit.cjs.map +1 -1
  187. package/build/query-pagination-previous/edit.cjs +2 -2
  188. package/build/query-pagination-previous/edit.cjs.map +1 -1
  189. package/build/query-title/edit.cjs +1 -1
  190. package/build/query-title/edit.cjs.map +2 -2
  191. package/build/query-total/edit.cjs +1 -1
  192. package/build/query-total/edit.cjs.map +2 -2
  193. package/build/quote/edit.cjs +4 -9
  194. package/build/quote/edit.cjs.map +2 -2
  195. package/build/quote/index.cjs +1 -1
  196. package/build/quote/index.cjs.map +2 -2
  197. package/build/read-more/edit.cjs +1 -1
  198. package/build/read-more/edit.cjs.map +2 -2
  199. package/build/rss/edit.cjs +1 -2
  200. package/build/rss/edit.cjs.map +2 -2
  201. package/build/search/block.json +4 -0
  202. package/build/search/edit.cjs +244 -206
  203. package/build/search/edit.cjs.map +2 -2
  204. package/build/shortcode/edit.cjs +1 -1
  205. package/build/shortcode/edit.cjs.map +2 -2
  206. package/build/shortcode/transforms.cjs +2 -2
  207. package/build/shortcode/transforms.cjs.map +2 -2
  208. package/build/site-logo/edit.cjs +2 -1
  209. package/build/site-logo/edit.cjs.map +2 -2
  210. package/build/site-tagline/edit.cjs +1 -1
  211. package/build/site-tagline/edit.cjs.map +2 -2
  212. package/build/site-title/edit.cjs +1 -1
  213. package/build/site-title/edit.cjs.map +2 -2
  214. package/build/social-link/edit.cjs +0 -3
  215. package/build/social-link/edit.cjs.map +2 -2
  216. package/build/tab-list/block.json +33 -20
  217. package/build/tab-list/edit.cjs +122 -12
  218. package/build/tab-list/edit.cjs.map +3 -3
  219. package/build/tab-list/init.cjs +28 -0
  220. package/build/tab-list/init.cjs.map +7 -0
  221. package/build/tab-list/save.cjs +33 -3
  222. package/build/tab-list/save.cjs.map +3 -3
  223. package/build/tab-panel/add-tab-toolbar-control.cjs +19 -8
  224. package/build/tab-panel/add-tab-toolbar-control.cjs.map +2 -2
  225. package/build/tab-panel/block.json +2 -6
  226. package/build/tab-panel/edit.cjs +0 -9
  227. package/build/tab-panel/edit.cjs.map +2 -2
  228. package/build/tab-panel/remove-tab-toolbar-control.cjs +9 -14
  229. package/build/tab-panel/remove-tab-toolbar-control.cjs.map +2 -2
  230. package/build/tab-panel/save.cjs +2 -1
  231. package/build/tab-panel/save.cjs.map +2 -2
  232. package/build/tab-panels/block.json +2 -28
  233. package/build/tab-panels/init.cjs +28 -0
  234. package/build/tab-panels/init.cjs.map +7 -0
  235. package/build/table/edit.cjs +0 -2
  236. package/build/table/edit.cjs.map +2 -2
  237. package/build/table/index.cjs +1 -1
  238. package/build/table/index.cjs.map +2 -2
  239. package/build/tabs/block.json +3 -17
  240. package/build/tabs/edit.cjs +7 -21
  241. package/build/tabs/edit.cjs.map +3 -3
  242. package/build/tabs/index.cjs +6 -10
  243. package/build/tabs/index.cjs.map +2 -2
  244. package/build/tabs/use-tab-list-items-sync.cjs +53 -0
  245. package/build/tabs/use-tab-list-items-sync.cjs.map +7 -0
  246. package/build/tabs/view.cjs +22 -104
  247. package/build/tabs/view.cjs.map +2 -2
  248. package/build/template-part/edit/advanced-controls.cjs +0 -1
  249. package/build/template-part/edit/advanced-controls.cjs.map +2 -2
  250. package/build/template-part/edit/title-modal.cjs +1 -2
  251. package/build/template-part/edit/title-modal.cjs.map +2 -2
  252. package/build/terms-query/edit/inspector-controls/order-control.cjs +2 -2
  253. package/build/terms-query/edit/inspector-controls/order-control.cjs.map +2 -2
  254. package/build/utils/style-state.cjs +164 -0
  255. package/build/utils/style-state.cjs.map +7 -0
  256. package/build/utils/waveform-player.cjs +42 -9
  257. package/build/utils/waveform-player.cjs.map +2 -2
  258. package/build/utils/waveform-utils.cjs +6 -4
  259. package/build/utils/waveform-utils.cjs.map +2 -2
  260. package/build/verse/edit.cjs +1 -1
  261. package/build/verse/edit.cjs.map +2 -2
  262. package/build/video/edit-common-settings.cjs +3 -6
  263. package/build/video/edit-common-settings.cjs.map +2 -2
  264. package/build/video/edit.cjs +3 -2
  265. package/build/video/edit.cjs.map +2 -2
  266. package/build/video/tracks-editor.cjs +0 -2
  267. package/build/video/tracks-editor.cjs.map +2 -2
  268. package/build-module/audio/edit.mjs +8 -2
  269. package/build-module/audio/edit.mjs.map +2 -2
  270. package/build-module/breadcrumbs/edit.mjs +1 -2
  271. package/build-module/breadcrumbs/edit.mjs.map +2 -2
  272. package/build-module/button/edit.mjs +1 -2
  273. package/build-module/button/edit.mjs.map +2 -2
  274. package/build-module/categories/edit.mjs +1 -1
  275. package/build-module/categories/edit.mjs.map +1 -1
  276. package/build-module/code/edit.mjs +1 -1
  277. package/build-module/code/edit.mjs.map +2 -2
  278. package/build-module/code/index.mjs +1 -1
  279. package/build-module/code/index.mjs.map +1 -1
  280. package/build-module/columns/transforms.mjs +65 -0
  281. package/build-module/columns/transforms.mjs.map +2 -2
  282. package/build-module/columns/utils.mjs.map +1 -1
  283. package/build-module/comments/edit/comments-legacy.mjs +1 -1
  284. package/build-module/comments/edit/comments-legacy.mjs.map +1 -1
  285. package/build-module/comments/edit/placeholder.mjs +4 -4
  286. package/build-module/comments/edit/placeholder.mjs.map +1 -1
  287. package/build-module/comments-pagination-next/edit.mjs +2 -2
  288. package/build-module/comments-pagination-next/edit.mjs.map +1 -1
  289. package/build-module/comments-pagination-previous/edit.mjs +2 -2
  290. package/build-module/comments-pagination-previous/edit.mjs.map +1 -1
  291. package/build-module/cover/deprecated.mjs +3 -3
  292. package/build-module/cover/deprecated.mjs.map +2 -2
  293. package/build-module/cover/edit/block-controls.mjs +15 -2
  294. package/build-module/cover/edit/block-controls.mjs.map +2 -2
  295. package/build-module/cover/edit/embed-video-url-input.mjs +0 -1
  296. package/build-module/cover/edit/embed-video-url-input.mjs.map +2 -2
  297. package/build-module/cover/edit/index.mjs +64 -3
  298. package/build-module/cover/edit/index.mjs.map +2 -2
  299. package/build-module/cover/edit/inspector-controls.mjs +98 -35
  300. package/build-module/cover/edit/inspector-controls.mjs.map +2 -2
  301. package/build-module/details/edit.mjs +1 -2
  302. package/build-module/details/edit.mjs.map +2 -2
  303. package/build-module/embed/embed-placeholder.mjs +1 -1
  304. package/build-module/embed/embed-placeholder.mjs.map +2 -2
  305. package/build-module/file/edit.mjs +5 -13
  306. package/build-module/file/edit.mjs.map +2 -2
  307. package/build-module/file/index.mjs +3 -1
  308. package/build-module/file/index.mjs.map +2 -2
  309. package/build-module/file/transforms.mjs +11 -32
  310. package/build-module/file/transforms.mjs.map +2 -2
  311. package/build-module/file/variations.mjs +17 -0
  312. package/build-module/file/variations.mjs.map +7 -0
  313. package/build-module/footnotes/edit.mjs +1 -1
  314. package/build-module/footnotes/edit.mjs.map +2 -2
  315. package/build-module/form/edit.mjs +0 -2
  316. package/build-module/form/edit.mjs.map +2 -2
  317. package/build-module/form-input/edit.mjs +1 -3
  318. package/build-module/form-input/edit.mjs.map +2 -2
  319. package/build-module/freeform/edit.mjs +6 -15
  320. package/build-module/freeform/edit.mjs.map +2 -2
  321. package/build-module/freeform/migration-notice.mjs.map +2 -2
  322. package/build-module/gallery/edit.mjs +214 -334
  323. package/build-module/gallery/edit.mjs.map +2 -2
  324. package/build-module/gallery/transforms.mjs +43 -0
  325. package/build-module/gallery/transforms.mjs.map +2 -2
  326. package/build-module/heading/edit.mjs +1 -2
  327. package/build-module/heading/edit.mjs.map +2 -2
  328. package/build-module/home-link/edit.mjs +1 -2
  329. package/build-module/home-link/edit.mjs.map +2 -2
  330. package/build-module/html/index.mjs +1 -1
  331. package/build-module/html/index.mjs.map +2 -2
  332. package/build-module/html/modal.mjs +9 -6
  333. package/build-module/html/modal.mjs.map +2 -2
  334. package/build-module/icon/block.json +12 -0
  335. package/build-module/icon/edit.mjs +94 -42
  336. package/build-module/icon/edit.mjs.map +2 -2
  337. package/build-module/icon/index.mjs +3 -1
  338. package/build-module/icon/index.mjs.map +2 -2
  339. package/build-module/icon/variations.mjs +13 -0
  340. package/build-module/icon/variations.mjs.map +7 -0
  341. package/build-module/image/block.json +1 -0
  342. package/build-module/image/edit.mjs +4 -3
  343. package/build-module/image/edit.mjs.map +2 -2
  344. package/build-module/image/image.mjs +96 -29
  345. package/build-module/image/image.mjs.map +2 -2
  346. package/build-module/image/index.mjs +1 -1
  347. package/build-module/image/index.mjs.map +2 -2
  348. package/build-module/image/transforms.mjs +9 -3
  349. package/build-module/image/transforms.mjs.map +2 -2
  350. package/build-module/image/use-open-image-media-editor-modal.mjs +5 -25
  351. package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
  352. package/build-module/index.mjs +1 -3
  353. package/build-module/index.mjs.map +2 -2
  354. package/build-module/latest-posts/edit.mjs +1 -1
  355. package/build-module/latest-posts/edit.mjs.map +1 -1
  356. package/build-module/list/edit.mjs +2 -9
  357. package/build-module/list/edit.mjs.map +2 -2
  358. package/build-module/list/ordered-list-settings.mjs +1 -46
  359. package/build-module/list/ordered-list-settings.mjs.map +2 -2
  360. package/build-module/list-item/hooks/use-merge.mjs +48 -25
  361. package/build-module/list-item/hooks/use-merge.mjs.map +2 -2
  362. package/build-module/math/edit.mjs +1 -1
  363. package/build-module/math/index.mjs +1 -1
  364. package/build-module/math/index.mjs.map +1 -1
  365. package/build-module/media-text/constants.mjs +1 -1
  366. package/build-module/media-text/constants.mjs.map +2 -2
  367. package/build-module/media-text/index.mjs +1 -1
  368. package/build-module/media-text/index.mjs.map +2 -2
  369. package/build-module/missing/edit.mjs +2 -2
  370. package/build-module/missing/edit.mjs.map +1 -1
  371. package/build-module/navigation/edit/index.mjs +35 -46
  372. package/build-module/navigation/edit/index.mjs.map +2 -2
  373. package/build-module/navigation/edit/navigation-menu-name-control.mjs +0 -1
  374. package/build-module/navigation/edit/navigation-menu-name-control.mjs.map +2 -2
  375. package/build-module/navigation/edit/navigation-menu-selector.mjs +1 -1
  376. package/build-module/navigation/edit/navigation-menu-selector.mjs.map +2 -2
  377. package/build-module/navigation/edit/placeholder/index.mjs +1 -1
  378. package/build-module/navigation/edit/placeholder/index.mjs.map +2 -2
  379. package/build-module/navigation-link/block.json +1 -1
  380. package/build-module/navigation-link/edit.mjs +1 -2
  381. package/build-module/navigation-link/edit.mjs.map +2 -2
  382. package/build-module/navigation-link/link-ui/page-creator.mjs +0 -1
  383. package/build-module/navigation-link/link-ui/page-creator.mjs.map +2 -2
  384. package/build-module/navigation-link/shared/controls.mjs +0 -2
  385. package/build-module/navigation-link/shared/controls.mjs.map +2 -2
  386. package/build-module/navigation-submenu/block.json +7 -0
  387. package/build-module/navigation-submenu/edit.mjs +3 -2
  388. package/build-module/navigation-submenu/edit.mjs.map +2 -2
  389. package/build-module/page-list/block.json +2 -5
  390. package/build-module/page-list/edit.mjs +1 -11
  391. package/build-module/page-list/edit.mjs.map +2 -2
  392. package/build-module/paragraph/deprecated.mjs +1 -0
  393. package/build-module/paragraph/deprecated.mjs.map +2 -2
  394. package/build-module/paragraph/edit.mjs +12 -2
  395. package/build-module/paragraph/edit.mjs.map +2 -2
  396. package/build-module/playlist/block.json +12 -0
  397. package/build-module/playlist/edit.mjs +27 -1
  398. package/build-module/playlist/edit.mjs.map +2 -2
  399. package/build-module/playlist/save.mjs +8 -1
  400. package/build-module/playlist/save.mjs.map +2 -2
  401. package/build-module/playlist/view.mjs +1 -0
  402. package/build-module/playlist/view.mjs.map +2 -2
  403. package/build-module/playlist-track/edit.mjs +0 -3
  404. package/build-module/playlist-track/edit.mjs.map +2 -2
  405. package/build-module/post-author/edit.mjs +1 -1
  406. package/build-module/post-author/edit.mjs.map +2 -2
  407. package/build-module/post-author/utils.mjs +1 -1
  408. package/build-module/post-author/utils.mjs.map +2 -2
  409. package/build-module/post-comment/edit.mjs +0 -1
  410. package/build-module/post-comment/edit.mjs.map +2 -2
  411. package/build-module/post-date/edit.mjs +2 -2
  412. package/build-module/post-date/edit.mjs.map +2 -2
  413. package/build-module/post-excerpt/edit.mjs +2 -2
  414. package/build-module/post-excerpt/edit.mjs.map +2 -2
  415. package/build-module/post-featured-image/block.json +1 -0
  416. package/build-module/post-featured-image/dimension-controls.mjs +99 -187
  417. package/build-module/post-featured-image/dimension-controls.mjs.map +2 -2
  418. package/build-module/post-featured-image/edit.mjs +47 -18
  419. package/build-module/post-featured-image/edit.mjs.map +2 -2
  420. package/build-module/post-navigation-link/edit.mjs +2 -2
  421. package/build-module/post-navigation-link/edit.mjs.map +2 -2
  422. package/build-module/post-terms/edit.mjs +0 -1
  423. package/build-module/post-terms/edit.mjs.map +2 -2
  424. package/build-module/post-time-to-read/edit.mjs +1 -1
  425. package/build-module/post-time-to-read/edit.mjs.map +1 -1
  426. package/build-module/post-time-to-read/index.mjs +1 -1
  427. package/build-module/post-time-to-read/index.mjs.map +2 -2
  428. package/build-module/post-time-to-read/variations.mjs +2 -2
  429. package/build-module/post-time-to-read/variations.mjs.map +2 -2
  430. package/build-module/post-title/edit.mjs +0 -1
  431. package/build-module/post-title/edit.mjs.map +2 -2
  432. package/build-module/preformatted/edit.mjs +1 -1
  433. package/build-module/preformatted/edit.mjs.map +2 -2
  434. package/build-module/pullquote/block.json +1 -3
  435. package/build-module/pullquote/deprecated.mjs +114 -9
  436. package/build-module/pullquote/deprecated.mjs.map +2 -2
  437. package/build-module/pullquote/edit.mjs +44 -72
  438. package/build-module/pullquote/edit.mjs.map +2 -2
  439. package/build-module/pullquote/save.mjs +5 -16
  440. package/build-module/pullquote/save.mjs.map +2 -2
  441. package/build-module/query/edit/enhanced-pagination-modal.mjs +10 -1
  442. package/build-module/query/edit/enhanced-pagination-modal.mjs.map +2 -2
  443. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.mjs +1 -1
  444. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.mjs.map +1 -1
  445. package/build-module/query/edit/inspector-controls/index.mjs +0 -1
  446. package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
  447. package/build-module/query/edit/inspector-controls/order-control.mjs +2 -2
  448. package/build-module/query/edit/inspector-controls/order-control.mjs.map +2 -2
  449. package/build-module/query/utils.mjs +2 -2
  450. package/build-module/query/utils.mjs.map +2 -2
  451. package/build-module/query-pagination-next/edit.mjs +2 -2
  452. package/build-module/query-pagination-next/edit.mjs.map +1 -1
  453. package/build-module/query-pagination-previous/edit.mjs +2 -2
  454. package/build-module/query-pagination-previous/edit.mjs.map +1 -1
  455. package/build-module/query-title/edit.mjs +1 -1
  456. package/build-module/query-title/edit.mjs.map +2 -2
  457. package/build-module/query-total/edit.mjs +1 -1
  458. package/build-module/query-total/edit.mjs.map +2 -2
  459. package/build-module/quote/edit.mjs +5 -10
  460. package/build-module/quote/edit.mjs.map +2 -2
  461. package/build-module/quote/index.mjs +1 -1
  462. package/build-module/quote/index.mjs.map +2 -2
  463. package/build-module/read-more/edit.mjs +1 -1
  464. package/build-module/read-more/edit.mjs.map +2 -2
  465. package/build-module/rss/edit.mjs +1 -2
  466. package/build-module/rss/edit.mjs.map +2 -2
  467. package/build-module/search/block.json +4 -0
  468. package/build-module/search/edit.mjs +244 -206
  469. package/build-module/search/edit.mjs.map +2 -2
  470. package/build-module/shortcode/edit.mjs +1 -1
  471. package/build-module/shortcode/edit.mjs.map +2 -2
  472. package/build-module/shortcode/transforms.mjs +2 -2
  473. package/build-module/shortcode/transforms.mjs.map +2 -2
  474. package/build-module/site-logo/edit.mjs +2 -1
  475. package/build-module/site-logo/edit.mjs.map +2 -2
  476. package/build-module/site-tagline/edit.mjs +1 -1
  477. package/build-module/site-tagline/edit.mjs.map +2 -2
  478. package/build-module/site-title/edit.mjs +1 -1
  479. package/build-module/site-title/edit.mjs.map +2 -2
  480. package/build-module/social-link/edit.mjs +0 -3
  481. package/build-module/social-link/edit.mjs.map +2 -2
  482. package/build-module/tab-list/block.json +33 -20
  483. package/build-module/tab-list/edit.mjs +128 -15
  484. package/build-module/tab-list/edit.mjs.map +2 -2
  485. package/build-module/tab-list/init.mjs +7 -0
  486. package/build-module/tab-list/init.mjs.map +7 -0
  487. package/build-module/tab-list/save.mjs +29 -4
  488. package/build-module/tab-list/save.mjs.map +2 -2
  489. package/build-module/tab-panel/add-tab-toolbar-control.mjs +19 -8
  490. package/build-module/tab-panel/add-tab-toolbar-control.mjs.map +2 -2
  491. package/build-module/tab-panel/block.json +2 -6
  492. package/build-module/tab-panel/edit.mjs +1 -10
  493. package/build-module/tab-panel/edit.mjs.map +2 -2
  494. package/build-module/tab-panel/remove-tab-toolbar-control.mjs +9 -14
  495. package/build-module/tab-panel/remove-tab-toolbar-control.mjs.map +2 -2
  496. package/build-module/tab-panel/save.mjs +2 -1
  497. package/build-module/tab-panel/save.mjs.map +2 -2
  498. package/build-module/tab-panels/block.json +2 -28
  499. package/build-module/tab-panels/init.mjs +7 -0
  500. package/build-module/tab-panels/init.mjs.map +7 -0
  501. package/build-module/table/edit.mjs +0 -2
  502. package/build-module/table/edit.mjs.map +2 -2
  503. package/build-module/table/index.mjs +1 -1
  504. package/build-module/table/index.mjs.map +2 -2
  505. package/build-module/tabs/block.json +3 -17
  506. package/build-module/tabs/edit.mjs +7 -21
  507. package/build-module/tabs/edit.mjs.map +2 -2
  508. package/build-module/tabs/index.mjs +6 -10
  509. package/build-module/tabs/index.mjs.map +2 -2
  510. package/build-module/tabs/use-tab-list-items-sync.mjs +32 -0
  511. package/build-module/tabs/use-tab-list-items-sync.mjs.map +7 -0
  512. package/build-module/tabs/view.mjs +22 -104
  513. package/build-module/tabs/view.mjs.map +2 -2
  514. package/build-module/template-part/edit/advanced-controls.mjs +0 -1
  515. package/build-module/template-part/edit/advanced-controls.mjs.map +2 -2
  516. package/build-module/template-part/edit/title-modal.mjs +1 -2
  517. package/build-module/template-part/edit/title-modal.mjs.map +2 -2
  518. package/build-module/terms-query/edit/inspector-controls/order-control.mjs +2 -2
  519. package/build-module/terms-query/edit/inspector-controls/order-control.mjs.map +2 -2
  520. package/build-module/utils/style-state.mjs +132 -0
  521. package/build-module/utils/style-state.mjs.map +7 -0
  522. package/build-module/utils/waveform-player.mjs +44 -11
  523. package/build-module/utils/waveform-player.mjs.map +2 -2
  524. package/build-module/utils/waveform-utils.mjs +6 -4
  525. package/build-module/utils/waveform-utils.mjs.map +2 -2
  526. package/build-module/verse/edit.mjs +1 -1
  527. package/build-module/verse/edit.mjs.map +2 -2
  528. package/build-module/video/edit-common-settings.mjs +4 -7
  529. package/build-module/video/edit-common-settings.mjs.map +2 -2
  530. package/build-module/video/edit.mjs +3 -3
  531. package/build-module/video/edit.mjs.map +2 -2
  532. package/build-module/video/tracks-editor.mjs +0 -2
  533. package/build-module/video/tracks-editor.mjs.map +2 -2
  534. package/build-style/comment-template/style-rtl.css +1 -0
  535. package/build-style/comment-template/style.css +1 -0
  536. package/build-style/common-rtl.css +30 -10
  537. package/build-style/common.css +30 -10
  538. package/build-style/cover/style-rtl.css +2 -1
  539. package/build-style/cover/style.css +2 -1
  540. package/build-style/editor-rtl.css +22 -30
  541. package/build-style/editor.css +22 -30
  542. package/build-style/form-input/style-rtl.css +2 -0
  543. package/build-style/form-input/style.css +2 -0
  544. package/build-style/gallery/style-rtl.css +4 -2
  545. package/build-style/gallery/style.css +4 -2
  546. package/build-style/icon/style-rtl.css +9 -0
  547. package/build-style/icon/style.css +9 -0
  548. package/build-style/media-text/style-rtl.css +2 -1
  549. package/build-style/media-text/style.css +2 -1
  550. package/build-style/playlist/style-rtl.css +3 -0
  551. package/build-style/playlist/style.css +3 -0
  552. package/build-style/query/editor-rtl.css +8 -4
  553. package/build-style/query/editor.css +8 -4
  554. package/build-style/read-more/style-rtl.css +1 -0
  555. package/build-style/read-more/style.css +1 -0
  556. package/build-style/reset-rtl.css +3 -1
  557. package/build-style/reset.css +3 -1
  558. package/build-style/search/style-rtl.css +3 -1
  559. package/build-style/search/style.css +3 -1
  560. package/build-style/site-logo/editor-rtl.css +2 -1
  561. package/build-style/site-logo/editor.css +2 -1
  562. package/build-style/style-rtl.css +64 -41
  563. package/build-style/style.css +64 -41
  564. package/build-style/{tab → tab-list}/style-rtl.css +5 -3
  565. package/build-style/{tab → tab-list}/style.css +5 -3
  566. package/build-style/tab-panel/style-rtl.css +0 -17
  567. package/build-style/tab-panel/style.css +0 -17
  568. package/build-style/template-part/editor-rtl.css +8 -4
  569. package/build-style/template-part/editor.css +8 -4
  570. package/build-style/video/style-rtl.css +2 -1
  571. package/build-style/video/style.css +2 -1
  572. package/package.json +55 -48
  573. package/src/accordion/README.md +97 -0
  574. package/src/accordion-heading/README.md +81 -0
  575. package/src/accordion-item/README.md +85 -0
  576. package/src/accordion-panel/README.md +74 -0
  577. package/src/archives/README.md +56 -0
  578. package/src/audio/README.md +55 -0
  579. package/src/audio/edit.js +5 -9
  580. package/src/avatar/README.md +74 -0
  581. package/src/avatar/index.php +2 -2
  582. package/src/block/README.md +56 -0
  583. package/src/block/index.php +2 -26
  584. package/src/breadcrumbs/README.md +67 -0
  585. package/src/breadcrumbs/edit.js +0 -1
  586. package/src/button/README.md +93 -0
  587. package/src/button/edit.js +0 -1
  588. package/src/buttons/README.md +80 -0
  589. package/src/calendar/README.md +51 -0
  590. package/src/categories/README.md +69 -0
  591. package/src/code/README.md +55 -0
  592. package/src/column/README.md +72 -0
  593. package/src/columns/README.md +90 -0
  594. package/src/columns/test/transforms.js +164 -0
  595. package/src/columns/transforms.js +74 -0
  596. package/src/comment-author-avatar/README.md +63 -0
  597. package/src/comment-author-avatar/index.php +3 -3
  598. package/src/comment-author-name/README.md +67 -0
  599. package/src/comment-author-name/index.php +1 -1
  600. package/src/comment-content/README.md +61 -0
  601. package/src/comment-date/README.md +67 -0
  602. package/src/comment-date/index.php +1 -1
  603. package/src/comment-edit-link/README.md +67 -0
  604. package/src/comment-reply-link/README.md +63 -0
  605. package/src/comment-template/README.md +60 -0
  606. package/src/comments/README.md +88 -0
  607. package/src/comments-pagination/README.md +77 -0
  608. package/src/comments-pagination-next/README.md +64 -0
  609. package/src/comments-pagination-numbers/README.md +64 -0
  610. package/src/comments-pagination-previous/README.md +64 -0
  611. package/src/comments-title/README.md +70 -0
  612. package/src/common.scss +63 -10
  613. package/src/cover/README.md +111 -0
  614. package/src/cover/edit/block-controls.js +14 -2
  615. package/src/cover/edit/embed-video-url-input.js +0 -1
  616. package/src/cover/edit/index.js +86 -0
  617. package/src/cover/edit/inspector-controls.js +124 -54
  618. package/src/cover/test/edit.js +51 -2
  619. package/src/details/README.md +65 -0
  620. package/src/details/edit.js +0 -1
  621. package/src/editor.scss +0 -2
  622. package/src/embed/README.md +56 -0
  623. package/src/file/README.md +60 -0
  624. package/src/file/edit.js +3 -16
  625. package/src/file/index.js +2 -0
  626. package/src/file/transforms.js +12 -31
  627. package/src/file/variations.js +17 -0
  628. package/src/footnotes/README.md +64 -0
  629. package/src/form/README.md +90 -0
  630. package/src/form/edit.js +0 -2
  631. package/src/form-input/README.md +74 -0
  632. package/src/form-input/edit.js +0 -2
  633. package/src/form-submission-notification/README.md +50 -0
  634. package/src/form-submit-button/README.md +54 -0
  635. package/src/freeform/README.md +49 -0
  636. package/src/freeform/edit.js +6 -29
  637. package/src/freeform/migration-notice.js +2 -4
  638. package/src/gallery/README.md +115 -0
  639. package/src/gallery/edit.js +214 -351
  640. package/src/gallery/test/transforms.js +155 -0
  641. package/src/gallery/transforms.js +47 -0
  642. package/src/group/README.md +80 -0
  643. package/src/heading/README.md +60 -0
  644. package/src/heading/edit.js +1 -2
  645. package/src/home-link/README.md +66 -0
  646. package/src/home-link/edit.js +0 -1
  647. package/src/home-link/index.php +3 -15
  648. package/src/html/README.md +48 -0
  649. package/src/html/modal.js +3 -0
  650. package/src/icon/README.md +66 -0
  651. package/src/icon/block.json +12 -0
  652. package/src/icon/edit.js +85 -37
  653. package/src/icon/index.js +3 -1
  654. package/src/icon/index.php +23 -0
  655. package/src/icon/style.scss +12 -0
  656. package/src/icon/variations.js +9 -0
  657. package/src/image/README.md +103 -0
  658. package/src/image/block.json +1 -0
  659. package/src/image/edit.js +8 -3
  660. package/src/image/image.js +120 -56
  661. package/src/image/index.php +4 -5
  662. package/src/image/test/use-open-image-media-editor-modal.js +20 -26
  663. package/src/image/transforms.js +34 -8
  664. package/src/image/use-open-image-media-editor-modal.js +24 -42
  665. package/src/index.js +4 -11
  666. package/src/latest-comments/README.md +57 -0
  667. package/src/latest-posts/README.md +71 -0
  668. package/src/list/README.md +70 -0
  669. package/src/list/edit.js +2 -9
  670. package/src/list/ordered-list-settings.js +46 -93
  671. package/src/list-item/README.md +71 -0
  672. package/src/list-item/hooks/use-merge.js +53 -46
  673. package/src/loginout/README.md +56 -0
  674. package/src/math/README.md +50 -0
  675. package/src/media-text/README.md +92 -0
  676. package/src/missing/README.md +55 -0
  677. package/src/more/README.md +49 -0
  678. package/src/navigation/README.md +115 -0
  679. package/src/navigation/edit/index.js +35 -46
  680. package/src/navigation/edit/navigation-menu-name-control.js +0 -1
  681. package/src/navigation/index.php +58 -0
  682. package/src/navigation-link/README.md +93 -0
  683. package/src/navigation-link/block.json +1 -1
  684. package/src/navigation-link/edit.js +0 -1
  685. package/src/navigation-link/index.php +1 -15
  686. package/src/navigation-link/link-ui/page-creator.js +0 -1
  687. package/src/navigation-link/shared/controls.js +0 -2
  688. package/src/navigation-link/test/__snapshots__/hooks.js.snap +5 -0
  689. package/src/navigation-overlay-close/README.md +48 -0
  690. package/src/navigation-submenu/README.md +89 -0
  691. package/src/navigation-submenu/block.json +7 -0
  692. package/src/navigation-submenu/edit.js +1 -0
  693. package/src/navigation-submenu/index.php +1 -17
  694. package/src/nextpage/README.md +50 -0
  695. package/src/page-list/README.md +84 -0
  696. package/src/page-list/block.json +2 -5
  697. package/src/page-list/edit.js +0 -11
  698. package/src/page-list/index.php +4 -16
  699. package/src/page-list-item/README.md +77 -0
  700. package/src/paragraph/README.md +70 -0
  701. package/src/paragraph/deprecated.js +1 -0
  702. package/src/paragraph/edit.js +13 -1
  703. package/src/pattern/README.md +45 -0
  704. package/src/playlist/README.md +86 -0
  705. package/src/playlist/block.json +12 -0
  706. package/src/playlist/edit.js +27 -0
  707. package/src/playlist/index.php +10 -3
  708. package/src/playlist/save.js +9 -1
  709. package/src/playlist/style.scss +7 -0
  710. package/src/playlist/view.js +1 -0
  711. package/src/playlist-track/README.md +69 -0
  712. package/src/playlist-track/edit.js +0 -3
  713. package/src/post-author/README.md +78 -0
  714. package/src/post-author-biography/README.md +59 -0
  715. package/src/post-author-name/README.md +63 -0
  716. package/src/post-author-name/index.php +1 -1
  717. package/src/post-comment/README.md +61 -0
  718. package/src/post-comment/edit.js +0 -1
  719. package/src/post-comments-count/README.md +58 -0
  720. package/src/post-comments-form/README.md +59 -0
  721. package/src/post-comments-link/README.md +60 -0
  722. package/src/post-content/README.md +71 -0
  723. package/src/post-date/README.md +65 -0
  724. package/src/post-date/edit.js +2 -2
  725. package/src/post-date/index.php +1 -1
  726. package/src/post-excerpt/README.md +66 -0
  727. package/src/post-featured-image/README.md +86 -0
  728. package/src/post-featured-image/block.json +1 -0
  729. package/src/post-featured-image/dimension-controls.js +105 -184
  730. package/src/post-featured-image/edit.js +53 -22
  731. package/src/post-featured-image/index.php +25 -23
  732. package/src/post-navigation-link/README.md +63 -0
  733. package/src/post-template/README.md +71 -0
  734. package/src/post-terms/README.md +65 -0
  735. package/src/post-terms/edit.js +0 -1
  736. package/src/post-time-to-read/README.md +63 -0
  737. package/src/post-time-to-read/index.js +1 -1
  738. package/src/post-time-to-read/variations.js +2 -2
  739. package/src/post-title/README.md +69 -0
  740. package/src/post-title/edit.js +0 -1
  741. package/src/preformatted/README.md +50 -0
  742. package/src/pullquote/README.md +64 -0
  743. package/src/pullquote/block.json +1 -3
  744. package/src/pullquote/deprecated.js +121 -9
  745. package/src/pullquote/edit.js +8 -38
  746. package/src/pullquote/save.js +2 -13
  747. package/src/query/README.md +64 -0
  748. package/src/query/edit/enhanced-pagination-modal.js +11 -1
  749. package/src/query/edit/inspector-controls/index.js +0 -1
  750. package/src/query-no-results/README.md +65 -0
  751. package/src/query-pagination/README.md +79 -0
  752. package/src/query-pagination-next/README.md +67 -0
  753. package/src/query-pagination-numbers/README.md +65 -0
  754. package/src/query-pagination-previous/README.md +67 -0
  755. package/src/query-title/README.md +65 -0
  756. package/src/query-total/README.md +66 -0
  757. package/src/quote/README.md +75 -0
  758. package/src/quote/edit.js +3 -9
  759. package/src/read-more/README.md +61 -0
  760. package/src/read-more/index.php +2 -2
  761. package/src/rss/README.md +62 -0
  762. package/src/rss/edit.js +0 -1
  763. package/src/search/README.md +67 -0
  764. package/src/search/block.json +4 -0
  765. package/src/search/edit.js +106 -55
  766. package/src/search/index.php +25 -1
  767. package/src/separator/README.md +62 -0
  768. package/src/shortcode/README.md +44 -0
  769. package/src/shortcode/transforms.js +2 -2
  770. package/src/site-logo/README.md +72 -0
  771. package/src/site-logo/edit.js +3 -1
  772. package/src/site-tagline/README.md +56 -0
  773. package/src/site-title/README.md +57 -0
  774. package/src/social-link/README.md +64 -0
  775. package/src/social-link/edit.js +0 -3
  776. package/src/social-links/README.md +98 -0
  777. package/src/spacer/README.md +53 -0
  778. package/src/style.scss +1 -2
  779. package/src/tab-list/README.md +81 -0
  780. package/src/tab-list/block.json +33 -20
  781. package/src/tab-list/edit.js +153 -15
  782. package/src/tab-list/index.php +24 -33
  783. package/src/tab-list/init.js +6 -0
  784. package/src/tab-list/save.js +39 -4
  785. package/src/{tab → tab-list}/style.scss +2 -3
  786. package/src/tab-panel/README.md +72 -0
  787. package/src/tab-panel/add-tab-toolbar-control.js +24 -11
  788. package/src/tab-panel/block.json +2 -6
  789. package/src/tab-panel/edit.js +1 -14
  790. package/src/tab-panel/index.php +2 -25
  791. package/src/tab-panel/remove-tab-toolbar-control.js +10 -14
  792. package/src/tab-panel/save.js +1 -0
  793. package/src/tab-panel/style.scss +0 -17
  794. package/src/tab-panels/README.md +59 -0
  795. package/src/tab-panels/block.json +2 -28
  796. package/src/tab-panels/init.js +6 -0
  797. package/src/table/README.md +71 -0
  798. package/src/table/edit.js +0 -2
  799. package/src/table-of-contents/README.md +61 -0
  800. package/src/tabs/README.md +77 -0
  801. package/src/tabs/block.json +3 -17
  802. package/src/tabs/edit.js +8 -19
  803. package/src/tabs/index.js +6 -10
  804. package/src/tabs/index.php +12 -32
  805. package/src/tabs/use-tab-list-items-sync.js +49 -0
  806. package/src/tabs/view.js +22 -110
  807. package/src/tag-cloud/README.md +62 -0
  808. package/src/template-part/README.md +48 -0
  809. package/src/template-part/edit/advanced-controls.js +0 -1
  810. package/src/template-part/edit/title-modal.js +0 -1
  811. package/src/term-count/README.md +59 -0
  812. package/src/term-description/README.md +60 -0
  813. package/src/term-name/README.md +65 -0
  814. package/src/term-template/README.md +65 -0
  815. package/src/terms-query/README.md +58 -0
  816. package/src/text-columns/README.md +51 -0
  817. package/src/utils/style-state.js +151 -0
  818. package/src/utils/test/style-state.js +307 -0
  819. package/src/utils/test/waveform-player.js +254 -0
  820. package/src/utils/waveform-player.js +90 -18
  821. package/src/utils/waveform-utils.js +15 -11
  822. package/src/verse/README.md +58 -0
  823. package/src/video/README.md +58 -0
  824. package/src/video/edit-common-settings.js +4 -7
  825. package/src/video/edit.js +9 -16
  826. package/src/video/tracks-editor.js +0 -2
  827. package/babel-plugin.cjs +0 -150
  828. package/build/freeform/convert-to-blocks-button.cjs.map +0 -7
  829. package/build/list-item/utils.cjs +0 -57
  830. package/build/list-item/utils.cjs.map +0 -7
  831. package/build/tab/block.json +0 -56
  832. package/build/tab/controls.cjs +0 -46
  833. package/build/tab/controls.cjs.map +0 -7
  834. package/build/tab/edit.cjs +0 -135
  835. package/build/tab/edit.cjs.map +0 -7
  836. package/build/tab/index.cjs +0 -58
  837. package/build/tab/index.cjs.map +0 -7
  838. package/build/tab/save.cjs.map +0 -7
  839. package/build/tabs/use-tab-list-sync.cjs +0 -190
  840. package/build/tabs/use-tab-list-sync.cjs.map +0 -7
  841. package/build-module/freeform/convert-to-blocks-button.mjs +0 -19
  842. package/build-module/freeform/convert-to-blocks-button.mjs.map +0 -7
  843. package/build-module/list-item/utils.mjs +0 -32
  844. package/build-module/list-item/utils.mjs.map +0 -7
  845. package/build-module/tab/block.json +0 -56
  846. package/build-module/tab/controls.mjs +0 -15
  847. package/build-module/tab/controls.mjs.map +0 -7
  848. package/build-module/tab/edit.mjs +0 -108
  849. package/build-module/tab/edit.mjs.map +0 -7
  850. package/build-module/tab/index.mjs +0 -20
  851. package/build-module/tab/index.mjs.map +0 -7
  852. package/build-module/tab/save.mjs +0 -14
  853. package/build-module/tab/save.mjs.map +0 -7
  854. package/build-module/tabs/use-tab-list-sync.mjs +0 -169
  855. package/build-module/tabs/use-tab-list-sync.mjs.map +0 -7
  856. package/build-style/tab/editor-rtl.css +0 -11
  857. package/build-style/tab/editor.css +0 -11
  858. package/build-style/tab-list/editor-rtl.css +0 -6
  859. package/build-style/tab-list/editor.css +0 -6
  860. package/build-style/tab-panels/style-rtl.css +0 -4
  861. package/build-style/tab-panels/style.css +0 -4
  862. package/src/audio/edit.native.js +0 -250
  863. package/src/audio/style.native.scss +0 -13
  864. package/src/audio/test/__snapshots__/edit.native.js.snap +0 -546
  865. package/src/audio/test/__snapshots__/transforms.native.js.snap +0 -25
  866. package/src/audio/test/edit.native.js +0 -132
  867. package/src/audio/test/transforms.native.js +0 -43
  868. package/src/audio/transforms.native.js +0 -12
  869. package/src/block/edit-title.native.js +0 -67
  870. package/src/block/edit.native.js +0 -247
  871. package/src/block/editor.native.scss +0 -125
  872. package/src/block/test/__snapshots__/transforms.native.js.snap +0 -15
  873. package/src/block/test/edit.native.js +0 -262
  874. package/src/block/test/transforms.native.js +0 -40
  875. package/src/button/color-background.native.js +0 -41
  876. package/src/button/edit.native.js +0 -567
  877. package/src/button/editor.native.scss +0 -70
  878. package/src/button/rich-text.android.scss +0 -6
  879. package/src/button/rich-text.ios.scss +0 -6
  880. package/src/buttons/edit.native.js +0 -157
  881. package/src/buttons/editor.native.scss +0 -11
  882. package/src/buttons/test/__snapshots__/edit.native.js.snap +0 -99
  883. package/src/buttons/test/__snapshots__/transforms.native.js.snap +0 -31
  884. package/src/buttons/test/edit.native.js +0 -485
  885. package/src/buttons/test/transforms.native.js +0 -48
  886. package/src/buttons/transforms.native.js +0 -12
  887. package/src/code/edit.native.js +0 -70
  888. package/src/code/test/__snapshots__/edit.native.js.snap +0 -13
  889. package/src/code/test/edit.native.js +0 -65
  890. package/src/code/theme.native.scss +0 -22
  891. package/src/code/transforms.native.js +0 -12
  892. package/src/column/column-preview.native.js +0 -58
  893. package/src/column/edit.native.js +0 -273
  894. package/src/column/editor.native.scss +0 -75
  895. package/src/columns/columnCalculations.native.js +0 -178
  896. package/src/columns/edit.native.js +0 -507
  897. package/src/columns/editor.native.scss +0 -17
  898. package/src/columns/test/__snapshots__/edit.native.js.snap +0 -305
  899. package/src/columns/test/__snapshots__/transforms.native.js.snap +0 -61
  900. package/src/columns/test/edit.native.js +0 -496
  901. package/src/columns/test/transforms.native.js +0 -89
  902. package/src/columns/transforms.native.js +0 -12
  903. package/src/cover/controls.native.js +0 -307
  904. package/src/cover/edit.native.js +0 -708
  905. package/src/cover/focal-point-settings-button.native.js +0 -53
  906. package/src/cover/overlay-color-settings.native.js +0 -106
  907. package/src/cover/style.native.scss +0 -220
  908. package/src/cover/test/__snapshots__/edit.native.js.snap +0 -105
  909. package/src/cover/test/__snapshots__/transforms.native.js.snap +0 -73
  910. package/src/cover/test/edit.native.js +0 -701
  911. package/src/cover/test/transforms.native.js +0 -116
  912. package/src/cover/transforms.native.js +0 -12
  913. package/src/cover/use-cover-is-dark.native.js +0 -51
  914. package/src/embed/edit.native.js +0 -345
  915. package/src/embed/embed-controls.native.js +0 -65
  916. package/src/embed/embed-link-settings.native.js +0 -99
  917. package/src/embed/embed-loading.native.js +0 -29
  918. package/src/embed/embed-no-preview.native.js +0 -230
  919. package/src/embed/embed-placeholder.native.js +0 -178
  920. package/src/embed/embed-preview.native.js +0 -157
  921. package/src/embed/styles.native.scss +0 -196
  922. package/src/embed/test/__snapshots__/index.native.js.snap +0 -191
  923. package/src/embed/test/__snapshots__/transforms.native.js.snap +0 -23
  924. package/src/embed/test/index.native.js +0 -1125
  925. package/src/embed/test/transforms.native.js +0 -44
  926. package/src/embed/transforms.native.js +0 -12
  927. package/src/embed/wp-embed-preview.native.js +0 -80
  928. package/src/file/edit.native.js +0 -605
  929. package/src/file/style.native.scss +0 -79
  930. package/src/file/test/__snapshots__/edit.native.js.snap +0 -580
  931. package/src/file/test/__snapshots__/transforms.native.js.snap +0 -19
  932. package/src/file/test/edit.native.js +0 -93
  933. package/src/file/test/transforms.native.js +0 -43
  934. package/src/file/transforms.native.js +0 -12
  935. package/src/freeform/convert-to-blocks-button.js +0 -18
  936. package/src/freeform/edit.native.js +0 -13
  937. package/src/freeform/test/__snapshots__/index.native.js.snap +0 -7
  938. package/src/freeform/test/__snapshots__/transforms.native.js.snap +0 -19
  939. package/src/freeform/test/index.native.js +0 -57
  940. package/src/freeform/test/transforms.native.js +0 -39
  941. package/src/gallery/gallery-styles.native.scss +0 -8
  942. package/src/gallery/gallery.native.js +0 -124
  943. package/src/gallery/styles.native.scss +0 -7
  944. package/src/gallery/test/__snapshots__/index.native.js.snap +0 -177
  945. package/src/gallery/test/__snapshots__/transforms.native.js.snap +0 -53
  946. package/src/gallery/test/helpers.native.js +0 -106
  947. package/src/gallery/test/index.native.js +0 -700
  948. package/src/gallery/test/transforms.native.js +0 -53
  949. package/src/gallery/test/use-get-media.native.js +0 -24
  950. package/src/gallery/transforms.native.js +0 -12
  951. package/src/gallery/use-get-media.native.js +0 -49
  952. package/src/group/edit.native.js +0 -137
  953. package/src/group/editor.native.scss +0 -56
  954. package/src/group/test/__snapshots__/edit.native.js.snap +0 -19
  955. package/src/group/test/__snapshots__/transforms.native.js.snap +0 -35
  956. package/src/group/test/edit.native.js +0 -100
  957. package/src/group/test/transforms.native.js +0 -73
  958. package/src/heading/edit.native.js +0 -159
  959. package/src/heading/test/__snapshots__/index.native.js.snap +0 -43
  960. package/src/heading/test/__snapshots__/transforms.native.js.snap +0 -47
  961. package/src/heading/test/index.native.js +0 -257
  962. package/src/heading/test/transforms.native.js +0 -46
  963. package/src/heading/transforms.native.js +0 -12
  964. package/src/html/transforms.native.js +0 -11
  965. package/src/image/edit.native.js +0 -959
  966. package/src/image/styles.native.scss +0 -70
  967. package/src/image/test/__snapshots__/transforms.native.js.snap +0 -49
  968. package/src/image/test/edit.native.js +0 -459
  969. package/src/image/test/transforms.native.js +0 -49
  970. package/src/image/transforms.native.js +0 -12
  971. package/src/index.native.js +0 -274
  972. package/src/latest-posts/edit.native.js +0 -294
  973. package/src/latest-posts/style.native.scss +0 -47
  974. package/src/latest-posts/test/__snapshots__/edit.native.js.snap +0 -3
  975. package/src/latest-posts/test/__snapshots__/transforms.native.js.snap +0 -15
  976. package/src/latest-posts/test/edit.native.js +0 -49
  977. package/src/latest-posts/test/transforms.native.js +0 -61
  978. package/src/list/tag-name.native.js +0 -12
  979. package/src/list/test/__snapshots__/edit.native.js.snap +0 -121
  980. package/src/list/test/__snapshots__/transforms.native.js.snap +0 -85
  981. package/src/list/test/edit.native.js +0 -602
  982. package/src/list/test/transforms.native.js +0 -56
  983. package/src/list/transforms.native.js +0 -12
  984. package/src/list-item/edit.native.js +0 -175
  985. package/src/list-item/hooks/use-enter.native.js +0 -81
  986. package/src/list-item/icons.native.js +0 -34
  987. package/src/list-item/list-style-type.native.js +0 -146
  988. package/src/list-item/style.native.scss +0 -57
  989. package/src/list-item/utils.js +0 -34
  990. package/src/media-text/edit.native.js +0 -417
  991. package/src/media-text/icon-retry.native.js +0 -11
  992. package/src/media-text/media-container.native.js +0 -393
  993. package/src/media-text/style.native.scss +0 -191
  994. package/src/media-text/test/__snapshots__/transforms.native.js.snap +0 -73
  995. package/src/media-text/test/edit.native.js +0 -58
  996. package/src/media-text/test/transforms.native.js +0 -116
  997. package/src/media-text/transforms.native.js +0 -12
  998. package/src/missing/edit.native.js +0 -294
  999. package/src/missing/style.native.scss +0 -79
  1000. package/src/missing/test/__snapshots__/edit.native.js.snap +0 -110
  1001. package/src/missing/test/edit-integration.native.js +0 -168
  1002. package/src/missing/test/edit.native.js +0 -81
  1003. package/src/more/edit.native.js +0 -36
  1004. package/src/more/editor.native.scss +0 -21
  1005. package/src/more/test/__snapshots__/edit.native.js.snap +0 -7
  1006. package/src/more/test/__snapshots__/transforms.native.js.snap +0 -19
  1007. package/src/more/test/edit.native.js +0 -41
  1008. package/src/more/test/transforms.native.js +0 -42
  1009. package/src/more/transforms.native.js +0 -12
  1010. package/src/navigation-link/shared/build-css-font-sizes.php +0 -43
  1011. package/src/nextpage/edit.native.js +0 -58
  1012. package/src/nextpage/editor.native.scss +0 -21
  1013. package/src/nextpage/test/__snapshots__/transforms.native.js.snap +0 -19
  1014. package/src/nextpage/test/transforms.native.js +0 -42
  1015. package/src/nextpage/transforms.native.js +0 -12
  1016. package/src/paragraph/edit.native.js +0 -116
  1017. package/src/paragraph/test/__snapshots__/edit.native.js.snap +0 -88
  1018. package/src/paragraph/test/__snapshots__/transforms.native.js.snap +0 -65
  1019. package/src/paragraph/test/edit.native.js +0 -999
  1020. package/src/paragraph/test/transforms.native.js +0 -51
  1021. package/src/paragraph/transforms.native.js +0 -12
  1022. package/src/preformatted/edit.native.js +0 -48
  1023. package/src/preformatted/styles.native.scss +0 -30
  1024. package/src/preformatted/test/__snapshots__/edit.native.js.snap +0 -95
  1025. package/src/preformatted/test/__snapshots__/transforms.native.js.snap +0 -37
  1026. package/src/preformatted/test/edit.native.js +0 -111
  1027. package/src/preformatted/test/transforms.native.js +0 -47
  1028. package/src/preformatted/transforms.native.js +0 -12
  1029. package/src/pullquote/blockquote.native.js +0 -39
  1030. package/src/pullquote/blockquote.native.scss +0 -8
  1031. package/src/pullquote/edit.native.js +0 -128
  1032. package/src/pullquote/figure.native.js +0 -33
  1033. package/src/pullquote/figure.native.scss +0 -16
  1034. package/src/pullquote/test/__snapshots__/transforms.native.js.snap +0 -47
  1035. package/src/pullquote/test/edit.native.js +0 -73
  1036. package/src/pullquote/test/transforms.native.js +0 -46
  1037. package/src/pullquote/transforms.native.js +0 -12
  1038. package/src/quote/test/__snapshots__/transforms.native.js.snap +0 -49
  1039. package/src/quote/test/edit.native.js +0 -94
  1040. package/src/quote/test/transforms.native.js +0 -69
  1041. package/src/quote/transforms.native.js +0 -12
  1042. package/src/search/edit.native.js +0 -486
  1043. package/src/search/style.native.scss +0 -99
  1044. package/src/search/test/__snapshots__/edit.native.js.snap +0 -827
  1045. package/src/search/test/__snapshots__/transforms.native.js.snap +0 -15
  1046. package/src/search/test/edit.native.js +0 -170
  1047. package/src/search/test/transforms.native.js +0 -40
  1048. package/src/separator/separator-settings.native.js +0 -3
  1049. package/src/separator/test/__snapshots__/edit.native.js.snap +0 -7
  1050. package/src/separator/test/__snapshots__/transforms.native.js.snap +0 -25
  1051. package/src/separator/test/edit.native.js +0 -41
  1052. package/src/separator/test/transforms.native.js +0 -42
  1053. package/src/separator/transforms.native.js +0 -12
  1054. package/src/shortcode/edit.native.js +0 -77
  1055. package/src/shortcode/style.native.scss +0 -44
  1056. package/src/shortcode/test/__snapshots__/edit.native.js.snap +0 -9
  1057. package/src/shortcode/test/__snapshots__/transforms.native.js.snap +0 -19
  1058. package/src/shortcode/test/edit.native.js +0 -70
  1059. package/src/shortcode/test/transforms.native.js +0 -42
  1060. package/src/shortcode/transforms.native.js +0 -12
  1061. package/src/social-link/edit.native.js +0 -219
  1062. package/src/social-link/editor.native.scss +0 -18
  1063. package/src/social-links/edit.native.js +0 -147
  1064. package/src/social-links/editor.native.scss +0 -25
  1065. package/src/social-links/test/__snapshots__/edit.native.js.snap +0 -57
  1066. package/src/social-links/test/__snapshots__/transforms.native.js.snap +0 -31
  1067. package/src/social-links/test/edit.native.js +0 -266
  1068. package/src/social-links/test/transforms.native.js +0 -53
  1069. package/src/spacer/controls.native.js +0 -86
  1070. package/src/spacer/edit.native.js +0 -110
  1071. package/src/spacer/editor.native.scss +0 -18
  1072. package/src/spacer/save.native.js +0 -18
  1073. package/src/spacer/test/__snapshots__/index.native.js.snap +0 -43
  1074. package/src/spacer/test/__snapshots__/transforms.native.js.snap +0 -25
  1075. package/src/spacer/test/index.native.js +0 -257
  1076. package/src/spacer/test/transforms.native.js +0 -42
  1077. package/src/tab/block.json +0 -56
  1078. package/src/tab/controls.js +0 -19
  1079. package/src/tab/edit.js +0 -141
  1080. package/src/tab/editor.scss +0 -14
  1081. package/src/tab/index.js +0 -24
  1082. package/src/tab/index.php +0 -70
  1083. package/src/tab/save.js +0 -13
  1084. package/src/tab-list/editor.scss +0 -10
  1085. package/src/tab-panels/style.scss +0 -4
  1086. package/src/table/transforms.native.js +0 -11
  1087. package/src/tabs/use-tab-list-sync.js +0 -237
  1088. package/src/text-columns/transforms.native.js +0 -12
  1089. package/src/utils/init-block.native.js +0 -40
  1090. package/src/utils/transformation-categories.native.js +0 -47
  1091. package/src/verse/test/__snapshots__/edit.native.js.snap +0 -13
  1092. package/src/verse/test/__snapshots__/transforms.native.js.snap +0 -31
  1093. package/src/verse/test/edit.native.js +0 -118
  1094. package/src/verse/test/transforms.native.js +0 -46
  1095. package/src/verse/transforms.native.js +0 -12
  1096. package/src/video/edit.native.js +0 -406
  1097. package/src/video/icon-retry.native.js +0 -11
  1098. package/src/video/style.native.scss +0 -81
  1099. package/src/video/test/__snapshots__/transforms.native.js.snap +0 -41
  1100. package/src/video/test/edit.native.js +0 -53
  1101. package/src/video/test/transforms.native.js +0 -49
  1102. package/src/video/transforms.native.js +0 -12
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/social-link/edit.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { DELETE, BACKSPACE, ENTER } from '@wordpress/keycodes';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tURLPopover,\n\tURLInput,\n\tuseBlockEditingMode,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useState, useRef, createInterpolateElement } from '@wordpress/element';\nimport {\n\tIcon as WCIcon,\n\tButton,\n\tDropdown,\n\tTextControl,\n\tToolbarButton,\n\tExternalLink,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { keyboardReturn } from '@wordpress/icons';\nimport { store as blocksStore } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { getSocialService } from './social-list';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst SocialLinkURLPopover = ( {\n\turl,\n\tsetAttributes,\n\tsetPopover,\n\tpopoverAnchor,\n\tclientId,\n} ) => {\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\treturn (\n\t\t<URLPopover\n\t\t\tanchor={ popoverAnchor }\n\t\t\taria-label={ __( 'Edit social link' ) }\n\t\t\tonClose={ () => {\n\t\t\t\tsetPopover( false );\n\t\t\t\tpopoverAnchor?.focus();\n\t\t\t} }\n\t\t>\n\t\t\t<form\n\t\t\t\tclassName=\"block-editor-url-popover__link-editor\"\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetPopover( false );\n\t\t\t\t\tpopoverAnchor?.focus();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<div className=\"block-editor-url-input\">\n\t\t\t\t\t<URLInput\n\t\t\t\t\t\tvalue={ url }\n\t\t\t\t\t\tonChange={ ( nextURL ) =>\n\t\t\t\t\t\t\tsetAttributes( { url: nextURL } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tplaceholder={ __( 'Enter social link' ) }\n\t\t\t\t\t\tlabel={ __( 'Enter social link' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tdisableSuggestions\n\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!! url ||\n\t\t\t\t\t\t\t\tevent.defaultPrevented ||\n\t\t\t\t\t\t\t\t! [ BACKSPACE, DELETE ].includes(\n\t\t\t\t\t\t\t\t\tevent.keyCode\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t<InputControlSuffixWrapper variant=\"control\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ticon={ keyboardReturn }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</InputControlSuffixWrapper>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</URLPopover>\n\t);\n};\n\nconst SocialLinkEdit = ( {\n\tattributes,\n\tcontext,\n\tisSelected,\n\tsetAttributes,\n\tclientId,\n\tname,\n} ) => {\n\tconst { url, service, label = '', rel } = attributes;\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst {\n\t\tshowLabels,\n\t\ticonColor,\n\t\ticonColorValue,\n\t\ticonBackgroundColor,\n\t\ticonBackgroundColorValue,\n\t} = context;\n\tconst [ showURLPopover, setPopover ] = useState( false );\n\tconst wrapperClasses = clsx(\n\t\t'wp-social-link',\n\t\t// Manually adding this class for backwards compatibility of CSS when moving the\n\t\t// blockProps from the li to the button: https://github.com/WordPress/gutenberg/pull/64883\n\t\t'wp-block-social-link',\n\t\t'wp-social-link-' + service,\n\t\t{\n\t\t\t'wp-social-link__is-incomplete': ! url,\n\t\t\t[ `has-${ iconColor }-color` ]: iconColor,\n\t\t\t[ `has-${ iconBackgroundColor }-background-color` ]:\n\t\t\t\ticonBackgroundColor,\n\t\t}\n\t);\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst isContentOnlyMode = useBlockEditingMode() === 'contentOnly';\n\n\tconst { activeVariation } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\t\t\treturn {\n\t\t\t\tactiveVariation: getActiveBlockVariation( name, attributes ),\n\t\t\t};\n\t\t},\n\t\t[ name, attributes ]\n\t);\n\n\tconst { icon, label: socialLinkName } = getSocialService( activeVariation );\n\t// The initial label (ie. the link text) is an empty string.\n\t// We want to prevent empty links so that the link text always fallbacks to\n\t// the social name, even when users enter and save an empty string or only\n\t// spaces. The PHP render callback fallbacks to the social name as well.\n\tconst socialLinkText = label.trim() === '' ? socialLinkName : label;\n\n\tconst ref = useRef();\n\tconst blockProps = useBlockProps( {\n\t\tclassName: 'wp-block-social-link-anchor',\n\t\tref: useMergeRefs( [ setPopoverAnchor, ref ] ),\n\t\tonClick: () => setPopover( true ),\n\t\tonKeyDown: ( event ) => {\n\t\t\tif ( event.keyCode === ENTER ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tsetPopover( true );\n\t\t\t}\n\t\t},\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t{ isContentOnlyMode && showLabels && (\n\t\t\t\t// Add an extra control to modify the label attribute when content only mode is active.\n\t\t\t\t// With content only mode active, the inspector is hidden, so users need another way\n\t\t\t\t// to edit this attribute.\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<Dropdown\n\t\t\t\t\t\tpopoverProps={ { placement: 'bottom-start' } }\n\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Text' ) }\n\t\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tclassName=\"wp-block-social-link__toolbar_content_text\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Provide a text label or use the default.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( { label: value } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tplaceholder={ socialLinkName }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\tsetAttributes( { label: undefined } );\n\t\t\t\t\t} }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t\t\thasValue={ () => !! label }\n\t\t\t\t\t\tonDeselect={ () => {\n\t\t\t\t\t\t\tsetAttributes( { label: undefined } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'The text is visible when enabled from the parent Social Icons block.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { label: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tplaceholder={ socialLinkName }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'Link relation' ) }\n\t\t\t\t\thelp={ createInterpolateElement(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'The <a>Link Relation</a> attribute defines the relationship between a linked resource and the current document.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ta: (\n\t\t\t\t\t\t\t\t<ExternalLink href=\"https://developer.mozilla.org/docs/Web/HTML/Attributes/rel\" />\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\tonChange={ ( value ) => setAttributes( { rel: value } ) }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t{ /*\n\t\t\t * Because the `<ul>` element has a role=document, the `<li>` is\n\t\t\t * not semantically correct, so adding role=presentation is cleaner.\n\t\t\t * https://github.com/WordPress/gutenberg/pull/64883#issuecomment-2472874551\n\t\t\t */ }\n\t\t\t<li\n\t\t\t\trole=\"presentation\"\n\t\t\t\tclassName={ wrapperClasses }\n\t\t\t\tstyle={ {\n\t\t\t\t\tcolor: iconColorValue,\n\t\t\t\t\tbackgroundColor: iconBackgroundColorValue,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ /*\n\t\t\t\t * Disable reason: The `button` ARIA role is redundant but\n\t\t\t\t * blockProps has a role of `document` automatically applied\n\t\t\t\t * which breaks the semantics of this button since it removes\n\t\t\t\t * the information about the popover.\n\t\t\t\t */\n\t\t\t\t/* eslint-disable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t<button aria-haspopup=\"dialog\" { ...blockProps } role=\"button\">\n\t\t\t\t\t<WCIcon icon={ icon } />\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ clsx( 'wp-block-social-link-label', {\n\t\t\t\t\t\t\t'screen-reader-text': ! showLabels,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ socialLinkText }\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\t\t\t\t{ /* eslint-enable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t{ isSelected && showURLPopover && (\n\t\t\t\t\t<SocialLinkURLPopover\n\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tsetPopover={ setPopover }\n\t\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</li>\n\t\t</>\n\t);\n};\n\nexport default SocialLinkEdit;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { DELETE, BACKSPACE, ENTER } from '@wordpress/keycodes';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tURLPopover,\n\tURLInput,\n\tuseBlockEditingMode,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useState, useRef, createInterpolateElement } from '@wordpress/element';\nimport {\n\tIcon as WCIcon,\n\tButton,\n\tDropdown,\n\tTextControl,\n\tToolbarButton,\n\tExternalLink,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { keyboardReturn } from '@wordpress/icons';\nimport { store as blocksStore } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { getSocialService } from './social-list';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst SocialLinkURLPopover = ( {\n\turl,\n\tsetAttributes,\n\tsetPopover,\n\tpopoverAnchor,\n\tclientId,\n} ) => {\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\treturn (\n\t\t<URLPopover\n\t\t\tanchor={ popoverAnchor }\n\t\t\taria-label={ __( 'Edit social link' ) }\n\t\t\tonClose={ () => {\n\t\t\t\tsetPopover( false );\n\t\t\t\tpopoverAnchor?.focus();\n\t\t\t} }\n\t\t>\n\t\t\t<form\n\t\t\t\tclassName=\"block-editor-url-popover__link-editor\"\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetPopover( false );\n\t\t\t\t\tpopoverAnchor?.focus();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<div className=\"block-editor-url-input\">\n\t\t\t\t\t<URLInput\n\t\t\t\t\t\tvalue={ url }\n\t\t\t\t\t\tonChange={ ( nextURL ) =>\n\t\t\t\t\t\t\tsetAttributes( { url: nextURL } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tplaceholder={ __( 'Enter social link' ) }\n\t\t\t\t\t\tlabel={ __( 'Enter social link' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tdisableSuggestions\n\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!! url ||\n\t\t\t\t\t\t\t\tevent.defaultPrevented ||\n\t\t\t\t\t\t\t\t! [ BACKSPACE, DELETE ].includes(\n\t\t\t\t\t\t\t\t\tevent.keyCode\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t<InputControlSuffixWrapper variant=\"control\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ticon={ keyboardReturn }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</InputControlSuffixWrapper>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</URLPopover>\n\t);\n};\n\nconst SocialLinkEdit = ( {\n\tattributes,\n\tcontext,\n\tisSelected,\n\tsetAttributes,\n\tclientId,\n\tname,\n} ) => {\n\tconst { url, service, label = '', rel } = attributes;\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst {\n\t\tshowLabels,\n\t\ticonColor,\n\t\ticonColorValue,\n\t\ticonBackgroundColor,\n\t\ticonBackgroundColorValue,\n\t} = context;\n\tconst [ showURLPopover, setPopover ] = useState( false );\n\tconst wrapperClasses = clsx(\n\t\t'wp-social-link',\n\t\t// Manually adding this class for backwards compatibility of CSS when moving the\n\t\t// blockProps from the li to the button: https://github.com/WordPress/gutenberg/pull/64883\n\t\t'wp-block-social-link',\n\t\t'wp-social-link-' + service,\n\t\t{\n\t\t\t'wp-social-link__is-incomplete': ! url,\n\t\t\t[ `has-${ iconColor }-color` ]: iconColor,\n\t\t\t[ `has-${ iconBackgroundColor }-background-color` ]:\n\t\t\t\ticonBackgroundColor,\n\t\t}\n\t);\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst isContentOnlyMode = useBlockEditingMode() === 'contentOnly';\n\n\tconst { activeVariation } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\t\t\treturn {\n\t\t\t\tactiveVariation: getActiveBlockVariation( name, attributes ),\n\t\t\t};\n\t\t},\n\t\t[ name, attributes ]\n\t);\n\n\tconst { icon, label: socialLinkName } = getSocialService( activeVariation );\n\t// The initial label (ie. the link text) is an empty string.\n\t// We want to prevent empty links so that the link text always fallbacks to\n\t// the social name, even when users enter and save an empty string or only\n\t// spaces. The PHP render callback fallbacks to the social name as well.\n\tconst socialLinkText = label.trim() === '' ? socialLinkName : label;\n\n\tconst ref = useRef();\n\tconst blockProps = useBlockProps( {\n\t\tclassName: 'wp-block-social-link-anchor',\n\t\tref: useMergeRefs( [ setPopoverAnchor, ref ] ),\n\t\tonClick: () => setPopover( true ),\n\t\tonKeyDown: ( event ) => {\n\t\t\tif ( event.keyCode === ENTER ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tsetPopover( true );\n\t\t\t}\n\t\t},\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t{ isContentOnlyMode && showLabels && (\n\t\t\t\t// Add an extra control to modify the label attribute when content only mode is active.\n\t\t\t\t// With content only mode active, the inspector is hidden, so users need another way\n\t\t\t\t// to edit this attribute.\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<Dropdown\n\t\t\t\t\t\tpopoverProps={ { placement: 'bottom-start' } }\n\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Text' ) }\n\t\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\tclassName=\"wp-block-social-link__toolbar_content_text\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Provide a text label or use the default.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( { label: value } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tplaceholder={ socialLinkName }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\tsetAttributes( { label: undefined } );\n\t\t\t\t\t} }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t\t\thasValue={ () => !! label }\n\t\t\t\t\t\tonDeselect={ () => {\n\t\t\t\t\t\t\tsetAttributes( { label: undefined } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'The text is visible when enabled from the parent Social Icons block.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { label: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tplaceholder={ socialLinkName }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\tlabel={ __( 'Link relation' ) }\n\t\t\t\t\thelp={ createInterpolateElement(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'The <a>Link Relation</a> attribute defines the relationship between a linked resource and the current document.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ta: (\n\t\t\t\t\t\t\t\t<ExternalLink href=\"https://developer.mozilla.org/docs/Web/HTML/Attributes/rel\" />\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\tonChange={ ( value ) => setAttributes( { rel: value } ) }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t{ /*\n\t\t\t * Because the `<ul>` element has a role=document, the `<li>` is\n\t\t\t * not semantically correct, so adding role=presentation is cleaner.\n\t\t\t * https://github.com/WordPress/gutenberg/pull/64883#issuecomment-2472874551\n\t\t\t */ }\n\t\t\t<li\n\t\t\t\trole=\"presentation\"\n\t\t\t\tclassName={ wrapperClasses }\n\t\t\t\tstyle={ {\n\t\t\t\t\tcolor: iconColorValue,\n\t\t\t\t\tbackgroundColor: iconBackgroundColorValue,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ /*\n\t\t\t\t * Disable reason: The `button` ARIA role is redundant but\n\t\t\t\t * blockProps has a role of `document` automatically applied\n\t\t\t\t * which breaks the semantics of this button since it removes\n\t\t\t\t * the information about the popover.\n\t\t\t\t */\n\t\t\t\t/* eslint-disable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t<button aria-haspopup=\"dialog\" { ...blockProps } role=\"button\">\n\t\t\t\t\t<WCIcon icon={ icon } />\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ clsx( 'wp-block-social-link-label', {\n\t\t\t\t\t\t\t'screen-reader-text': ! showLabels,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ socialLinkText }\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\t\t\t\t{ /* eslint-enable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t{ isSelected && showURLPopover && (\n\t\t\t\t\t<SocialLinkURLPopover\n\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tsetPopover={ setPopover }\n\t\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</li>\n\t\t</>\n\t);\n};\n\nexport default SocialLinkEdit;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -8,23 +8,29 @@
8
8
  "category": "design",
9
9
  "textdomain": "default",
10
10
  "parent": [ "core/tabs" ],
11
- "allowedBlocks": [ "core/tab" ],
12
11
  "usesContext": [ "core/tabs-list" ],
13
- "attributes": {},
12
+ "attributes": {
13
+ "tabs": {
14
+ "type": "array",
15
+ "source": "query",
16
+ "selector": "button",
17
+ "query": {
18
+ "label": {
19
+ "type": "string",
20
+ "source": "html"
21
+ }
22
+ },
23
+ "default": []
24
+ }
25
+ },
14
26
  "supports": {
15
27
  "html": false,
16
- "reusable": false,
17
28
  "visibility": false,
18
29
  "lock": false,
19
- "dimensions": {
20
- "aspectRatio": false,
21
- "height": false,
22
- "minHeight": false,
23
- "width": false
24
- },
25
30
  "color": {
26
31
  "background": true,
27
32
  "text": true,
33
+ "__experimentalSkipSerialization": true,
28
34
  "__experimentalDefaultControls": {
29
35
  "background": true,
30
36
  "text": true
@@ -38,30 +44,37 @@
38
44
  "color": true,
39
45
  "radius": true,
40
46
  "style": true,
41
- "width": true
47
+ "width": true,
48
+ "__experimentalSkipSerialization": true
42
49
  },
43
50
  "layout": {
44
51
  "default": {
45
52
  "type": "flex",
46
- "flexWrap": "nowrap",
47
- "orientation": "horizontal"
53
+ "flexWrap": "nowrap"
48
54
  },
49
- "allowSwitching": false,
50
- "allowVerticalAlignment": true,
51
- "allowJustification": true,
52
- "allowOrientation": true
55
+ "allowVerticalAlignment": false,
56
+ "allowOrientation": false,
57
+ "allowWrap": false
53
58
  },
54
59
  "spacing": {
55
60
  "padding": true,
56
- "margin": true,
57
61
  "blockGap": true,
62
+ "__experimentalSkipSerialization": [ "padding" ],
58
63
  "__experimentalDefaultControls": {
59
64
  "padding": true,
60
- "margin": true,
61
65
  "blockGap": true
62
66
  }
63
67
  }
64
68
  },
65
- "editorScript": "file:./index.js",
66
- "editorStyle": "file:./editor.css"
69
+ "selectors": {
70
+ "border": ".wp-block-tab-list button",
71
+ "color": {
72
+ "background": ".wp-block-tab-list button",
73
+ "text": ".wp-block-tab-list button"
74
+ },
75
+ "spacing": {
76
+ "padding": ".wp-block-tab-list button"
77
+ }
78
+ },
79
+ "style": "wp-block-tab-list"
67
80
  }
@@ -1,31 +1,144 @@
1
1
  // packages/block-library/src/tab-list/edit.js
2
+ import clsx from "clsx";
3
+ import { __ } from "@wordpress/i18n";
2
4
  import {
3
5
  useBlockProps,
4
- useInnerBlocksProps,
5
- store as blockEditorStore
6
+ store as blockEditorStore,
7
+ RichText,
8
+ __experimentalUseBorderProps as useBorderProps,
9
+ __experimentalUseColorProps as useColorProps,
10
+ __experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles
6
11
  } from "@wordpress/block-editor";
7
- import { useSelect } from "@wordpress/data";
12
+ import { useSelect, useDispatch } from "@wordpress/data";
13
+ import { useCallback, useEffect, useRef } from "@wordpress/element";
8
14
  import AddTabToolbarControl from "../tab-panel/add-tab-toolbar-control.mjs";
9
15
  import RemoveTabToolbarControl from "../tab-panel/remove-tab-toolbar-control.mjs";
10
16
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
- var TAB_LIST_TEMPLATE = [["core/tab"], ["core/tab"]];
12
- function Edit({ clientId }) {
13
- const tabsClientId = useSelect(
14
- (select) => select(blockEditorStore).getBlockRootClientId(clientId),
17
+ var EMPTY_ARRAY = [];
18
+ function Edit({
19
+ attributes,
20
+ clientId,
21
+ context,
22
+ __unstableLayoutClassNames: layoutClassNames
23
+ }) {
24
+ const tabsList = context["core/tabs-list"] || EMPTY_ARRAY;
25
+ const colorProps = useColorProps(attributes);
26
+ const borderProps = useBorderProps(attributes);
27
+ const spacingProps = getSpacingClassesAndStyles(attributes);
28
+ const { tabsClientId, editorActiveTabIndex, activeTabIndex } = useSelect(
29
+ (select) => {
30
+ const { getBlockRootClientId, getBlockAttributes } = select(blockEditorStore);
31
+ const _tabsClientId = getBlockRootClientId(clientId);
32
+ const tabsAttributes = _tabsClientId ? getBlockAttributes(_tabsClientId) : {};
33
+ return {
34
+ tabsClientId: _tabsClientId,
35
+ editorActiveTabIndex: tabsAttributes?.editorActiveTabIndex,
36
+ activeTabIndex: tabsAttributes?.activeTabIndex ?? 0
37
+ };
38
+ },
15
39
  [clientId]
16
40
  );
17
- const blockProps = useBlockProps();
18
- const innerBlocksProps = useInnerBlocksProps(blockProps, {
19
- allowedBlocks: ["core/tab"],
20
- orientation: "horizontal",
21
- template: TAB_LIST_TEMPLATE,
22
- templateLock: false,
23
- renderAppender: false
41
+ const effectiveActiveIndex = editorActiveTabIndex ?? activeTabIndex;
42
+ const { __unstableMarkNextChangeAsNotPersistent, updateBlockAttributes } = useDispatch(blockEditorStore);
43
+ const handleTabClick = useCallback(
44
+ (tabIndex) => {
45
+ if (tabsClientId && tabIndex !== effectiveActiveIndex) {
46
+ __unstableMarkNextChangeAsNotPersistent();
47
+ updateBlockAttributes(tabsClientId, {
48
+ editorActiveTabIndex: tabIndex
49
+ });
50
+ }
51
+ },
52
+ [
53
+ tabsClientId,
54
+ effectiveActiveIndex,
55
+ updateBlockAttributes,
56
+ __unstableMarkNextChangeAsNotPersistent
57
+ ]
58
+ );
59
+ const handleLabelChange = useCallback(
60
+ (tabIndex, newLabel) => {
61
+ const tab = tabsList[tabIndex];
62
+ if (tab?.clientId) {
63
+ updateBlockAttributes(tab.clientId, { label: newLabel });
64
+ }
65
+ },
66
+ [tabsList, updateBlockAttributes]
67
+ );
68
+ const menuRef = useRef();
69
+ const prevTabCountRef = useRef(tabsList.length);
70
+ useEffect(() => {
71
+ const prevCount = prevTabCountRef.current;
72
+ prevTabCountRef.current = tabsList.length;
73
+ if (!menuRef.current || tabsList.length === prevCount) {
74
+ return;
75
+ }
76
+ const focusButtonAt = (index) => {
77
+ window.requestAnimationFrame(() => {
78
+ const buttons = menuRef.current?.querySelectorAll("button");
79
+ const target = buttons?.[index];
80
+ if (!target) {
81
+ return;
82
+ }
83
+ const richText = target.querySelector("[contenteditable]");
84
+ if (richText) {
85
+ richText.focus();
86
+ } else {
87
+ target.focus();
88
+ }
89
+ });
90
+ };
91
+ if (tabsList.length > prevCount) {
92
+ focusButtonAt(tabsList.length - 1);
93
+ } else {
94
+ focusButtonAt(effectiveActiveIndex);
95
+ }
96
+ }, [tabsList.length, effectiveActiveIndex]);
97
+ const blockProps = useBlockProps({
98
+ role: "tablist",
99
+ ref: menuRef,
100
+ // Applied manually since this block has no inner blocks for the layout
101
+ // support to add its container classes to.
102
+ className: layoutClassNames
24
103
  });
104
+ const buttonClassName = clsx(colorProps.className, borderProps.className);
105
+ const buttonStyle = {
106
+ ...colorProps.style,
107
+ ...borderProps.style,
108
+ ...spacingProps.style
109
+ };
25
110
  return /* @__PURE__ */ jsxs(Fragment, { children: [
26
111
  /* @__PURE__ */ jsx(AddTabToolbarControl, { tabsClientId }),
27
112
  /* @__PURE__ */ jsx(RemoveTabToolbarControl, { tabsClientId }),
28
- /* @__PURE__ */ jsx("div", { ...innerBlocksProps })
113
+ /* @__PURE__ */ jsx("div", { ...blockProps, children: tabsList.map((tab, index) => {
114
+ const isActive = index === effectiveActiveIndex;
115
+ return /* @__PURE__ */ jsx(
116
+ "button",
117
+ {
118
+ type: "button",
119
+ role: "tab",
120
+ "aria-selected": isActive,
121
+ className: buttonClassName || void 0,
122
+ style: buttonStyle,
123
+ tabIndex: -1,
124
+ onClick: (event) => {
125
+ event.preventDefault();
126
+ handleTabClick(index);
127
+ },
128
+ children: /* @__PURE__ */ jsx(
129
+ RichText,
130
+ {
131
+ tagName: "span",
132
+ withoutInteractiveFormatting: true,
133
+ placeholder: __("Tab title"),
134
+ value: tab.label,
135
+ onChange: (newLabel) => handleLabelChange(index, newLabel)
136
+ }
137
+ )
138
+ },
139
+ tab.clientId || index
140
+ );
141
+ }) })
29
142
  ] });
30
143
  }
31
144
  var edit_default = Edit;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tab-list/edit.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport AddTabToolbarControl from '../tab-panel/add-tab-toolbar-control';\nimport RemoveTabToolbarControl from '../tab-panel/remove-tab-toolbar-control';\n\nconst TAB_LIST_TEMPLATE = [ [ 'core/tab' ], [ 'core/tab' ] ];\n\nfunction Edit( { clientId } ) {\n\tconst tabsClientId = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlockRootClientId( clientId ),\n\t\t[ clientId ]\n\t);\n\n\tconst blockProps = useBlockProps();\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: [ 'core/tab' ],\n\t\torientation: 'horizontal',\n\t\ttemplate: TAB_LIST_TEMPLATE,\n\t\ttemplateLock: false,\n\t\trenderAppender: false,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<AddTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t\t<RemoveTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n\nexport default Edit;\n"],
5
- "mappings": ";AAGA;AAAA,EACC;AAAA,EACA;AAAA,EACA,SAAS;AAAA,OACH;AACP,SAAS,iBAAiB;AAK1B,OAAO,0BAA0B;AACjC,OAAO,6BAA6B;AAsBlC,mBACC,KADD;AApBF,IAAM,oBAAoB,CAAE,CAAE,UAAW,GAAG,CAAE,UAAW,CAAE;AAE3D,SAAS,KAAM,EAAE,SAAS,GAAI;AAC7B,QAAM,eAAe;AAAA,IACpB,CAAE,WACD,OAAQ,gBAAiB,EAAE,qBAAsB,QAAS;AAAA,IAC3D,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,aAAa,cAAc;AAEjC,QAAM,mBAAmB,oBAAqB,YAAY;AAAA,IACzD,eAAe,CAAE,UAAW;AAAA,IAC5B,aAAa;AAAA,IACb,UAAU;AAAA,IACV,cAAc;AAAA,IACd,gBAAgB;AAAA,EACjB,CAAE;AAEF,SACC,iCACC;AAAA,wBAAC,wBAAqB,cAA8B;AAAA,IACpD,oBAAC,2BAAwB,cAA8B;AAAA,IACvD,oBAAC,SAAM,GAAG,kBAAmB;AAAA,KAC9B;AAEF;AAEA,IAAO,eAAQ;",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tRichText,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalUseColorProps as useColorProps,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCallback, useEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport AddTabToolbarControl from '../tab-panel/add-tab-toolbar-control';\nimport RemoveTabToolbarControl from '../tab-panel/remove-tab-toolbar-control';\n\nconst EMPTY_ARRAY = [];\n\nfunction Edit( {\n\tattributes,\n\tclientId,\n\tcontext,\n\t__unstableLayoutClassNames: layoutClassNames,\n} ) {\n\tconst tabsList = context[ 'core/tabs-list' ] || EMPTY_ARRAY;\n\n\tconst colorProps = useColorProps( attributes );\n\tconst borderProps = useBorderProps( attributes );\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\n\tconst { tabsClientId, editorActiveTabIndex, activeTabIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockRootClientId, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst _tabsClientId = getBlockRootClientId( clientId );\n\t\t\tconst tabsAttributes = _tabsClientId\n\t\t\t\t? getBlockAttributes( _tabsClientId )\n\t\t\t\t: {};\n\n\t\t\treturn {\n\t\t\t\ttabsClientId: _tabsClientId,\n\t\t\t\teditorActiveTabIndex: tabsAttributes?.editorActiveTabIndex,\n\t\t\t\tactiveTabIndex: tabsAttributes?.activeTabIndex ?? 0,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst effectiveActiveIndex = editorActiveTabIndex ?? activeTabIndex;\n\n\tconst { __unstableMarkNextChangeAsNotPersistent, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst handleTabClick = useCallback(\n\t\t( tabIndex ) => {\n\t\t\tif ( tabsClientId && tabIndex !== effectiveActiveIndex ) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\t\t\teditorActiveTabIndex: tabIndex,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\ttabsClientId,\n\t\t\teffectiveActiveIndex,\n\t\t\tupdateBlockAttributes,\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t]\n\t);\n\n\tconst handleLabelChange = useCallback(\n\t\t( tabIndex, newLabel ) => {\n\t\t\tconst tab = tabsList[ tabIndex ];\n\t\t\tif ( tab?.clientId ) {\n\t\t\t\tupdateBlockAttributes( tab.clientId, { label: newLabel } );\n\t\t\t}\n\t\t},\n\t\t[ tabsList, updateBlockAttributes ]\n\t);\n\n\tconst menuRef = useRef();\n\tconst prevTabCountRef = useRef( tabsList.length );\n\n\t// When tabs are added or removed, focus the appropriate button.\n\tuseEffect( () => {\n\t\tconst prevCount = prevTabCountRef.current;\n\t\tprevTabCountRef.current = tabsList.length;\n\n\t\tif ( ! menuRef.current || tabsList.length === prevCount ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst focusButtonAt = ( index ) => {\n\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\tconst buttons = menuRef.current?.querySelectorAll( 'button' );\n\t\t\t\tconst target = buttons?.[ index ];\n\t\t\t\tif ( ! target ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst richText = target.querySelector( '[contenteditable]' );\n\t\t\t\tif ( richText ) {\n\t\t\t\t\trichText.focus();\n\t\t\t\t} else {\n\t\t\t\t\ttarget.focus();\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\n\t\tif ( tabsList.length > prevCount ) {\n\t\t\t// Tab added — focus the last (newly added) button.\n\t\t\tfocusButtonAt( tabsList.length - 1 );\n\t\t} else {\n\t\t\t// Tab removed — focus the new active button.\n\t\t\tfocusButtonAt( effectiveActiveIndex );\n\t\t}\n\t}, [ tabsList.length, effectiveActiveIndex ] );\n\n\tconst blockProps = useBlockProps( {\n\t\trole: 'tablist',\n\t\tref: menuRef,\n\t\t// Applied manually since this block has no inner blocks for the layout\n\t\t// support to add its container classes to.\n\t\tclassName: layoutClassNames,\n\t} );\n\n\tconst buttonClassName = clsx( colorProps.className, borderProps.className );\n\n\tconst buttonStyle = {\n\t\t...colorProps.style,\n\t\t...borderProps.style,\n\t\t...spacingProps.style,\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<AddTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t\t<RemoveTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ tabsList.map( ( tab, index ) => {\n\t\t\t\t\tconst isActive = index === effectiveActiveIndex;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={ tab.clientId || index }\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\taria-selected={ isActive }\n\t\t\t\t\t\t\tclassName={ buttonClassName || undefined }\n\t\t\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\thandleTabClick( index );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Tab title' ) }\n\t\t\t\t\t\t\t\tvalue={ tab.label }\n\t\t\t\t\t\t\t\tonChange={ ( newLabel ) =>\n\t\t\t\t\t\t\t\t\thandleLabelChange( index, newLabel )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default Edit;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,7 @@
1
+ // packages/block-library/src/tab-list/init.js
2
+ import { init } from "./index.mjs";
3
+ var init_default = init();
4
+ export {
5
+ init_default as default
6
+ };
7
+ //# sourceMappingURL=init.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/tab-list/init.js"],
4
+ "sourcesContent": ["/**\n * Internal dependencies\n */\nimport { init } from './';\n\nexport default init();\n"],
5
+ "mappings": ";AAGA,SAAS,YAAY;AAErB,IAAO,eAAQ,KAAK;",
6
+ "names": []
7
+ }
@@ -1,12 +1,37 @@
1
1
  // packages/block-library/src/tab-list/save.js
2
- import { useBlockProps, useInnerBlocksProps } from "@wordpress/block-editor";
2
+ import clsx from "clsx";
3
+ import {
4
+ useBlockProps,
5
+ __experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,
6
+ __experimentalGetColorClassesAndStyles as getColorClassesAndStyles,
7
+ __experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles
8
+ } from "@wordpress/block-editor";
3
9
  import { jsx } from "react/jsx-runtime";
4
- function save() {
10
+ function save({ attributes }) {
11
+ const { tabs } = attributes;
5
12
  const blockProps = useBlockProps.save({
6
13
  role: "tablist"
7
14
  });
8
- const innerBlocksProps = useInnerBlocksProps.save(blockProps);
9
- return /* @__PURE__ */ jsx("div", { ...innerBlocksProps });
15
+ const colorProps = getColorClassesAndStyles(attributes);
16
+ const borderProps = getBorderClassesAndStyles(attributes);
17
+ const spacingProps = getSpacingClassesAndStyles(attributes);
18
+ const buttonClassName = clsx(colorProps.className, borderProps.className);
19
+ const buttonStyle = {
20
+ ...colorProps.style,
21
+ ...borderProps.style,
22
+ ...spacingProps.style
23
+ };
24
+ return /* @__PURE__ */ jsx("div", { ...blockProps, children: tabs.map((tab, index) => /* @__PURE__ */ jsx(
25
+ "button",
26
+ {
27
+ className: buttonClassName || void 0,
28
+ style: buttonStyle,
29
+ type: "button",
30
+ role: "tab",
31
+ children: tab.label
32
+ },
33
+ index
34
+ )) });
10
35
  }
11
36
  export {
12
37
  save as default
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tab-list/save.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';\n\nexport default function save() {\n\tconst blockProps = useBlockProps.save( {\n\t\trole: 'tablist',\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\n\treturn <div { ...innerBlocksProps } />;\n}\n"],
5
- "mappings": ";AAGA,SAAS,eAAe,2BAA2B;AAS3C;AAPO,SAAR,OAAwB;AAC9B,QAAM,aAAa,cAAc,KAAM;AAAA,IACtC,MAAM;AAAA,EACP,CAAE;AAEF,QAAM,mBAAmB,oBAAoB,KAAM,UAAW;AAE9D,SAAO,oBAAC,SAAM,GAAG,kBAAmB;AACrC;",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\t__experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { tabs } = attributes;\n\tconst blockProps = useBlockProps.save( {\n\t\trole: 'tablist',\n\t} );\n\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\tconst borderProps = getBorderClassesAndStyles( attributes );\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\n\tconst buttonClassName = clsx( colorProps.className, borderProps.className );\n\n\tconst buttonStyle = {\n\t\t...colorProps.style,\n\t\t...borderProps.style,\n\t\t...spacingProps.style,\n\t};\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ tabs.map( ( tab, index ) => (\n\t\t\t\t<button\n\t\t\t\t\tkey={ index }\n\t\t\t\t\tclassName={ buttonClassName || undefined }\n\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\trole=\"tab\"\n\t\t\t\t>\n\t\t\t\t\t{ tab.label }\n\t\t\t\t</button>\n\t\t\t) ) }\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,OAAO,UAAU;AAKjB;AAAA,EACC;AAAA,EACA,2CAA2C;AAAA,EAC3C,0CAA0C;AAAA,EAC1C,4CAA4C;AAAA,OACtC;AAuBH;AArBW,SAAR,KAAuB,EAAE,WAAW,GAAI;AAC9C,QAAM,EAAE,KAAK,IAAI;AACjB,QAAM,aAAa,cAAc,KAAM;AAAA,IACtC,MAAM;AAAA,EACP,CAAE;AAEF,QAAM,aAAa,yBAA0B,UAAW;AACxD,QAAM,cAAc,0BAA2B,UAAW;AAC1D,QAAM,eAAe,2BAA4B,UAAW;AAE5D,QAAM,kBAAkB,KAAM,WAAW,WAAW,YAAY,SAAU;AAE1E,QAAM,cAAc;AAAA,IACnB,GAAG,WAAW;AAAA,IACd,GAAG,YAAY;AAAA,IACf,GAAG,aAAa;AAAA,EACjB;AAEA,SACC,oBAAC,SAAM,GAAG,YACP,eAAK,IAAK,CAAE,KAAK,UAClB;AAAA,IAAC;AAAA;AAAA,MAEA,WAAY,mBAAmB;AAAA,MAC/B,OAAQ;AAAA,MACR,MAAK;AAAA,MACL,MAAK;AAAA,MAEH,cAAI;AAAA;AAAA,IANA;AAAA,EAOP,CACC,GACH;AAEF;",
6
6
  "names": []
7
7
  }
@@ -9,13 +9,19 @@ import { ToolbarGroup, ToolbarButton } from "@wordpress/components";
9
9
  import { useDispatch, useSelect } from "@wordpress/data";
10
10
  import { jsx } from "react/jsx-runtime";
11
11
  function AddTabToolbarControl({ tabsClientId }) {
12
- const { insertBlock } = useDispatch(blockEditorStore);
13
- const { tabPanelsClientId, tabsListClientId } = useSelect(
12
+ const {
13
+ insertBlock,
14
+ updateBlockAttributes,
15
+ selectBlock,
16
+ __unstableMarkNextChangeAsNotPersistent
17
+ } = useDispatch(blockEditorStore);
18
+ const { tabPanelsClientId, tabCount, tabListClientId } = useSelect(
14
19
  (select) => {
15
20
  if (!tabsClientId) {
16
21
  return {
17
22
  tabPanelsClientId: null,
18
- tabsListClientId: null
23
+ tabCount: 0,
24
+ tabListClientId: null
19
25
  };
20
26
  }
21
27
  const { getBlocks } = select(blockEditorStore);
@@ -28,7 +34,8 @@ function AddTabToolbarControl({ tabsClientId }) {
28
34
  );
29
35
  return {
30
36
  tabPanelsClientId: tabPanels?.clientId || null,
31
- tabsListClientId: tabList?.clientId || null
37
+ tabCount: tabPanels?.innerBlocks?.length || 0,
38
+ tabListClientId: tabList?.clientId || null
32
39
  };
33
40
  },
34
41
  [tabsClientId]
@@ -40,10 +47,14 @@ function AddTabToolbarControl({ tabsClientId }) {
40
47
  const newTabPanelBlock = createBlock("core/tab-panel", {
41
48
  label: __("Tab")
42
49
  });
43
- insertBlock(newTabPanelBlock, void 0, tabPanelsClientId);
44
- if (tabsListClientId) {
45
- const newTabBlock = createBlock("core/tab", {});
46
- insertBlock(newTabBlock, void 0, tabsListClientId);
50
+ insertBlock(newTabPanelBlock, void 0, tabPanelsClientId, false);
51
+ const newIndex = tabCount;
52
+ __unstableMarkNextChangeAsNotPersistent();
53
+ updateBlockAttributes(tabsClientId, {
54
+ editorActiveTabIndex: newIndex
55
+ });
56
+ if (tabListClientId) {
57
+ selectBlock(tabListClientId);
47
58
  }
48
59
  };
49
60
  return /* @__PURE__ */ jsx(BlockControls, { group: "other", children: /* @__PURE__ */ jsx(ToolbarGroup, { children: /* @__PURE__ */ jsx(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tab-panel/add-tab-toolbar-control.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tBlockControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { ToolbarGroup, ToolbarButton } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * \"Add tab\" button in the block toolbar for the tabs block.\n * Inserts a new core/tab-panel into the tab-panels and a new core/tab\n * into the tab-list, keeping both in sync.\n *\n * @param {Object} props\n * @param {string} props.tabsClientId The client ID of the parent tabs block.\n * @return {React.JSX.Element} The toolbar control element.\n */\nexport default function AddTabToolbarControl( { tabsClientId } ) {\n\tconst { insertBlock } = useDispatch( blockEditorStore );\n\n\tconst { tabPanelsClientId, tabsListClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! tabsClientId ) {\n\t\t\t\treturn {\n\t\t\t\t\ttabPanelsClientId: null,\n\t\t\t\t\ttabsListClientId: null,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst { getBlocks } = select( blockEditorStore );\n\t\t\tconst innerBlocks = getBlocks( tabsClientId );\n\t\t\tconst tabPanels = innerBlocks.find(\n\t\t\t\t( block ) => block.name === 'core/tab-panels'\n\t\t\t);\n\t\t\tconst tabList = innerBlocks.find(\n\t\t\t\t( block ) => block.name === 'core/tab-list'\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabPanelsClientId: tabPanels?.clientId || null,\n\t\t\t\ttabsListClientId: tabList?.clientId || null,\n\t\t\t};\n\t\t},\n\t\t[ tabsClientId ]\n\t);\n\n\tconst addTab = () => {\n\t\tif ( ! tabPanelsClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newTabPanelBlock = createBlock( 'core/tab-panel', {\n\t\t\tlabel: __( 'Tab' ),\n\t\t} );\n\t\tinsertBlock( newTabPanelBlock, undefined, tabPanelsClientId );\n\n\t\t// Insert a corresponding tab into the tab-list.\n\t\tif ( tabsListClientId ) {\n\t\t\tconst newTabBlock = createBlock( 'core/tab', {} );\n\t\t\tinsertBlock( newTabBlock, undefined, tabsListClientId );\n\t\t}\n\t};\n\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\t\tonClick={ addTab }\n\t\t\t\t\ttext={ __( 'Add tab' ) }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,mBAAmB;AAC5B;AAAA,EACC;AAAA,EACA,SAAS;AAAA,OACH;AACP,SAAS,cAAc,qBAAqB;AAC5C,SAAS,aAAa,iBAAiB;AA0DnC;AA/CW,SAAR,qBAAuC,EAAE,aAAa,GAAI;AAChE,QAAM,EAAE,YAAY,IAAI,YAAa,gBAAiB;AAEtD,QAAM,EAAE,mBAAmB,iBAAiB,IAAI;AAAA,IAC/C,CAAE,WAAY;AACb,UAAK,CAAE,cAAe;AACrB,eAAO;AAAA,UACN,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,QACnB;AAAA,MACD;AACA,YAAM,EAAE,UAAU,IAAI,OAAQ,gBAAiB;AAC/C,YAAM,cAAc,UAAW,YAAa;AAC5C,YAAM,YAAY,YAAY;AAAA,QAC7B,CAAE,UAAW,MAAM,SAAS;AAAA,MAC7B;AACA,YAAM,UAAU,YAAY;AAAA,QAC3B,CAAE,UAAW,MAAM,SAAS;AAAA,MAC7B;AACA,aAAO;AAAA,QACN,mBAAmB,WAAW,YAAY;AAAA,QAC1C,kBAAkB,SAAS,YAAY;AAAA,MACxC;AAAA,IACD;AAAA,IACA,CAAE,YAAa;AAAA,EAChB;AAEA,QAAM,SAAS,MAAM;AACpB,QAAK,CAAE,mBAAoB;AAC1B;AAAA,IACD;AAEA,UAAM,mBAAmB,YAAa,kBAAkB;AAAA,MACvD,OAAO,GAAI,KAAM;AAAA,IAClB,CAAE;AACF,gBAAa,kBAAkB,QAAW,iBAAkB;AAG5D,QAAK,kBAAmB;AACvB,YAAM,cAAc,YAAa,YAAY,CAAC,CAAE;AAChD,kBAAa,aAAa,QAAW,gBAAiB;AAAA,IACvD;AAAA,EACD;AAEA,SACC,oBAAC,iBAAc,OAAM,SACpB,8BAAC,gBACA;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,SAAU;AAAA,MACV,MAAO,GAAI,SAAU;AAAA;AAAA,EACtB,GACD,GACD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tBlockControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { ToolbarGroup, ToolbarButton } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * \"Add tab\" button in the block toolbar for the tabs block.\n * Inserts a new core/tab-panel into the tab-panels. The tab-list items\n * attribute is kept in sync automatically via useTabListItemsSync.\n *\n * @param {Object} props\n * @param {string} props.tabsClientId The client ID of the parent tabs block.\n * @return {React.JSX.Element} The toolbar control element.\n */\nexport default function AddTabToolbarControl( { tabsClientId } ) {\n\tconst {\n\t\tinsertBlock,\n\t\tupdateBlockAttributes,\n\t\tselectBlock,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tconst { tabPanelsClientId, tabCount, tabListClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! tabsClientId ) {\n\t\t\t\treturn {\n\t\t\t\t\ttabPanelsClientId: null,\n\t\t\t\t\ttabCount: 0,\n\t\t\t\t\ttabListClientId: null,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst { getBlocks } = select( blockEditorStore );\n\t\t\tconst innerBlocks = getBlocks( tabsClientId );\n\t\t\tconst tabPanels = innerBlocks.find(\n\t\t\t\t( block ) => block.name === 'core/tab-panels'\n\t\t\t);\n\t\t\tconst tabList = innerBlocks.find(\n\t\t\t\t( block ) => block.name === 'core/tab-list'\n\t\t\t);\n\t\t\treturn {\n\t\t\t\ttabPanelsClientId: tabPanels?.clientId || null,\n\t\t\t\ttabCount: tabPanels?.innerBlocks?.length || 0,\n\t\t\t\ttabListClientId: tabList?.clientId || null,\n\t\t\t};\n\t\t},\n\t\t[ tabsClientId ]\n\t);\n\n\tconst addTab = () => {\n\t\tif ( ! tabPanelsClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newTabPanelBlock = createBlock( 'core/tab-panel', {\n\t\t\tlabel: __( 'Tab' ),\n\t\t} );\n\t\tinsertBlock( newTabPanelBlock, undefined, tabPanelsClientId, false );\n\n\t\t// Switch editor active tab to the new tab.\n\t\tconst newIndex = tabCount;\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\teditorActiveTabIndex: newIndex,\n\t\t} );\n\n\t\t// Select the tab-list block so focus stays in the menu area.\n\t\tif ( tabListClientId ) {\n\t\t\tselectBlock( tabListClientId );\n\t\t}\n\t};\n\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\t\tonClick={ addTab }\n\t\t\t\t\ttext={ __( 'Add tab' ) }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,mBAAmB;AAC5B;AAAA,EACC;AAAA,EACA,SAAS;AAAA,OACH;AACP,SAAS,cAAc,qBAAqB;AAC5C,SAAS,aAAa,iBAAiB;AAuEnC;AA5DW,SAAR,qBAAuC,EAAE,aAAa,GAAI;AAChE,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI,YAAa,gBAAiB;AAElC,QAAM,EAAE,mBAAmB,UAAU,gBAAgB,IAAI;AAAA,IACxD,CAAE,WAAY;AACb,UAAK,CAAE,cAAe;AACrB,eAAO;AAAA,UACN,mBAAmB;AAAA,UACnB,UAAU;AAAA,UACV,iBAAiB;AAAA,QAClB;AAAA,MACD;AACA,YAAM,EAAE,UAAU,IAAI,OAAQ,gBAAiB;AAC/C,YAAM,cAAc,UAAW,YAAa;AAC5C,YAAM,YAAY,YAAY;AAAA,QAC7B,CAAE,UAAW,MAAM,SAAS;AAAA,MAC7B;AACA,YAAM,UAAU,YAAY;AAAA,QAC3B,CAAE,UAAW,MAAM,SAAS;AAAA,MAC7B;AACA,aAAO;AAAA,QACN,mBAAmB,WAAW,YAAY;AAAA,QAC1C,UAAU,WAAW,aAAa,UAAU;AAAA,QAC5C,iBAAiB,SAAS,YAAY;AAAA,MACvC;AAAA,IACD;AAAA,IACA,CAAE,YAAa;AAAA,EAChB;AAEA,QAAM,SAAS,MAAM;AACpB,QAAK,CAAE,mBAAoB;AAC1B;AAAA,IACD;AAEA,UAAM,mBAAmB,YAAa,kBAAkB;AAAA,MACvD,OAAO,GAAI,KAAM;AAAA,IAClB,CAAE;AACF,gBAAa,kBAAkB,QAAW,mBAAmB,KAAM;AAGnE,UAAM,WAAW;AACjB,4CAAwC;AACxC,0BAAuB,cAAc;AAAA,MACpC,sBAAsB;AAAA,IACvB,CAAE;AAGF,QAAK,iBAAkB;AACtB,kBAAa,eAAgB;AAAA,IAC9B;AAAA,EACD;AAEA,SACC,oBAAC,iBAAc,OAAM,SACpB,8BAAC,gBACA;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,SAAU;AAAA,MACV,MAAO,GAAI,SAAU;AAAA;AAAA,EACtB,GACD,GACD;AAEF;",
6
6
  "names": []
7
7
  }
@@ -22,7 +22,6 @@
22
22
  "supports": {
23
23
  "anchor": true,
24
24
  "html": false,
25
- "reusable": false,
26
25
  "color": {
27
26
  "background": true,
28
27
  "text": true,
@@ -34,8 +33,7 @@
34
33
  "layout": true,
35
34
  "spacing": {
36
35
  "blockGap": true,
37
- "padding": true,
38
- "margin": false
36
+ "padding": true
39
37
  },
40
38
  "typography": {
41
39
  "fontSize": true,
@@ -45,12 +43,10 @@
45
43
  "__experimentalFontFamily": true
46
44
  }
47
45
  },
48
- "renaming": true,
49
46
  "visibility": false
50
47
  },
51
48
  "providesContext": {
52
49
  "core/tab-label": "label"
53
50
  },
54
- "editorScript": "file:./index.js",
55
- "style": "file:./style-index.css"
51
+ "style": "wp-block-tab-panel"
56
52
  }
@@ -6,7 +6,7 @@ import {
6
6
  store as blockEditorStore
7
7
  } from "@wordpress/block-editor";
8
8
  import { useSelect, useDispatch } from "@wordpress/data";
9
- import { useMemo, useRef, useEffect } from "@wordpress/element";
9
+ import { useMemo, useEffect } from "@wordpress/element";
10
10
  import Controls from "./controls.mjs";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
12
12
  var TEMPLATE = [
@@ -17,19 +17,10 @@ var TEMPLATE = [
17
17
  }
18
18
  ]
19
19
  ];
20
- var { cancelAnimationFrame } = window;
21
20
  function Edit({ clientId, context, isSelected }) {
22
- const focusRef = useRef();
23
21
  const activeTabIndex = context["core/tabs-activeTabIndex"];
24
22
  const editorActiveTabIndex = context["core/tabs-editorActiveTabIndex"];
25
23
  const effectiveActiveIndex = editorActiveTabIndex ?? activeTabIndex;
26
- useEffect(() => {
27
- return () => {
28
- if (focusRef.current) {
29
- cancelAnimationFrame(focusRef.current);
30
- }
31
- };
32
- }, []);
33
24
  const { blockIndex, hasInnerBlocksSelected, tabsClientId } = useSelect(
34
25
  (select) => {
35
26
  const {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tab-panel/edit.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo, useRef, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Controls from './controls';\n\nconst TEMPLATE = [\n\t[\n\t\t'core/paragraph',\n\t\t{\n\t\t\tplaceholder: __( 'Type / to choose a block' ),\n\t\t},\n\t],\n];\n\nconst { cancelAnimationFrame } = window;\n\nexport default function Edit( { clientId, context, isSelected } ) {\n\tconst focusRef = useRef();\n\n\t// Consume tab indices from context\n\tconst activeTabIndex = context[ 'core/tabs-activeTabIndex' ];\n\tconst editorActiveTabIndex = context[ 'core/tabs-editorActiveTabIndex' ];\n\tconst effectiveActiveIndex = editorActiveTabIndex ?? activeTabIndex;\n\n\t// Clean up animation frames on unmount.\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tif ( focusRef.current ) {\n\t\t\t\tcancelAnimationFrame( focusRef.current );\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\tconst { blockIndex, hasInnerBlocksSelected, tabsClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\t// Get the tab-panel parent first\n\t\t\tconst tabPanelsClientId = getBlockRootClientId( clientId );\n\t\t\t// Then get the tabs parent\n\t\t\tconst _tabsClientId = getBlockRootClientId( tabPanelsClientId );\n\n\t\t\t// Get data about this instance of core/tab.\n\t\t\tconst _blockIndex = getBlockIndex( clientId );\n\t\t\tconst _hasInnerBlocksSelected = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\ttrue\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tblockIndex: _blockIndex,\n\t\t\t\thasInnerBlocksSelected: _hasInnerBlocksSelected,\n\t\t\t\ttabsClientId: _tabsClientId,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { updateBlockAttributes, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\t// Sync editorActiveTabIndex when this tab is selected directly\n\tuseEffect( () => {\n\t\t// Only update if this tab is selected and not already the active index\n\t\tconst isTabSelected = isSelected || hasInnerBlocksSelected;\n\t\tif (\n\t\t\tisTabSelected &&\n\t\t\ttabsClientId &&\n\t\t\teffectiveActiveIndex !== blockIndex\n\t\t) {\n\t\t\t// Mark as non-persistent so it doesn't add to undo history\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\t\teditorActiveTabIndex: blockIndex,\n\t\t\t} );\n\t\t}\n\t}, [\n\t\tisSelected,\n\t\thasInnerBlocksSelected,\n\t\ttabsClientId,\n\t\teffectiveActiveIndex,\n\t\tblockIndex,\n\t\tupdateBlockAttributes,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t] );\n\n\t// Determine if this is the currently active tab (for editor visibility)\n\tconst isActiveTab = effectiveActiveIndex === blockIndex;\n\n\t// Determine if this is the default tab (for the \"Default Tab\" toggle in controls)\n\tconst isDefaultTab = activeTabIndex === blockIndex;\n\n\t/**\n\t * This hook determines if the current tab panel should be visible.\n\t * This is true if it is the editor active tab, or if it is selected directly.\n\t */\n\tconst isSelectedTab = useMemo( () => {\n\t\t// Show if this tab is directly selected or has selected inner blocks\n\t\tif ( isSelected || hasInnerBlocksSelected ) {\n\t\t\treturn true;\n\t\t}\n\t\t// Always show the active tab (at effectiveActiveIndex) regardless of other selection state.\n\t\t// This ensures the tab panel remains visible when editing labels in tab-list.\n\t\tif ( isActiveTab ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}, [ isSelected, hasInnerBlocksSelected, isActiveTab ] );\n\n\tconst blockProps = useBlockProps( {\n\t\thidden: ! isSelectedTab,\n\t\ttabIndex: isSelectedTab ? 0 : -1,\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t} );\n\n\treturn (\n\t\t<section { ...innerBlocksProps }>\n\t\t\t<Controls\n\t\t\t\ttabsClientId={ tabsClientId }\n\t\t\t\tblockIndex={ blockIndex }\n\t\t\t\tisDefaultTab={ isDefaultTab }\n\t\t\t/>\n\t\t\t{ isSelectedTab && innerBlocksProps.children }\n\t\t</section>\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,UAAU;AACnB;AAAA,EACC;AAAA,EACA;AAAA,EACA,SAAS;AAAA,OACH;AACP,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,QAAQ,iBAAiB;AAK3C,OAAO,cAAc;AAwHnB,SACC,KADD;AAtHF,IAAM,WAAW;AAAA,EAChB;AAAA,IACC;AAAA,IACA;AAAA,MACC,aAAa,GAAI,0BAA2B;AAAA,IAC7C;AAAA,EACD;AACD;AAEA,IAAM,EAAE,qBAAqB,IAAI;AAElB,SAAR,KAAuB,EAAE,UAAU,SAAS,WAAW,GAAI;AACjE,QAAM,WAAW,OAAO;AAGxB,QAAM,iBAAiB,QAAS,0BAA2B;AAC3D,QAAM,uBAAuB,QAAS,gCAAiC;AACvE,QAAM,uBAAuB,wBAAwB;AAGrD,YAAW,MAAM;AAChB,WAAO,MAAM;AACZ,UAAK,SAAS,SAAU;AACvB,6BAAsB,SAAS,OAAQ;AAAA,MACxC;AAAA,IACD;AAAA,EACD,GAAG,CAAC,CAAE;AAEN,QAAM,EAAE,YAAY,wBAAwB,aAAa,IAAI;AAAA,IAC5D,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,gBAAiB;AAG7B,YAAM,oBAAoB,qBAAsB,QAAS;AAEzD,YAAM,gBAAgB,qBAAsB,iBAAkB;AAG9D,YAAM,cAAc,cAAe,QAAS;AAC5C,YAAM,0BAA0B;AAAA,QAC/B;AAAA,QACA;AAAA,MACD;AAEA,aAAO;AAAA,QACN,YAAY;AAAA,QACZ,wBAAwB;AAAA,QACxB,cAAc;AAAA,MACf;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,EAAE,uBAAuB,wCAAwC,IACtE,YAAa,gBAAiB;AAG/B,YAAW,MAAM;AAEhB,UAAM,gBAAgB,cAAc;AACpC,QACC,iBACA,gBACA,yBAAyB,YACxB;AAED,8CAAwC;AACxC,4BAAuB,cAAc;AAAA,QACpC,sBAAsB;AAAA,MACvB,CAAE;AAAA,IACH;AAAA,EACD,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAGF,QAAM,cAAc,yBAAyB;AAG7C,QAAM,eAAe,mBAAmB;AAMxC,QAAM,gBAAgB,QAAS,MAAM;AAEpC,QAAK,cAAc,wBAAyB;AAC3C,aAAO;AAAA,IACR;AAGA,QAAK,aAAc;AAClB,aAAO;AAAA,IACR;AACA,WAAO;AAAA,EACR,GAAG,CAAE,YAAY,wBAAwB,WAAY,CAAE;AAEvD,QAAM,aAAa,cAAe;AAAA,IACjC,QAAQ,CAAE;AAAA,IACV,UAAU,gBAAgB,IAAI;AAAA,EAC/B,CAAE;AAEF,QAAM,mBAAmB,oBAAqB,YAAY;AAAA,IACzD,UAAU;AAAA,EACX,CAAE;AAEF,SACC,qBAAC,aAAU,GAAG,kBACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,IACE,iBAAiB,iBAAiB;AAAA,KACrC;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Controls from './controls';\n\nconst TEMPLATE = [\n\t[\n\t\t'core/paragraph',\n\t\t{\n\t\t\tplaceholder: __( 'Type / to choose a block' ),\n\t\t},\n\t],\n];\n\nexport default function Edit( { clientId, context, isSelected } ) {\n\t// Consume tab indices from context\n\tconst activeTabIndex = context[ 'core/tabs-activeTabIndex' ];\n\tconst editorActiveTabIndex = context[ 'core/tabs-editorActiveTabIndex' ];\n\tconst effectiveActiveIndex = editorActiveTabIndex ?? activeTabIndex;\n\n\tconst { blockIndex, hasInnerBlocksSelected, tabsClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\t// Get the tab-panel parent first\n\t\t\tconst tabPanelsClientId = getBlockRootClientId( clientId );\n\t\t\t// Then get the tabs parent\n\t\t\tconst _tabsClientId = getBlockRootClientId( tabPanelsClientId );\n\n\t\t\t// Get data about this instance of core/tab.\n\t\t\tconst _blockIndex = getBlockIndex( clientId );\n\t\t\tconst _hasInnerBlocksSelected = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\ttrue\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tblockIndex: _blockIndex,\n\t\t\t\thasInnerBlocksSelected: _hasInnerBlocksSelected,\n\t\t\t\ttabsClientId: _tabsClientId,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { updateBlockAttributes, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\t// Sync editorActiveTabIndex when this tab is selected directly\n\tuseEffect( () => {\n\t\t// Only update if this tab is selected and not already the active index\n\t\tconst isTabSelected = isSelected || hasInnerBlocksSelected;\n\t\tif (\n\t\t\tisTabSelected &&\n\t\t\ttabsClientId &&\n\t\t\teffectiveActiveIndex !== blockIndex\n\t\t) {\n\t\t\t// Mark as non-persistent so it doesn't add to undo history\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\t\teditorActiveTabIndex: blockIndex,\n\t\t\t} );\n\t\t}\n\t}, [\n\t\tisSelected,\n\t\thasInnerBlocksSelected,\n\t\ttabsClientId,\n\t\teffectiveActiveIndex,\n\t\tblockIndex,\n\t\tupdateBlockAttributes,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t] );\n\n\t// Determine if this is the currently active tab (for editor visibility)\n\tconst isActiveTab = effectiveActiveIndex === blockIndex;\n\n\t// Determine if this is the default tab (for the \"Default Tab\" toggle in controls)\n\tconst isDefaultTab = activeTabIndex === blockIndex;\n\n\t/**\n\t * This hook determines if the current tab panel should be visible.\n\t * This is true if it is the editor active tab, or if it is selected directly.\n\t */\n\tconst isSelectedTab = useMemo( () => {\n\t\t// Show if this tab is directly selected or has selected inner blocks\n\t\tif ( isSelected || hasInnerBlocksSelected ) {\n\t\t\treturn true;\n\t\t}\n\t\t// Always show the active tab (at effectiveActiveIndex) regardless of other selection state.\n\t\t// This ensures the tab panel remains visible when editing labels in tab-list.\n\t\tif ( isActiveTab ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}, [ isSelected, hasInnerBlocksSelected, isActiveTab ] );\n\n\tconst blockProps = useBlockProps( {\n\t\thidden: ! isSelectedTab,\n\t\ttabIndex: isSelectedTab ? 0 : -1,\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t} );\n\n\treturn (\n\t\t<section { ...innerBlocksProps }>\n\t\t\t<Controls\n\t\t\t\ttabsClientId={ tabsClientId }\n\t\t\t\tblockIndex={ blockIndex }\n\t\t\t\tisDefaultTab={ isDefaultTab }\n\t\t\t/>\n\t\t\t{ isSelectedTab && innerBlocksProps.children }\n\t\t</section>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,SAAS,UAAU;AACnB;AAAA,EACC;AAAA,EACA;AAAA,EACA,SAAS;AAAA,OACH;AACP,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,iBAAiB;AAKnC,OAAO,cAAc;AA2GnB,SACC,KADD;AAzGF,IAAM,WAAW;AAAA,EAChB;AAAA,IACC;AAAA,IACA;AAAA,MACC,aAAa,GAAI,0BAA2B;AAAA,IAC7C;AAAA,EACD;AACD;AAEe,SAAR,KAAuB,EAAE,UAAU,SAAS,WAAW,GAAI;AAEjE,QAAM,iBAAiB,QAAS,0BAA2B;AAC3D,QAAM,uBAAuB,QAAS,gCAAiC;AACvE,QAAM,uBAAuB,wBAAwB;AAErD,QAAM,EAAE,YAAY,wBAAwB,aAAa,IAAI;AAAA,IAC5D,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,gBAAiB;AAG7B,YAAM,oBAAoB,qBAAsB,QAAS;AAEzD,YAAM,gBAAgB,qBAAsB,iBAAkB;AAG9D,YAAM,cAAc,cAAe,QAAS;AAC5C,YAAM,0BAA0B;AAAA,QAC/B;AAAA,QACA;AAAA,MACD;AAEA,aAAO;AAAA,QACN,YAAY;AAAA,QACZ,wBAAwB;AAAA,QACxB,cAAc;AAAA,MACf;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,EAAE,uBAAuB,wCAAwC,IACtE,YAAa,gBAAiB;AAG/B,YAAW,MAAM;AAEhB,UAAM,gBAAgB,cAAc;AACpC,QACC,iBACA,gBACA,yBAAyB,YACxB;AAED,8CAAwC;AACxC,4BAAuB,cAAc;AAAA,QACpC,sBAAsB;AAAA,MACvB,CAAE;AAAA,IACH;AAAA,EACD,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAGF,QAAM,cAAc,yBAAyB;AAG7C,QAAM,eAAe,mBAAmB;AAMxC,QAAM,gBAAgB,QAAS,MAAM;AAEpC,QAAK,cAAc,wBAAyB;AAC3C,aAAO;AAAA,IACR;AAGA,QAAK,aAAc;AAClB,aAAO;AAAA,IACR;AACA,WAAO;AAAA,EACR,GAAG,CAAE,YAAY,wBAAwB,WAAY,CAAE;AAEvD,QAAM,aAAa,cAAe;AAAA,IACjC,QAAQ,CAAE;AAAA,IACV,UAAU,gBAAgB,IAAI;AAAA,EAC/B,CAAE;AAEF,QAAM,mBAAmB,oBAAqB,YAAY;AAAA,IACzD,UAAU;AAAA,EACX,CAAE;AAEF,SACC,qBAAC,aAAU,GAAG,kBACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,IACE,iBAAiB,iBAAiB;AAAA,KACrC;AAEF;",
6
6
  "names": []
7
7
  }