@wordpress/block-library 9.44.1-next.v.202604201441.0 → 9.45.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 (315) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/accordion/edit.cjs +0 -2
  3. package/build/accordion/edit.cjs.map +2 -2
  4. package/build/accordion-item/block.json +1 -0
  5. package/build/categories/edit.cjs +5 -1
  6. package/build/categories/edit.cjs.map +2 -2
  7. package/build/embed/edit.cjs +38 -34
  8. package/build/embed/edit.cjs.map +3 -3
  9. package/build/embed/transforms.cjs +3 -1
  10. package/build/embed/transforms.cjs.map +2 -2
  11. package/build/embed/util.cjs +13 -2
  12. package/build/embed/util.cjs.map +2 -2
  13. package/build/form/block.json +1 -1
  14. package/build/form-input/block.json +1 -1
  15. package/build/form-submission-notification/block.json +1 -1
  16. package/build/form-submit-button/block.json +1 -1
  17. package/build/image/edit.cjs +1 -1
  18. package/build/image/edit.cjs.map +2 -2
  19. package/build/image/image.cjs +29 -10
  20. package/build/image/image.cjs.map +3 -3
  21. package/build/index.cjs +4 -4
  22. package/build/index.cjs.map +2 -2
  23. package/build/math/edit.cjs +2 -2
  24. package/build/math/edit.cjs.map +2 -2
  25. package/build/navigation/edit/accessible-description.cjs +2 -2
  26. package/build/navigation/edit/accessible-description.cjs.map +2 -2
  27. package/build/navigation/edit/overlay-template-part-selector.cjs.map +2 -2
  28. package/build/navigation-link/edit.cjs +2 -1
  29. package/build/navigation-link/edit.cjs.map +2 -2
  30. package/build/navigation-link/link-ui/dialog-wrapper.cjs +2 -1
  31. package/build/navigation-link/link-ui/dialog-wrapper.cjs.map +2 -2
  32. package/build/navigation-link/link-ui/index.cjs +2 -1
  33. package/build/navigation-link/link-ui/index.cjs.map +2 -2
  34. package/build/post-author/edit.cjs.map +3 -3
  35. package/build/post-comments-form/edit.cjs +2 -2
  36. package/build/post-comments-form/edit.cjs.map +2 -2
  37. package/build/query/edit/inspector-controls/author-control.cjs +1 -1
  38. package/build/query/edit/inspector-controls/author-control.cjs.map +2 -2
  39. package/build/query/edit/inspector-controls/format-controls.cjs +1 -1
  40. package/build/query/edit/inspector-controls/format-controls.cjs.map +2 -2
  41. package/build/query/edit/inspector-controls/parent-control.cjs +1 -1
  42. package/build/query/edit/inspector-controls/parent-control.cjs.map +2 -2
  43. package/build/query/edit/inspector-controls/taxonomy-controls.cjs +1 -1
  44. package/build/query/edit/inspector-controls/taxonomy-controls.cjs.map +2 -2
  45. package/build/site-logo/edit.cjs +32 -18
  46. package/build/site-logo/edit.cjs.map +2 -2
  47. package/build/tab/block.json +23 -23
  48. package/build/tab/controls.cjs +5 -48
  49. package/build/tab/controls.cjs.map +3 -3
  50. package/build/tab/edit.cjs +77 -75
  51. package/build/tab/edit.cjs.map +3 -3
  52. package/build/tab/save.cjs +3 -3
  53. package/build/tab/save.cjs.map +2 -2
  54. package/{src/tabs-menu → build/tab-list}/block.json +3 -3
  55. package/build/{tabs-menu → tab-list}/edit.cjs +4 -4
  56. package/build/tab-list/edit.cjs.map +7 -0
  57. package/build/{tabs-menu → tab-list}/index.cjs +5 -5
  58. package/build/tab-list/index.cjs.map +7 -0
  59. package/build/{tabs-menu → tab-list}/save.cjs +1 -1
  60. package/build/{tabs-menu → tab-list}/save.cjs.map +1 -1
  61. package/build/{tab → tab-panel}/add-tab-toolbar-control.cjs +16 -16
  62. package/build/tab-panel/add-tab-toolbar-control.cjs.map +7 -0
  63. package/build/tab-panel/block.json +27 -37
  64. package/build/tab-panel/controls.cjs +89 -0
  65. package/build/tab-panel/controls.cjs.map +7 -0
  66. package/build/tab-panel/edit.cjs +90 -17
  67. package/build/tab-panel/edit.cjs.map +3 -3
  68. package/build/tab-panel/index.cjs +1 -1
  69. package/build/tab-panel/index.cjs.map +1 -1
  70. package/build/{tab → tab-panel}/init.cjs +1 -1
  71. package/build/{tab → tab-panel}/init.cjs.map +1 -1
  72. package/build/{tab → tab-panel}/remove-tab-toolbar-control.cjs +16 -16
  73. package/build/tab-panel/remove-tab-toolbar-control.cjs.map +7 -0
  74. package/build/tab-panel/save.cjs +4 -2
  75. package/build/tab-panel/save.cjs.map +2 -2
  76. package/build/tab-panels/block.json +66 -0
  77. package/build/{tabs-menu-item/controls.cjs → tab-panels/edit.cjs} +25 -11
  78. package/build/tab-panels/edit.cjs.map +7 -0
  79. package/build/{tabs-menu-item → tab-panels}/index.cjs +5 -5
  80. package/build/{tabs-menu → tab-panels}/index.cjs.map +2 -2
  81. package/build/{tabs-menu-item → tab-panels}/save.cjs +4 -6
  82. package/build/tab-panels/save.cjs.map +7 -0
  83. package/build/tabs/block.json +1 -1
  84. package/build/tabs/controls.cjs +2 -2
  85. package/build/tabs/controls.cjs.map +1 -1
  86. package/build/tabs/edit.cjs +24 -19
  87. package/build/tabs/edit.cjs.map +3 -3
  88. package/build/tabs/index.cjs +5 -5
  89. package/build/tabs/index.cjs.map +1 -1
  90. package/build/tabs/{use-tab-menu-sync.cjs → use-tab-list-sync.cjs} +78 -80
  91. package/build/tabs/use-tab-list-sync.cjs.map +7 -0
  92. package/build/terms-query/edit/inspector-controls/include-control.cjs +1 -1
  93. package/build/terms-query/edit/inspector-controls/include-control.cjs.map +2 -2
  94. package/build/video/tracks-editor.cjs +2 -2
  95. package/build/video/tracks-editor.cjs.map +2 -2
  96. package/build-module/accordion/edit.mjs +0 -2
  97. package/build-module/accordion/edit.mjs.map +2 -2
  98. package/build-module/accordion-item/block.json +1 -0
  99. package/build-module/categories/edit.mjs +5 -2
  100. package/build-module/categories/edit.mjs.map +2 -2
  101. package/build-module/embed/edit.mjs +45 -36
  102. package/build-module/embed/edit.mjs.map +2 -2
  103. package/build-module/embed/transforms.mjs +8 -2
  104. package/build-module/embed/transforms.mjs.map +2 -2
  105. package/build-module/embed/util.mjs +11 -1
  106. package/build-module/embed/util.mjs.map +2 -2
  107. package/build-module/form/block.json +1 -1
  108. package/build-module/form-input/block.json +1 -1
  109. package/build-module/form-submission-notification/block.json +1 -1
  110. package/build-module/form-submit-button/block.json +1 -1
  111. package/build-module/image/edit.mjs +1 -1
  112. package/build-module/image/edit.mjs.map +2 -2
  113. package/build-module/image/image.mjs +29 -10
  114. package/build-module/image/image.mjs.map +3 -3
  115. package/build-module/index.mjs +4 -4
  116. package/build-module/index.mjs.map +2 -2
  117. package/build-module/math/edit.mjs +2 -2
  118. package/build-module/math/edit.mjs.map +2 -2
  119. package/build-module/navigation/edit/accessible-description.mjs +1 -1
  120. package/build-module/navigation/edit/accessible-description.mjs.map +1 -1
  121. package/build-module/navigation/edit/overlay-template-part-selector.mjs +2 -2
  122. package/build-module/navigation/edit/overlay-template-part-selector.mjs.map +1 -1
  123. package/build-module/navigation-link/edit.mjs +2 -5
  124. package/build-module/navigation-link/edit.mjs.map +2 -2
  125. package/build-module/navigation-link/link-ui/dialog-wrapper.mjs +2 -1
  126. package/build-module/navigation-link/link-ui/dialog-wrapper.mjs.map +2 -2
  127. package/build-module/navigation-link/link-ui/index.mjs +1 -1
  128. package/build-module/navigation-link/link-ui/index.mjs.map +2 -2
  129. package/build-module/post-author/edit.mjs +2 -2
  130. package/build-module/post-author/edit.mjs.map +2 -2
  131. package/build-module/post-comments-form/edit.mjs +1 -1
  132. package/build-module/post-comments-form/edit.mjs.map +2 -2
  133. package/build-module/query/edit/inspector-controls/author-control.mjs +1 -1
  134. package/build-module/query/edit/inspector-controls/author-control.mjs.map +2 -2
  135. package/build-module/query/edit/inspector-controls/format-controls.mjs +1 -1
  136. package/build-module/query/edit/inspector-controls/format-controls.mjs.map +2 -2
  137. package/build-module/query/edit/inspector-controls/parent-control.mjs +1 -1
  138. package/build-module/query/edit/inspector-controls/parent-control.mjs.map +2 -2
  139. package/build-module/query/edit/inspector-controls/taxonomy-controls.mjs +1 -1
  140. package/build-module/query/edit/inspector-controls/taxonomy-controls.mjs.map +2 -2
  141. package/build-module/site-logo/edit.mjs +32 -18
  142. package/build-module/site-logo/edit.mjs.map +2 -2
  143. package/build-module/tab/block.json +23 -23
  144. package/build-module/tab/controls.mjs +7 -57
  145. package/build-module/tab/controls.mjs.map +2 -2
  146. package/build-module/tab/edit.mjs +81 -79
  147. package/build-module/tab/edit.mjs.map +3 -3
  148. package/build-module/tab/save.mjs +4 -4
  149. package/build-module/tab/save.mjs.map +2 -2
  150. package/build-module/{tabs-menu → tab-list}/block.json +3 -3
  151. package/build-module/{tabs-menu → tab-list}/edit.mjs +4 -4
  152. package/build-module/tab-list/edit.mjs.map +7 -0
  153. package/build-module/{tabs-menu → tab-list}/index.mjs +2 -2
  154. package/build-module/tab-list/index.mjs.map +7 -0
  155. package/build-module/{tabs-menu → tab-list}/save.mjs +1 -1
  156. package/build-module/{tabs-menu → tab-list}/save.mjs.map +1 -1
  157. package/build-module/{tab → tab-panel}/add-tab-toolbar-control.mjs +16 -16
  158. package/build-module/tab-panel/add-tab-toolbar-control.mjs.map +7 -0
  159. package/build-module/tab-panel/block.json +27 -37
  160. package/build-module/tab-panel/controls.mjs +65 -0
  161. package/build-module/tab-panel/controls.mjs.map +7 -0
  162. package/build-module/tab-panel/edit.mjs +92 -19
  163. package/build-module/tab-panel/edit.mjs.map +2 -2
  164. package/build-module/tab-panel/index.mjs +1 -1
  165. package/build-module/tab-panel/index.mjs.map +1 -1
  166. package/build-module/{tab → tab-panel}/init.mjs +1 -1
  167. package/build-module/{tab → tab-panel}/init.mjs.map +1 -1
  168. package/build-module/{tab → tab-panel}/remove-tab-toolbar-control.mjs +16 -16
  169. package/build-module/tab-panel/remove-tab-toolbar-control.mjs.map +7 -0
  170. package/build-module/tab-panel/save.mjs +4 -2
  171. package/build-module/tab-panel/save.mjs.map +2 -2
  172. package/build-module/tab-panels/block.json +66 -0
  173. package/build-module/tab-panels/edit.mjs +33 -0
  174. package/build-module/tab-panels/edit.mjs.map +7 -0
  175. package/build-module/{tabs-menu-item → tab-panels}/index.mjs +2 -2
  176. package/build-module/{tabs-menu → tab-panels}/index.mjs.map +2 -2
  177. package/build-module/tab-panels/save.mjs +12 -0
  178. package/build-module/tab-panels/save.mjs.map +7 -0
  179. package/build-module/tabs/block.json +1 -1
  180. package/build-module/tabs/controls.mjs +2 -2
  181. package/build-module/tabs/controls.mjs.map +1 -1
  182. package/build-module/tabs/edit.mjs +24 -19
  183. package/build-module/tabs/edit.mjs.map +2 -2
  184. package/build-module/tabs/index.mjs +5 -5
  185. package/build-module/tabs/index.mjs.map +1 -1
  186. package/build-module/tabs/use-tab-list-sync.mjs +169 -0
  187. package/build-module/tabs/use-tab-list-sync.mjs.map +7 -0
  188. package/build-module/terms-query/edit/inspector-controls/include-control.mjs +1 -1
  189. package/build-module/terms-query/edit/inspector-controls/include-control.mjs.map +2 -2
  190. package/build-module/video/tracks-editor.mjs +2 -2
  191. package/build-module/video/tracks-editor.mjs.map +2 -2
  192. package/build-style/classic-rtl.css +14 -0
  193. package/build-style/classic.css +14 -0
  194. package/build-style/editor-rtl.css +9 -5
  195. package/build-style/editor.css +9 -5
  196. package/build-style/style-rtl.css +40 -40
  197. package/build-style/style.css +40 -40
  198. package/build-style/tab/editor-rtl.css +11 -0
  199. package/build-style/tab/editor.css +11 -0
  200. package/build-style/tab/style-rtl.css +29 -16
  201. package/build-style/tab/style.css +29 -16
  202. package/build-style/tab-list/editor-rtl.css +6 -0
  203. package/build-style/tab-list/editor.css +6 -0
  204. package/build-style/tab-panel/style-rtl.css +17 -1
  205. package/build-style/tab-panel/style.css +17 -1
  206. package/build-style/tab-panels/style-rtl.css +4 -0
  207. package/build-style/tab-panels/style.css +4 -0
  208. package/build-style/video/editor-rtl.css +4 -0
  209. package/build-style/video/editor.css +4 -0
  210. package/package.json +39 -38
  211. package/src/accordion/edit.js +0 -2
  212. package/src/accordion-item/block.json +1 -0
  213. package/src/categories/edit.js +3 -2
  214. package/src/classic.scss +25 -0
  215. package/src/editor.scss +2 -2
  216. package/src/embed/edit.js +61 -52
  217. package/src/embed/edit.native.js +71 -57
  218. package/src/embed/transforms.js +8 -2
  219. package/src/embed/util.js +17 -0
  220. package/src/form/block.json +1 -1
  221. package/src/form-input/block.json +1 -1
  222. package/src/form-submission-notification/block.json +1 -1
  223. package/src/form-submit-button/block.json +1 -1
  224. package/src/image/edit.js +5 -1
  225. package/src/image/edit.native.js +3 -3
  226. package/src/image/image.js +30 -5
  227. package/src/index.js +4 -4
  228. package/src/math/edit.js +3 -3
  229. package/src/navigation/edit/accessible-description.js +1 -1
  230. package/src/navigation/edit/overlay-template-part-selector.js +3 -3
  231. package/src/navigation-link/edit.js +2 -5
  232. package/src/navigation-link/link-ui/dialog-wrapper.js +2 -1
  233. package/src/navigation-link/link-ui/index.js +1 -1
  234. package/src/post-author/edit.js +3 -5
  235. package/src/post-comments-form/edit.js +1 -1
  236. package/src/query/edit/inspector-controls/author-control.js +1 -1
  237. package/src/query/edit/inspector-controls/format-controls.js +1 -1
  238. package/src/query/edit/inspector-controls/parent-control.js +1 -1
  239. package/src/query/edit/inspector-controls/taxonomy-controls.js +1 -1
  240. package/src/site-logo/edit.js +38 -18
  241. package/src/style.scss +1 -1
  242. package/src/tab/block.json +23 -23
  243. package/src/tab/controls.js +6 -52
  244. package/src/tab/edit.js +99 -103
  245. package/src/{tabs-menu-item → tab}/editor.scss +3 -3
  246. package/src/tab/index.php +32 -51
  247. package/src/tab/save.js +4 -4
  248. package/src/tab/style.scss +34 -17
  249. package/{build/tabs-menu → src/tab-list}/block.json +3 -3
  250. package/src/{tabs-menu → tab-list}/edit.js +3 -3
  251. package/src/{tabs-menu → tab-list}/editor.scss +2 -2
  252. package/src/{tabs-menu → tab-list}/index.js +1 -1
  253. package/src/tab-list/index.php +80 -0
  254. package/src/{tab → tab-panel}/add-tab-toolbar-control.js +19 -19
  255. package/src/tab-panel/block.json +27 -37
  256. package/src/tab-panel/controls.js +65 -0
  257. package/src/tab-panel/edit.js +123 -20
  258. package/src/tab-panel/index.js +1 -1
  259. package/src/tab-panel/index.php +88 -0
  260. package/src/{tab → tab-panel}/remove-tab-toolbar-control.js +20 -19
  261. package/src/tab-panel/save.js +4 -2
  262. package/src/tab-panel/style.scss +20 -1
  263. package/src/tab-panels/block.json +66 -0
  264. package/src/tab-panels/edit.js +42 -0
  265. package/src/{tabs-menu-item → tab-panels}/index.js +1 -1
  266. package/src/tab-panels/save.js +11 -0
  267. package/src/tab-panels/style.scss +4 -0
  268. package/src/tabs/block.json +1 -1
  269. package/src/tabs/controls.js +2 -2
  270. package/src/tabs/edit.js +25 -20
  271. package/src/tabs/index.js +5 -5
  272. package/src/tabs/index.php +5 -5
  273. package/src/tabs/use-tab-list-sync.js +237 -0
  274. package/src/terms-query/edit/inspector-controls/include-control.js +1 -1
  275. package/src/video/editor.scss +5 -0
  276. package/src/video/tracks-editor.js +2 -2
  277. package/build/tab/add-tab-toolbar-control.cjs.map +0 -7
  278. package/build/tab/remove-tab-toolbar-control.cjs.map +0 -7
  279. package/build/tabs/use-tab-menu-sync.cjs.map +0 -7
  280. package/build/tabs-menu/edit.cjs.map +0 -7
  281. package/build/tabs-menu-item/block.json +0 -56
  282. package/build/tabs-menu-item/controls.cjs.map +0 -7
  283. package/build/tabs-menu-item/edit.cjs +0 -135
  284. package/build/tabs-menu-item/edit.cjs.map +0 -7
  285. package/build/tabs-menu-item/index.cjs.map +0 -7
  286. package/build/tabs-menu-item/save.cjs.map +0 -7
  287. package/build-module/tab/add-tab-toolbar-control.mjs.map +0 -7
  288. package/build-module/tab/remove-tab-toolbar-control.mjs.map +0 -7
  289. package/build-module/tabs/use-tab-menu-sync.mjs +0 -171
  290. package/build-module/tabs/use-tab-menu-sync.mjs.map +0 -7
  291. package/build-module/tabs-menu/edit.mjs.map +0 -7
  292. package/build-module/tabs-menu-item/block.json +0 -56
  293. package/build-module/tabs-menu-item/controls.mjs +0 -15
  294. package/build-module/tabs-menu-item/controls.mjs.map +0 -7
  295. package/build-module/tabs-menu-item/edit.mjs +0 -108
  296. package/build-module/tabs-menu-item/edit.mjs.map +0 -7
  297. package/build-module/tabs-menu-item/index.mjs.map +0 -7
  298. package/build-module/tabs-menu-item/save.mjs +0 -14
  299. package/build-module/tabs-menu-item/save.mjs.map +0 -7
  300. package/build-style/tabs-menu/editor-rtl.css +0 -6
  301. package/build-style/tabs-menu/editor.css +0 -6
  302. package/build-style/tabs-menu-item/editor-rtl.css +0 -11
  303. package/build-style/tabs-menu-item/editor.css +0 -11
  304. package/build-style/tabs-menu-item/style-rtl.css +0 -33
  305. package/build-style/tabs-menu-item/style.css +0 -33
  306. package/src/tabs/use-tab-menu-sync.js +0 -239
  307. package/src/tabs-menu/index.php +0 -80
  308. package/src/tabs-menu-item/block.json +0 -56
  309. package/src/tabs-menu-item/controls.js +0 -19
  310. package/src/tabs-menu-item/edit.js +0 -141
  311. package/src/tabs-menu-item/index.php +0 -70
  312. package/src/tabs-menu-item/save.js +0 -13
  313. package/src/tabs-menu-item/style.scss +0 -40
  314. /package/src/{tabs-menu → tab-list}/save.js +0 -0
  315. /package/src/{tab → tab-panel}/init.js +0 -0
@@ -27,15 +27,15 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
 
30
- // packages/block-library/src/tabs-menu-item/index.js
31
- var tabs_menu_item_exports = {};
32
- __export(tabs_menu_item_exports, {
30
+ // packages/block-library/src/tab-panels/index.js
31
+ var tab_panels_exports = {};
32
+ __export(tab_panels_exports, {
33
33
  init: () => init,
34
34
  metadata: () => import_block.default,
35
35
  name: () => name,
36
36
  settings: () => settings
37
37
  });
38
- module.exports = __toCommonJS(tabs_menu_item_exports);
38
+ module.exports = __toCommonJS(tab_panels_exports);
39
39
  var import_icons = require("@wordpress/icons");
40
40
  var import_init_block = __toESM(require("../utils/init-block.cjs"));
41
41
  var import_edit = __toESM(require("./edit.cjs"));
@@ -43,7 +43,7 @@ var import_save = __toESM(require("./save.cjs"));
43
43
  var import_block = __toESM(require("./block.json"));
44
44
  var { name } = import_block.default;
45
45
  var settings = {
46
- icon: import_icons.tabsMenuItem,
46
+ icon: import_icons.contents,
47
47
  edit: import_edit.default,
48
48
  save: import_save.default
49
49
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/tabs-menu/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { tabsMenu as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport save from './save';\nimport metadata from './block.json';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
3
+ "sources": ["../../src/tab-panels/index.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { contents as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport save from './save';\nimport metadata from './block.json';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,+BAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAGA,mBAAiC;AAKjC,wBAAsB;AACtB,kBAAiB;AACjB,kBAAiB;AACjB,mBAAqB;AAErB,IAAM,EAAE,KAAK,IAAI,aAAAA;AAIV,IAAM,WAAW;AAAA,EACvB,mBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,kBAAAC;AACD;AAEO,IAAM,OAAO,UAAM,kBAAAC,SAAW,EAAE,MAAM,uBAAAC,SAAU,SAAS,CAAE;",
6
6
  "names": ["metadata", "icon", "edit", "save", "initBlock", "metadata"]
7
7
  }
@@ -17,7 +17,7 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // packages/block-library/src/tabs-menu-item/save.js
20
+ // packages/block-library/src/tab-panels/save.js
21
21
  var save_exports = {};
22
22
  __export(save_exports, {
23
23
  default: () => save
@@ -26,10 +26,8 @@ module.exports = __toCommonJS(save_exports);
26
26
  var import_block_editor = require("@wordpress/block-editor");
27
27
  var import_jsx_runtime = require("react/jsx-runtime");
28
28
  function save() {
29
- const blockProps = import_block_editor.useBlockProps.save({
30
- type: "button",
31
- role: "tab"
32
- });
33
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { ...blockProps });
29
+ const blockProps = import_block_editor.useBlockProps.save();
30
+ const innerBlocksProps = import_block_editor.useInnerBlocksProps.save(blockProps);
31
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ...innerBlocksProps });
34
32
  }
35
33
  //# sourceMappingURL=save.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/tab-panels/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\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\n\treturn <div { ...innerBlocksProps } />;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAAmD;AAM3C;AAJO,SAAR,OAAwB;AAC9B,QAAM,aAAa,kCAAc,KAAK;AACtC,QAAM,mBAAmB,wCAAoB,KAAM,UAAW;AAE9D,SAAO,4CAAC,SAAM,GAAG,kBAAmB;AACrC;",
6
+ "names": []
7
+ }
@@ -7,7 +7,7 @@
7
7
  "description": "Display content in a tabbed interface to help users navigate detailed content with ease.",
8
8
  "category": "design",
9
9
  "textdomain": "default",
10
- "allowedBlocks": [ "core/tabs-menu", "core/tab-panel" ],
10
+ "allowedBlocks": [ "core/tab-list", "core/tab-panels" ],
11
11
  "attributes": {
12
12
  "activeTabIndex": {
13
13
  "type": "number",
@@ -33,8 +33,8 @@ __export(controls_exports, {
33
33
  default: () => Controls
34
34
  });
35
35
  module.exports = __toCommonJS(controls_exports);
36
- var import_add_tab_toolbar_control = __toESM(require("../tab/add-tab-toolbar-control.cjs"));
37
- var import_remove_tab_toolbar_control = __toESM(require("../tab/remove-tab-toolbar-control.cjs"));
36
+ var import_add_tab_toolbar_control = __toESM(require("../tab-panel/add-tab-toolbar-control.cjs"));
37
+ var import_remove_tab_toolbar_control = __toESM(require("../tab-panel/remove-tab-toolbar-control.cjs"));
38
38
  var import_jsx_runtime = require("react/jsx-runtime");
39
39
  function Controls({ clientId }) {
40
40
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tabs/controls.js"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport AddTabToolbarControl from '../tab/add-tab-toolbar-control';\nimport RemoveTabToolbarControl from '../tab/remove-tab-toolbar-control';\n\nexport default function Controls( { clientId } ) {\n\treturn (\n\t\t<>\n\t\t\t<AddTabToolbarControl tabsClientId={ clientId } />\n\t\t\t<RemoveTabToolbarControl tabsClientId={ clientId } />\n\t\t</>\n\t);\n}\n"],
4
+ "sourcesContent": ["/**\n * Internal dependencies\n */\nimport AddTabToolbarControl from '../tab-panel/add-tab-toolbar-control';\nimport RemoveTabToolbarControl from '../tab-panel/remove-tab-toolbar-control';\n\nexport default function Controls( { clientId } ) {\n\treturn (\n\t\t<>\n\t\t\t<AddTabToolbarControl tabsClientId={ clientId } />\n\t\t\t<RemoveTabToolbarControl tabsClientId={ clientId } />\n\t\t</>\n\t);\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qCAAiC;AACjC,wCAAoC;AAIlC;AAFa,SAAR,SAA2B,EAAE,SAAS,GAAI;AAChD,SACC,4EACC;AAAA,gDAAC,+BAAAA,SAAA,EAAqB,cAAe,UAAW;AAAA,IAChD,4CAAC,kCAAAC,SAAA,EAAwB,cAAe,UAAW;AAAA,KACpD;AAEF;",
6
6
  "names": ["AddTabToolbarControl", "RemoveTabToolbarControl"]
7
7
  }
@@ -38,31 +38,31 @@ var import_data = require("@wordpress/data");
38
38
  var import_element = require("@wordpress/element");
39
39
  var import_i18n = require("@wordpress/i18n");
40
40
  var import_controls = __toESM(require("./controls.cjs"));
41
- var import_use_tab_menu_sync = __toESM(require("./use-tab-menu-sync.cjs"));
41
+ var import_use_tab_list_sync = __toESM(require("./use-tab-list-sync.cjs"));
42
42
  var import_jsx_runtime = require("react/jsx-runtime");
43
43
  var EMPTY_ARRAY = [];
44
44
  var TABS_TEMPLATE = [
45
45
  [
46
- "core/tabs-menu",
46
+ "core/tab-list",
47
47
  {},
48
48
  [
49
- ["core/tabs-menu-item", {}],
50
- ["core/tabs-menu-item", {}]
49
+ ["core/tab", {}],
50
+ ["core/tab", {}]
51
51
  ]
52
52
  ],
53
53
  [
54
- "core/tab-panel",
54
+ "core/tab-panels",
55
55
  {},
56
56
  [
57
57
  [
58
- "core/tab",
58
+ "core/tab-panel",
59
59
  {
60
60
  label: (0, import_i18n.__)("Tab")
61
61
  },
62
62
  [["core/paragraph"]]
63
63
  ],
64
64
  [
65
- "core/tab",
65
+ "core/tab-panel",
66
66
  {
67
67
  label: (0, import_i18n.__)("Tab")
68
68
  },
@@ -78,28 +78,33 @@ function Edit({ clientId, attributes, setAttributes }) {
78
78
  setAttributes({ editorActiveTabIndex: activeTabIndex });
79
79
  }
80
80
  }, []);
81
- const { tabs, tabPanelClientId, menuItems, tabsMenuClientId } = (0, import_data.useSelect)(
81
+ const { tabPanels, tabPanelsClientId, tabs, tabListClientId } = (0, import_data.useSelect)(
82
82
  (select) => {
83
83
  const { getBlocks } = select(import_block_editor.store);
84
84
  const innerBlocks = getBlocks(clientId);
85
- const tabPanel = innerBlocks.find(
86
- (block) => block.name === "core/tab-panel"
85
+ const tabPanelBlocks = innerBlocks.find(
86
+ (block) => block.name === "core/tab-panels"
87
87
  );
88
- const tabsMenu = innerBlocks.find(
89
- (block) => block.name === "core/tabs-menu"
88
+ const tabList = innerBlocks.find(
89
+ (block) => block.name === "core/tab-list"
90
90
  );
91
91
  return {
92
- tabs: tabPanel?.innerBlocks ?? EMPTY_ARRAY,
93
- tabPanelClientId: tabPanel?.clientId ?? null,
94
- menuItems: tabsMenu?.innerBlocks ?? EMPTY_ARRAY,
95
- tabsMenuClientId: tabsMenu?.clientId ?? null
92
+ tabPanels: tabPanelBlocks?.innerBlocks ?? EMPTY_ARRAY,
93
+ tabPanelsClientId: tabPanelBlocks?.clientId ?? null,
94
+ tabs: tabList?.innerBlocks ?? EMPTY_ARRAY,
95
+ tabListClientId: tabList?.clientId ?? null
96
96
  };
97
97
  },
98
98
  [clientId]
99
99
  );
100
- (0, import_use_tab_menu_sync.default)({ tabs, menuItems, tabPanelClientId, tabsMenuClientId });
100
+ (0, import_use_tab_list_sync.default)({
101
+ tabPanels,
102
+ tabs,
103
+ tabPanelsClientId,
104
+ tabListClientId
105
+ });
101
106
  const contextValue = (0, import_element.useMemo)(() => {
102
- const tabList = tabs.map((tab, index) => ({
107
+ const tabList = tabPanels.map((tab, index) => ({
103
108
  id: tab.attributes.anchor || `tab-${index}`,
104
109
  label: tab.attributes.label || "",
105
110
  clientId: tab.clientId,
@@ -111,7 +116,7 @@ function Edit({ clientId, attributes, setAttributes }) {
111
116
  "core/tabs-activeTabIndex": activeTabIndex,
112
117
  "core/tabs-editorActiveTabIndex": editorActiveTabIndex
113
118
  };
114
- }, [tabs, anchor, activeTabIndex, editorActiveTabIndex]);
119
+ }, [tabPanels, anchor, activeTabIndex, editorActiveTabIndex]);
115
120
  const blockProps = (0, import_block_editor.useBlockProps)();
116
121
  const innerBlockProps = (0, import_block_editor.useInnerBlocksProps)(blockProps, {
117
122
  __experimentalCaptureToolbars: true,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tabs/edit.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tBlockContextProvider,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport Controls from './controls';\nimport useTabMenuSync from './use-tab-menu-sync';\n\nconst EMPTY_ARRAY = [];\n\nconst TABS_TEMPLATE = [\n\t[\n\t\t'core/tabs-menu',\n\t\t{},\n\t\t[\n\t\t\t[ 'core/tabs-menu-item', {} ],\n\t\t\t[ 'core/tabs-menu-item', {} ],\n\t\t],\n\t],\n\t[\n\t\t'core/tab-panel',\n\t\t{},\n\t\t[\n\t\t\t[\n\t\t\t\t'core/tab',\n\t\t\t\t{\n\t\t\t\t\tlabel: __( 'Tab' ),\n\t\t\t\t},\n\t\t\t\t[ [ 'core/paragraph' ] ],\n\t\t\t],\n\t\t\t[\n\t\t\t\t'core/tab',\n\t\t\t\t{\n\t\t\t\t\tlabel: __( 'Tab' ),\n\t\t\t\t},\n\t\t\t\t[ [ 'core/paragraph' ] ],\n\t\t\t],\n\t\t],\n\t],\n];\n\nfunction Edit( { clientId, attributes, setAttributes } ) {\n\tconst { anchor, activeTabIndex, editorActiveTabIndex } = attributes;\n\n\t/**\n\t * Initialize editorActiveTabIndex to activeTabIndex on mount.\n\t * This ensures the ephemeral editor state starts at the persisted default.\n\t */\n\tuseEffect( () => {\n\t\tif ( editorActiveTabIndex === undefined ) {\n\t\t\tsetAttributes( { editorActiveTabIndex: activeTabIndex } );\n\t\t}\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n\n\tconst { tabs, tabPanelClientId, menuItems, tabsMenuClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlocks } = select( blockEditorStore );\n\t\t\tconst innerBlocks = getBlocks( clientId );\n\n\t\t\tconst tabPanel = innerBlocks.find(\n\t\t\t\t( block ) => block.name === 'core/tab-panel'\n\t\t\t);\n\t\t\tconst tabsMenu = innerBlocks.find(\n\t\t\t\t( block ) => block.name === 'core/tabs-menu'\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\ttabs: tabPanel?.innerBlocks ?? EMPTY_ARRAY,\n\t\t\t\ttabPanelClientId: tabPanel?.clientId ?? null,\n\t\t\t\tmenuItems: tabsMenu?.innerBlocks ?? EMPTY_ARRAY,\n\t\t\t\ttabsMenuClientId: tabsMenu?.clientId ?? null,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tuseTabMenuSync( { tabs, menuItems, tabPanelClientId, tabsMenuClientId } );\n\n\t/**\n\t * Memoize context value to prevent unnecessary re-renders.\n\t */\n\tconst contextValue = useMemo( () => {\n\t\t/**\n\t\t * Compute tabs list from innerblocks to provide via context.\n\t\t * This traverses the tab-panel block to find all tab blocks\n\t\t * and extracts their label and anchor for the tabs-menu to consume.\n\t\t */\n\t\tconst tabList = tabs.map( ( tab, index ) => ( {\n\t\t\tid: tab.attributes.anchor || `tab-${ index }`,\n\t\t\tlabel: tab.attributes.label || '',\n\t\t\tclientId: tab.clientId,\n\t\t\tindex,\n\t\t} ) );\n\n\t\treturn {\n\t\t\t'core/tabs-list': tabList,\n\t\t\t'core/tabs-id': anchor,\n\t\t\t'core/tabs-activeTabIndex': activeTabIndex,\n\t\t\t'core/tabs-editorActiveTabIndex': editorActiveTabIndex,\n\t\t};\n\t}, [ tabs, anchor, activeTabIndex, editorActiveTabIndex ] );\n\n\tconst blockProps = useBlockProps();\n\n\tconst innerBlockProps = useInnerBlocksProps( blockProps, {\n\t\t__experimentalCaptureToolbars: true,\n\t\ttemplate: TABS_TEMPLATE,\n\t\ttemplateLock: 'all',\n\t\trenderAppender: false,\n\t} );\n\n\treturn (\n\t\t<BlockContextProvider value={ contextValue }>\n\t\t\t<div { ...innerBlockProps }>\n\t\t\t\t<Controls\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t\t{ innerBlockProps.children }\n\t\t\t</div>\n\t\t</BlockContextProvider>\n\t);\n}\n\nexport default Edit;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAKO;AACP,kBAA0B;AAC1B,qBAAmC;AACnC,kBAAmB;AAKnB,sBAAqB;AACrB,+BAA2B;AA2GxB;AAzGH,IAAM,cAAc,CAAC;AAErB,IAAM,gBAAgB;AAAA,EACrB;AAAA,IACC;AAAA,IACA,CAAC;AAAA,IACD;AAAA,MACC,CAAE,uBAAuB,CAAC,CAAE;AAAA,MAC5B,CAAE,uBAAuB,CAAC,CAAE;AAAA,IAC7B;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA,CAAC;AAAA,IACD;AAAA,MACC;AAAA,QACC;AAAA,QACA;AAAA,UACC,WAAO,gBAAI,KAAM;AAAA,QAClB;AAAA,QACA,CAAE,CAAE,gBAAiB,CAAE;AAAA,MACxB;AAAA,MACA;AAAA,QACC;AAAA,QACA;AAAA,UACC,WAAO,gBAAI,KAAM;AAAA,QAClB;AAAA,QACA,CAAE,CAAE,gBAAiB,CAAE;AAAA,MACxB;AAAA,IACD;AAAA,EACD;AACD;AAEA,SAAS,KAAM,EAAE,UAAU,YAAY,cAAc,GAAI;AACxD,QAAM,EAAE,QAAQ,gBAAgB,qBAAqB,IAAI;AAMzD,gCAAW,MAAM;AAChB,QAAK,yBAAyB,QAAY;AACzC,oBAAe,EAAE,sBAAsB,eAAe,CAAE;AAAA,IACzD;AAAA,EACD,GAAG,CAAC,CAAE;AAEN,QAAM,EAAE,MAAM,kBAAkB,WAAW,iBAAiB,QAAI;AAAA,IAC/D,CAAE,WAAY;AACb,YAAM,EAAE,UAAU,IAAI,OAAQ,oBAAAA,KAAiB;AAC/C,YAAM,cAAc,UAAW,QAAS;AAExC,YAAM,WAAW,YAAY;AAAA,QAC5B,CAAE,UAAW,MAAM,SAAS;AAAA,MAC7B;AACA,YAAM,WAAW,YAAY;AAAA,QAC5B,CAAE,UAAW,MAAM,SAAS;AAAA,MAC7B;AAEA,aAAO;AAAA,QACN,MAAM,UAAU,eAAe;AAAA,QAC/B,kBAAkB,UAAU,YAAY;AAAA,QACxC,WAAW,UAAU,eAAe;AAAA,QACpC,kBAAkB,UAAU,YAAY;AAAA,MACzC;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,+BAAAC,SAAgB,EAAE,MAAM,WAAW,kBAAkB,iBAAiB,CAAE;AAKxE,QAAM,mBAAe,wBAAS,MAAM;AAMnC,UAAM,UAAU,KAAK,IAAK,CAAE,KAAK,WAAa;AAAA,MAC7C,IAAI,IAAI,WAAW,UAAU,OAAQ,KAAM;AAAA,MAC3C,OAAO,IAAI,WAAW,SAAS;AAAA,MAC/B,UAAU,IAAI;AAAA,MACd;AAAA,IACD,EAAI;AAEJ,WAAO;AAAA,MACN,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,4BAA4B;AAAA,MAC5B,kCAAkC;AAAA,IACnC;AAAA,EACD,GAAG,CAAE,MAAM,QAAQ,gBAAgB,oBAAqB,CAAE;AAE1D,QAAM,iBAAa,mCAAc;AAEjC,QAAM,sBAAkB,yCAAqB,YAAY;AAAA,IACxD,+BAA+B;AAAA,IAC/B,UAAU;AAAA,IACV,cAAc;AAAA,IACd,gBAAgB;AAAA,EACjB,CAAE;AAEF,SACC,4CAAC,4CAAqB,OAAQ,cAC7B,uDAAC,SAAM,GAAG,iBACT;AAAA;AAAA,MAAC,gBAAAC;AAAA,MAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,IACE,gBAAgB;AAAA,KACnB,GACD;AAEF;AAEA,IAAO,eAAQ;",
6
- "names": ["blockEditorStore", "useTabMenuSync", "Controls"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tBlockContextProvider,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport Controls from './controls';\nimport useTabListSync from './use-tab-list-sync';\n\nconst EMPTY_ARRAY = [];\n\nconst TABS_TEMPLATE = [\n\t[\n\t\t'core/tab-list',\n\t\t{},\n\t\t[\n\t\t\t[ 'core/tab', {} ],\n\t\t\t[ 'core/tab', {} ],\n\t\t],\n\t],\n\t[\n\t\t'core/tab-panels',\n\t\t{},\n\t\t[\n\t\t\t[\n\t\t\t\t'core/tab-panel',\n\t\t\t\t{\n\t\t\t\t\tlabel: __( 'Tab' ),\n\t\t\t\t},\n\t\t\t\t[ [ 'core/paragraph' ] ],\n\t\t\t],\n\t\t\t[\n\t\t\t\t'core/tab-panel',\n\t\t\t\t{\n\t\t\t\t\tlabel: __( 'Tab' ),\n\t\t\t\t},\n\t\t\t\t[ [ 'core/paragraph' ] ],\n\t\t\t],\n\t\t],\n\t],\n];\n\nfunction Edit( { clientId, attributes, setAttributes } ) {\n\tconst { anchor, activeTabIndex, editorActiveTabIndex } = attributes;\n\n\t/**\n\t * Initialize editorActiveTabIndex to activeTabIndex on mount.\n\t * This ensures the ephemeral editor state starts at the persisted default.\n\t */\n\tuseEffect( () => {\n\t\tif ( editorActiveTabIndex === undefined ) {\n\t\t\tsetAttributes( { editorActiveTabIndex: activeTabIndex } );\n\t\t}\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n\n\tconst { tabPanels, tabPanelsClientId, tabs, tabListClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlocks } = select( blockEditorStore );\n\t\t\tconst innerBlocks = getBlocks( clientId );\n\n\t\t\tconst tabPanelBlocks = 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\n\t\t\treturn {\n\t\t\t\ttabPanels: tabPanelBlocks?.innerBlocks ?? EMPTY_ARRAY,\n\t\t\t\ttabPanelsClientId: tabPanelBlocks?.clientId ?? null,\n\t\t\t\ttabs: tabList?.innerBlocks ?? EMPTY_ARRAY,\n\t\t\t\ttabListClientId: tabList?.clientId ?? null,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tuseTabListSync( {\n\t\ttabPanels,\n\t\ttabs,\n\t\ttabPanelsClientId,\n\t\ttabListClientId,\n\t} );\n\n\t/**\n\t * Memoize context value to prevent unnecessary re-renders.\n\t */\n\tconst contextValue = useMemo( () => {\n\t\t/**\n\t\t * Compute tabs list from innerblocks to provide via context.\n\t\t * This traverses the tab-panel block to find all tab blocks\n\t\t * and extracts their label and anchor for the tab-list to consume.\n\t\t */\n\t\tconst tabList = tabPanels.map( ( tab, index ) => ( {\n\t\t\tid: tab.attributes.anchor || `tab-${ index }`,\n\t\t\tlabel: tab.attributes.label || '',\n\t\t\tclientId: tab.clientId,\n\t\t\tindex,\n\t\t} ) );\n\n\t\treturn {\n\t\t\t'core/tabs-list': tabList,\n\t\t\t'core/tabs-id': anchor,\n\t\t\t'core/tabs-activeTabIndex': activeTabIndex,\n\t\t\t'core/tabs-editorActiveTabIndex': editorActiveTabIndex,\n\t\t};\n\t}, [ tabPanels, anchor, activeTabIndex, editorActiveTabIndex ] );\n\n\tconst blockProps = useBlockProps();\n\n\tconst innerBlockProps = useInnerBlocksProps( blockProps, {\n\t\t__experimentalCaptureToolbars: true,\n\t\ttemplate: TABS_TEMPLATE,\n\t\ttemplateLock: 'all',\n\t\trenderAppender: false,\n\t} );\n\n\treturn (\n\t\t<BlockContextProvider value={ contextValue }>\n\t\t\t<div { ...innerBlockProps }>\n\t\t\t\t<Controls\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t\t{ innerBlockProps.children }\n\t\t\t</div>\n\t\t</BlockContextProvider>\n\t);\n}\n\nexport default Edit;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAKO;AACP,kBAA0B;AAC1B,qBAAmC;AACnC,kBAAmB;AAKnB,sBAAqB;AACrB,+BAA2B;AAgHxB;AA9GH,IAAM,cAAc,CAAC;AAErB,IAAM,gBAAgB;AAAA,EACrB;AAAA,IACC;AAAA,IACA,CAAC;AAAA,IACD;AAAA,MACC,CAAE,YAAY,CAAC,CAAE;AAAA,MACjB,CAAE,YAAY,CAAC,CAAE;AAAA,IAClB;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,IACA,CAAC;AAAA,IACD;AAAA,MACC;AAAA,QACC;AAAA,QACA;AAAA,UACC,WAAO,gBAAI,KAAM;AAAA,QAClB;AAAA,QACA,CAAE,CAAE,gBAAiB,CAAE;AAAA,MACxB;AAAA,MACA;AAAA,QACC;AAAA,QACA;AAAA,UACC,WAAO,gBAAI,KAAM;AAAA,QAClB;AAAA,QACA,CAAE,CAAE,gBAAiB,CAAE;AAAA,MACxB;AAAA,IACD;AAAA,EACD;AACD;AAEA,SAAS,KAAM,EAAE,UAAU,YAAY,cAAc,GAAI;AACxD,QAAM,EAAE,QAAQ,gBAAgB,qBAAqB,IAAI;AAMzD,gCAAW,MAAM;AAChB,QAAK,yBAAyB,QAAY;AACzC,oBAAe,EAAE,sBAAsB,eAAe,CAAE;AAAA,IACzD;AAAA,EACD,GAAG,CAAC,CAAE;AAEN,QAAM,EAAE,WAAW,mBAAmB,MAAM,gBAAgB,QAAI;AAAA,IAC/D,CAAE,WAAY;AACb,YAAM,EAAE,UAAU,IAAI,OAAQ,oBAAAA,KAAiB;AAC/C,YAAM,cAAc,UAAW,QAAS;AAExC,YAAM,iBAAiB,YAAY;AAAA,QAClC,CAAE,UAAW,MAAM,SAAS;AAAA,MAC7B;AACA,YAAM,UAAU,YAAY;AAAA,QAC3B,CAAE,UAAW,MAAM,SAAS;AAAA,MAC7B;AAEA,aAAO;AAAA,QACN,WAAW,gBAAgB,eAAe;AAAA,QAC1C,mBAAmB,gBAAgB,YAAY;AAAA,QAC/C,MAAM,SAAS,eAAe;AAAA,QAC9B,iBAAiB,SAAS,YAAY;AAAA,MACvC;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,+BAAAC,SAAgB;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAKF,QAAM,mBAAe,wBAAS,MAAM;AAMnC,UAAM,UAAU,UAAU,IAAK,CAAE,KAAK,WAAa;AAAA,MAClD,IAAI,IAAI,WAAW,UAAU,OAAQ,KAAM;AAAA,MAC3C,OAAO,IAAI,WAAW,SAAS;AAAA,MAC/B,UAAU,IAAI;AAAA,MACd;AAAA,IACD,EAAI;AAEJ,WAAO;AAAA,MACN,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,4BAA4B;AAAA,MAC5B,kCAAkC;AAAA,IACnC;AAAA,EACD,GAAG,CAAE,WAAW,QAAQ,gBAAgB,oBAAqB,CAAE;AAE/D,QAAM,iBAAa,mCAAc;AAEjC,QAAM,sBAAkB,yCAAqB,YAAY;AAAA,IACxD,+BAA+B;AAAA,IAC/B,UAAU;AAAA,IACV,cAAc;AAAA,IACd,gBAAgB;AAAA,EACjB,CAAE;AAEF,SACC,4CAAC,4CAAqB,OAAQ,cAC7B,uDAAC,SAAM,GAAG,iBACT;AAAA;AAAA,MAAC,gBAAAC;AAAA,MAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,IACE,gBAAgB;AAAA,KACnB,GACD;AAEF;AAEA,IAAO,eAAQ;",
6
+ "names": ["blockEditorStore", "useTabListSync", "Controls"]
7
7
  }
@@ -48,22 +48,22 @@ var settings = {
48
48
  example: {
49
49
  innerBlocks: [
50
50
  {
51
- name: "core/tabs-menu",
51
+ name: "core/tab-list",
52
52
  innerBlocks: [
53
53
  {
54
- name: "core/tabs-menu-item",
54
+ name: "core/tab",
55
55
  attributes: { anchor: "tab-1-button" }
56
56
  },
57
57
  {
58
- name: "core/tabs-menu-item",
58
+ name: "core/tab",
59
59
  attributes: { anchor: "tab-2-button" }
60
60
  }
61
61
  ]
62
62
  },
63
63
  {
64
- name: "core/tab-panel",
64
+ name: "core/tab-panels",
65
65
  innerBlocks: [1, 2].map((index) => ({
66
- name: "core/tab",
66
+ name: "core/tab-panel",
67
67
  attributes: {
68
68
  anchor: `tab-${index}`,
69
69
  label: (0, import_i18n.sprintf)(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tabs/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { tabs as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport save from './save';\nimport metadata from './block.json';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/tabs-menu',\n\t\t\t\tinnerBlocks: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'core/tabs-menu-item',\n\t\t\t\t\t\tattributes: { anchor: 'tab-1-button' },\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'core/tabs-menu-item',\n\t\t\t\t\t\tattributes: { anchor: 'tab-2-button' },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/tab-panel',\n\t\t\t\tinnerBlocks: [ 1, 2 ].map( ( index ) => ( {\n\t\t\t\t\tname: 'core/tab',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tanchor: `tab-${ index }`,\n\t\t\t\t\t\tlabel: sprintf(\n\t\t\t\t\t\t\t/** translators: %s: tab index number */\n\t\t\t\t\t\t\t__( 'Tab %s' ),\n\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\tinnerBlocks: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'core/paragraph',\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tcontent: __(\n\t\t\t\t\t\t\t\t\t'In a village of La Mancha, the name of which I have no desire to call to mind, there lived not long since one of those gentlemen that keep a lance in the lance-rack, an old buckler, a lean hack, and a greyhound for coursing.'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t} ) ),\n\t\t\t},\n\t\t],\n\t},\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { tabs as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport save from './save';\nimport metadata from './block.json';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/tab-list',\n\t\t\t\tinnerBlocks: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'core/tab',\n\t\t\t\t\t\tattributes: { anchor: 'tab-1-button' },\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'core/tab',\n\t\t\t\t\t\tattributes: { anchor: 'tab-2-button' },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/tab-panels',\n\t\t\t\tinnerBlocks: [ 1, 2 ].map( ( index ) => ( {\n\t\t\t\t\tname: 'core/tab-panel',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tanchor: `tab-${ index }`,\n\t\t\t\t\t\tlabel: sprintf(\n\t\t\t\t\t\t\t/** translators: %s: tab index number */\n\t\t\t\t\t\t\t__( 'Tab %s' ),\n\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\tinnerBlocks: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'core/paragraph',\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tcontent: __(\n\t\t\t\t\t\t\t\t\t'In a village of La Mancha, the name of which I have no desire to call to mind, there lived not long since one of those gentlemen that keep a lance in the lance-rack, an old buckler, a lean hack, and a greyhound for coursing.'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t} ) ),\n\t\t\t},\n\t\t],\n\t},\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,+BAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAGA,kBAA4B;AAC5B,mBAA6B;AAK7B,wBAAsB;AACtB,kBAAiB;AACjB,kBAAiB;AACjB,mBAAqB;AAErB,IAAM,EAAE,KAAK,IAAI,aAAAA;AAIV,IAAM,WAAW;AAAA,EACvB,mBAAAC;AAAA,EACA,SAAS;AAAA,IACR,aAAa;AAAA,MACZ;AAAA,QACC,MAAM;AAAA,QACN,aAAa;AAAA,UACZ;AAAA,YACC,MAAM;AAAA,YACN,YAAY,EAAE,QAAQ,eAAe;AAAA,UACtC;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,YAAY,EAAE,QAAQ,eAAe;AAAA,UACtC;AAAA,QACD;AAAA,MACD;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,aAAa,CAAE,GAAG,CAAE,EAAE,IAAK,CAAE,WAAa;AAAA,UACzC,MAAM;AAAA,UACN,YAAY;AAAA,YACX,QAAQ,OAAQ,KAAM;AAAA,YACtB,WAAO;AAAA;AAAA,kBAEN,gBAAI,QAAS;AAAA,cACb;AAAA,YACD;AAAA,UACD;AAAA,UACA,aAAa;AAAA,YACZ;AAAA,cACC,MAAM;AAAA,cACN,YAAY;AAAA,gBACX,aAAS;AAAA,kBACR;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD,EAAI;AAAA,MACL;AAAA,IACD;AAAA,EACD;AAAA,EACA,kBAAAC;AAAA,EACA,kBAAAC;AACD;AAEO,IAAM,OAAO,UAAM,kBAAAC,SAAW,EAAE,MAAM,uBAAAC,SAAU,SAAS,CAAE;",
6
6
  "names": ["metadata", "icon", "edit", "save", "initBlock", "metadata"]
7
7
  }
@@ -17,21 +17,21 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // packages/block-library/src/tabs/use-tab-menu-sync.js
21
- var use_tab_menu_sync_exports = {};
22
- __export(use_tab_menu_sync_exports, {
23
- default: () => useTabMenuSync
20
+ // packages/block-library/src/tabs/use-tab-list-sync.js
21
+ var use_tab_list_sync_exports = {};
22
+ __export(use_tab_list_sync_exports, {
23
+ default: () => useTabListSync
24
24
  });
25
- module.exports = __toCommonJS(use_tab_menu_sync_exports);
25
+ module.exports = __toCommonJS(use_tab_list_sync_exports);
26
26
  var import_blocks = require("@wordpress/blocks");
27
27
  var import_block_editor = require("@wordpress/block-editor");
28
28
  var import_data = require("@wordpress/data");
29
29
  var import_element = require("@wordpress/element");
30
- function useTabMenuSync({
30
+ function useTabListSync({
31
+ tabPanels,
31
32
  tabs,
32
- menuItems,
33
- tabPanelClientId,
34
- tabsMenuClientId
33
+ tabPanelsClientId,
34
+ tabsListClientId
35
35
  }) {
36
36
  const {
37
37
  removeBlock,
@@ -43,150 +43,148 @@ function useTabMenuSync({
43
43
  (0, import_element.useEffect)(() => {
44
44
  if (prevSyncStateRef.current === null) {
45
45
  prevSyncStateRef.current = {
46
- tabs: [...tabs],
47
- menuItems: [...menuItems]
46
+ tabPanels: [...tabPanels],
47
+ tabs: [...tabs]
48
48
  };
49
49
  return;
50
50
  }
51
- const { tabs: prevTabs, menuItems: prevMenuItems } = prevSyncStateRef.current;
51
+ const { tabPanels: prevTabPanels, tabs: prevTabs } = prevSyncStateRef.current;
52
+ const tabPanelCountChange = tabPanels.length - prevTabPanels.length;
52
53
  const tabCountChange = tabs.length - prevTabs.length;
53
- const menuItemCountChange = menuItems.length - prevMenuItems.length;
54
+ const tabPanelsInserted = tabPanelCountChange > 0;
54
55
  const tabsInserted = tabCountChange > 0;
55
- const menuItemsInserted = menuItemCountChange > 0;
56
- if (tabCountChange === menuItemCountChange) {
57
- if (tabCountChange === 0 && tabPanelClientId && menuItems.some(
58
- (m, i) => m.clientId !== prevMenuItems[i]?.clientId
59
- )) {
60
- const reorderedTabs = menuItems.map((menuItem) => {
61
- const oldIndex = prevMenuItems.findIndex(
62
- (pm) => pm.clientId === menuItem.clientId
56
+ if (tabPanelCountChange === tabCountChange) {
57
+ if (tabPanelCountChange === 0 && tabPanelsClientId && tabs.some((m, i) => m.clientId !== prevTabs[i]?.clientId)) {
58
+ const reorderedTabPanels = tabs.map((tab) => {
59
+ const oldIndex = prevTabs.findIndex(
60
+ (pm) => pm.clientId === tab.clientId
63
61
  );
64
- return oldIndex !== -1 ? tabs[oldIndex] : null;
62
+ return oldIndex !== -1 ? tabPanels[oldIndex] : null;
65
63
  }).filter(Boolean);
66
- if (reorderedTabs.length === tabs.length) {
64
+ if (reorderedTabPanels.length === tabPanels.length) {
67
65
  __unstableMarkNextChangeAsNotPersistent();
68
66
  replaceInnerBlocks(
69
- tabPanelClientId,
70
- reorderedTabs,
67
+ tabPanelsClientId,
68
+ reorderedTabPanels,
71
69
  false
72
70
  );
73
71
  }
74
72
  }
75
73
  prevSyncStateRef.current = {
76
- tabs: [...tabs],
77
- menuItems: [...menuItems]
74
+ tabPanels: [...tabPanels],
75
+ tabs: [...tabs]
78
76
  };
79
77
  return;
80
78
  }
81
- if (tabCountChange > 0 && menuItemCountChange > 0 || tabCountChange < 0 && menuItemCountChange < 0) {
79
+ if (tabPanelCountChange > 0 && tabCountChange > 0 || tabPanelCountChange < 0 && tabCountChange < 0) {
82
80
  prevSyncStateRef.current = {
83
- tabs: [...tabs],
84
- menuItems: [...menuItems]
81
+ tabPanels: [...tabPanels],
82
+ tabs: [...tabs]
85
83
  };
86
84
  return;
87
85
  }
88
- if (tabsInserted && !tabsMenuClientId) {
86
+ if (tabPanelsInserted && !tabsListClientId) {
89
87
  return;
90
88
  }
91
- if (menuItemsInserted && !tabPanelClientId) {
89
+ if (tabsInserted && !tabPanelsClientId) {
92
90
  return;
93
91
  }
94
92
  prevSyncStateRef.current = {
95
- tabs: [...tabs],
96
- menuItems: [...menuItems]
93
+ tabPanels: [...tabPanels],
94
+ tabs: [...tabs]
97
95
  };
98
- const currentTabIds = new Set(tabs.map((t) => t.clientId));
99
- const currentMenuItemIds = new Set(
100
- menuItems.map((m) => m.clientId)
96
+ const currentTabPanelIds = new Set(
97
+ tabPanels.map((t) => t.clientId)
101
98
  );
102
- if (tabCountChange < 0) {
103
- const removedIndices = prevTabs.map(
104
- (t, i) => !currentTabIds.has(t.clientId) ? i : -1
99
+ const currentTabIds = new Set(tabs.map((m) => m.clientId));
100
+ if (tabPanelCountChange < 0) {
101
+ const removedIndices = prevTabPanels.map(
102
+ (t, i) => !currentTabPanelIds.has(t.clientId) ? i : -1
105
103
  ).filter((i) => i !== -1);
106
104
  const removedSet = new Set(removedIndices);
107
105
  removedIndices.forEach((removedIndex) => {
108
- if (menuItems[removedIndex]) {
106
+ if (tabs[removedIndex]) {
109
107
  __unstableMarkNextChangeAsNotPersistent();
110
- removeBlock(menuItems[removedIndex].clientId, false);
108
+ removeBlock(tabs[removedIndex].clientId, false);
111
109
  }
112
110
  });
113
- prevSyncStateRef.current.menuItems = prevSyncStateRef.current.menuItems.filter(
111
+ prevSyncStateRef.current.tabs = prevSyncStateRef.current.tabs.filter(
114
112
  (_, i) => !removedSet.has(i)
115
113
  );
116
- } else if (menuItemCountChange < 0) {
117
- const removedIndices = prevMenuItems.map(
118
- (m, i) => !currentMenuItemIds.has(m.clientId) ? i : -1
114
+ } else if (tabCountChange < 0) {
115
+ const removedIndices = prevTabs.map(
116
+ (m, i) => !currentTabIds.has(m.clientId) ? i : -1
119
117
  ).filter((i) => i !== -1);
120
118
  const removedSet = new Set(removedIndices);
121
119
  removedIndices.forEach((removedIndex) => {
122
- if (tabs[removedIndex]) {
120
+ if (tabPanels[removedIndex]) {
123
121
  __unstableMarkNextChangeAsNotPersistent();
124
- removeBlock(tabs[removedIndex].clientId, false);
122
+ removeBlock(tabPanels[removedIndex].clientId, false);
125
123
  }
126
124
  });
127
- prevSyncStateRef.current.tabs = prevSyncStateRef.current.tabs.filter(
125
+ prevSyncStateRef.current.tabPanels = prevSyncStateRef.current.tabPanels.filter(
128
126
  (_, i) => !removedSet.has(i)
129
127
  );
130
- } else if (tabsInserted) {
131
- const prevTabIds = new Set(prevTabs.map((t) => t.clientId));
132
- const newMenuItems = tabs.map(
133
- (tab, tabIndex) => !prevTabIds.has(tab.clientId) ? {
134
- tabIndex,
135
- block: (0, import_blocks.createBlock)("core/tabs-menu-item", {})
128
+ } else if (tabPanelsInserted) {
129
+ const prevTabPanelIds = new Set(
130
+ prevTabPanels.map((t) => t.clientId)
131
+ );
132
+ const newTabs = tabPanels.map(
133
+ (tabPanel, tabPanelIndex) => !prevTabPanelIds.has(tabPanel.clientId) ? {
134
+ tabPanelIndex,
135
+ block: (0, import_blocks.createBlock)("core/tab", {})
136
136
  } : null
137
137
  ).filter(Boolean);
138
- if (newMenuItems.length > 0) {
138
+ if (newTabs.length > 0) {
139
139
  __unstableMarkNextChangeAsNotPersistent();
140
140
  insertBlocks(
141
- newMenuItems.map(({ block }) => block),
142
- newMenuItems[0].tabIndex,
143
- tabsMenuClientId,
141
+ newTabs.map(({ block }) => block),
142
+ newTabs[0].tabPanelIndex,
143
+ tabsListClientId,
144
144
  false
145
145
  );
146
- newMenuItems.forEach(({ tabIndex, block }) => {
147
- prevSyncStateRef.current.menuItems.splice(tabIndex, 0, {
146
+ newTabs.forEach(({ tabPanelIndex, block }) => {
147
+ prevSyncStateRef.current.tabs.splice(tabPanelIndex, 0, {
148
148
  clientId: block.clientId
149
149
  });
150
150
  });
151
151
  }
152
- } else if (menuItemsInserted) {
153
- const prevMenuItemIds = new Set(
154
- prevMenuItems.map((m) => m.clientId)
155
- );
156
- const newTabs = menuItems.map((menuItem, menuItemIndex) => {
157
- if (prevMenuItemIds.has(menuItem.clientId)) {
152
+ } else if (tabsInserted) {
153
+ const prevTabIds = new Set(prevTabs.map((m) => m.clientId));
154
+ const newTabPanels = tabs.map((tab, tabIndex) => {
155
+ if (prevTabIds.has(tab.clientId)) {
158
156
  return null;
159
157
  }
160
- const label = tabs[menuItemIndex - 1]?.attributes?.label ?? tabs[menuItemIndex]?.attributes?.label ?? "";
158
+ const label = tabPanels[tabIndex - 1]?.attributes?.label ?? tabPanels[tabIndex]?.attributes?.label ?? "";
161
159
  return {
162
- menuItemIndex,
163
- block: (0, import_blocks.createBlock)("core/tab", { label })
160
+ tabIndex,
161
+ block: (0, import_blocks.createBlock)("core/tab-panel", { label })
164
162
  };
165
163
  }).filter(Boolean);
166
- if (newTabs.length > 0) {
164
+ if (newTabPanels.length > 0) {
167
165
  __unstableMarkNextChangeAsNotPersistent();
168
166
  insertBlocks(
169
- newTabs.map(({ block }) => block),
170
- newTabs[0].menuItemIndex,
171
- tabPanelClientId,
167
+ newTabPanels.map(({ block }) => block),
168
+ newTabPanels[0].tabIndex,
169
+ tabPanelsClientId,
172
170
  false
173
171
  );
174
- newTabs.forEach(({ menuItemIndex, block }) => {
175
- prevSyncStateRef.current.tabs.splice(menuItemIndex, 0, {
172
+ newTabPanels.forEach(({ tabIndex, block }) => {
173
+ prevSyncStateRef.current.tabPanels.splice(tabIndex, 0, {
176
174
  clientId: block.clientId
177
175
  });
178
176
  });
179
177
  }
180
178
  }
181
179
  }, [
180
+ tabPanels,
182
181
  tabs,
183
- menuItems,
184
182
  removeBlock,
185
183
  insertBlocks,
186
184
  replaceInnerBlocks,
187
185
  __unstableMarkNextChangeAsNotPersistent,
188
- tabsMenuClientId,
189
- tabPanelClientId
186
+ tabsListClientId,
187
+ tabPanelsClientId
190
188
  ]);
191
189
  }
192
- //# sourceMappingURL=use-tab-menu-sync.cjs.map
190
+ //# sourceMappingURL=use-tab-list-sync.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/tabs/use-tab-list-sync.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useDispatch } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\n\n/**\n * Keep tabs and tab panels in sync when the lists change due to direct\n * user actions (deletion, paste, duplicate, drag-and-drop).\n *\n * Deletion: when one side shrinks, remove the counterpart at the same index.\n * Insertion: when one side grows without the other, insert the missing\n * counterpart at the matching index.\n *\n * When both lists change simultaneously (e.g. the \"Add Tab\" toolbar button,\n * which inserts both at once), no action is needed and the effect exits early.\n *\n * @param {Object} props\n * @param {Array} props.tabs Raw core/tab block objects.\n * @param {Array} props.tabPanels Raw core/tab-panel block objects.\n * @param {string|null} props.tabPanelsClientId Client ID of the core/tab-panels block.\n * @param {string|null} props.tabsListClientId Client ID of the core/tab-list block.\n */\nexport default function useTabListSync( {\n\ttabPanels,\n\ttabs,\n\ttabPanelsClientId,\n\ttabsListClientId,\n} ) {\n\tconst {\n\t\tremoveBlock,\n\t\tinsertBlocks,\n\t\treplaceInnerBlocks,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tconst prevSyncStateRef = useRef( null );\n\tuseEffect( () => {\n\t\tif ( prevSyncStateRef.current === null ) {\n\t\t\tprevSyncStateRef.current = {\n\t\t\t\ttabPanels: [ ...tabPanels ],\n\t\t\t\ttabs: [ ...tabs ],\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\tconst { tabPanels: prevTabPanels, tabs: prevTabs } =\n\t\t\tprevSyncStateRef.current;\n\n\t\tconst tabPanelCountChange = tabPanels.length - prevTabPanels.length;\n\t\tconst tabCountChange = tabs.length - prevTabs.length;\n\n\t\tconst tabPanelsInserted = tabPanelCountChange > 0;\n\t\tconst tabsInserted = tabCountChange > 0;\n\n\t\t// Both sides changed by the same amount.\n\t\t// Covers: no-op re-renders, \"Add Tab\" toolbar, and toolbar-remove.\n\t\t// Also handles drag-and-drop reordering of tabs.\n\t\tif ( tabPanelCountChange === tabCountChange ) {\n\t\t\t// When lengths are equal but order changed, the user reordered tabs\n\t\t\t// via drag-and-drop. Reorder the tab panel blocks to match.\n\t\t\tif (\n\t\t\t\ttabPanelCountChange === 0 &&\n\t\t\t\ttabPanelsClientId &&\n\t\t\t\ttabs.some( ( m, i ) => m.clientId !== prevTabs[ i ]?.clientId )\n\t\t\t) {\n\t\t\t\tconst reorderedTabPanels = tabs\n\t\t\t\t\t.map( ( tab ) => {\n\t\t\t\t\t\tconst oldIndex = prevTabs.findIndex(\n\t\t\t\t\t\t\t( pm ) => pm.clientId === tab.clientId\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn oldIndex !== -1 ? tabPanels[ oldIndex ] : null;\n\t\t\t\t\t} )\n\t\t\t\t\t.filter( Boolean );\n\t\t\t\tif ( reorderedTabPanels.length === tabPanels.length ) {\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\t\ttabPanelsClientId,\n\t\t\t\t\t\treorderedTabPanels,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tprevSyncStateRef.current = {\n\t\t\t\ttabPanels: [ ...tabPanels ],\n\t\t\t\ttabs: [ ...tabs ],\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\t// Both sides changed in the same direction but by different amounts.\n\t\t// Bail without making a partial fix.\n\t\tif (\n\t\t\t( tabPanelCountChange > 0 && tabCountChange > 0 ) ||\n\t\t\t( tabPanelCountChange < 0 && tabCountChange < 0 )\n\t\t) {\n\t\t\tprevSyncStateRef.current = {\n\t\t\t\ttabPanels: [ ...tabPanels ],\n\t\t\t\ttabs: [ ...tabs ],\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\t// If the required container block isn't available yet, bail without\n\t\t// updating the snapshot so the next render re-evaluates the same count change.\n\t\tif ( tabPanelsInserted && ! tabsListClientId ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( tabsInserted && ! tabPanelsClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Update snapshot to the current state.\n\t\tprevSyncStateRef.current = {\n\t\t\ttabPanels: [ ...tabPanels ],\n\t\t\ttabs: [ ...tabs ],\n\t\t};\n\n\t\tconst currentTabPanelIds = new Set(\n\t\t\ttabPanels.map( ( t ) => t.clientId )\n\t\t);\n\t\tconst currentTabIds = new Set( tabs.map( ( m ) => m.clientId ) );\n\n\t\tif ( tabPanelCountChange < 0 ) {\n\t\t\t// Remove the tab at the same position as each deleted tab panel.\n\t\t\tconst removedIndices = prevTabPanels\n\t\t\t\t.map( ( t, i ) =>\n\t\t\t\t\t! currentTabPanelIds.has( t.clientId ) ? i : -1\n\t\t\t\t)\n\t\t\t\t.filter( ( i ) => i !== -1 );\n\t\t\tconst removedSet = new Set( removedIndices );\n\t\t\tremovedIndices.forEach( ( removedIndex ) => {\n\t\t\t\tif ( tabs[ removedIndex ] ) {\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tremoveBlock( tabs[ removedIndex ].clientId, false );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tprevSyncStateRef.current.tabs =\n\t\t\t\tprevSyncStateRef.current.tabs.filter(\n\t\t\t\t\t( _, i ) => ! removedSet.has( i )\n\t\t\t\t);\n\t\t} else if ( tabCountChange < 0 ) {\n\t\t\t// Remove the tab panel at the same position as each deleted tab.\n\t\t\tconst removedIndices = prevTabs\n\t\t\t\t.map( ( m, i ) =>\n\t\t\t\t\t! currentTabIds.has( m.clientId ) ? i : -1\n\t\t\t\t)\n\t\t\t\t.filter( ( i ) => i !== -1 );\n\t\t\tconst removedSet = new Set( removedIndices );\n\t\t\tremovedIndices.forEach( ( removedIndex ) => {\n\t\t\t\tif ( tabPanels[ removedIndex ] ) {\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tremoveBlock( tabPanels[ removedIndex ].clientId, false );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tprevSyncStateRef.current.tabPanels =\n\t\t\t\tprevSyncStateRef.current.tabPanels.filter(\n\t\t\t\t\t( _, i ) => ! removedSet.has( i )\n\t\t\t\t);\n\t\t} else if ( tabPanelsInserted ) {\n\t\t\t// A tab panel was pasted or duplicated \u2014 insert a matching tab.\n\t\t\tconst prevTabPanelIds = new Set(\n\t\t\t\tprevTabPanels.map( ( t ) => t.clientId )\n\t\t\t);\n\t\t\tconst newTabs = tabPanels\n\t\t\t\t.map( ( tabPanel, tabPanelIndex ) =>\n\t\t\t\t\t! prevTabPanelIds.has( tabPanel.clientId )\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttabPanelIndex,\n\t\t\t\t\t\t\t\tblock: createBlock( 'core/tab', {} ),\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: null\n\t\t\t\t)\n\t\t\t\t.filter( Boolean );\n\n\t\t\tif ( newTabs.length > 0 ) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tinsertBlocks(\n\t\t\t\t\tnewTabs.map( ( { block } ) => block ),\n\t\t\t\t\tnewTabs[ 0 ].tabPanelIndex,\n\t\t\t\t\ttabsListClientId,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tnewTabs.forEach( ( { tabPanelIndex, block } ) => {\n\t\t\t\t\tprevSyncStateRef.current.tabs.splice( tabPanelIndex, 0, {\n\t\t\t\t\t\tclientId: block.clientId,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\t\t} else if ( tabsInserted ) {\n\t\t\t// A tab was pasted or duplicated \u2014 insert a matching tab panels,\n\t\t\t// copying the label from the adjacent tab panel.\n\t\t\tconst prevTabIds = new Set( prevTabs.map( ( m ) => m.clientId ) );\n\t\t\tconst newTabPanels = tabs\n\t\t\t\t.map( ( tab, tabIndex ) => {\n\t\t\t\t\tif ( prevTabIds.has( tab.clientId ) ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tconst label =\n\t\t\t\t\t\ttabPanels[ tabIndex - 1 ]?.attributes?.label ??\n\t\t\t\t\t\ttabPanels[ tabIndex ]?.attributes?.label ??\n\t\t\t\t\t\t'';\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\tblock: createBlock( 'core/tab-panel', { label } ),\n\t\t\t\t\t};\n\t\t\t\t} )\n\t\t\t\t.filter( Boolean );\n\n\t\t\tif ( newTabPanels.length > 0 ) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tinsertBlocks(\n\t\t\t\t\tnewTabPanels.map( ( { block } ) => block ),\n\t\t\t\t\tnewTabPanels[ 0 ].tabIndex,\n\t\t\t\t\ttabPanelsClientId,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tnewTabPanels.forEach( ( { tabIndex, block } ) => {\n\t\t\t\t\tprevSyncStateRef.current.tabPanels.splice( tabIndex, 0, {\n\t\t\t\t\t\tclientId: block.clientId,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}, [\n\t\ttabPanels,\n\t\ttabs,\n\t\tremoveBlock,\n\t\tinsertBlocks,\n\t\treplaceInnerBlocks,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\ttabsListClientId,\n\t\ttabPanelsClientId,\n\t] );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["blockEditorStore"]
7
+ }
@@ -147,7 +147,7 @@ function IncludeControl({
147
147
  onInputChange: debouncedSearch,
148
148
  suggestions,
149
149
  onChange: onTermChange,
150
- __experimentalShowHowTo: false,
150
+ help: "",
151
151
  ...props
152
152
  }
153
153
  );
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/terms-query/edit/inspector-controls/include-control.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { FormTokenField } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, useEffect, useMemo } from '@wordpress/element';\nimport { useDebounce } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nconst EMPTY_ARRAY = [];\nconst BASE_QUERY = {\n\torder: 'asc',\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nexport default function IncludeControl( {\n\tvalue: include,\n\ttaxonomy,\n\tonChange,\n\t...props\n} ) {\n\tconst [ search, setSearch ] = useState( '' );\n\tconst [ value, setValue ] = useState( EMPTY_ARRAY );\n\tconst [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );\n\tconst debouncedSearch = useDebounce( setSearch, 250 );\n\n\tconst { searchResults, searchHasResolved } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! search ) {\n\t\t\t\treturn { searchResults: EMPTY_ARRAY, searchHasResolved: true };\n\t\t\t}\n\t\t\tconst { getEntityRecords, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst selectorArgs = [\n\t\t\t\t'taxonomy',\n\t\t\t\ttaxonomy,\n\t\t\t\t{\n\t\t\t\t\t...BASE_QUERY,\n\t\t\t\t\tsearch,\n\t\t\t\t\torderby: 'name',\n\t\t\t\t\texclude: include,\n\t\t\t\t\tper_page: 20,\n\t\t\t\t},\n\t\t\t];\n\t\t\treturn {\n\t\t\t\tsearchResults: getEntityRecords( ...selectorArgs ),\n\t\t\t\tsearchHasResolved: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\tselectorArgs\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ search, taxonomy, include ]\n\t);\n\n\tconst currentTerms = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! include?.length ) {\n\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t}\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\t\t\treturn getEntityRecords( 'taxonomy', taxonomy, {\n\t\t\t\t...BASE_QUERY,\n\t\t\t\tinclude,\n\t\t\t\tper_page: include.length,\n\t\t\t} );\n\t\t},\n\t\t[ include, taxonomy ]\n\t);\n\n\t// Update the `value` state only after the selectors are resolved\n\t// to avoid emptying the input when we're changing terms.\n\tuseEffect( () => {\n\t\tif ( ! include?.length ) {\n\t\t\tsetValue( EMPTY_ARRAY );\n\t\t}\n\t\tif ( ! currentTerms?.length ) {\n\t\t\treturn;\n\t\t}\n\t\t// Returns only the existing entity ids. This prevents the component\n\t\t// from crashing in the editor, when non existing ids are provided.\n\t\tconst sanitizedValue = include.reduce( ( accumulator, id ) => {\n\t\t\tconst entity = currentTerms.find( ( term ) => term.id === id );\n\t\t\tif ( entity ) {\n\t\t\t\taccumulator.push( {\n\t\t\t\t\tid,\n\t\t\t\t\tvalue: decodeEntities( entity.name ),\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t}, [] );\n\t\tsetValue( sanitizedValue );\n\t}, [ include, currentTerms ] );\n\n\tconst entitiesInfo = useMemo( () => {\n\t\tif ( ! searchResults?.length ) {\n\t\t\treturn { names: EMPTY_ARRAY, mapByName: {} };\n\t\t}\n\t\tconst names = [];\n\t\tconst mapByName = {};\n\t\tsearchResults.forEach( ( result ) => {\n\t\t\tconst decodedName = decodeEntities( result.name );\n\t\t\tnames.push( decodedName );\n\t\t\tmapByName[ decodedName ] = result;\n\t\t} );\n\t\treturn { names, mapByName };\n\t}, [ searchResults ] );\n\n\t// Update suggestions only when the query has resolved.\n\tuseEffect( () => {\n\t\tif ( ! searchHasResolved ) {\n\t\t\treturn;\n\t\t}\n\t\tsetSuggestions( entitiesInfo.names );\n\t}, [ entitiesInfo.names, searchHasResolved ] );\n\n\tconst getIdByValue = ( entitiesMappedByName, entity ) =>\n\t\tentity?.id || entitiesMappedByName?.[ entity ]?.id;\n\n\tconst onTermChange = ( newValue ) => {\n\t\tconst ids = Array.from(\n\t\t\tnewValue.reduce( ( accumulator, entity ) => {\n\t\t\t\t// Verify that new values point to existing entities.\n\t\t\t\tconst id = getIdByValue( entitiesInfo.mapByName, entity );\n\t\t\t\tif ( id ) {\n\t\t\t\t\taccumulator.add( id );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t}, new Set() )\n\t\t);\n\t\tsetSuggestions( EMPTY_ARRAY );\n\t\tonChange( ids );\n\t};\n\n\treturn (\n\t\t<FormTokenField\n\t\t\t__next40pxDefaultSize\n\t\t\tvalue={ value }\n\t\t\tonInputChange={ debouncedSearch }\n\t\t\tsuggestions={ suggestions }\n\t\t\tonChange={ onTermChange }\n\t\t\t__experimentalShowHowTo={ false }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAA+B;AAC/B,kBAA0B;AAC1B,uBAAmC;AACnC,qBAA6C;AAC7C,qBAA4B;AAC5B,2BAA+B;AAiI7B;AA/HF,IAAM,cAAc,CAAC;AACrB,IAAM,aAAa;AAAA,EAClB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AACV;AAEe,SAAR,eAAiC;AAAA,EACvC,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,GAAG;AACJ,GAAI;AACH,QAAM,CAAE,QAAQ,SAAU,QAAI,yBAAU,EAAG;AAC3C,QAAM,CAAE,OAAO,QAAS,QAAI,yBAAU,WAAY;AAClD,QAAM,CAAE,aAAa,cAAe,QAAI,yBAAU,WAAY;AAC9D,QAAM,sBAAkB,4BAAa,WAAW,GAAI;AAEpD,QAAM,EAAE,eAAe,kBAAkB,QAAI;AAAA,IAC5C,CAAE,WAAY;AACb,UAAK,CAAE,QAAS;AACf,eAAO,EAAE,eAAe,aAAa,mBAAmB,KAAK;AAAA,MAC9D;AACA,YAAM,EAAE,kBAAkB,sBAAsB,IAC/C,OAAQ,iBAAAA,KAAU;AACnB,YAAM,eAAe;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,UACC,GAAG;AAAA,UACH;AAAA,UACA,SAAS;AAAA,UACT,SAAS;AAAA,UACT,UAAU;AAAA,QACX;AAAA,MACD;AACA,aAAO;AAAA,QACN,eAAe,iBAAkB,GAAG,YAAa;AAAA,QACjD,mBAAmB;AAAA,UAClB;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,QAAQ,UAAU,OAAQ;AAAA,EAC7B;AAEA,QAAM,mBAAe;AAAA,IACpB,CAAE,WAAY;AACb,UAAK,CAAE,SAAS,QAAS;AACxB,eAAO;AAAA,MACR;AACA,YAAM,EAAE,iBAAiB,IAAI,OAAQ,iBAAAA,KAAU;AAC/C,aAAO,iBAAkB,YAAY,UAAU;AAAA,QAC9C,GAAG;AAAA,QACH;AAAA,QACA,UAAU,QAAQ;AAAA,MACnB,CAAE;AAAA,IACH;AAAA,IACA,CAAE,SAAS,QAAS;AAAA,EACrB;AAIA,gCAAW,MAAM;AAChB,QAAK,CAAE,SAAS,QAAS;AACxB,eAAU,WAAY;AAAA,IACvB;AACA,QAAK,CAAE,cAAc,QAAS;AAC7B;AAAA,IACD;AAGA,UAAM,iBAAiB,QAAQ,OAAQ,CAAE,aAAa,OAAQ;AAC7D,YAAM,SAAS,aAAa,KAAM,CAAE,SAAU,KAAK,OAAO,EAAG;AAC7D,UAAK,QAAS;AACb,oBAAY,KAAM;AAAA,UACjB;AAAA,UACA,WAAO,qCAAgB,OAAO,IAAK;AAAA,QACpC,CAAE;AAAA,MACH;AACA,aAAO;AAAA,IACR,GAAG,CAAC,CAAE;AACN,aAAU,cAAe;AAAA,EAC1B,GAAG,CAAE,SAAS,YAAa,CAAE;AAE7B,QAAM,mBAAe,wBAAS,MAAM;AACnC,QAAK,CAAE,eAAe,QAAS;AAC9B,aAAO,EAAE,OAAO,aAAa,WAAW,CAAC,EAAE;AAAA,IAC5C;AACA,UAAM,QAAQ,CAAC;AACf,UAAM,YAAY,CAAC;AACnB,kBAAc,QAAS,CAAE,WAAY;AACpC,YAAM,kBAAc,qCAAgB,OAAO,IAAK;AAChD,YAAM,KAAM,WAAY;AACxB,gBAAW,WAAY,IAAI;AAAA,IAC5B,CAAE;AACF,WAAO,EAAE,OAAO,UAAU;AAAA,EAC3B,GAAG,CAAE,aAAc,CAAE;AAGrB,gCAAW,MAAM;AAChB,QAAK,CAAE,mBAAoB;AAC1B;AAAA,IACD;AACA,mBAAgB,aAAa,KAAM;AAAA,EACpC,GAAG,CAAE,aAAa,OAAO,iBAAkB,CAAE;AAE7C,QAAM,eAAe,CAAE,sBAAsB,WAC5C,QAAQ,MAAM,uBAAwB,MAAO,GAAG;AAEjD,QAAM,eAAe,CAAE,aAAc;AACpC,UAAM,MAAM,MAAM;AAAA,MACjB,SAAS,OAAQ,CAAE,aAAa,WAAY;AAE3C,cAAM,KAAK,aAAc,aAAa,WAAW,MAAO;AACxD,YAAK,IAAK;AACT,sBAAY,IAAK,EAAG;AAAA,QACrB;AACA,eAAO;AAAA,MACR,GAAG,oBAAI,IAAI,CAAE;AAAA,IACd;AACA,mBAAgB,WAAY;AAC5B,aAAU,GAAI;AAAA,EACf;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,uBAAqB;AAAA,MACrB;AAAA,MACA,eAAgB;AAAA,MAChB;AAAA,MACA,UAAW;AAAA,MACX,yBAA0B;AAAA,MACxB,GAAG;AAAA;AAAA,EACN;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { FormTokenField } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, useEffect, useMemo } from '@wordpress/element';\nimport { useDebounce } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nconst EMPTY_ARRAY = [];\nconst BASE_QUERY = {\n\torder: 'asc',\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nexport default function IncludeControl( {\n\tvalue: include,\n\ttaxonomy,\n\tonChange,\n\t...props\n} ) {\n\tconst [ search, setSearch ] = useState( '' );\n\tconst [ value, setValue ] = useState( EMPTY_ARRAY );\n\tconst [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );\n\tconst debouncedSearch = useDebounce( setSearch, 250 );\n\n\tconst { searchResults, searchHasResolved } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! search ) {\n\t\t\t\treturn { searchResults: EMPTY_ARRAY, searchHasResolved: true };\n\t\t\t}\n\t\t\tconst { getEntityRecords, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst selectorArgs = [\n\t\t\t\t'taxonomy',\n\t\t\t\ttaxonomy,\n\t\t\t\t{\n\t\t\t\t\t...BASE_QUERY,\n\t\t\t\t\tsearch,\n\t\t\t\t\torderby: 'name',\n\t\t\t\t\texclude: include,\n\t\t\t\t\tper_page: 20,\n\t\t\t\t},\n\t\t\t];\n\t\t\treturn {\n\t\t\t\tsearchResults: getEntityRecords( ...selectorArgs ),\n\t\t\t\tsearchHasResolved: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\tselectorArgs\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ search, taxonomy, include ]\n\t);\n\n\tconst currentTerms = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! include?.length ) {\n\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t}\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\t\t\treturn getEntityRecords( 'taxonomy', taxonomy, {\n\t\t\t\t...BASE_QUERY,\n\t\t\t\tinclude,\n\t\t\t\tper_page: include.length,\n\t\t\t} );\n\t\t},\n\t\t[ include, taxonomy ]\n\t);\n\n\t// Update the `value` state only after the selectors are resolved\n\t// to avoid emptying the input when we're changing terms.\n\tuseEffect( () => {\n\t\tif ( ! include?.length ) {\n\t\t\tsetValue( EMPTY_ARRAY );\n\t\t}\n\t\tif ( ! currentTerms?.length ) {\n\t\t\treturn;\n\t\t}\n\t\t// Returns only the existing entity ids. This prevents the component\n\t\t// from crashing in the editor, when non existing ids are provided.\n\t\tconst sanitizedValue = include.reduce( ( accumulator, id ) => {\n\t\t\tconst entity = currentTerms.find( ( term ) => term.id === id );\n\t\t\tif ( entity ) {\n\t\t\t\taccumulator.push( {\n\t\t\t\t\tid,\n\t\t\t\t\tvalue: decodeEntities( entity.name ),\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t}, [] );\n\t\tsetValue( sanitizedValue );\n\t}, [ include, currentTerms ] );\n\n\tconst entitiesInfo = useMemo( () => {\n\t\tif ( ! searchResults?.length ) {\n\t\t\treturn { names: EMPTY_ARRAY, mapByName: {} };\n\t\t}\n\t\tconst names = [];\n\t\tconst mapByName = {};\n\t\tsearchResults.forEach( ( result ) => {\n\t\t\tconst decodedName = decodeEntities( result.name );\n\t\t\tnames.push( decodedName );\n\t\t\tmapByName[ decodedName ] = result;\n\t\t} );\n\t\treturn { names, mapByName };\n\t}, [ searchResults ] );\n\n\t// Update suggestions only when the query has resolved.\n\tuseEffect( () => {\n\t\tif ( ! searchHasResolved ) {\n\t\t\treturn;\n\t\t}\n\t\tsetSuggestions( entitiesInfo.names );\n\t}, [ entitiesInfo.names, searchHasResolved ] );\n\n\tconst getIdByValue = ( entitiesMappedByName, entity ) =>\n\t\tentity?.id || entitiesMappedByName?.[ entity ]?.id;\n\n\tconst onTermChange = ( newValue ) => {\n\t\tconst ids = Array.from(\n\t\t\tnewValue.reduce( ( accumulator, entity ) => {\n\t\t\t\t// Verify that new values point to existing entities.\n\t\t\t\tconst id = getIdByValue( entitiesInfo.mapByName, entity );\n\t\t\t\tif ( id ) {\n\t\t\t\t\taccumulator.add( id );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t}, new Set() )\n\t\t);\n\t\tsetSuggestions( EMPTY_ARRAY );\n\t\tonChange( ids );\n\t};\n\n\treturn (\n\t\t<FormTokenField\n\t\t\t__next40pxDefaultSize\n\t\t\tvalue={ value }\n\t\t\tonInputChange={ debouncedSearch }\n\t\t\tsuggestions={ suggestions }\n\t\t\tonChange={ onTermChange }\n\t\t\thelp=\"\"\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["coreStore"]
7
7
  }