@workday/canvas-kit-react 15.1.11 → 15.1.12

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 (302) hide show
  1. package/collection/lib/useOverflowListModel.tsx +9 -0
  2. package/dist/commonjs/action-bar/lib/ActionBarList.js +1 -1
  3. package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.js +1 -1
  4. package/dist/commonjs/avatar/lib/Avatar.js +13 -13
  5. package/dist/commonjs/avatar/lib/AvatarImage.js +1 -1
  6. package/dist/commonjs/avatar/lib/AvatarName.js +1 -1
  7. package/dist/commonjs/avatar/lib/BaseAvatar.js +12 -12
  8. package/dist/commonjs/badge/lib/CountBadge.js +6 -6
  9. package/dist/commonjs/banner/lib/Banner.js +5 -5
  10. package/dist/commonjs/banner/lib/BannerActionText.js +2 -2
  11. package/dist/commonjs/banner/lib/BannerIcon.js +1 -1
  12. package/dist/commonjs/banner/lib/BannerLabel.js +1 -1
  13. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsCurrentItem.js +1 -1
  14. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
  15. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsLink.js +1 -1
  16. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsList.js +1 -1
  17. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsMenu.js +2 -2
  18. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
  19. package/dist/commonjs/button/lib/BaseButton.js +21 -21
  20. package/dist/commonjs/button/lib/DeleteButton.js +1 -1
  21. package/dist/commonjs/button/lib/ExternalHyperlink.js +1 -1
  22. package/dist/commonjs/button/lib/Hyperlink.js +4 -4
  23. package/dist/commonjs/button/lib/PrimaryButton.js +2 -2
  24. package/dist/commonjs/button/lib/SecondaryButton.js +2 -2
  25. package/dist/commonjs/button/lib/TertiaryButton.js +17 -17
  26. package/dist/commonjs/button/lib/ToolbarDropdownButton.js +3 -3
  27. package/dist/commonjs/button/lib/ToolbarIconButton.js +1 -1
  28. package/dist/commonjs/button/lib/parts/ButtonLabel.js +1 -1
  29. package/dist/commonjs/button/lib/parts/ButtonLabelIcon.js +5 -5
  30. package/dist/commonjs/card/lib/Card.js +3 -3
  31. package/dist/commonjs/card/lib/CardBody.js +1 -1
  32. package/dist/commonjs/card/lib/CardHeading.js +1 -1
  33. package/dist/commonjs/checkbox/lib/CheckBackground.js +6 -6
  34. package/dist/commonjs/checkbox/lib/CheckboxCheck.js +6 -6
  35. package/dist/commonjs/checkbox/lib/CheckboxContainer.js +1 -1
  36. package/dist/commonjs/checkbox/lib/CheckboxInput.js +5 -5
  37. package/dist/commonjs/checkbox/lib/CheckboxRipple.js +1 -1
  38. package/dist/commonjs/collection/lib/ListBox.js +3 -3
  39. package/dist/commonjs/collection/lib/useOverflowListModel.d.ts.map +1 -1
  40. package/dist/commonjs/collection/lib/useOverflowListModel.js +2 -0
  41. package/dist/commonjs/color-picker/lib/ColorInput.js +3 -3
  42. package/dist/commonjs/color-picker/lib/ColorPreview.js +1 -1
  43. package/dist/commonjs/color-picker/lib/parts/ColorSwatch.js +2 -2
  44. package/dist/commonjs/combobox/lib/ComboboxCard.js +1 -1
  45. package/dist/commonjs/combobox/lib/ComboboxMenuList.js +1 -1
  46. package/dist/commonjs/common/lib/AccessibleHide.js +1 -1
  47. package/dist/commonjs/common/lib/CanvasProvider.js +1 -1
  48. package/dist/commonjs/common/lib/EllipsisText.js +1 -1
  49. package/dist/commonjs/expandable/lib/Expandable.js +1 -1
  50. package/dist/commonjs/expandable/lib/ExpandableAvatar.js +1 -1
  51. package/dist/commonjs/expandable/lib/ExpandableContent.js +1 -1
  52. package/dist/commonjs/expandable/lib/ExpandableIcon.js +10 -10
  53. package/dist/commonjs/expandable/lib/ExpandableTarget.js +1 -1
  54. package/dist/commonjs/expandable/lib/ExpandableTitle.js +1 -1
  55. package/dist/commonjs/form-field/lib/FormFieldField.js +1 -1
  56. package/dist/commonjs/form-field/lib/FormFieldGroupLabel.js +5 -5
  57. package/dist/commonjs/form-field/lib/FormFieldGroupList.js +3 -3
  58. package/dist/commonjs/form-field/lib/FormFieldHint.js +3 -3
  59. package/dist/commonjs/form-field/lib/FormFieldLabel.js +6 -6
  60. package/dist/commonjs/form-field/lib/formFieldStencil.js +8 -8
  61. package/dist/commonjs/icon/lib/AccentIcon.js +2 -2
  62. package/dist/commonjs/icon/lib/AppletIcon.js +1 -1
  63. package/dist/commonjs/icon/lib/ExpressiveIcon.js +1 -1
  64. package/dist/commonjs/icon/lib/Graphic.js +4 -4
  65. package/dist/commonjs/icon/lib/Svg.js +3 -3
  66. package/dist/commonjs/icon/lib/SystemIcon.js +1 -1
  67. package/dist/commonjs/icon/lib/SystemIconCircle.js +2 -2
  68. package/dist/commonjs/information-highlight/lib/InformationHighlight.js +7 -7
  69. package/dist/commonjs/information-highlight/lib/parts/Body.js +1 -1
  70. package/dist/commonjs/information-highlight/lib/parts/Heading.js +1 -1
  71. package/dist/commonjs/information-highlight/lib/parts/Link.js +1 -1
  72. package/dist/commonjs/loading-dots/lib/LoadingDots.js +3 -3
  73. package/dist/commonjs/menu/lib/MenuCard.js +1 -1
  74. package/dist/commonjs/menu/lib/MenuDivider.js +1 -1
  75. package/dist/commonjs/menu/lib/MenuGroup.js +1 -1
  76. package/dist/commonjs/menu/lib/MenuItem.js +1 -1
  77. package/dist/commonjs/menu/lib/MenuList.js +3 -3
  78. package/dist/commonjs/modal/lib/ModalBody.js +1 -1
  79. package/dist/commonjs/modal/lib/ModalCard.js +1 -1
  80. package/dist/commonjs/modal/lib/ModalHeading.js +1 -1
  81. package/dist/commonjs/modal/lib/ModalOverflowOverlay.js +1 -1
  82. package/dist/commonjs/modal/lib/ModalOverlay.js +2 -2
  83. package/dist/commonjs/pagination/lib/Pagination/AdditionalDetails.js +2 -2
  84. package/dist/commonjs/pagination/lib/Pagination/Controls.js +2 -2
  85. package/dist/commonjs/pagination/lib/Pagination/GoTo/Form.js +1 -1
  86. package/dist/commonjs/pagination/lib/Pagination/GoTo/Label.js +1 -1
  87. package/dist/commonjs/pagination/lib/Pagination/GoTo/TextInput.js +1 -1
  88. package/dist/commonjs/pagination/lib/Pagination/Nav.js +1 -1
  89. package/dist/commonjs/pagination/lib/Pagination/PageButton.js +2 -2
  90. package/dist/commonjs/pagination/lib/Pagination/PageList.js +1 -1
  91. package/dist/commonjs/pagination/lib/Pagination/Pagination.js +1 -1
  92. package/dist/commonjs/pagination/lib/Pagination/common/List.js +2 -2
  93. package/dist/commonjs/pill/lib/Pill.js +3 -3
  94. package/dist/commonjs/pill/lib/PillAvatar.js +1 -1
  95. package/dist/commonjs/pill/lib/PillCount.js +1 -1
  96. package/dist/commonjs/pill/lib/PillIcon.js +1 -1
  97. package/dist/commonjs/pill/lib/PillIconButton.js +1 -1
  98. package/dist/commonjs/pill/lib/PillLabel.js +1 -1
  99. package/dist/commonjs/popup/lib/PopupBody.js +1 -1
  100. package/dist/commonjs/popup/lib/PopupCard.js +2 -2
  101. package/dist/commonjs/popup/lib/PopupCloseIcon.js +1 -1
  102. package/dist/commonjs/popup/lib/PopupHeading.js +1 -1
  103. package/dist/commonjs/popup/lib/hooks/useDisableBodyScroll.js +1 -1
  104. package/dist/commonjs/segmented-control/lib/SegmentedControlItem.js +16 -16
  105. package/dist/commonjs/segmented-control/lib/SegmentedControlList.js +3 -3
  106. package/dist/commonjs/select/lib/SelectCard.js +1 -1
  107. package/dist/commonjs/select/lib/SelectInput.js +3 -3
  108. package/dist/commonjs/side-panel/lib/SidePanel.js +7 -7
  109. package/dist/commonjs/side-panel/lib/SidePanelHeading.js +3 -3
  110. package/dist/commonjs/side-panel/lib/SidePanelToggleButton.js +10 -10
  111. package/dist/commonjs/skeleton/lib/Skeleton.js +2 -2
  112. package/dist/commonjs/skeleton/lib/parts/SkeletonHeader.js +1 -1
  113. package/dist/commonjs/skeleton/lib/parts/SkeletonShape.js +1 -1
  114. package/dist/commonjs/skeleton/lib/parts/SkeletonText.js +1 -1
  115. package/dist/commonjs/switch/lib/Switch.js +7 -7
  116. package/dist/commonjs/table/lib/BaseTable.js +1 -1
  117. package/dist/commonjs/table/lib/Table.js +7 -7
  118. package/dist/commonjs/table/lib/parts/BaseTableBody.js +1 -1
  119. package/dist/commonjs/table/lib/parts/BaseTableCaption.js +1 -1
  120. package/dist/commonjs/table/lib/parts/BaseTableCell.js +1 -1
  121. package/dist/commonjs/table/lib/parts/BaseTableHead.js +1 -1
  122. package/dist/commonjs/table/lib/parts/BaseTableHeader.js +1 -1
  123. package/dist/commonjs/table/lib/parts/css-grid-table/TableRow.js +1 -1
  124. package/dist/commonjs/tabs/lib/TabsItem.d.ts +3 -1
  125. package/dist/commonjs/tabs/lib/TabsItem.d.ts.map +1 -1
  126. package/dist/commonjs/tabs/lib/TabsItem.js +55 -3
  127. package/dist/commonjs/tabs/lib/TabsList.d.ts +321 -1
  128. package/dist/commonjs/tabs/lib/TabsList.d.ts.map +1 -1
  129. package/dist/commonjs/tabs/lib/TabsList.js +66 -12
  130. package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts +24 -214
  131. package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts.map +1 -1
  132. package/dist/commonjs/tabs/lib/TabsOverflowButton.js +72 -7
  133. package/dist/commonjs/tabs/lib/useTabsModel.d.ts +5 -0
  134. package/dist/commonjs/tabs/lib/useTabsModel.d.ts.map +1 -1
  135. package/dist/commonjs/tabs/lib/useTabsModel.js +146 -7
  136. package/dist/commonjs/testing/lib/ComponentStatesTable.js +1 -1
  137. package/dist/commonjs/text/lib/LabelText.js +6 -6
  138. package/dist/commonjs/text/lib/Text.js +16 -16
  139. package/dist/commonjs/text/lib/TypeLevelComponents.js +4 -4
  140. package/dist/commonjs/text-area/lib/TextArea.js +5 -5
  141. package/dist/commonjs/text-input/lib/InputGroup.js +6 -6
  142. package/dist/commonjs/text-input/lib/TextInput.js +5 -5
  143. package/dist/commonjs/toast/lib/Toast.js +1 -1
  144. package/dist/commonjs/toast/lib/ToastBody.js +1 -1
  145. package/dist/commonjs/toast/lib/ToastCloseIcon.js +1 -1
  146. package/dist/commonjs/toast/lib/ToastIcon.js +1 -1
  147. package/dist/commonjs/toast/lib/ToastMessage.js +1 -1
  148. package/dist/commonjs/tooltip/lib/TooltipContainer.js +3 -3
  149. package/dist/commonjs/version/lib/version.js +1 -1
  150. package/dist/es6/action-bar/lib/ActionBarList.js +1 -1
  151. package/dist/es6/action-bar/lib/ActionBarOverflowButton.js +1 -1
  152. package/dist/es6/avatar/lib/Avatar.js +13 -13
  153. package/dist/es6/avatar/lib/AvatarImage.js +1 -1
  154. package/dist/es6/avatar/lib/AvatarName.js +1 -1
  155. package/dist/es6/avatar/lib/BaseAvatar.js +12 -12
  156. package/dist/es6/badge/lib/CountBadge.js +6 -6
  157. package/dist/es6/banner/lib/Banner.js +5 -5
  158. package/dist/es6/banner/lib/BannerActionText.js +2 -2
  159. package/dist/es6/banner/lib/BannerIcon.js +1 -1
  160. package/dist/es6/banner/lib/BannerLabel.js +1 -1
  161. package/dist/es6/breadcrumbs/lib/BreadcrumbsCurrentItem.js +1 -1
  162. package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
  163. package/dist/es6/breadcrumbs/lib/BreadcrumbsLink.js +1 -1
  164. package/dist/es6/breadcrumbs/lib/BreadcrumbsList.js +1 -1
  165. package/dist/es6/breadcrumbs/lib/BreadcrumbsMenu.js +2 -2
  166. package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
  167. package/dist/es6/button/lib/BaseButton.js +21 -21
  168. package/dist/es6/button/lib/DeleteButton.js +1 -1
  169. package/dist/es6/button/lib/ExternalHyperlink.js +1 -1
  170. package/dist/es6/button/lib/Hyperlink.js +4 -4
  171. package/dist/es6/button/lib/PrimaryButton.js +2 -2
  172. package/dist/es6/button/lib/SecondaryButton.js +2 -2
  173. package/dist/es6/button/lib/TertiaryButton.js +17 -17
  174. package/dist/es6/button/lib/ToolbarDropdownButton.js +3 -3
  175. package/dist/es6/button/lib/ToolbarIconButton.js +1 -1
  176. package/dist/es6/button/lib/parts/ButtonLabel.js +1 -1
  177. package/dist/es6/button/lib/parts/ButtonLabelIcon.js +5 -5
  178. package/dist/es6/card/lib/Card.js +3 -3
  179. package/dist/es6/card/lib/CardBody.js +1 -1
  180. package/dist/es6/card/lib/CardHeading.js +1 -1
  181. package/dist/es6/checkbox/lib/CheckBackground.js +6 -6
  182. package/dist/es6/checkbox/lib/CheckboxCheck.js +6 -6
  183. package/dist/es6/checkbox/lib/CheckboxContainer.js +1 -1
  184. package/dist/es6/checkbox/lib/CheckboxInput.js +5 -5
  185. package/dist/es6/checkbox/lib/CheckboxRipple.js +1 -1
  186. package/dist/es6/collection/lib/ListBox.js +3 -3
  187. package/dist/es6/collection/lib/useOverflowListModel.d.ts.map +1 -1
  188. package/dist/es6/collection/lib/useOverflowListModel.js +2 -0
  189. package/dist/es6/color-picker/lib/ColorInput.js +3 -3
  190. package/dist/es6/color-picker/lib/ColorPreview.js +1 -1
  191. package/dist/es6/color-picker/lib/parts/ColorSwatch.js +2 -2
  192. package/dist/es6/combobox/lib/ComboboxCard.js +1 -1
  193. package/dist/es6/combobox/lib/ComboboxMenuList.js +1 -1
  194. package/dist/es6/common/lib/AccessibleHide.js +1 -1
  195. package/dist/es6/common/lib/CanvasProvider.js +1 -1
  196. package/dist/es6/common/lib/EllipsisText.js +1 -1
  197. package/dist/es6/expandable/lib/Expandable.js +1 -1
  198. package/dist/es6/expandable/lib/ExpandableAvatar.js +1 -1
  199. package/dist/es6/expandable/lib/ExpandableContent.js +1 -1
  200. package/dist/es6/expandable/lib/ExpandableIcon.js +10 -10
  201. package/dist/es6/expandable/lib/ExpandableTarget.js +1 -1
  202. package/dist/es6/expandable/lib/ExpandableTitle.js +1 -1
  203. package/dist/es6/form-field/lib/FormFieldField.js +1 -1
  204. package/dist/es6/form-field/lib/FormFieldGroupLabel.js +5 -5
  205. package/dist/es6/form-field/lib/FormFieldGroupList.js +3 -3
  206. package/dist/es6/form-field/lib/FormFieldHint.js +3 -3
  207. package/dist/es6/form-field/lib/FormFieldLabel.js +6 -6
  208. package/dist/es6/form-field/lib/formFieldStencil.js +8 -8
  209. package/dist/es6/icon/lib/AccentIcon.js +2 -2
  210. package/dist/es6/icon/lib/AppletIcon.js +1 -1
  211. package/dist/es6/icon/lib/ExpressiveIcon.js +1 -1
  212. package/dist/es6/icon/lib/Graphic.js +4 -4
  213. package/dist/es6/icon/lib/Svg.js +3 -3
  214. package/dist/es6/icon/lib/SystemIcon.js +1 -1
  215. package/dist/es6/icon/lib/SystemIconCircle.js +2 -2
  216. package/dist/es6/information-highlight/lib/InformationHighlight.js +7 -7
  217. package/dist/es6/information-highlight/lib/parts/Body.js +1 -1
  218. package/dist/es6/information-highlight/lib/parts/Heading.js +1 -1
  219. package/dist/es6/information-highlight/lib/parts/Link.js +1 -1
  220. package/dist/es6/loading-dots/lib/LoadingDots.js +3 -3
  221. package/dist/es6/menu/lib/MenuCard.js +1 -1
  222. package/dist/es6/menu/lib/MenuDivider.js +1 -1
  223. package/dist/es6/menu/lib/MenuGroup.js +1 -1
  224. package/dist/es6/menu/lib/MenuItem.js +1 -1
  225. package/dist/es6/menu/lib/MenuList.js +3 -3
  226. package/dist/es6/modal/lib/ModalBody.js +1 -1
  227. package/dist/es6/modal/lib/ModalCard.js +1 -1
  228. package/dist/es6/modal/lib/ModalHeading.js +1 -1
  229. package/dist/es6/modal/lib/ModalOverflowOverlay.js +1 -1
  230. package/dist/es6/modal/lib/ModalOverlay.js +2 -2
  231. package/dist/es6/pagination/lib/Pagination/AdditionalDetails.js +2 -2
  232. package/dist/es6/pagination/lib/Pagination/Controls.js +2 -2
  233. package/dist/es6/pagination/lib/Pagination/GoTo/Form.js +1 -1
  234. package/dist/es6/pagination/lib/Pagination/GoTo/Label.js +1 -1
  235. package/dist/es6/pagination/lib/Pagination/GoTo/TextInput.js +1 -1
  236. package/dist/es6/pagination/lib/Pagination/Nav.js +1 -1
  237. package/dist/es6/pagination/lib/Pagination/PageButton.js +2 -2
  238. package/dist/es6/pagination/lib/Pagination/PageList.js +1 -1
  239. package/dist/es6/pagination/lib/Pagination/Pagination.js +1 -1
  240. package/dist/es6/pagination/lib/Pagination/common/List.js +2 -2
  241. package/dist/es6/pill/lib/Pill.js +3 -3
  242. package/dist/es6/pill/lib/PillAvatar.js +1 -1
  243. package/dist/es6/pill/lib/PillCount.js +1 -1
  244. package/dist/es6/pill/lib/PillIcon.js +1 -1
  245. package/dist/es6/pill/lib/PillIconButton.js +1 -1
  246. package/dist/es6/pill/lib/PillLabel.js +1 -1
  247. package/dist/es6/popup/lib/PopupBody.js +1 -1
  248. package/dist/es6/popup/lib/PopupCard.js +2 -2
  249. package/dist/es6/popup/lib/PopupCloseIcon.js +1 -1
  250. package/dist/es6/popup/lib/PopupHeading.js +1 -1
  251. package/dist/es6/popup/lib/hooks/useDisableBodyScroll.js +1 -1
  252. package/dist/es6/segmented-control/lib/SegmentedControlItem.js +16 -16
  253. package/dist/es6/segmented-control/lib/SegmentedControlList.js +3 -3
  254. package/dist/es6/select/lib/SelectCard.js +1 -1
  255. package/dist/es6/select/lib/SelectInput.js +3 -3
  256. package/dist/es6/side-panel/lib/SidePanel.js +7 -7
  257. package/dist/es6/side-panel/lib/SidePanelHeading.js +3 -3
  258. package/dist/es6/side-panel/lib/SidePanelToggleButton.js +10 -10
  259. package/dist/es6/skeleton/lib/Skeleton.js +2 -2
  260. package/dist/es6/skeleton/lib/parts/SkeletonHeader.js +1 -1
  261. package/dist/es6/skeleton/lib/parts/SkeletonShape.js +1 -1
  262. package/dist/es6/skeleton/lib/parts/SkeletonText.js +1 -1
  263. package/dist/es6/switch/lib/Switch.js +7 -7
  264. package/dist/es6/table/lib/BaseTable.js +1 -1
  265. package/dist/es6/table/lib/Table.js +7 -7
  266. package/dist/es6/table/lib/parts/BaseTableBody.js +1 -1
  267. package/dist/es6/table/lib/parts/BaseTableCaption.js +1 -1
  268. package/dist/es6/table/lib/parts/BaseTableCell.js +1 -1
  269. package/dist/es6/table/lib/parts/BaseTableHead.js +1 -1
  270. package/dist/es6/table/lib/parts/BaseTableHeader.js +1 -1
  271. package/dist/es6/table/lib/parts/css-grid-table/TableRow.js +1 -1
  272. package/dist/es6/tabs/lib/TabsItem.d.ts +3 -1
  273. package/dist/es6/tabs/lib/TabsItem.d.ts.map +1 -1
  274. package/dist/es6/tabs/lib/TabsItem.js +33 -4
  275. package/dist/es6/tabs/lib/TabsList.d.ts +321 -1
  276. package/dist/es6/tabs/lib/TabsList.d.ts.map +1 -1
  277. package/dist/es6/tabs/lib/TabsList.js +69 -15
  278. package/dist/es6/tabs/lib/TabsOverflowButton.d.ts +24 -214
  279. package/dist/es6/tabs/lib/TabsOverflowButton.d.ts.map +1 -1
  280. package/dist/es6/tabs/lib/TabsOverflowButton.js +73 -9
  281. package/dist/es6/tabs/lib/useTabsModel.d.ts +5 -0
  282. package/dist/es6/tabs/lib/useTabsModel.d.ts.map +1 -1
  283. package/dist/es6/tabs/lib/useTabsModel.js +146 -7
  284. package/dist/es6/testing/lib/ComponentStatesTable.js +1 -1
  285. package/dist/es6/text/lib/LabelText.js +6 -6
  286. package/dist/es6/text/lib/Text.js +16 -16
  287. package/dist/es6/text/lib/TypeLevelComponents.js +4 -4
  288. package/dist/es6/text-area/lib/TextArea.js +5 -5
  289. package/dist/es6/text-input/lib/InputGroup.js +6 -6
  290. package/dist/es6/text-input/lib/TextInput.js +5 -5
  291. package/dist/es6/toast/lib/Toast.js +1 -1
  292. package/dist/es6/toast/lib/ToastBody.js +1 -1
  293. package/dist/es6/toast/lib/ToastCloseIcon.js +1 -1
  294. package/dist/es6/toast/lib/ToastIcon.js +1 -1
  295. package/dist/es6/toast/lib/ToastMessage.js +1 -1
  296. package/dist/es6/tooltip/lib/TooltipContainer.js +3 -3
  297. package/dist/es6/version/lib/version.js +1 -1
  298. package/package.json +4 -4
  299. package/tabs/lib/TabsItem.tsx +36 -0
  300. package/tabs/lib/TabsList.tsx +84 -5
  301. package/tabs/lib/TabsOverflowButton.tsx +78 -6
  302. package/tabs/lib/useTabsModel.tsx +161 -3
@@ -1,11 +1,12 @@
1
- import { jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
- import { useListRenderItems, useListResetCursorOnBlur, useOverflowListMeasure, } from '@workday/canvas-kit-react/collection';
4
- import { composeHooks, createElemPropsHook, createSubcomponent, useLocalRef, useModalityType, } from '@workday/canvas-kit-react/common';
3
+ import { ListRenderItemContext, isCursor, useOverflowListMeasure, } from '@workday/canvas-kit-react/collection';
4
+ import { composeHooks, createElemPropsHook, createSubcomponent, useLocalRef, useModalityType, useMountLayout, } from '@workday/canvas-kit-react/common';
5
5
  import { mergeStyles } from '@workday/canvas-kit-react/layout';
6
6
  import { createStencil, px2rem } from '@workday/canvas-kit-styling';
7
7
  import { base, system } from '@workday/canvas-tokens-web';
8
- import { useTabsModel } from './useTabsModel';
8
+ import { orientationKeyMap } from '../../collection/lib/keyUtils';
9
+ import { TABS_OVERFLOW_BUTTON_ID, useTabsModel } from './useTabsModel';
9
10
  function getScrollPercentage(elem, direction) {
10
11
  if (direction === 'vertical') {
11
12
  if (elem.scrollHeight > elem.clientHeight) {
@@ -59,30 +60,83 @@ export const useTabOverflowScroll = createElemPropsHook(useTabsModel)((_model, r
59
60
  },
60
61
  };
61
62
  });
63
+ /**
64
+ * Resets the tablist cursor on blur to the selected tab when visible, or to the first visible
65
+ * item (e.g. the overflow button) when the selected tab is hidden. This ensures the roving
66
+ * tabindex always lands on a focusable element when only the "More" button is visible.
67
+ */
68
+ export const useTabsListResetCursorOnBlur = createElemPropsHook(useTabsModel)(({ state, events }) => {
69
+ const programmaticFocusRef = React.useRef(false);
70
+ const requestAnimationFrameRef = React.useRef(0);
71
+ useMountLayout(() => {
72
+ return () => {
73
+ cancelAnimationFrame(requestAnimationFrameRef.current);
74
+ };
75
+ });
76
+ return {
77
+ onKeyDown(event) {
78
+ if (Object.keys(orientationKeyMap[state.orientation]).indexOf(event.key) !== -1) {
79
+ programmaticFocusRef.current = true;
80
+ }
81
+ },
82
+ onFocus() {
83
+ programmaticFocusRef.current = false;
84
+ },
85
+ onBlur() {
86
+ if (!programmaticFocusRef.current) {
87
+ requestAnimationFrameRef.current = requestAnimationFrame(() => {
88
+ var _a;
89
+ const selectedId = state.selectedIds !== 'all' && state.selectedIds.length
90
+ ? state.selectedIds[0]
91
+ : undefined;
92
+ const visibleItems = state.items.filter(item => !state.hiddenIds.includes(item.id));
93
+ const targetId = selectedId && !state.hiddenIds.includes(selectedId) ? selectedId : (_a = visibleItems[0]) === null || _a === void 0 ? void 0 : _a.id;
94
+ if (targetId && !isCursor(state, targetId)) {
95
+ events.goTo({ id: targetId });
96
+ }
97
+ });
98
+ }
99
+ },
100
+ };
101
+ });
62
102
  export const useTabsList = composeHooks(useTabOverflowScroll, createElemPropsHook(useTabsModel)(model => {
63
103
  return {
64
104
  role: 'tablist',
65
105
  'aria-orientation': model.state.orientation,
66
106
  };
67
- }), useOverflowListMeasure, useListResetCursorOnBlur);
107
+ }), useOverflowListMeasure, useTabsListResetCursorOnBlur);
68
108
  export const tabsListStencil = createStencil({
69
- base: { name: "1amnx3", styles: "box-sizing:border-box;display:flex;position:relative;border-block-end:0.0625rem solid var(--cnvs-sys-color-border-default, var(--cnvs-sys-color-border-divider, oklch(0.3057 0.079 256.22 / 0.13)));gap:var(--cnvs-sys-gap-xs, var(--cnvs-sys-space-x1, 0.25rem));padding-inline:var(--cnvs-base-size-500, 2.5rem);@media screen and (max-width: 768px){padding-inline:var(--cnvs-sys-padding-md, var(--cnvs-sys-space-x4, 1rem));}" },
109
+ base: { name: "4dcjfn", styles: "box-sizing:border-box;display:flex;position:relative;min-width:0;border-block-end:0.0625rem solid var(--cnvs-sys-color-border-default, var(--cnvs-sys-color-border-divider, oklch(0.3057 0.079 256.22 / 0.13)));gap:var(--cnvs-sys-gap-xs, var(--cnvs-sys-space-x1, 0.25rem));padding-inline:var(--cnvs-base-size-500, 2.5rem);@media screen and (max-width: 768px){padding-inline:var(--cnvs-sys-padding-md, var(--cnvs-sys-space-x4, 1rem));}" },
70
110
  modifiers: {
71
111
  modality: {
72
- touch: { name: "1k02uj", styles: "overflow-x:auto;padding-inline:0;&[data-scroll-position=\"start\"]{mask-image:linear-gradient(to right, white 80%, transparent);}&[data-scroll-position=\"middle\"]{mask-image:linear-gradient(to left, white 80%, transparent), linear-gradient(to right, white 80%, transparent);mask-composite:intersect;}&[data-scroll-position=\"end\"]{mask-image:linear-gradient(to left, white 80%, transparent);}" },
73
- mouse: { name: "muy1x", styles: "" },
74
- pen: { name: "1iayv3", styles: "" }
112
+ touch: { name: "159ntp", styles: "overflow-x:auto;padding-inline:0;&[data-scroll-position=\"start\"]{mask-image:linear-gradient(to right, white 80%, transparent);}&[data-scroll-position=\"middle\"]{mask-image:linear-gradient(to left, white 80%, transparent), linear-gradient(to right, white 80%, transparent);mask-composite:intersect;}&[data-scroll-position=\"end\"]{mask-image:linear-gradient(to left, white 80%, transparent);}" },
113
+ mouse: { name: "l2bho", styles: "" },
114
+ pen: { name: "6w1z0", styles: "" }
75
115
  },
76
116
  isDragging: {
77
- true: { name: "1ji0m0", styles: "" },
78
- false: { name: "gc4k8", styles: "" }
117
+ true: { name: "233jbe", styles: "" },
118
+ false: { name: "1x7och", styles: "" }
79
119
  },
80
120
  direction: {
81
- left: { name: "2neq7", styles: "" },
82
- right: { name: "p9klj", styles: "" }
121
+ left: { name: "1ciiu0", styles: "" },
122
+ right: { name: "93o2c", styles: "" }
83
123
  }
84
124
  }
85
- }, "tabs-list-917c0e");
125
+ }, "tabs-list-2049aa");
126
+ /**
127
+ * Custom render function for tabs that filters out the synthetic overflow button item.
128
+ * This is needed because the overflow button is included in the model's items array
129
+ * for navigation purposes, but should not be rendered by the list render function.
130
+ */
131
+ function useTabsListRenderItems(model, children) {
132
+ // Filter out the synthetic overflow button from rendering
133
+ const itemsToRender = model.state.items.filter(item => item.id !== TABS_OVERFLOW_BUTTON_ID);
134
+ const items = typeof children === 'function' ? (itemsToRender.map(item => {
135
+ const child = children(item.value, item.index);
136
+ return (_jsx(ListRenderItemContext.Provider, { value: { item }, children: child }, item.id || item.index));
137
+ })) : (_jsx(ListRenderItemContext.Provider, { value: {}, children: children }));
138
+ return items;
139
+ }
86
140
  export const TabsList = createSubcomponent('div')({
87
141
  displayName: 'Tabs.List',
88
142
  modelHook: useTabsModel,
@@ -91,5 +145,5 @@ export const TabsList = createSubcomponent('div')({
91
145
  const modality = useModalityType();
92
146
  return (_jsxs(Element, { ...mergeStyles(elemProps, tabsListStencil({
93
147
  modality: modality,
94
- })), children: [useListRenderItems(model, children), overflowButton] }));
148
+ })), children: [useTabsListRenderItems(model, children), overflowButton] }));
95
149
  });
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ export { TABS_OVERFLOW_BUTTON_ID } from './useTabsModel';
2
3
  export interface OverflowButtonProps {
3
4
  /**
4
5
  * The label text of the Tab.
@@ -7,10 +8,6 @@ export interface OverflowButtonProps {
7
8
  }
8
9
  export declare const useTabsOverflowButton: import("@workday/canvas-kit-react/common").BehaviorHook<{
9
10
  state: {
10
- getId: (item: any) => string;
11
- orientation: import("@workday/canvas-kit-react/collection").Orientation;
12
- panels: import("@workday/canvas-kit-react/collection").Item<any>[];
13
- panelIndexRef: React.MutableRefObject<number>;
14
11
  hiddenIds: string[];
15
12
  itemSizeCache: Record<string, number>;
16
13
  itemWidthCache: Record<string, number>;
@@ -30,19 +27,13 @@ export declare const useTabsOverflowButton: import("@workday/canvas-kit-react/co
30
27
  UNSTABLE_defaultItemHeight: number;
31
28
  containerRef: React.RefObject<HTMLDivElement>;
32
29
  id: string;
30
+ orientation: "horizontal" | "vertical";
33
31
  indexRef: React.MutableRefObject<number>;
34
32
  nonInteractiveIds: string[];
35
33
  isVirtualized: boolean;
36
34
  items: import("@workday/canvas-kit-react/collection").Item<any>[];
37
35
  };
38
36
  events: {
39
- registerPanel: (data: {
40
- id: string;
41
- textValue: string;
42
- }) => void;
43
- unregisterPanel: (data: {
44
- id: string;
45
- }) => void;
46
37
  select(data: {
47
38
  id: string;
48
39
  }): void;
@@ -116,215 +107,28 @@ export declare const useTabsOverflowButton: import("@workday/canvas-kit-react/co
116
107
  value: number;
117
108
  }): void;
118
109
  };
119
- menu: {
120
- state: {
121
- stackRef: React.RefObject<HTMLDivElement>;
122
- targetRef: React.RefObject<HTMLButtonElement>;
123
- initialFocusRef: React.RefObject<any> | undefined;
124
- returnFocusRef: React.RefObject<any> | undefined;
125
- placement: import("@popperjs/core").Placement;
126
- id: string;
127
- visibility: "hidden" | "visible";
128
- selectedIds: string[] | "all";
129
- unselectedIds: string[];
130
- cursorId: string | string[];
131
- columnCount: number;
132
- pageSizeRef: React.MutableRefObject<number>;
133
- cursorIndexRef: {
134
- readonly current: number;
135
- };
136
- UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
137
- UNSTABLE_defaultItemHeight: number;
138
- containerRef: React.RefObject<HTMLDivElement>;
139
- orientation: "horizontal" | "vertical";
140
- indexRef: React.MutableRefObject<number>;
141
- nonInteractiveIds: string[];
142
- isVirtualized: boolean;
143
- items: import("@workday/canvas-kit-react/collection").Item<any>[];
144
- mode: "multiple" | "single";
145
- };
146
- events: {
147
- updatePlacement(data: {
148
- placement: import("@popperjs/core").Placement;
149
- }): void;
150
- show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
151
- hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
152
- select(data: {
153
- id: string;
154
- }): void;
155
- selectAll(): void;
156
- unselectAll(): void;
157
- setSelectedIds(ids: string[] | "all"): void;
158
- remove(data: {
159
- id: string;
160
- nextId?: string | undefined;
161
- event?: Event | React.SyntheticEvent<Element, Event> | undefined;
162
- }): void;
163
- goTo(data: {
164
- id: string;
165
- }): void;
166
- goToNext(): void;
167
- goToPrevious(): void;
168
- goToPreviousRow(): void;
169
- goToNextRow(): void;
170
- goToFirst(): void;
171
- goToLast(): void;
172
- goToFirstOfRow(): void;
173
- goToLastOfRow(): void;
174
- goToNextPage(): void;
175
- goToPreviousPage(): void;
176
- registerItem(data: {
177
- id: string;
178
- textValue: string;
179
- }): void;
180
- unregisterItem(data: {
181
- id: string;
182
- }): void;
183
- updateItemHeight(data: {
184
- value: number;
185
- }): void;
186
- };
187
- UNSTABLE_parentModel: {
188
- state: {
189
- selectedIds: string[] | "all";
190
- unselectedIds: string[];
191
- cursorId: string | string[];
192
- columnCount: number;
193
- pageSizeRef: React.MutableRefObject<number>;
194
- cursorIndexRef: {
195
- readonly current: number;
196
- };
197
- UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
198
- UNSTABLE_defaultItemHeight: number;
199
- containerRef: React.RefObject<HTMLDivElement>;
200
- id: string;
201
- orientation: "horizontal" | "vertical";
202
- indexRef: React.MutableRefObject<number>;
203
- nonInteractiveIds: string[];
204
- isVirtualized: boolean;
205
- items: import("@workday/canvas-kit-react/collection").Item<any>[];
206
- };
207
- events: {
208
- select(data: {
209
- id: string;
210
- }): void;
211
- selectAll(): void;
212
- unselectAll(): void;
213
- setSelectedIds(ids: string[] | "all"): void;
214
- remove(data: {
215
- id: string;
216
- nextId?: string | undefined;
217
- event?: Event | React.SyntheticEvent<Element, Event> | undefined;
218
- }): void;
219
- goTo(data: {
220
- id: string;
221
- }): void;
222
- goToNext(): void;
223
- goToPrevious(): void;
224
- goToPreviousRow(): void;
225
- goToNextRow(): void;
226
- goToFirst(): void;
227
- goToLast(): void;
228
- goToFirstOfRow(): void;
229
- goToLastOfRow(): void;
230
- goToNextPage(): void;
231
- goToPreviousPage(): void;
232
- registerItem(data: {
233
- id: string;
234
- textValue: string;
235
- }): void;
236
- unregisterItem(data: {
237
- id: string;
238
- }): void;
239
- updateItemHeight(data: {
240
- value: number;
241
- }): void;
242
- };
243
- selection: import("@workday/canvas-kit-react/collection").SelectionManager;
244
- navigation: import("@workday/canvas-kit-react/collection").NavigationManager;
245
- getId: (item: any) => string;
246
- getTextValue: (item: any) => string;
247
- UNSTABLE_parentModel: {
248
- state: {
249
- selectedIds: string[] | "all";
250
- unselectedIds: string[];
251
- cursorId: string | string[];
252
- columnCount: number;
253
- pageSizeRef: React.MutableRefObject<number>;
254
- cursorIndexRef: {
255
- readonly current: number;
256
- };
257
- UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
258
- UNSTABLE_defaultItemHeight: number;
259
- containerRef: React.RefObject<HTMLDivElement>;
260
- id: string;
261
- orientation: "horizontal" | "vertical";
262
- indexRef: React.MutableRefObject<number>;
263
- nonInteractiveIds: string[];
264
- isVirtualized: boolean;
265
- items: import("@workday/canvas-kit-react/collection").Item<any>[];
266
- };
267
- events: {
268
- select(data: {
269
- id: string;
270
- }): void;
271
- selectAll(): void;
272
- unselectAll(): void;
273
- setSelectedIds(ids: string[] | "all"): void;
274
- remove(data: {
275
- id: string;
276
- nextId?: string | undefined;
277
- event?: Event | React.SyntheticEvent<Element, Event> | undefined;
278
- }): void;
279
- goTo(data: {
280
- id: string;
281
- }): void;
282
- goToNext(): void;
283
- goToPrevious(): void;
284
- goToPreviousRow(): void;
285
- goToNextRow(): void;
286
- goToFirst(): void;
287
- goToLast(): void;
288
- goToFirstOfRow(): void;
289
- goToLastOfRow(): void;
290
- goToNextPage(): void;
291
- goToPreviousPage(): void;
292
- registerItem(data: {
293
- id: string;
294
- textValue: string;
295
- }): void;
296
- unregisterItem(data: {
297
- id: string;
298
- }): void;
299
- updateItemHeight(data: {
300
- value: number;
301
- }): void;
302
- };
303
- selection: import("@workday/canvas-kit-react/collection").SelectionManager;
304
- navigation: import("@workday/canvas-kit-react/collection").NavigationManager;
305
- getId: (item: any) => string;
306
- getTextValue: (item: any) => string;
307
- } | undefined;
308
- };
309
- selection: import("@workday/canvas-kit-react/collection").SelectionManager;
310
- navigation: import("@workday/canvas-kit-react/collection").NavigationManager;
311
- getId: (item: any) => string;
312
- getTextValue: (item: any) => string;
313
- };
314
110
  selection: import("@workday/canvas-kit-react/collection").SelectionManager;
315
111
  navigation: import("@workday/canvas-kit-react/collection").NavigationManager;
316
112
  getId: (item: any) => string;
317
113
  getTextValue: (item: any) => string;
318
114
  }, import("@workday/canvas-kit-react/common").RemoveNulls<import("@workday/canvas-kit-react/common").MergeProps<{
319
- readonly 'aria-haspopup': true;
320
- }, import("@workday/canvas-kit-react/common").MergeProps<{
321
115
  readonly ref: (instance: HTMLElement | null) => void;
322
- readonly 'aria-hidden': boolean;
116
+ }, import("@workday/canvas-kit-react/common").MergeProps<{
117
+ readonly onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;
118
+ readonly onClick: () => void;
119
+ readonly 'data-focus-id': string;
323
120
  readonly tabIndex: 0 | -1;
324
- readonly style: {
325
- readonly position: "absolute";
326
- readonly left: -99999;
327
- } | undefined;
121
+ }, import("@workday/canvas-kit-react/common").MergeProps<{
122
+ readonly ref: (instance: Element | null | undefined) => void;
123
+ readonly 'data-id': string;
124
+ readonly disabled: true | undefined;
125
+ readonly 'aria-setsize': number | undefined;
126
+ readonly 'aria-posinset': number | undefined;
127
+ readonly 'data-index': number | undefined;
128
+ readonly style: React.CSSProperties;
129
+ readonly id: string;
130
+ }, import("@workday/canvas-kit-react/common").MergeProps<{
131
+ readonly 'data-id': "__tabs-overflow__";
328
132
  }, import("@workday/canvas-kit-react/common").MergeProps<import("@workday/canvas-kit-react/common").RemoveNulls<import("@workday/canvas-kit-react/common").MergeProps<{
329
133
  readonly id: string;
330
134
  readonly 'aria-haspopup': "true";
@@ -333,7 +137,13 @@ export declare const useTabsOverflowButton: import("@workday/canvas-kit-react/co
333
137
  }, import("@workday/canvas-kit-react/common").MergeProps<{
334
138
  readonly ref: (instance: unknown) => void;
335
139
  readonly onClick: (event: React.MouseEvent<Element, MouseEvent>) => void;
336
- }, import("@workday/canvas-kit-react/common").MergeProps<{}, import("@workday/canvas-kit-react/common").MergeProps<{}, import("@workday/canvas-kit-react/common").MergeProps<{}, import("@workday/canvas-kit-react/common").MergeProps<{}, {}>>>>>>>, import("@workday/canvas-kit-react/common").MergeProps<{}, import("@workday/canvas-kit-react/common").MergeProps<{}, import("@workday/canvas-kit-react/common").MergeProps<{}, {}>>>>>>>>;
140
+ }, import("@workday/canvas-kit-react/common").MergeProps<{}, import("@workday/canvas-kit-react/common").MergeProps<{}, import("@workday/canvas-kit-react/common").MergeProps<{}, import("@workday/canvas-kit-react/common").MergeProps<{}, {}>>>>>>>, import("@workday/canvas-kit-react/common").MergeProps<{
141
+ readonly onFocus: () => void;
142
+ }, {
143
+ readonly 'aria-haspopup': "menu";
144
+ readonly 'aria-selected': false;
145
+ readonly role: "tab";
146
+ }>>>>>>>>;
337
147
  export declare const TabsOverflowButton: import("@workday/canvas-kit-react/common").ElementComponentM<"button", OverflowButtonProps, {
338
148
  state: {
339
149
  getId: (item: any) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"TabsOverflowButton.d.ts","sourceRoot":"","sources":["../../../../tabs/lib/TabsOverflowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkB/B,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAWD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8aAQjC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe7B,CAAC"}
1
+ {"version":3,"file":"TabsOverflowButton.d.ts","sourceRoot":"","sources":["../../../../tabs/lib/TabsOverflowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAyB/B,OAAO,EAAC,uBAAuB,EAAC,MAAM,gBAAgB,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAoCD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAqCjC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwB7B,CAAC"}
@@ -1,25 +1,89 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useOverflowListTarget } from '@workday/canvas-kit-react/collection';
3
- import { composeHooks, createElemPropsHook, createSubModelElemPropsHook, createSubcomponent, } from '@workday/canvas-kit-react/common';
2
+ import { useListItemRegister, useListItemRovingFocus, useOverflowListModel, } from '@workday/canvas-kit-react/collection';
3
+ import { composeHooks, createElemPropsHook, createSubModelElemPropsHook, createSubcomponent, useLocalRef, useResizeObserver, } from '@workday/canvas-kit-react/common';
4
4
  import { SystemIcon } from '@workday/canvas-kit-react/icon';
5
5
  import { mergeStyles } from '@workday/canvas-kit-react/layout';
6
6
  import { useMenuTarget } from '@workday/canvas-kit-react/menu';
7
7
  import { createStencil } from '@workday/canvas-kit-styling';
8
8
  import { chevronDownSmallIcon } from '@workday/canvas-system-icons-web';
9
9
  import { StyledTabItem } from './TabsItem';
10
- import { useTabsModel } from './useTabsModel';
10
+ import { TABS_OVERFLOW_BUTTON_ID, useTabsModel } from './useTabsModel';
11
+ // Re-export for consumers who may need to reference the overflow button ID
12
+ export { TABS_OVERFLOW_BUTTON_ID } from './useTabsModel';
11
13
  const tabsOverflowButtonStencil = createStencil({
12
- base: { name: "12fzo3", styles: "box-sizing:border-box;&:has([data-part=\"tabs-overflow-button-icon\"]){display:flex;gap:0;}" }
13
- }, "tabs-overflow-button-c1675c");
14
- export const useTabsOverflowButton = composeHooks(createElemPropsHook(useTabsModel)(() => {
14
+ base: { name: "269cat", styles: "box-sizing:border-box;&:has([data-part=\"tabs-overflow-button-icon\"]){display:flex;gap:0;}" }
15
+ }, "tabs-overflow-button-b7c6dc");
16
+ /**
17
+ * Measures the overflow button and reports its size to the model for overflow calculation.
18
+ * Unlike useOverflowListTarget, this does NOT set aria-hidden or visibility styles because
19
+ * we handle visibility via conditional rendering in the TabsOverflowButton component.
20
+ */
21
+ const useTabsOverflowButtonMeasure = createElemPropsHook(useOverflowListModel)((model, ref) => {
22
+ const { elementRef, localRef } = useLocalRef(ref);
23
+ useResizeObserver({
24
+ ref: localRef,
25
+ onResize: ({ width = 0, height = 0 }) => {
26
+ if (localRef.current && (width > 0 || height > 0)) {
27
+ const styles = getComputedStyle(localRef.current);
28
+ const w = width + parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
29
+ const h = height + parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
30
+ model.events.setOverflowTargetSize({ width: w, height: h });
31
+ }
32
+ },
33
+ });
15
34
  return {
16
- 'aria-haspopup': true,
35
+ ref: elementRef,
17
36
  };
18
- }), useOverflowListTarget, createSubModelElemPropsHook(useTabsModel)(m => m.menu, useMenuTarget));
37
+ });
38
+ export const useTabsOverflowButton = composeHooks(
39
+ // Measures the overflow button for overflow calculation (no aria-hidden or visibility styles)
40
+ useTabsOverflowButtonMeasure,
41
+ // Adds roving tabindex behavior for arrow key navigation within the tablist
42
+ useListItemRovingFocus,
43
+ // Registers the overflow button as an item in the collection for cursor navigation
44
+ useListItemRegister,
45
+ // Provides the stable data-id needed for collection registration
46
+ createElemPropsHook(useTabsModel)(() => {
47
+ return {
48
+ 'data-id': TABS_OVERFLOW_BUTTON_ID,
49
+ };
50
+ }),
51
+ // Connects to the menu sub-model for popup behavior
52
+ createSubModelElemPropsHook(useTabsModel)(m => m.menu, useMenuTarget),
53
+ // Syncs the cursor to the overflow button when it receives focus.
54
+ // This is needed because when the menu closes and focus returns to the overflow button,
55
+ // the cursor state needs to be updated so arrow key navigation works correctly.
56
+ createElemPropsHook(useTabsModel)(model => {
57
+ return {
58
+ onFocus() {
59
+ model.events.goTo({ id: TABS_OVERFLOW_BUTTON_ID });
60
+ },
61
+ };
62
+ }),
63
+ // Runs FIRST - Sets ARIA attributes for the overflow tab
64
+ // In composeHooks, hooks run right-to-left, and mergeProps gives precedence to elemProps
65
+ // (props from earlier-running hooks). So this runs first and its props win.
66
+ // Note: We intentionally do NOT include useListItemSelect here because clicking
67
+ // the overflow button should open the menu, not select it as the active tab
68
+ createElemPropsHook(useTabsModel)(() => {
69
+ return {
70
+ 'aria-haspopup': 'menu',
71
+ 'aria-selected': false,
72
+ role: 'tab',
73
+ };
74
+ }));
19
75
  export const TabsOverflowButton = createSubcomponent('button')({
20
76
  displayName: 'Tabs.OverflowButton',
21
77
  modelHook: useTabsModel,
22
78
  elemPropsHook: useTabsOverflowButton,
23
- })(({ children, ...elemProps }, Element) => {
79
+ })(({ children, ...elemProps }, Element, model) => {
80
+ // Don't render the overflow button if there are no hidden items.
81
+ // This removes it from the DOM entirely, which:
82
+ // - Removes it from keyboard navigation (roving focus)
83
+ // - Removes it from screen reader announcements
84
+ // - Prevents the "8 tabs" announcement when only 7 are visible
85
+ if (model.state.hiddenIds.length === 0) {
86
+ return null;
87
+ }
24
88
  return (_jsxs(StyledTabItem, { type: "button", as: Element, ...mergeStyles(elemProps, tabsOverflowButtonStencil()), children: [_jsx("span", { children: children }), _jsx(SystemIcon, { "data-part": "tabs-overflow-button-icon", icon: chevronDownSmallIcon })] }));
25
89
  });
@@ -1,4 +1,9 @@
1
1
  import React from 'react';
2
+ /**
3
+ * This constant is used as the stable identifier for the overflow button in the tabs collection.
4
+ * It uses a `__` prefix to avoid conflicts with user-provided item IDs.
5
+ */
6
+ export declare const TABS_OVERFLOW_BUTTON_ID = "__tabs-overflow__";
2
7
  /**
3
8
  * The TabsModel extends the [Collection
4
9
  * System](/get-started/for-developers/guides/collection-api/). Tabs have tab items and
@@ -1 +1 @@
1
- {"version":3,"file":"useTabsModel.d.ts","sourceRoot":"","sources":["../../../../tabs/lib/useTabsModel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,YAAY;IAGrB;;;;;OAKG;;IAEH;;;OAGG;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoCH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;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"}
1
+ {"version":3,"file":"useTabsModel.d.ts","sourceRoot":"","sources":["../../../../tabs/lib/useTabsModel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B;;;GAGG;AACH,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,YAAY;IAGrB;;;;;OAKG;;IAEH;;;OAGG;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqKH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QARH;;WAEG;;QAEH;;;;WAIG;;;;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"}