@wordpress/components 28.10.0 → 28.11.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 (576) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/build/autocomplete/autocompleter-ui.js +2 -6
  3. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  4. package/build/autocomplete/autocompleter-ui.native.js +2 -4
  5. package/build/autocomplete/autocompleter-ui.native.js.map +1 -1
  6. package/build/autocomplete/index.js +4 -5
  7. package/build/autocomplete/index.js.map +1 -1
  8. package/build/base-control/types.js.map +1 -1
  9. package/build/border-box-control/border-box-control/component.js +1 -0
  10. package/build/border-box-control/border-box-control/component.js.map +1 -1
  11. package/build/border-box-control/border-box-control/hook.js +6 -0
  12. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  13. package/build/border-control/border-control/component.js +1 -0
  14. package/build/border-control/border-control/component.js.map +1 -1
  15. package/build/border-control/border-control/hook.js +6 -0
  16. package/build/border-control/border-control/hook.js.map +1 -1
  17. package/build/border-control/border-control-dropdown/component.js +12 -12
  18. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  19. package/build/color-palette/index.js +1 -1
  20. package/build/color-palette/index.js.map +1 -1
  21. package/build/color-palette/index.native.js +1 -2
  22. package/build/color-palette/index.native.js.map +1 -1
  23. package/build/color-picker/index.native.js +0 -1
  24. package/build/color-picker/index.native.js.map +1 -1
  25. package/build/composite/legacy/index.js +5 -2
  26. package/build/composite/legacy/index.js.map +1 -1
  27. package/build/custom-gradient-picker/gradient-bar/control-points.js +1 -1
  28. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  29. package/build/date-time/date/index.js +0 -1
  30. package/build/date-time/date/index.js.map +1 -1
  31. package/build/font-size-picker/index.native.js +6 -6
  32. package/build/font-size-picker/index.native.js.map +1 -1
  33. package/build/form-token-field/index.js +0 -3
  34. package/build/form-token-field/index.js.map +1 -1
  35. package/build/form-token-field/suggestions-list.js +7 -3
  36. package/build/form-token-field/suggestions-list.js.map +1 -1
  37. package/build/{dropdown-menu-v2 → menu}/checkbox-item.js +8 -8
  38. package/build/menu/checkbox-item.js.map +1 -0
  39. package/build/{dropdown-menu-v2 → menu}/context.js +2 -2
  40. package/build/menu/context.js.map +1 -0
  41. package/build/{dropdown-menu-v2 → menu}/group-label.js +5 -5
  42. package/build/menu/group-label.js.map +1 -0
  43. package/build/{dropdown-menu-v2 → menu}/group.js +5 -5
  44. package/build/menu/group.js.map +1 -0
  45. package/build/{dropdown-menu-v2 → menu}/index.js +38 -38
  46. package/build/menu/index.js.map +1 -0
  47. package/build/{dropdown-menu-v2 → menu}/item-help-text.js +3 -3
  48. package/build/menu/item-help-text.js.map +1 -0
  49. package/build/{dropdown-menu-v2 → menu}/item-label.js +3 -3
  50. package/build/menu/item-label.js.map +1 -0
  51. package/build/{dropdown-menu-v2 → menu}/item.js +7 -7
  52. package/build/menu/item.js.map +1 -0
  53. package/build/{dropdown-menu-v2 → menu}/radio-item.js +8 -8
  54. package/build/menu/radio-item.js.map +1 -0
  55. package/build/{dropdown-menu-v2 → menu}/separator.js +6 -6
  56. package/build/menu/separator.js.map +1 -0
  57. package/build/menu/styles.js +150 -0
  58. package/build/menu/styles.js.map +1 -0
  59. package/build/menu/types.js.map +1 -0
  60. package/build/menu/use-temporary-focus-visible-fix.js.map +1 -0
  61. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
  62. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  63. package/build/mobile/bottom-sheet/range-cell.native.js +1 -1
  64. package/build/mobile/bottom-sheet/range-cell.native.js.map +1 -1
  65. package/build/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
  66. package/build/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
  67. package/build/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
  68. package/build/mobile/bottom-sheet/sub-sheet/index.native.js.map +1 -1
  69. package/build/mobile/bottom-sheet-select-control/index.native.js +2 -2
  70. package/build/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  71. package/build/mobile/color-settings/index.native.js +1 -3
  72. package/build/mobile/color-settings/index.native.js.map +1 -1
  73. package/build/mobile/color-settings/picker-screen.native.js +1 -3
  74. package/build/mobile/color-settings/picker-screen.native.js.map +1 -1
  75. package/build/mobile/image/index.native.js +1 -3
  76. package/build/mobile/image/index.native.js.map +1 -1
  77. package/build/mobile/keyboard-avoiding-view/index.ios.js +1 -3
  78. package/build/mobile/keyboard-avoiding-view/index.ios.js.map +1 -1
  79. package/build/mobile/link-picker/link-picker-results.native.js +2 -5
  80. package/build/mobile/link-picker/link-picker-results.native.js.map +1 -1
  81. package/build/mobile/link-picker/link-picker-screen.native.js +1 -3
  82. package/build/mobile/link-picker/link-picker-screen.native.js.map +1 -1
  83. package/build/mobile/link-settings/index.native.js +6 -18
  84. package/build/mobile/link-settings/index.native.js.map +1 -1
  85. package/build/mobile/link-settings/link-settings-screen.native.js +1 -3
  86. package/build/mobile/link-settings/link-settings-screen.native.js.map +1 -1
  87. package/build/mobile/segmented-control/index.native.js +2 -6
  88. package/build/mobile/segmented-control/index.native.js.map +1 -1
  89. package/build/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
  90. package/build/mobile/utils/use-unit-converter-to-mobile.native.js.map +1 -1
  91. package/build/navigation/index.js +1 -2
  92. package/build/navigation/index.js.map +1 -1
  93. package/build/navigation/item/use-navigation-tree-item.js +2 -2
  94. package/build/navigation/item/use-navigation-tree-item.js.map +1 -1
  95. package/build/navigation/menu/menu-title-search.js +2 -2
  96. package/build/navigation/menu/menu-title-search.js.map +1 -1
  97. package/build/navigation/menu/use-navigation-tree-menu.js +2 -2
  98. package/build/navigation/menu/use-navigation-tree-menu.js.map +1 -1
  99. package/build/palette-edit/index.js +4 -2
  100. package/build/palette-edit/index.js.map +1 -1
  101. package/build/palette-edit/styles.js +13 -28
  102. package/build/palette-edit/styles.js.map +1 -1
  103. package/build/private-apis.js +4 -4
  104. package/build/private-apis.js.map +1 -1
  105. package/build/radio-group/index.js +3 -1
  106. package/build/radio-group/index.js.map +1 -1
  107. package/build/sandbox/index.js +3 -6
  108. package/build/sandbox/index.js.map +1 -1
  109. package/build/sandbox/index.native.js +1 -3
  110. package/build/sandbox/index.native.js.map +1 -1
  111. package/build/search-control/index.native.js +1 -3
  112. package/build/search-control/index.native.js.map +1 -1
  113. package/build/slot-fill/bubbles-virtually/slot.js +1 -2
  114. package/build/slot-fill/bubbles-virtually/slot.js.map +1 -1
  115. package/build/slot-fill/fill.js +3 -6
  116. package/build/slot-fill/fill.js.map +1 -1
  117. package/build/spacer/hook.js +5 -3
  118. package/build/spacer/hook.js.map +1 -1
  119. package/build/tab-panel/index.js +4 -1
  120. package/build/tab-panel/index.js.map +1 -1
  121. package/build/tabs/index.js +48 -113
  122. package/build/tabs/index.js.map +1 -1
  123. package/build/tabs/styles.js +12 -12
  124. package/build/tabs/styles.js.map +1 -1
  125. package/build/tabs/tab.js +23 -6
  126. package/build/tabs/tab.js.map +1 -1
  127. package/build/tabs/tablist.js +24 -12
  128. package/build/tabs/tablist.js.map +1 -1
  129. package/build/tabs/types.js.map +1 -1
  130. package/build/toggle-group-control/toggle-group-control/component.js +2 -1
  131. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  132. package/build/toolbar/toolbar/index.js +3 -0
  133. package/build/toolbar/toolbar/index.js.map +1 -1
  134. package/build/tools-panel/tools-panel-header/component.js +1 -1
  135. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  136. package/build/tools-panel/tools-panel-item/hook.js +0 -2
  137. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  138. package/build/tooltip/index.native.js +5 -15
  139. package/build/tooltip/index.native.js.map +1 -1
  140. package/build/unit-control/index.native.js +2 -6
  141. package/build/unit-control/index.native.js.map +1 -1
  142. package/build/utils/deprecated-36px-size.js +27 -0
  143. package/build/utils/deprecated-36px-size.js.map +1 -0
  144. package/build/utils/element-rect.js +13 -2
  145. package/build/utils/element-rect.js.map +1 -1
  146. package/build/utils/hooks/use-animated-offset-rect.js +3 -2
  147. package/build/utils/hooks/use-animated-offset-rect.js.map +1 -1
  148. package/build/utils/hooks/use-update-effect.js +0 -2
  149. package/build/utils/hooks/use-update-effect.js.map +1 -1
  150. package/build-module/autocomplete/autocompleter-ui.js +2 -6
  151. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  152. package/build-module/autocomplete/autocompleter-ui.native.js +2 -4
  153. package/build-module/autocomplete/autocompleter-ui.native.js.map +1 -1
  154. package/build-module/autocomplete/index.js +4 -5
  155. package/build-module/autocomplete/index.js.map +1 -1
  156. package/build-module/base-control/types.js.map +1 -1
  157. package/build-module/border-box-control/border-box-control/component.js +1 -0
  158. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  159. package/build-module/border-box-control/border-box-control/hook.js +6 -0
  160. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  161. package/build-module/border-control/border-control/component.js +1 -0
  162. package/build-module/border-control/border-control/component.js.map +1 -1
  163. package/build-module/border-control/border-control/hook.js +7 -0
  164. package/build-module/border-control/border-control/hook.js.map +1 -1
  165. package/build-module/border-control/border-control-dropdown/component.js +12 -12
  166. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  167. package/build-module/color-palette/index.js +1 -1
  168. package/build-module/color-palette/index.js.map +1 -1
  169. package/build-module/color-palette/index.native.js +1 -2
  170. package/build-module/color-palette/index.native.js.map +1 -1
  171. package/build-module/color-picker/index.native.js +0 -1
  172. package/build-module/color-picker/index.native.js.map +1 -1
  173. package/build-module/composite/legacy/index.js +5 -2
  174. package/build-module/composite/legacy/index.js.map +1 -1
  175. package/build-module/custom-gradient-picker/gradient-bar/control-points.js +1 -1
  176. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  177. package/build-module/date-time/date/index.js +0 -1
  178. package/build-module/date-time/date/index.js.map +1 -1
  179. package/build-module/font-size-picker/index.native.js +7 -7
  180. package/build-module/font-size-picker/index.native.js.map +1 -1
  181. package/build-module/form-token-field/index.js +0 -3
  182. package/build-module/form-token-field/index.js.map +1 -1
  183. package/build-module/form-token-field/suggestions-list.js +7 -3
  184. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  185. package/build-module/{dropdown-menu-v2 → menu}/checkbox-item.js +8 -8
  186. package/build-module/menu/checkbox-item.js.map +1 -0
  187. package/build-module/{dropdown-menu-v2 → menu}/context.js +1 -1
  188. package/build-module/menu/context.js.map +1 -0
  189. package/build-module/{dropdown-menu-v2 → menu}/group-label.js +5 -5
  190. package/build-module/menu/group-label.js.map +1 -0
  191. package/build-module/menu/group.js +21 -0
  192. package/build-module/menu/group.js.map +1 -0
  193. package/build-module/{dropdown-menu-v2 → menu}/index.js +46 -46
  194. package/build-module/menu/index.js.map +1 -0
  195. package/build-module/{dropdown-menu-v2 → menu}/item-help-text.js +2 -2
  196. package/build-module/menu/item-help-text.js.map +1 -0
  197. package/build-module/{dropdown-menu-v2 → menu}/item-label.js +2 -2
  198. package/build-module/menu/item-label.js.map +1 -0
  199. package/build-module/{dropdown-menu-v2 → menu}/item.js +7 -7
  200. package/build-module/menu/item.js.map +1 -0
  201. package/build-module/{dropdown-menu-v2 → menu}/radio-item.js +8 -8
  202. package/build-module/menu/radio-item.js.map +1 -0
  203. package/build-module/menu/separator.js +22 -0
  204. package/build-module/menu/separator.js.map +1 -0
  205. package/build-module/menu/styles.js +143 -0
  206. package/build-module/menu/styles.js.map +1 -0
  207. package/build-module/menu/types.js.map +1 -0
  208. package/build-module/menu/use-temporary-focus-visible-fix.js.map +1 -0
  209. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
  210. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  211. package/build-module/mobile/bottom-sheet/range-cell.native.js +1 -1
  212. package/build-module/mobile/bottom-sheet/range-cell.native.js.map +1 -1
  213. package/build-module/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
  214. package/build-module/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
  215. package/build-module/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
  216. package/build-module/mobile/bottom-sheet/sub-sheet/index.native.js.map +1 -1
  217. package/build-module/mobile/bottom-sheet-select-control/index.native.js +2 -2
  218. package/build-module/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  219. package/build-module/mobile/color-settings/index.native.js +1 -3
  220. package/build-module/mobile/color-settings/index.native.js.map +1 -1
  221. package/build-module/mobile/color-settings/picker-screen.native.js +1 -3
  222. package/build-module/mobile/color-settings/picker-screen.native.js.map +1 -1
  223. package/build-module/mobile/image/index.native.js +1 -3
  224. package/build-module/mobile/image/index.native.js.map +1 -1
  225. package/build-module/mobile/keyboard-avoiding-view/index.ios.js +1 -3
  226. package/build-module/mobile/keyboard-avoiding-view/index.ios.js.map +1 -1
  227. package/build-module/mobile/link-picker/link-picker-results.native.js +2 -5
  228. package/build-module/mobile/link-picker/link-picker-results.native.js.map +1 -1
  229. package/build-module/mobile/link-picker/link-picker-screen.native.js +1 -3
  230. package/build-module/mobile/link-picker/link-picker-screen.native.js.map +1 -1
  231. package/build-module/mobile/link-settings/index.native.js +6 -18
  232. package/build-module/mobile/link-settings/index.native.js.map +1 -1
  233. package/build-module/mobile/link-settings/link-settings-screen.native.js +1 -3
  234. package/build-module/mobile/link-settings/link-settings-screen.native.js.map +1 -1
  235. package/build-module/mobile/segmented-control/index.native.js +2 -6
  236. package/build-module/mobile/segmented-control/index.native.js.map +1 -1
  237. package/build-module/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
  238. package/build-module/mobile/utils/use-unit-converter-to-mobile.native.js.map +1 -1
  239. package/build-module/navigation/index.js +1 -2
  240. package/build-module/navigation/index.js.map +1 -1
  241. package/build-module/navigation/item/use-navigation-tree-item.js +2 -2
  242. package/build-module/navigation/item/use-navigation-tree-item.js.map +1 -1
  243. package/build-module/navigation/menu/menu-title-search.js +2 -2
  244. package/build-module/navigation/menu/menu-title-search.js.map +1 -1
  245. package/build-module/navigation/menu/use-navigation-tree-menu.js +2 -2
  246. package/build-module/navigation/menu/use-navigation-tree-menu.js.map +1 -1
  247. package/build-module/palette-edit/index.js +6 -4
  248. package/build-module/palette-edit/index.js.map +1 -1
  249. package/build-module/palette-edit/styles.js +13 -29
  250. package/build-module/palette-edit/styles.js.map +1 -1
  251. package/build-module/private-apis.js +3 -3
  252. package/build-module/private-apis.js.map +1 -1
  253. package/build-module/radio-group/index.js +3 -1
  254. package/build-module/radio-group/index.js.map +1 -1
  255. package/build-module/sandbox/index.js +3 -6
  256. package/build-module/sandbox/index.js.map +1 -1
  257. package/build-module/sandbox/index.native.js +1 -3
  258. package/build-module/sandbox/index.native.js.map +1 -1
  259. package/build-module/search-control/index.native.js +1 -3
  260. package/build-module/search-control/index.native.js.map +1 -1
  261. package/build-module/slot-fill/bubbles-virtually/slot.js +1 -2
  262. package/build-module/slot-fill/bubbles-virtually/slot.js.map +1 -1
  263. package/build-module/slot-fill/fill.js +3 -6
  264. package/build-module/slot-fill/fill.js.map +1 -1
  265. package/build-module/spacer/hook.js +5 -3
  266. package/build-module/spacer/hook.js.map +1 -1
  267. package/build-module/tab-panel/index.js +4 -1
  268. package/build-module/tab-panel/index.js.map +1 -1
  269. package/build-module/tabs/index.js +47 -112
  270. package/build-module/tabs/index.js.map +1 -1
  271. package/build-module/tabs/styles.js +11 -11
  272. package/build-module/tabs/styles.js.map +1 -1
  273. package/build-module/tabs/tab.js +21 -6
  274. package/build-module/tabs/tab.js.map +1 -1
  275. package/build-module/tabs/tablist.js +24 -12
  276. package/build-module/tabs/tablist.js.map +1 -1
  277. package/build-module/tabs/types.js.map +1 -1
  278. package/build-module/toggle-group-control/toggle-group-control/component.js +2 -1
  279. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  280. package/build-module/toolbar/toolbar/index.js +3 -0
  281. package/build-module/toolbar/toolbar/index.js.map +1 -1
  282. package/build-module/tools-panel/tools-panel-header/component.js +1 -1
  283. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  284. package/build-module/tools-panel/tools-panel-item/hook.js +0 -2
  285. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  286. package/build-module/tooltip/index.native.js +5 -15
  287. package/build-module/tooltip/index.native.js.map +1 -1
  288. package/build-module/unit-control/index.native.js +2 -6
  289. package/build-module/unit-control/index.native.js.map +1 -1
  290. package/build-module/utils/deprecated-36px-size.js +19 -0
  291. package/build-module/utils/deprecated-36px-size.js.map +1 -0
  292. package/build-module/utils/element-rect.js +13 -2
  293. package/build-module/utils/element-rect.js.map +1 -1
  294. package/build-module/utils/hooks/use-animated-offset-rect.js +3 -2
  295. package/build-module/utils/hooks/use-animated-offset-rect.js.map +1 -1
  296. package/build-module/utils/hooks/use-update-effect.js +0 -2
  297. package/build-module/utils/hooks/use-update-effect.js.map +1 -1
  298. package/build-style/style-rtl.css +6 -6
  299. package/build-style/style.css +6 -6
  300. package/build-types/animate/stories/index.story.d.ts.map +1 -1
  301. package/build-types/autocomplete/autocompleter-ui.d.ts.map +1 -1
  302. package/build-types/autocomplete/index.d.ts.map +1 -1
  303. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  304. package/build-types/base-control/types.d.ts +3 -0
  305. package/build-types/base-control/types.d.ts.map +1 -1
  306. package/build-types/border-box-control/border-box-control/component.d.ts +1 -0
  307. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  308. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  309. package/build-types/border-control/border-control/component.d.ts +1 -0
  310. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  311. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  312. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  313. package/build-types/border-control/stories/index.story.d.ts.map +1 -1
  314. package/build-types/button/stories/index.story.d.ts.map +1 -1
  315. package/build-types/card/stories/index.story.d.ts.map +1 -1
  316. package/build-types/composite/legacy/index.d.ts.map +1 -1
  317. package/build-types/composite/stories/index.story.d.ts.map +1 -1
  318. package/build-types/date-time/date/index.d.ts.map +1 -1
  319. package/build-types/disabled/stories/index.story.d.ts.map +1 -1
  320. package/build-types/draggable/stories/index.story.d.ts.map +1 -1
  321. package/build-types/form-token-field/index.d.ts.map +1 -1
  322. package/build-types/form-token-field/suggestions-list.d.ts.map +1 -1
  323. package/build-types/item-group/stories/index.story.d.ts +1 -1
  324. package/build-types/item-group/stories/index.story.d.ts.map +1 -1
  325. package/build-types/keyboard-shortcuts/stories/index.story.d.ts.map +1 -1
  326. package/build-types/menu/checkbox-item.d.ts +3 -0
  327. package/build-types/menu/checkbox-item.d.ts.map +1 -0
  328. package/build-types/menu/context.d.ts +6 -0
  329. package/build-types/menu/context.d.ts.map +1 -0
  330. package/build-types/menu/group-label.d.ts +3 -0
  331. package/build-types/menu/group-label.d.ts.map +1 -0
  332. package/build-types/menu/group.d.ts +3 -0
  333. package/build-types/menu/group.d.ts.map +1 -0
  334. package/build-types/menu/index.d.ts +40 -0
  335. package/build-types/menu/index.d.ts.map +1 -0
  336. package/build-types/{dropdown-menu-v2 → menu}/item-help-text.d.ts +1 -1
  337. package/build-types/menu/item-help-text.d.ts.map +1 -0
  338. package/build-types/{dropdown-menu-v2 → menu}/item-label.d.ts +1 -1
  339. package/build-types/menu/item-label.d.ts.map +1 -0
  340. package/build-types/menu/item.d.ts +3 -0
  341. package/build-types/menu/item.d.ts.map +1 -0
  342. package/build-types/menu/radio-item.d.ts +3 -0
  343. package/build-types/menu/radio-item.d.ts.map +1 -0
  344. package/build-types/menu/separator.d.ts +3 -0
  345. package/build-types/menu/separator.d.ts.map +1 -0
  346. package/build-types/menu/stories/index.story.d.ts +16 -0
  347. package/build-types/menu/stories/index.story.d.ts.map +1 -0
  348. package/build-types/{dropdown-menu-v2 → menu}/styles.d.ts +13 -13
  349. package/build-types/menu/styles.d.ts.map +1 -0
  350. package/build-types/menu/test/index.d.ts.map +1 -0
  351. package/build-types/{dropdown-menu-v2 → menu}/types.d.ts +22 -21
  352. package/build-types/menu/types.d.ts.map +1 -0
  353. package/build-types/menu/use-temporary-focus-visible-fix.d.ts.map +1 -0
  354. package/build-types/navigable-container/stories/navigable-menu.story.d.ts.map +1 -1
  355. package/build-types/navigable-container/stories/tabbable-container.story.d.ts.map +1 -1
  356. package/build-types/navigation/index.d.ts.map +1 -1
  357. package/build-types/palette-edit/index.d.ts.map +1 -1
  358. package/build-types/palette-edit/styles.d.ts +0 -256
  359. package/build-types/palette-edit/styles.d.ts.map +1 -1
  360. package/build-types/panel/stories/index.story.d.ts.map +1 -1
  361. package/build-types/radio-group/index.d.ts.map +1 -1
  362. package/build-types/resizable-box/stories/index.story.d.ts.map +1 -1
  363. package/build-types/sandbox/index.d.ts.map +1 -1
  364. package/build-types/sandbox/stories/index.story.d.ts.map +1 -1
  365. package/build-types/scroll-lock/stories/index.story.d.ts.map +1 -1
  366. package/build-types/shortcut/stories/index.story.d.ts.map +1 -1
  367. package/build-types/slot-fill/bubbles-virtually/slot.d.ts.map +1 -1
  368. package/build-types/slot-fill/fill.d.ts.map +1 -1
  369. package/build-types/slot-fill/stories/index.story.d.ts.map +1 -1
  370. package/build-types/spacer/hook.d.ts.map +1 -1
  371. package/build-types/tab-panel/index.d.ts.map +1 -1
  372. package/build-types/tab-panel/stories/index.story.d.ts.map +1 -1
  373. package/build-types/tabs/index.d.ts +21 -8
  374. package/build-types/tabs/index.d.ts.map +1 -1
  375. package/build-types/tabs/stories/index.story.d.ts +1 -1
  376. package/build-types/tabs/stories/index.story.d.ts.map +1 -1
  377. package/build-types/tabs/styles.d.ts +6 -3
  378. package/build-types/tabs/styles.d.ts.map +1 -1
  379. package/build-types/tabs/tab.d.ts +0 -3
  380. package/build-types/tabs/tab.d.ts.map +1 -1
  381. package/build-types/tabs/tablist.d.ts.map +1 -1
  382. package/build-types/tabs/types.d.ts +85 -48
  383. package/build-types/tabs/types.d.ts.map +1 -1
  384. package/build-types/theme/stories/index.story.d.ts.map +1 -1
  385. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  386. package/build-types/toolbar/toolbar/index.d.ts.map +1 -1
  387. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  388. package/build-types/utils/deprecated-36px-size.d.ts +6 -0
  389. package/build-types/utils/deprecated-36px-size.d.ts.map +1 -0
  390. package/build-types/utils/element-rect.d.ts +1 -1
  391. package/build-types/utils/element-rect.d.ts.map +1 -1
  392. package/build-types/utils/hooks/use-animated-offset-rect.d.ts +8 -1
  393. package/build-types/utils/hooks/use-animated-offset-rect.d.ts.map +1 -1
  394. package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
  395. package/build-types/visually-hidden/stories/index.story.d.ts.map +1 -1
  396. package/package.json +20 -19
  397. package/src/alignment-matrix-control/README.md +1 -2
  398. package/src/angle-picker-control/README.md +1 -2
  399. package/src/animate/stories/index.story.tsx +2 -1
  400. package/src/autocomplete/autocompleter-ui.native.js +2 -4
  401. package/src/autocomplete/autocompleter-ui.tsx +2 -6
  402. package/src/autocomplete/index.tsx +4 -5
  403. package/src/base-control/README.md +58 -47
  404. package/src/base-control/docs-manifest.json +12 -0
  405. package/src/base-control/stories/index.story.tsx +4 -0
  406. package/src/base-control/types.ts +3 -0
  407. package/src/border-box-control/border-box-control/README.md +1 -0
  408. package/src/border-box-control/border-box-control/component.tsx +1 -0
  409. package/src/border-box-control/border-box-control/hook.ts +7 -0
  410. package/src/border-box-control/stories/index.story.tsx +1 -0
  411. package/src/border-box-control/test/index.tsx +1 -0
  412. package/src/border-control/border-control/README.md +1 -0
  413. package/src/border-control/border-control/component.tsx +1 -0
  414. package/src/border-control/border-control/hook.ts +7 -1
  415. package/src/border-control/border-control-dropdown/component.tsx +24 -12
  416. package/src/border-control/stories/index.story.tsx +1 -0
  417. package/src/border-control/test/index.js +1 -0
  418. package/src/button/stories/index.story.tsx +2 -1
  419. package/src/card/stories/index.story.tsx +2 -1
  420. package/src/color-palette/index.native.js +1 -2
  421. package/src/color-palette/index.tsx +1 -1
  422. package/src/color-palette/style.scss +2 -4
  423. package/src/color-picker/index.native.js +0 -1
  424. package/src/composite/legacy/index.tsx +5 -2
  425. package/src/composite/stories/index.story.tsx +2 -1
  426. package/src/custom-gradient-picker/gradient-bar/control-points.tsx +1 -1
  427. package/src/date-time/date/index.tsx +0 -1
  428. package/src/disabled/stories/index.story.tsx +2 -1
  429. package/src/draggable/stories/index.story.tsx +2 -1
  430. package/src/font-size-picker/index.native.js +7 -7
  431. package/src/form-token-field/index.tsx +0 -3
  432. package/src/form-token-field/style.scss +4 -1
  433. package/src/form-token-field/suggestions-list.tsx +6 -0
  434. package/src/item-group/stories/index.story.tsx +8 -4
  435. package/src/keyboard-shortcuts/stories/index.story.tsx +2 -1
  436. package/src/{dropdown-menu-v2 → menu}/README.md +34 -34
  437. package/src/{dropdown-menu-v2 → menu}/checkbox-item.tsx +14 -14
  438. package/src/menu/context.tsx +13 -0
  439. package/src/{dropdown-menu-v2 → menu}/group-label.tsx +8 -8
  440. package/src/menu/group.tsx +26 -0
  441. package/src/{dropdown-menu-v2 → menu}/index.tsx +65 -70
  442. package/src/{dropdown-menu-v2 → menu}/item-help-text.tsx +3 -7
  443. package/src/{dropdown-menu-v2 → menu}/item-label.tsx +3 -7
  444. package/src/{dropdown-menu-v2 → menu}/item.tsx +13 -13
  445. package/src/{dropdown-menu-v2 → menu}/radio-item.tsx +14 -14
  446. package/src/menu/separator.tsx +27 -0
  447. package/src/menu/stories/index.story.tsx +542 -0
  448. package/src/{dropdown-menu-v2 → menu}/styles.ts +17 -17
  449. package/src/{dropdown-menu-v2 → menu}/test/index.tsx +145 -225
  450. package/src/{dropdown-menu-v2 → menu}/types.ts +24 -23
  451. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
  452. package/src/mobile/bottom-sheet/range-cell.native.js +1 -1
  453. package/src/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
  454. package/src/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
  455. package/src/mobile/bottom-sheet-select-control/index.native.js +2 -2
  456. package/src/mobile/color-settings/index.native.js +1 -3
  457. package/src/mobile/color-settings/picker-screen.native.js +1 -3
  458. package/src/mobile/image/index.native.js +1 -3
  459. package/src/mobile/keyboard-avoiding-view/index.ios.js +1 -3
  460. package/src/mobile/link-picker/link-picker-results.native.js +2 -5
  461. package/src/mobile/link-picker/link-picker-screen.native.js +1 -3
  462. package/src/mobile/link-settings/index.native.js +6 -18
  463. package/src/mobile/link-settings/link-settings-screen.native.js +1 -3
  464. package/src/mobile/segmented-control/index.native.js +2 -6
  465. package/src/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
  466. package/src/navigable-container/stories/navigable-menu.story.tsx +2 -1
  467. package/src/navigable-container/stories/tabbable-container.story.tsx +2 -1
  468. package/src/navigation/index.tsx +1 -2
  469. package/src/navigation/item/use-navigation-tree-item.tsx +2 -2
  470. package/src/navigation/menu/menu-title-search.tsx +2 -2
  471. package/src/navigation/menu/use-navigation-tree-menu.tsx +2 -2
  472. package/src/palette-edit/index.tsx +4 -5
  473. package/src/palette-edit/styles.ts +1 -67
  474. package/src/panel/stories/index.story.tsx +2 -1
  475. package/src/private-apis.ts +3 -3
  476. package/src/radio-group/index.tsx +2 -0
  477. package/src/resizable-box/stories/index.story.tsx +2 -1
  478. package/src/sandbox/index.native.js +1 -3
  479. package/src/sandbox/index.tsx +3 -6
  480. package/src/sandbox/stories/index.story.tsx +2 -1
  481. package/src/scroll-lock/stories/index.story.tsx +2 -1
  482. package/src/search-control/index.native.js +1 -3
  483. package/src/shortcut/stories/index.story.tsx +2 -1
  484. package/src/slot-fill/bubbles-virtually/slot.tsx +1 -2
  485. package/src/slot-fill/fill.ts +3 -6
  486. package/src/slot-fill/stories/index.story.tsx +2 -1
  487. package/src/spacer/hook.ts +3 -2
  488. package/src/tab-panel/index.tsx +3 -0
  489. package/src/tab-panel/stories/index.story.tsx +2 -1
  490. package/src/tab-panel/style.scss +1 -3
  491. package/src/tabs/README.md +63 -21
  492. package/src/tabs/index.tsx +112 -189
  493. package/src/tabs/stories/index.story.tsx +5 -2
  494. package/src/tabs/styles.ts +13 -5
  495. package/src/tabs/tab.tsx +23 -3
  496. package/src/tabs/tablist.tsx +31 -15
  497. package/src/tabs/test/index.tsx +131 -118
  498. package/src/tabs/types.ts +89 -49
  499. package/src/theme/stories/index.story.tsx +2 -1
  500. package/src/toggle-group-control/toggle-group-control/component.tsx +1 -0
  501. package/src/toolbar/toolbar/index.tsx +3 -0
  502. package/src/tools-panel/tools-panel-header/component.tsx +1 -1
  503. package/src/tools-panel/tools-panel-item/hook.ts +0 -2
  504. package/src/tooltip/index.native.js +5 -15
  505. package/src/unit-control/index.native.js +2 -6
  506. package/src/utils/deprecated-36px-size.ts +24 -0
  507. package/src/utils/element-rect.ts +14 -2
  508. package/src/utils/hooks/use-animated-offset-rect.ts +13 -1
  509. package/src/utils/hooks/use-update-effect.js +0 -2
  510. package/src/visually-hidden/stories/index.story.tsx +2 -1
  511. package/tsconfig.tsbuildinfo +1 -1
  512. package/build/dropdown-menu-v2/checkbox-item.js.map +0 -1
  513. package/build/dropdown-menu-v2/context.js.map +0 -1
  514. package/build/dropdown-menu-v2/group-label.js.map +0 -1
  515. package/build/dropdown-menu-v2/group.js.map +0 -1
  516. package/build/dropdown-menu-v2/index.js.map +0 -1
  517. package/build/dropdown-menu-v2/item-help-text.js.map +0 -1
  518. package/build/dropdown-menu-v2/item-label.js.map +0 -1
  519. package/build/dropdown-menu-v2/item.js.map +0 -1
  520. package/build/dropdown-menu-v2/radio-item.js.map +0 -1
  521. package/build/dropdown-menu-v2/separator.js.map +0 -1
  522. package/build/dropdown-menu-v2/styles.js +0 -150
  523. package/build/dropdown-menu-v2/styles.js.map +0 -1
  524. package/build/dropdown-menu-v2/types.js.map +0 -1
  525. package/build/dropdown-menu-v2/use-temporary-focus-visible-fix.js.map +0 -1
  526. package/build-module/dropdown-menu-v2/checkbox-item.js.map +0 -1
  527. package/build-module/dropdown-menu-v2/context.js.map +0 -1
  528. package/build-module/dropdown-menu-v2/group-label.js.map +0 -1
  529. package/build-module/dropdown-menu-v2/group.js +0 -21
  530. package/build-module/dropdown-menu-v2/group.js.map +0 -1
  531. package/build-module/dropdown-menu-v2/index.js.map +0 -1
  532. package/build-module/dropdown-menu-v2/item-help-text.js.map +0 -1
  533. package/build-module/dropdown-menu-v2/item-label.js.map +0 -1
  534. package/build-module/dropdown-menu-v2/item.js.map +0 -1
  535. package/build-module/dropdown-menu-v2/radio-item.js.map +0 -1
  536. package/build-module/dropdown-menu-v2/separator.js +0 -22
  537. package/build-module/dropdown-menu-v2/separator.js.map +0 -1
  538. package/build-module/dropdown-menu-v2/styles.js +0 -143
  539. package/build-module/dropdown-menu-v2/styles.js.map +0 -1
  540. package/build-module/dropdown-menu-v2/types.js.map +0 -1
  541. package/build-module/dropdown-menu-v2/use-temporary-focus-visible-fix.js.map +0 -1
  542. package/build-types/dropdown-menu-v2/checkbox-item.d.ts +0 -3
  543. package/build-types/dropdown-menu-v2/checkbox-item.d.ts.map +0 -1
  544. package/build-types/dropdown-menu-v2/context.d.ts +0 -6
  545. package/build-types/dropdown-menu-v2/context.d.ts.map +0 -1
  546. package/build-types/dropdown-menu-v2/group-label.d.ts +0 -3
  547. package/build-types/dropdown-menu-v2/group-label.d.ts.map +0 -1
  548. package/build-types/dropdown-menu-v2/group.d.ts +0 -3
  549. package/build-types/dropdown-menu-v2/group.d.ts.map +0 -1
  550. package/build-types/dropdown-menu-v2/index.d.ts +0 -40
  551. package/build-types/dropdown-menu-v2/index.d.ts.map +0 -1
  552. package/build-types/dropdown-menu-v2/item-help-text.d.ts.map +0 -1
  553. package/build-types/dropdown-menu-v2/item-label.d.ts.map +0 -1
  554. package/build-types/dropdown-menu-v2/item.d.ts +0 -3
  555. package/build-types/dropdown-menu-v2/item.d.ts.map +0 -1
  556. package/build-types/dropdown-menu-v2/radio-item.d.ts +0 -3
  557. package/build-types/dropdown-menu-v2/radio-item.d.ts.map +0 -1
  558. package/build-types/dropdown-menu-v2/separator.d.ts +0 -3
  559. package/build-types/dropdown-menu-v2/separator.d.ts.map +0 -1
  560. package/build-types/dropdown-menu-v2/stories/index.story.d.ts +0 -16
  561. package/build-types/dropdown-menu-v2/stories/index.story.d.ts.map +0 -1
  562. package/build-types/dropdown-menu-v2/styles.d.ts.map +0 -1
  563. package/build-types/dropdown-menu-v2/test/index.d.ts.map +0 -1
  564. package/build-types/dropdown-menu-v2/types.d.ts.map +0 -1
  565. package/build-types/dropdown-menu-v2/use-temporary-focus-visible-fix.d.ts.map +0 -1
  566. package/src/dropdown-menu-v2/context.tsx +0 -13
  567. package/src/dropdown-menu-v2/group.tsx +0 -26
  568. package/src/dropdown-menu-v2/separator.tsx +0 -27
  569. package/src/dropdown-menu-v2/stories/index.story.tsx +0 -639
  570. /package/build/{dropdown-menu-v2 → menu}/types.js +0 -0
  571. /package/build/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.js +0 -0
  572. /package/build-module/{dropdown-menu-v2 → menu}/types.js +0 -0
  573. /package/build-module/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.js +0 -0
  574. /package/build-types/{dropdown-menu-v2 → menu}/test/index.d.ts +0 -0
  575. /package/build-types/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.d.ts +0 -0
  576. /package/src/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["Ariakit","useStoreState","clsx","forwardRef","useEffect","useLayoutEffect","useCallback","useInstanceId","usePrevious","Button","jsx","_jsx","jsxs","_jsxs","extractTabName","id","match","UnforwardedTabPanel","className","children","tabs","selectOnMove","initialTabName","orientation","activeClass","onSelect","ref","instanceId","TabPanel","prependInstanceId","tabName","tabStore","useTabStore","setSelectedId","newTabValue","newTab","find","t","name","disabled","selectedTab","simplifiedTabName","defaultSelectedId","selectedTabName","setTabStoreSelectedId","setState","previousSelectedTabName","initialTab","tab","firstEnabledTab","TabList","store","map","Tab","render","icon","label","title","showTooltip","tabId"],"sources":["@wordpress/components/src/tab-panel/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport * as Ariakit from '@ariakit/react';\nimport { useStoreState } from '@ariakit/react';\nimport clsx from 'clsx';\nimport type { ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseCallback,\n} from '@wordpress/element';\nimport { useInstanceId, usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\n\nimport Button from '../button';\nimport type { TabPanelProps } from './types';\nimport type { WordPressComponentProps } from '../context';\n\n// Separate the actual tab name from the instance ID. This is\n// necessary because Ariakit internally uses the element ID when\n// a new tab is selected, but our implementation looks specifically\n// for the tab name to be passed to the `onSelect` callback.\nconst extractTabName = ( id: string | undefined | null ) => {\n\tif ( typeof id === 'undefined' || id === null ) {\n\t\treturn;\n\t}\n\treturn id.match( /^tab-panel-[0-9]*-(.*)/ )?.[ 1 ];\n};\n\n/**\n * TabPanel is an ARIA-compliant tabpanel.\n *\n * TabPanels organize content across different screens, data sets, and interactions.\n * It has two sections: a list of tabs, and the view to show when tabs are chosen.\n *\n * ```jsx\n * import { TabPanel } from '@wordpress/components';\n *\n * const onSelect = ( tabName ) => {\n * console.log( 'Selecting tab', tabName );\n * };\n *\n * const MyTabPanel = () => (\n * <TabPanel\n * className=\"my-tab-panel\"\n * activeClass=\"active-tab\"\n * onSelect={ onSelect }\n * tabs={ [\n * {\n * name: 'tab1',\n * title: 'Tab 1',\n * className: 'tab-one',\n * },\n * {\n * name: 'tab2',\n * title: 'Tab 2',\n * className: 'tab-two',\n * },\n * ] }\n * >\n * { ( tab ) => <p>{ tab.title }</p> }\n * </TabPanel>\n * );\n * ```\n */\nconst UnforwardedTabPanel = (\n\t{\n\t\tclassName,\n\t\tchildren,\n\t\ttabs,\n\t\tselectOnMove = true,\n\t\tinitialTabName,\n\t\torientation = 'horizontal',\n\t\tactiveClass = 'is-active',\n\t\tonSelect,\n\t}: WordPressComponentProps< TabPanelProps, 'div', false >,\n\tref: ForwardedRef< any >\n) => {\n\tconst instanceId = useInstanceId( TabPanel, 'tab-panel' );\n\n\tconst prependInstanceId = useCallback(\n\t\t( tabName: string | undefined ) => {\n\t\t\tif ( typeof tabName === 'undefined' ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn `${ instanceId }-${ tabName }`;\n\t\t},\n\t\t[ instanceId ]\n\t);\n\n\tconst tabStore = Ariakit.useTabStore( {\n\t\tsetSelectedId: ( newTabValue ) => {\n\t\t\tif ( typeof newTabValue === 'undefined' || newTabValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newTab = tabs.find(\n\t\t\t\t( t ) => prependInstanceId( t.name ) === newTabValue\n\t\t\t);\n\t\t\tif ( newTab?.disabled || newTab === selectedTab ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst simplifiedTabName = extractTabName( newTabValue );\n\t\t\tif ( typeof simplifiedTabName === 'undefined' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSelect?.( simplifiedTabName );\n\t\t},\n\t\torientation,\n\t\tselectOnMove,\n\t\tdefaultSelectedId: prependInstanceId( initialTabName ),\n\t} );\n\n\tconst selectedTabName = extractTabName(\n\t\tuseStoreState( tabStore, 'selectedId' )\n\t);\n\n\tconst setTabStoreSelectedId = useCallback(\n\t\t( tabName: string ) => {\n\t\t\ttabStore.setState( 'selectedId', prependInstanceId( tabName ) );\n\t\t},\n\t\t[ prependInstanceId, tabStore ]\n\t);\n\n\tconst selectedTab = tabs.find( ( { name } ) => name === selectedTabName );\n\n\tconst previousSelectedTabName = usePrevious( selectedTabName );\n\n\t// Ensure `onSelect` is called when the initial tab is selected.\n\tuseEffect( () => {\n\t\tif (\n\t\t\tpreviousSelectedTabName !== selectedTabName &&\n\t\t\tselectedTabName === initialTabName &&\n\t\t\t!! selectedTabName\n\t\t) {\n\t\t\tonSelect?.( selectedTabName );\n\t\t}\n\t}, [ selectedTabName, initialTabName, onSelect, previousSelectedTabName ] );\n\n\t// Handle selecting the initial tab.\n\tuseLayoutEffect( () => {\n\t\t// If there's a selected tab, don't override it.\n\t\tif ( selectedTab ) {\n\t\t\treturn;\n\t\t}\n\t\tconst initialTab = tabs.find( ( tab ) => tab.name === initialTabName );\n\t\t// Wait for the denoted initial tab to be declared before making a\n\t\t// selection. This ensures that if a tab is declared lazily it can\n\t\t// still receive initial selection.\n\t\tif ( initialTabName && ! initialTab ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( initialTab && ! initialTab.disabled ) {\n\t\t\t// Select the initial tab if it's not disabled.\n\t\t\tsetTabStoreSelectedId( initialTab.name );\n\t\t} else {\n\t\t\t// Fallback to the first enabled tab when the initial tab is\n\t\t\t// disabled or it can't be found.\n\t\t\tconst firstEnabledTab = tabs.find( ( tab ) => ! tab.disabled );\n\t\t\tif ( firstEnabledTab ) {\n\t\t\t\tsetTabStoreSelectedId( firstEnabledTab.name );\n\t\t\t}\n\t\t}\n\t}, [\n\t\ttabs,\n\t\tselectedTab,\n\t\tinitialTabName,\n\t\tinstanceId,\n\t\tsetTabStoreSelectedId,\n\t] );\n\n\t// Handle the currently selected tab becoming disabled.\n\tuseEffect( () => {\n\t\t// This effect only runs when the selected tab is defined and becomes disabled.\n\t\tif ( ! selectedTab?.disabled ) {\n\t\t\treturn;\n\t\t}\n\t\tconst firstEnabledTab = tabs.find( ( tab ) => ! tab.disabled );\n\t\t// If the currently selected tab becomes disabled, select the first enabled tab.\n\t\t// (if there is one).\n\t\tif ( firstEnabledTab ) {\n\t\t\tsetTabStoreSelectedId( firstEnabledTab.name );\n\t\t}\n\t}, [ tabs, selectedTab?.disabled, setTabStoreSelectedId, instanceId ] );\n\treturn (\n\t\t<div className={ className } ref={ ref }>\n\t\t\t<Ariakit.TabList\n\t\t\t\tstore={ tabStore }\n\t\t\t\tclassName=\"components-tab-panel__tabs\"\n\t\t\t>\n\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Ariakit.Tab\n\t\t\t\t\t\t\tkey={ tab.name }\n\t\t\t\t\t\t\tid={ prependInstanceId( tab.name ) }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'components-tab-panel__tabs-item',\n\t\t\t\t\t\t\t\ttab.className,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t[ activeClass ]:\n\t\t\t\t\t\t\t\t\t\ttab.name === selectedTabName,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tdisabled={ tab.disabled }\n\t\t\t\t\t\t\taria-controls={ `${ prependInstanceId(\n\t\t\t\t\t\t\t\ttab.name\n\t\t\t\t\t\t\t) }-view` }\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ticon={ tab.icon }\n\t\t\t\t\t\t\t\t\tlabel={ tab.icon && tab.title }\n\t\t\t\t\t\t\t\t\tshowTooltip={ !! tab.icon }\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\t\t{ ! tab.icon && tab.title }\n\t\t\t\t\t\t</Ariakit.Tab>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Ariakit.TabList>\n\t\t\t{ selectedTab && (\n\t\t\t\t<Ariakit.TabPanel\n\t\t\t\t\tid={ `${ prependInstanceId( selectedTab.name ) }-view` }\n\t\t\t\t\tstore={ tabStore }\n\t\t\t\t\ttabId={ prependInstanceId( selectedTab.name ) }\n\t\t\t\t\tclassName=\"components-tab-panel__tab-content\"\n\t\t\t\t>\n\t\t\t\t\t{ children( selectedTab ) }\n\t\t\t\t</Ariakit.TabPanel>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport const TabPanel = forwardRef( UnforwardedTabPanel );\nexport default TabPanel;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Ariakit","useStoreState","clsx","forwardRef","useEffect","useLayoutEffect","useCallback","useInstanceId","usePrevious","isRTL","Button","jsx","_jsx","jsxs","_jsxs","extractTabName","id","match","UnforwardedTabPanel","className","children","tabs","selectOnMove","initialTabName","orientation","activeClass","onSelect","ref","instanceId","TabPanel","prependInstanceId","tabName","tabStore","useTabStore","setSelectedId","newTabValue","newTab","find","t","name","disabled","selectedTab","simplifiedTabName","defaultSelectedId","rtl","selectedTabName","setTabStoreSelectedId","setState","previousSelectedTabName","initialTab","tab","firstEnabledTab","TabList","store","map","Tab","render","__next40pxDefaultSize","icon","label","title","showTooltip","tabId"],"sources":["@wordpress/components/src/tab-panel/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport * as Ariakit from '@ariakit/react';\nimport { useStoreState } from '@ariakit/react';\nimport clsx from 'clsx';\nimport type { ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseCallback,\n} from '@wordpress/element';\nimport { useInstanceId, usePrevious } from '@wordpress/compose';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\n\nimport Button from '../button';\nimport type { TabPanelProps } from './types';\nimport type { WordPressComponentProps } from '../context';\n\n// Separate the actual tab name from the instance ID. This is\n// necessary because Ariakit internally uses the element ID when\n// a new tab is selected, but our implementation looks specifically\n// for the tab name to be passed to the `onSelect` callback.\nconst extractTabName = ( id: string | undefined | null ) => {\n\tif ( typeof id === 'undefined' || id === null ) {\n\t\treturn;\n\t}\n\treturn id.match( /^tab-panel-[0-9]*-(.*)/ )?.[ 1 ];\n};\n\n/**\n * TabPanel is an ARIA-compliant tabpanel.\n *\n * TabPanels organize content across different screens, data sets, and interactions.\n * It has two sections: a list of tabs, and the view to show when tabs are chosen.\n *\n * ```jsx\n * import { TabPanel } from '@wordpress/components';\n *\n * const onSelect = ( tabName ) => {\n * console.log( 'Selecting tab', tabName );\n * };\n *\n * const MyTabPanel = () => (\n * <TabPanel\n * className=\"my-tab-panel\"\n * activeClass=\"active-tab\"\n * onSelect={ onSelect }\n * tabs={ [\n * {\n * name: 'tab1',\n * title: 'Tab 1',\n * className: 'tab-one',\n * },\n * {\n * name: 'tab2',\n * title: 'Tab 2',\n * className: 'tab-two',\n * },\n * ] }\n * >\n * { ( tab ) => <p>{ tab.title }</p> }\n * </TabPanel>\n * );\n * ```\n */\nconst UnforwardedTabPanel = (\n\t{\n\t\tclassName,\n\t\tchildren,\n\t\ttabs,\n\t\tselectOnMove = true,\n\t\tinitialTabName,\n\t\torientation = 'horizontal',\n\t\tactiveClass = 'is-active',\n\t\tonSelect,\n\t}: WordPressComponentProps< TabPanelProps, 'div', false >,\n\tref: ForwardedRef< any >\n) => {\n\tconst instanceId = useInstanceId( TabPanel, 'tab-panel' );\n\n\tconst prependInstanceId = useCallback(\n\t\t( tabName: string | undefined ) => {\n\t\t\tif ( typeof tabName === 'undefined' ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn `${ instanceId }-${ tabName }`;\n\t\t},\n\t\t[ instanceId ]\n\t);\n\n\tconst tabStore = Ariakit.useTabStore( {\n\t\tsetSelectedId: ( newTabValue ) => {\n\t\t\tif ( typeof newTabValue === 'undefined' || newTabValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newTab = tabs.find(\n\t\t\t\t( t ) => prependInstanceId( t.name ) === newTabValue\n\t\t\t);\n\t\t\tif ( newTab?.disabled || newTab === selectedTab ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst simplifiedTabName = extractTabName( newTabValue );\n\t\t\tif ( typeof simplifiedTabName === 'undefined' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSelect?.( simplifiedTabName );\n\t\t},\n\t\torientation,\n\t\tselectOnMove,\n\t\tdefaultSelectedId: prependInstanceId( initialTabName ),\n\t\trtl: isRTL(),\n\t} );\n\n\tconst selectedTabName = extractTabName(\n\t\tuseStoreState( tabStore, 'selectedId' )\n\t);\n\n\tconst setTabStoreSelectedId = useCallback(\n\t\t( tabName: string ) => {\n\t\t\ttabStore.setState( 'selectedId', prependInstanceId( tabName ) );\n\t\t},\n\t\t[ prependInstanceId, tabStore ]\n\t);\n\n\tconst selectedTab = tabs.find( ( { name } ) => name === selectedTabName );\n\n\tconst previousSelectedTabName = usePrevious( selectedTabName );\n\n\t// Ensure `onSelect` is called when the initial tab is selected.\n\tuseEffect( () => {\n\t\tif (\n\t\t\tpreviousSelectedTabName !== selectedTabName &&\n\t\t\tselectedTabName === initialTabName &&\n\t\t\t!! selectedTabName\n\t\t) {\n\t\t\tonSelect?.( selectedTabName );\n\t\t}\n\t}, [ selectedTabName, initialTabName, onSelect, previousSelectedTabName ] );\n\n\t// Handle selecting the initial tab.\n\tuseLayoutEffect( () => {\n\t\t// If there's a selected tab, don't override it.\n\t\tif ( selectedTab ) {\n\t\t\treturn;\n\t\t}\n\t\tconst initialTab = tabs.find( ( tab ) => tab.name === initialTabName );\n\t\t// Wait for the denoted initial tab to be declared before making a\n\t\t// selection. This ensures that if a tab is declared lazily it can\n\t\t// still receive initial selection.\n\t\tif ( initialTabName && ! initialTab ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( initialTab && ! initialTab.disabled ) {\n\t\t\t// Select the initial tab if it's not disabled.\n\t\t\tsetTabStoreSelectedId( initialTab.name );\n\t\t} else {\n\t\t\t// Fallback to the first enabled tab when the initial tab is\n\t\t\t// disabled or it can't be found.\n\t\t\tconst firstEnabledTab = tabs.find( ( tab ) => ! tab.disabled );\n\t\t\tif ( firstEnabledTab ) {\n\t\t\t\tsetTabStoreSelectedId( firstEnabledTab.name );\n\t\t\t}\n\t\t}\n\t}, [\n\t\ttabs,\n\t\tselectedTab,\n\t\tinitialTabName,\n\t\tinstanceId,\n\t\tsetTabStoreSelectedId,\n\t] );\n\n\t// Handle the currently selected tab becoming disabled.\n\tuseEffect( () => {\n\t\t// This effect only runs when the selected tab is defined and becomes disabled.\n\t\tif ( ! selectedTab?.disabled ) {\n\t\t\treturn;\n\t\t}\n\t\tconst firstEnabledTab = tabs.find( ( tab ) => ! tab.disabled );\n\t\t// If the currently selected tab becomes disabled, select the first enabled tab.\n\t\t// (if there is one).\n\t\tif ( firstEnabledTab ) {\n\t\t\tsetTabStoreSelectedId( firstEnabledTab.name );\n\t\t}\n\t}, [ tabs, selectedTab?.disabled, setTabStoreSelectedId, instanceId ] );\n\treturn (\n\t\t<div className={ className } ref={ ref }>\n\t\t\t<Ariakit.TabList\n\t\t\t\tstore={ tabStore }\n\t\t\t\tclassName=\"components-tab-panel__tabs\"\n\t\t\t>\n\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Ariakit.Tab\n\t\t\t\t\t\t\tkey={ tab.name }\n\t\t\t\t\t\t\tid={ prependInstanceId( tab.name ) }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'components-tab-panel__tabs-item',\n\t\t\t\t\t\t\t\ttab.className,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t[ activeClass ]:\n\t\t\t\t\t\t\t\t\t\ttab.name === selectedTabName,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tdisabled={ tab.disabled }\n\t\t\t\t\t\t\taria-controls={ `${ prependInstanceId(\n\t\t\t\t\t\t\t\ttab.name\n\t\t\t\t\t\t\t) }-view` }\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\ticon={ tab.icon }\n\t\t\t\t\t\t\t\t\tlabel={ tab.icon && tab.title }\n\t\t\t\t\t\t\t\t\tshowTooltip={ !! tab.icon }\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\t\t{ ! tab.icon && tab.title }\n\t\t\t\t\t\t</Ariakit.Tab>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Ariakit.TabList>\n\t\t\t{ selectedTab && (\n\t\t\t\t<Ariakit.TabPanel\n\t\t\t\t\tid={ `${ prependInstanceId( selectedTab.name ) }-view` }\n\t\t\t\t\tstore={ tabStore }\n\t\t\t\t\ttabId={ prependInstanceId( selectedTab.name ) }\n\t\t\t\t\tclassName=\"components-tab-panel__tab-content\"\n\t\t\t\t>\n\t\t\t\t\t{ children( selectedTab ) }\n\t\t\t\t</Ariakit.TabPanel>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport const TabPanel = forwardRef( UnforwardedTabPanel );\nexport default TabPanel;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,SAASC,aAAa,QAAQ,gBAAgB;AAC9C,OAAOC,IAAI,MAAM,MAAM;AAGvB;AACA;AACA;AACA,SACCC,UAAU,EACVC,SAAS,EACTC,eAAe,EACfC,WAAW,QACL,oBAAoB;AAC3B,SAASC,aAAa,EAAEC,WAAW,QAAQ,oBAAoB;AAC/D,SAASC,KAAK,QAAQ,iBAAiB;;AAEvC;AACA;AACA;;AAEA,OAAOC,MAAM,MAAM,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAI/B;AACA;AACA;AACA;AACA,MAAMC,cAAc,GAAKC,EAA6B,IAAM;EAC3D,IAAK,OAAOA,EAAE,KAAK,WAAW,IAAIA,EAAE,KAAK,IAAI,EAAG;IAC/C;EACD;EACA,OAAOA,EAAE,CAACC,KAAK,CAAE,wBAAyB,CAAC,GAAI,CAAC,CAAE;AACnD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,mBAAmB,GAAGA,CAC3B;EACCC,SAAS;EACTC,QAAQ;EACRC,IAAI;EACJC,YAAY,GAAG,IAAI;EACnBC,cAAc;EACdC,WAAW,GAAG,YAAY;EAC1BC,WAAW,GAAG,WAAW;EACzBC;AACuD,CAAC,EACzDC,GAAwB,KACpB;EACJ,MAAMC,UAAU,GAAGrB,aAAa,CAAEsB,QAAQ,EAAE,WAAY,CAAC;EAEzD,MAAMC,iBAAiB,GAAGxB,WAAW,CAClCyB,OAA2B,IAAM;IAClC,IAAK,OAAOA,OAAO,KAAK,WAAW,EAAG;MACrC;IACD;IACA,OAAO,GAAIH,UAAU,IAAMG,OAAO,EAAG;EACtC,CAAC,EACD,CAAEH,UAAU,CACb,CAAC;EAED,MAAMI,QAAQ,GAAGhC,OAAO,CAACiC,WAAW,CAAE;IACrCC,aAAa,EAAIC,WAAW,IAAM;MACjC,IAAK,OAAOA,WAAW,KAAK,WAAW,IAAIA,WAAW,KAAK,IAAI,EAAG;QACjE;MACD;MAEA,MAAMC,MAAM,GAAGf,IAAI,CAACgB,IAAI,CACrBC,CAAC,IAAMR,iBAAiB,CAAEQ,CAAC,CAACC,IAAK,CAAC,KAAKJ,WAC1C,CAAC;MACD,IAAKC,MAAM,EAAEI,QAAQ,IAAIJ,MAAM,KAAKK,WAAW,EAAG;QACjD;MACD;MAEA,MAAMC,iBAAiB,GAAG3B,cAAc,CAAEoB,WAAY,CAAC;MACvD,IAAK,OAAOO,iBAAiB,KAAK,WAAW,EAAG;QAC/C;MACD;MAEAhB,QAAQ,GAAIgB,iBAAkB,CAAC;IAChC,CAAC;IACDlB,WAAW;IACXF,YAAY;IACZqB,iBAAiB,EAAEb,iBAAiB,CAAEP,cAAe,CAAC;IACtDqB,GAAG,EAAEnC,KAAK,CAAC;EACZ,CAAE,CAAC;EAEH,MAAMoC,eAAe,GAAG9B,cAAc,CACrCd,aAAa,CAAE+B,QAAQ,EAAE,YAAa,CACvC,CAAC;EAED,MAAMc,qBAAqB,GAAGxC,WAAW,CACtCyB,OAAe,IAAM;IACtBC,QAAQ,CAACe,QAAQ,CAAE,YAAY,EAAEjB,iBAAiB,CAAEC,OAAQ,CAAE,CAAC;EAChE,CAAC,EACD,CAAED,iBAAiB,EAAEE,QAAQ,CAC9B,CAAC;EAED,MAAMS,WAAW,GAAGpB,IAAI,CAACgB,IAAI,CAAE,CAAE;IAAEE;EAAK,CAAC,KAAMA,IAAI,KAAKM,eAAgB,CAAC;EAEzE,MAAMG,uBAAuB,GAAGxC,WAAW,CAAEqC,eAAgB,CAAC;;EAE9D;EACAzC,SAAS,CAAE,MAAM;IAChB,IACC4C,uBAAuB,KAAKH,eAAe,IAC3CA,eAAe,KAAKtB,cAAc,IAClC,CAAC,CAAEsB,eAAe,EACjB;MACDnB,QAAQ,GAAImB,eAAgB,CAAC;IAC9B;EACD,CAAC,EAAE,CAAEA,eAAe,EAAEtB,cAAc,EAAEG,QAAQ,EAAEsB,uBAAuB,CAAG,CAAC;;EAE3E;EACA3C,eAAe,CAAE,MAAM;IACtB;IACA,IAAKoC,WAAW,EAAG;MAClB;IACD;IACA,MAAMQ,UAAU,GAAG5B,IAAI,CAACgB,IAAI,CAAIa,GAAG,IAAMA,GAAG,CAACX,IAAI,KAAKhB,cAAe,CAAC;IACtE;IACA;IACA;IACA,IAAKA,cAAc,IAAI,CAAE0B,UAAU,EAAG;MACrC;IACD;IACA,IAAKA,UAAU,IAAI,CAAEA,UAAU,CAACT,QAAQ,EAAG;MAC1C;MACAM,qBAAqB,CAAEG,UAAU,CAACV,IAAK,CAAC;IACzC,CAAC,MAAM;MACN;MACA;MACA,MAAMY,eAAe,GAAG9B,IAAI,CAACgB,IAAI,CAAIa,GAAG,IAAM,CAAEA,GAAG,CAACV,QAAS,CAAC;MAC9D,IAAKW,eAAe,EAAG;QACtBL,qBAAqB,CAAEK,eAAe,CAACZ,IAAK,CAAC;MAC9C;IACD;EACD,CAAC,EAAE,CACFlB,IAAI,EACJoB,WAAW,EACXlB,cAAc,EACdK,UAAU,EACVkB,qBAAqB,CACpB,CAAC;;EAEH;EACA1C,SAAS,CAAE,MAAM;IAChB;IACA,IAAK,CAAEqC,WAAW,EAAED,QAAQ,EAAG;MAC9B;IACD;IACA,MAAMW,eAAe,GAAG9B,IAAI,CAACgB,IAAI,CAAIa,GAAG,IAAM,CAAEA,GAAG,CAACV,QAAS,CAAC;IAC9D;IACA;IACA,IAAKW,eAAe,EAAG;MACtBL,qBAAqB,CAAEK,eAAe,CAACZ,IAAK,CAAC;IAC9C;EACD,CAAC,EAAE,CAAElB,IAAI,EAAEoB,WAAW,EAAED,QAAQ,EAAEM,qBAAqB,EAAElB,UAAU,CAAG,CAAC;EACvE,oBACCd,KAAA;IAAKK,SAAS,EAAGA,SAAW;IAACQ,GAAG,EAAGA,GAAK;IAAAP,QAAA,gBACvCR,IAAA,CAACZ,OAAO,CAACoD,OAAO;MACfC,KAAK,EAAGrB,QAAU;MAClBb,SAAS,EAAC,4BAA4B;MAAAC,QAAA,EAEpCC,IAAI,CAACiC,GAAG,CAAIJ,GAAG,IAAM;QACtB,oBACCtC,IAAA,CAACZ,OAAO,CAACuD,GAAG;UAEXvC,EAAE,EAAGc,iBAAiB,CAAEoB,GAAG,CAACX,IAAK,CAAG;UACpCpB,SAAS,EAAGjB,IAAI,CACf,iCAAiC,EACjCgD,GAAG,CAAC/B,SAAS,EACb;YACC,CAAEM,WAAW,GACZyB,GAAG,CAACX,IAAI,KAAKM;UACf,CACD,CAAG;UACHL,QAAQ,EAAGU,GAAG,CAACV,QAAU;UACzB,iBAAgB,GAAIV,iBAAiB,CACpCoB,GAAG,CAACX,IACL,CAAC,OAAU;UACXiB,MAAM,eACL5C,IAAA,CAACF,MAAM;YACN+C,qBAAqB;YACrBC,IAAI,EAAGR,GAAG,CAACQ,IAAM;YACjBC,KAAK,EAAGT,GAAG,CAACQ,IAAI,IAAIR,GAAG,CAACU,KAAO;YAC/BC,WAAW,EAAG,CAAC,CAAEX,GAAG,CAACQ;UAAM,CAC3B,CACD;UAAAtC,QAAA,EAEC,CAAE8B,GAAG,CAACQ,IAAI,IAAIR,GAAG,CAACU;QAAK,GAvBnBV,GAAG,CAACX,IAwBE,CAAC;MAEhB,CAAE;IAAC,CACa,CAAC,EAChBE,WAAW,iBACZ7B,IAAA,CAACZ,OAAO,CAAC6B,QAAQ;MAChBb,EAAE,EAAG,GAAIc,iBAAiB,CAAEW,WAAW,CAACF,IAAK,CAAC,OAAU;MACxDc,KAAK,EAAGrB,QAAU;MAClB8B,KAAK,EAAGhC,iBAAiB,CAAEW,WAAW,CAACF,IAAK,CAAG;MAC/CpB,SAAS,EAAC,mCAAmC;MAAAC,QAAA,EAE3CA,QAAQ,CAAEqB,WAAY;IAAC,CACR,CAClB;EAAA,CACG,CAAC;AAER,CAAC;AAED,OAAO,MAAMZ,QAAQ,GAAG1B,UAAU,CAAEe,mBAAoB,CAAC;AACzD,eAAeW,QAAQ","ignoreList":[]}
@@ -2,13 +2,13 @@
2
2
  * External dependencies
3
3
  */
4
4
  import * as Ariakit from '@ariakit/react';
5
- import { useStoreState } from '@ariakit/react';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
9
8
  */
10
9
  import { useInstanceId } from '@wordpress/compose';
11
- import { useEffect, useLayoutEffect, useMemo, useRef } from '@wordpress/element';
10
+ import { useEffect, useMemo } from '@wordpress/element';
11
+ import { isRTL } from '@wordpress/i18n';
12
12
 
13
13
  /**
14
14
  * Internal dependencies
@@ -19,128 +19,55 @@ import { Tab } from './tab';
19
19
  import { TabList } from './tablist';
20
20
  import { TabPanel } from './tabpanel';
21
21
  import { jsx as _jsx } from "react/jsx-runtime";
22
- function Tabs({
22
+ function externalToInternalTabId(externalId, instanceId) {
23
+ return externalId && `${instanceId}-${externalId}`;
24
+ }
25
+ function internalToExternalTabId(internalId, instanceId) {
26
+ return typeof internalId === 'string' ? internalId.replace(`${instanceId}-`, '') : internalId;
27
+ }
28
+
29
+ /**
30
+ * Display one panel of content at a time with a tabbed interface, based on the
31
+ * WAI-ARIA Tabs Pattern⁠.
32
+ *
33
+ * @see https://www.w3.org/WAI/ARIA/apg/patterns/tabs/
34
+ * ```
35
+ */
36
+ export const Tabs = Object.assign(function Tabs({
23
37
  selectOnMove = true,
24
38
  defaultTabId,
25
39
  orientation = 'horizontal',
26
40
  onSelect,
27
41
  children,
28
- selectedTabId
42
+ selectedTabId,
43
+ activeTabId,
44
+ defaultActiveTabId,
45
+ onActiveTabIdChange
29
46
  }) {
30
47
  const instanceId = useInstanceId(Tabs, 'tabs');
31
48
  const store = Ariakit.useTabStore({
32
49
  selectOnMove,
33
50
  orientation,
34
- defaultSelectedId: defaultTabId && `${instanceId}-${defaultTabId}`,
35
- setSelectedId: selectedId => {
36
- const strippedDownId = typeof selectedId === 'string' ? selectedId.replace(`${instanceId}-`, '') : selectedId;
37
- onSelect?.(strippedDownId);
51
+ defaultSelectedId: externalToInternalTabId(defaultTabId, instanceId),
52
+ setSelectedId: newSelectedId => {
53
+ onSelect?.(internalToExternalTabId(newSelectedId, instanceId));
38
54
  },
39
- selectedId: selectedTabId && `${instanceId}-${selectedTabId}`
55
+ selectedId: externalToInternalTabId(selectedTabId, instanceId),
56
+ defaultActiveId: externalToInternalTabId(defaultActiveTabId, instanceId),
57
+ setActiveId: newActiveId => {
58
+ onActiveTabIdChange?.(internalToExternalTabId(newActiveId, instanceId));
59
+ },
60
+ activeId: externalToInternalTabId(activeTabId, instanceId),
61
+ rtl: isRTL()
40
62
  });
41
- const isControlled = selectedTabId !== undefined;
42
63
  const {
43
64
  items,
44
- selectedId,
45
65
  activeId
46
- } = useStoreState(store);
66
+ } = Ariakit.useStoreState(store);
47
67
  const {
48
- setSelectedId,
49
68
  setActiveId
50
69
  } = store;
51
-
52
- // Keep track of whether tabs have been populated. This is used to prevent
53
- // certain effects from firing too early while tab data and relevant
54
- // variables are undefined during the initial render.
55
- const tabsHavePopulatedRef = useRef(false);
56
- if (items.length > 0) {
57
- tabsHavePopulatedRef.current = true;
58
- }
59
- const selectedTab = items.find(item => item.id === selectedId);
60
- const firstEnabledTab = items.find(item => {
61
- // Ariakit internally refers to disabled tabs as `dimmed`.
62
- return !item.dimmed;
63
- });
64
- const initialTab = items.find(item => item.id === `${instanceId}-${defaultTabId}`);
65
-
66
- // Handle selecting the initial tab.
67
- useLayoutEffect(() => {
68
- if (isControlled) {
69
- return;
70
- }
71
-
72
- // Wait for the denoted initial tab to be declared before making a
73
- // selection. This ensures that if a tab is declared lazily it can
74
- // still receive initial selection, as well as ensuring no tab is
75
- // selected if an invalid `defaultTabId` is provided.
76
- if (defaultTabId && !initialTab) {
77
- return;
78
- }
79
-
80
- // If the currently selected tab is missing (i.e. removed from the DOM),
81
- // fall back to the initial tab or the first enabled tab if there is
82
- // one. Otherwise, no tab should be selected.
83
- if (!items.find(item => item.id === selectedId)) {
84
- if (initialTab && !initialTab.dimmed) {
85
- setSelectedId(initialTab?.id);
86
- return;
87
- }
88
- if (firstEnabledTab) {
89
- setSelectedId(firstEnabledTab.id);
90
- } else if (tabsHavePopulatedRef.current) {
91
- setSelectedId(null);
92
- }
93
- }
94
- }, [firstEnabledTab, initialTab, defaultTabId, isControlled, items, selectedId, setSelectedId]);
95
-
96
- // Handle the currently selected tab becoming disabled.
97
- useLayoutEffect(() => {
98
- if (!selectedTab?.dimmed) {
99
- return;
100
- }
101
-
102
- // In controlled mode, we trust that disabling tabs is done
103
- // intentionally, and don't select a new tab automatically.
104
- if (isControlled) {
105
- setSelectedId(null);
106
- return;
107
- }
108
-
109
- // If the currently selected tab becomes disabled, fall back to the
110
- // `defaultTabId` if possible. Otherwise select the first
111
- // enabled tab (if there is one).
112
- if (initialTab && !initialTab.dimmed) {
113
- setSelectedId(initialTab.id);
114
- return;
115
- }
116
- if (firstEnabledTab) {
117
- setSelectedId(firstEnabledTab.id);
118
- }
119
- }, [firstEnabledTab, initialTab, isControlled, selectedTab?.dimmed, setSelectedId]);
120
-
121
- // Clear `selectedId` if the active tab is removed from the DOM in controlled mode.
122
- useLayoutEffect(() => {
123
- if (!isControlled) {
124
- return;
125
- }
126
-
127
- // Once the tabs have populated, if the `selectedTabId` still can't be
128
- // found, clear the selection.
129
- if (tabsHavePopulatedRef.current && !!selectedTabId && !selectedTab) {
130
- setSelectedId(null);
131
- }
132
- }, [isControlled, selectedTab, selectedTabId, setSelectedId]);
133
70
  useEffect(() => {
134
- // If there is no active tab, fallback to place focus on the first enabled tab
135
- // so there is always an active element
136
- if (selectedTabId === null && !activeId && firstEnabledTab?.id) {
137
- setActiveId(firstEnabledTab.id);
138
- }
139
- }, [selectedTabId, activeId, firstEnabledTab?.id, setActiveId]);
140
- useEffect(() => {
141
- if (!isControlled) {
142
- return;
143
- }
144
71
  requestAnimationFrame(() => {
145
72
  const focusedElement = items?.[0]?.element?.ownerDocument.activeElement;
146
73
  if (!focusedElement || !items.some(item => focusedElement === item.element)) {
@@ -155,7 +82,7 @@ function Tabs({
155
82
  setActiveId(focusedElement.id);
156
83
  }
157
84
  });
158
- }, [activeId, isControlled, items, setActiveId]);
85
+ }, [activeId, items, setActiveId]);
159
86
  const contextValue = useMemo(() => ({
160
87
  store,
161
88
  instanceId
@@ -164,10 +91,18 @@ function Tabs({
164
91
  value: contextValue,
165
92
  children: children
166
93
  });
167
- }
168
- Tabs.TabList = TabList;
169
- Tabs.Tab = Tab;
170
- Tabs.TabPanel = TabPanel;
171
- Tabs.Context = TabsContext;
172
- export default Tabs;
94
+ }, {
95
+ Tab: Object.assign(Tab, {
96
+ displayName: 'Tabs.Tab'
97
+ }),
98
+ TabList: Object.assign(TabList, {
99
+ displayName: 'Tabs.TabList'
100
+ }),
101
+ TabPanel: Object.assign(TabPanel, {
102
+ displayName: 'Tabs.TabPanel'
103
+ }),
104
+ Context: Object.assign(TabsContext, {
105
+ displayName: 'Tabs.Context'
106
+ })
107
+ });
173
108
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Ariakit","useStoreState","useInstanceId","useEffect","useLayoutEffect","useMemo","useRef","TabsContext","Tab","TabList","TabPanel","jsx","_jsx","Tabs","selectOnMove","defaultTabId","orientation","onSelect","children","selectedTabId","instanceId","store","useTabStore","defaultSelectedId","setSelectedId","selectedId","strippedDownId","replace","isControlled","undefined","items","activeId","setActiveId","tabsHavePopulatedRef","length","current","selectedTab","find","item","id","firstEnabledTab","dimmed","initialTab","requestAnimationFrame","focusedElement","element","ownerDocument","activeElement","some","contextValue","Provider","value","Context"],"sources":["@wordpress/components/src/tabs/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport * as Ariakit from '@ariakit/react';\nimport { useStoreState } from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { TabsProps } from './types';\nimport { TabsContext } from './context';\nimport { Tab } from './tab';\nimport { TabList } from './tablist';\nimport { TabPanel } from './tabpanel';\n\nfunction Tabs( {\n\tselectOnMove = true,\n\tdefaultTabId,\n\torientation = 'horizontal',\n\tonSelect,\n\tchildren,\n\tselectedTabId,\n}: TabsProps ) {\n\tconst instanceId = useInstanceId( Tabs, 'tabs' );\n\tconst store = Ariakit.useTabStore( {\n\t\tselectOnMove,\n\t\torientation,\n\t\tdefaultSelectedId: defaultTabId && `${ instanceId }-${ defaultTabId }`,\n\t\tsetSelectedId: ( selectedId ) => {\n\t\t\tconst strippedDownId =\n\t\t\t\ttypeof selectedId === 'string'\n\t\t\t\t\t? selectedId.replace( `${ instanceId }-`, '' )\n\t\t\t\t\t: selectedId;\n\t\t\tonSelect?.( strippedDownId );\n\t\t},\n\t\tselectedId: selectedTabId && `${ instanceId }-${ selectedTabId }`,\n\t} );\n\n\tconst isControlled = selectedTabId !== undefined;\n\n\tconst { items, selectedId, activeId } = useStoreState( store );\n\tconst { setSelectedId, setActiveId } = store;\n\n\t// Keep track of whether tabs have been populated. This is used to prevent\n\t// certain effects from firing too early while tab data and relevant\n\t// variables are undefined during the initial render.\n\tconst tabsHavePopulatedRef = useRef( false );\n\tif ( items.length > 0 ) {\n\t\ttabsHavePopulatedRef.current = true;\n\t}\n\n\tconst selectedTab = items.find( ( item ) => item.id === selectedId );\n\tconst firstEnabledTab = items.find( ( item ) => {\n\t\t// Ariakit internally refers to disabled tabs as `dimmed`.\n\t\treturn ! item.dimmed;\n\t} );\n\tconst initialTab = items.find(\n\t\t( item ) => item.id === `${ instanceId }-${ defaultTabId }`\n\t);\n\n\t// Handle selecting the initial tab.\n\tuseLayoutEffect( () => {\n\t\tif ( isControlled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Wait for the denoted initial tab to be declared before making a\n\t\t// selection. This ensures that if a tab is declared lazily it can\n\t\t// still receive initial selection, as well as ensuring no tab is\n\t\t// selected if an invalid `defaultTabId` is provided.\n\t\tif ( defaultTabId && ! initialTab ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If the currently selected tab is missing (i.e. removed from the DOM),\n\t\t// fall back to the initial tab or the first enabled tab if there is\n\t\t// one. Otherwise, no tab should be selected.\n\t\tif ( ! items.find( ( item ) => item.id === selectedId ) ) {\n\t\t\tif ( initialTab && ! initialTab.dimmed ) {\n\t\t\t\tsetSelectedId( initialTab?.id );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( firstEnabledTab ) {\n\t\t\t\tsetSelectedId( firstEnabledTab.id );\n\t\t\t} else if ( tabsHavePopulatedRef.current ) {\n\t\t\t\tsetSelectedId( null );\n\t\t\t}\n\t\t}\n\t}, [\n\t\tfirstEnabledTab,\n\t\tinitialTab,\n\t\tdefaultTabId,\n\t\tisControlled,\n\t\titems,\n\t\tselectedId,\n\t\tsetSelectedId,\n\t] );\n\n\t// Handle the currently selected tab becoming disabled.\n\tuseLayoutEffect( () => {\n\t\tif ( ! selectedTab?.dimmed ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In controlled mode, we trust that disabling tabs is done\n\t\t// intentionally, and don't select a new tab automatically.\n\t\tif ( isControlled ) {\n\t\t\tsetSelectedId( null );\n\t\t\treturn;\n\t\t}\n\n\t\t// If the currently selected tab becomes disabled, fall back to the\n\t\t// `defaultTabId` if possible. Otherwise select the first\n\t\t// enabled tab (if there is one).\n\t\tif ( initialTab && ! initialTab.dimmed ) {\n\t\t\tsetSelectedId( initialTab.id );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( firstEnabledTab ) {\n\t\t\tsetSelectedId( firstEnabledTab.id );\n\t\t}\n\t}, [\n\t\tfirstEnabledTab,\n\t\tinitialTab,\n\t\tisControlled,\n\t\tselectedTab?.dimmed,\n\t\tsetSelectedId,\n\t] );\n\n\t// Clear `selectedId` if the active tab is removed from the DOM in controlled mode.\n\tuseLayoutEffect( () => {\n\t\tif ( ! isControlled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once the tabs have populated, if the `selectedTabId` still can't be\n\t\t// found, clear the selection.\n\t\tif (\n\t\t\ttabsHavePopulatedRef.current &&\n\t\t\t!! selectedTabId &&\n\t\t\t! selectedTab\n\t\t) {\n\t\t\tsetSelectedId( null );\n\t\t}\n\t}, [ isControlled, selectedTab, selectedTabId, setSelectedId ] );\n\n\tuseEffect( () => {\n\t\t// If there is no active tab, fallback to place focus on the first enabled tab\n\t\t// so there is always an active element\n\t\tif ( selectedTabId === null && ! activeId && firstEnabledTab?.id ) {\n\t\t\tsetActiveId( firstEnabledTab.id );\n\t\t}\n\t}, [ selectedTabId, activeId, firstEnabledTab?.id, setActiveId ] );\n\n\tuseEffect( () => {\n\t\tif ( ! isControlled ) {\n\t\t\treturn;\n\t\t}\n\n\t\trequestAnimationFrame( () => {\n\t\t\tconst focusedElement =\n\t\t\t\titems?.[ 0 ]?.element?.ownerDocument.activeElement;\n\n\t\t\tif (\n\t\t\t\t! focusedElement ||\n\t\t\t\t! items.some( ( item ) => focusedElement === item.element )\n\t\t\t) {\n\t\t\t\treturn; // Return early if no tabs are focused.\n\t\t\t}\n\n\t\t\t// If, after ariakit re-computes the active tab, that tab doesn't match\n\t\t\t// the currently focused tab, then we force an update to ariakit to avoid\n\t\t\t// any mismatches, especially when navigating to previous/next tab with\n\t\t\t// arrow keys.\n\t\t\tif ( activeId !== focusedElement.id ) {\n\t\t\t\tsetActiveId( focusedElement.id );\n\t\t\t}\n\t\t} );\n\t}, [ activeId, isControlled, items, setActiveId ] );\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tstore,\n\t\t\tinstanceId,\n\t\t} ),\n\t\t[ store, instanceId ]\n\t);\n\n\treturn (\n\t\t<TabsContext.Provider value={ contextValue }>\n\t\t\t{ children }\n\t\t</TabsContext.Provider>\n\t);\n}\n\nTabs.TabList = TabList;\nTabs.Tab = Tab;\nTabs.TabPanel = TabPanel;\nTabs.Context = TabsContext;\n\nexport default Tabs;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Ariakit","useInstanceId","useEffect","useMemo","isRTL","TabsContext","Tab","TabList","TabPanel","jsx","_jsx","externalToInternalTabId","externalId","instanceId","internalToExternalTabId","internalId","replace","Tabs","Object","assign","selectOnMove","defaultTabId","orientation","onSelect","children","selectedTabId","activeTabId","defaultActiveTabId","onActiveTabIdChange","store","useTabStore","defaultSelectedId","setSelectedId","newSelectedId","selectedId","defaultActiveId","setActiveId","newActiveId","activeId","rtl","items","useStoreState","requestAnimationFrame","focusedElement","element","ownerDocument","activeElement","some","item","id","contextValue","Provider","value","displayName","Context"],"sources":["@wordpress/components/src/tabs/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport * as Ariakit from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { useEffect, useMemo } from '@wordpress/element';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { TabsProps } from './types';\nimport { TabsContext } from './context';\nimport { Tab } from './tab';\nimport { TabList } from './tablist';\nimport { TabPanel } from './tabpanel';\n\nfunction externalToInternalTabId(\n\texternalId: string | undefined | null,\n\tinstanceId: string\n) {\n\treturn externalId && `${ instanceId }-${ externalId }`;\n}\n\nfunction internalToExternalTabId(\n\tinternalId: string | undefined | null,\n\tinstanceId: string\n) {\n\treturn typeof internalId === 'string'\n\t\t? internalId.replace( `${ instanceId }-`, '' )\n\t\t: internalId;\n}\n\n/**\n * Display one panel of content at a time with a tabbed interface, based on the\n * WAI-ARIA Tabs Pattern⁠.\n *\n * @see https://www.w3.org/WAI/ARIA/apg/patterns/tabs/\n * ```\n */\nexport const Tabs = Object.assign(\n\tfunction Tabs( {\n\t\tselectOnMove = true,\n\t\tdefaultTabId,\n\t\torientation = 'horizontal',\n\t\tonSelect,\n\t\tchildren,\n\t\tselectedTabId,\n\t\tactiveTabId,\n\t\tdefaultActiveTabId,\n\t\tonActiveTabIdChange,\n\t}: TabsProps ) {\n\t\tconst instanceId = useInstanceId( Tabs, 'tabs' );\n\t\tconst store = Ariakit.useTabStore( {\n\t\t\tselectOnMove,\n\t\t\torientation,\n\t\t\tdefaultSelectedId: externalToInternalTabId(\n\t\t\t\tdefaultTabId,\n\t\t\t\tinstanceId\n\t\t\t),\n\t\t\tsetSelectedId: ( newSelectedId ) => {\n\t\t\t\tonSelect?.(\n\t\t\t\t\tinternalToExternalTabId( newSelectedId, instanceId )\n\t\t\t\t);\n\t\t\t},\n\t\t\tselectedId: externalToInternalTabId( selectedTabId, instanceId ),\n\t\t\tdefaultActiveId: externalToInternalTabId(\n\t\t\t\tdefaultActiveTabId,\n\t\t\t\tinstanceId\n\t\t\t),\n\t\t\tsetActiveId: ( newActiveId ) => {\n\t\t\t\tonActiveTabIdChange?.(\n\t\t\t\t\tinternalToExternalTabId( newActiveId, instanceId )\n\t\t\t\t);\n\t\t\t},\n\t\t\tactiveId: externalToInternalTabId( activeTabId, instanceId ),\n\t\t\trtl: isRTL(),\n\t\t} );\n\n\t\tconst { items, activeId } = Ariakit.useStoreState( store );\n\t\tconst { setActiveId } = store;\n\n\t\tuseEffect( () => {\n\t\t\trequestAnimationFrame( () => {\n\t\t\t\tconst focusedElement =\n\t\t\t\t\titems?.[ 0 ]?.element?.ownerDocument.activeElement;\n\n\t\t\t\tif (\n\t\t\t\t\t! focusedElement ||\n\t\t\t\t\t! items.some( ( item ) => focusedElement === item.element )\n\t\t\t\t) {\n\t\t\t\t\treturn; // Return early if no tabs are focused.\n\t\t\t\t}\n\n\t\t\t\t// If, after ariakit re-computes the active tab, that tab doesn't match\n\t\t\t\t// the currently focused tab, then we force an update to ariakit to avoid\n\t\t\t\t// any mismatches, especially when navigating to previous/next tab with\n\t\t\t\t// arrow keys.\n\t\t\t\tif ( activeId !== focusedElement.id ) {\n\t\t\t\t\tsetActiveId( focusedElement.id );\n\t\t\t\t}\n\t\t\t} );\n\t\t}, [ activeId, items, setActiveId ] );\n\n\t\tconst contextValue = useMemo(\n\t\t\t() => ( {\n\t\t\t\tstore,\n\t\t\t\tinstanceId,\n\t\t\t} ),\n\t\t\t[ store, instanceId ]\n\t\t);\n\n\t\treturn (\n\t\t\t<TabsContext.Provider value={ contextValue }>\n\t\t\t\t{ children }\n\t\t\t</TabsContext.Provider>\n\t\t);\n\t},\n\t{\n\t\tTab: Object.assign( Tab, {\n\t\t\tdisplayName: 'Tabs.Tab',\n\t\t} ),\n\t\tTabList: Object.assign( TabList, {\n\t\t\tdisplayName: 'Tabs.TabList',\n\t\t} ),\n\t\tTabPanel: Object.assign( TabPanel, {\n\t\t\tdisplayName: 'Tabs.TabPanel',\n\t\t} ),\n\t\tContext: Object.assign( TabsContext, {\n\t\t\tdisplayName: 'Tabs.Context',\n\t\t} ),\n\t}\n);\n"],"mappings":"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","ignoreList":[]}