@elliemae/ds-tabs 3.0.0-next.1 → 3.0.0-next.13

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 (171) hide show
  1. package/dist/cjs/DSTabs.js +63 -0
  2. package/dist/cjs/DSTabs.js.map +7 -0
  3. package/dist/cjs/DSTabsCTX.js +56 -0
  4. package/dist/cjs/DSTabsCTX.js.map +7 -0
  5. package/dist/cjs/DSTabsDatatestid.js +46 -0
  6. package/dist/cjs/DSTabsDatatestid.js.map +7 -0
  7. package/dist/cjs/config/useCrossRef.js +44 -0
  8. package/dist/cjs/config/useCrossRef.js.map +7 -0
  9. package/dist/cjs/config/useTabs.js +74 -0
  10. package/dist/cjs/config/useTabs.js.map +7 -0
  11. package/dist/cjs/exported-related/DSTab.js +58 -0
  12. package/dist/cjs/exported-related/DSTab.js.map +7 -0
  13. package/dist/cjs/index.js +38 -0
  14. package/dist/cjs/index.js.map +7 -0
  15. package/dist/cjs/parts/carousel/Carousel.js +77 -0
  16. package/dist/cjs/parts/carousel/Carousel.js.map +7 -0
  17. package/dist/cjs/parts/carousel/styles.js +79 -0
  18. package/dist/cjs/parts/carousel/styles.js.map +7 -0
  19. package/dist/cjs/parts/carousel/useCarousel.js +80 -0
  20. package/dist/cjs/parts/carousel/useCarousel.js.map +7 -0
  21. package/dist/cjs/parts/carousel/useCarouselCallbacks.js +89 -0
  22. package/dist/cjs/parts/carousel/useCarouselCallbacks.js.map +7 -0
  23. package/dist/cjs/parts/tabBar/TabBar.js +171 -0
  24. package/dist/cjs/parts/tabBar/TabBar.js.map +7 -0
  25. package/dist/cjs/parts/tabBar/styles.js +294 -0
  26. package/dist/cjs/parts/tabBar/styles.js.map +7 -0
  27. package/dist/cjs/parts/tabBar/useTabBar.js +103 -0
  28. package/dist/cjs/parts/tabBar/useTabBar.js.map +7 -0
  29. package/dist/cjs/parts/tabsContent/TabsContent.js +69 -0
  30. package/dist/cjs/parts/tabsContent/TabsContent.js.map +7 -0
  31. package/dist/cjs/parts/tabsContent/styles.js +39 -0
  32. package/dist/cjs/parts/tabsContent/styles.js.map +7 -0
  33. package/dist/cjs/parts/tabsPanel/TabsPanels.js +95 -0
  34. package/dist/cjs/parts/tabsPanel/TabsPanels.js.map +7 -0
  35. package/dist/cjs/parts/tabsPanel/styles.js +45 -0
  36. package/dist/cjs/parts/tabsPanel/styles.js.map +7 -0
  37. package/dist/cjs/propTypes.js +77 -0
  38. package/dist/cjs/propTypes.js.map +7 -0
  39. package/dist/cjs/sharedTypes.js +27 -0
  40. package/dist/cjs/sharedTypes.js.map +7 -0
  41. package/dist/cjs/utils/constants.js +56 -0
  42. package/dist/cjs/utils/constants.js.map +7 -0
  43. package/dist/cjs/utils/helpers.js +84 -0
  44. package/dist/cjs/utils/helpers.js.map +7 -0
  45. package/dist/cjs/utils/hooks/useKeyboardNavigation.js +77 -0
  46. package/dist/cjs/utils/hooks/useKeyboardNavigation.js.map +7 -0
  47. package/dist/cjs/utils/hooks/useTabsCallbacks.js +60 -0
  48. package/dist/cjs/utils/hooks/useTabsCallbacks.js.map +7 -0
  49. package/dist/esm/DSTabs.js +34 -0
  50. package/dist/esm/DSTabs.js.map +7 -0
  51. package/dist/esm/DSTabsCTX.js +27 -0
  52. package/dist/esm/DSTabsCTX.js.map +7 -0
  53. package/dist/esm/DSTabsDatatestid.js +17 -0
  54. package/dist/esm/DSTabsDatatestid.js.map +7 -0
  55. package/{esm → dist/esm}/config/useCrossRef.js +6 -4
  56. package/dist/esm/config/useCrossRef.js.map +7 -0
  57. package/dist/esm/config/useTabs.js +45 -0
  58. package/dist/esm/config/useTabs.js.map +7 -0
  59. package/dist/esm/exported-related/DSTab.js +31 -0
  60. package/dist/esm/exported-related/DSTab.js.map +7 -0
  61. package/dist/esm/index.js +9 -0
  62. package/dist/esm/index.js.map +7 -0
  63. package/dist/esm/parts/carousel/Carousel.js +48 -0
  64. package/dist/esm/parts/carousel/Carousel.js.map +7 -0
  65. package/dist/esm/parts/carousel/styles.js +50 -0
  66. package/dist/esm/parts/carousel/styles.js.map +7 -0
  67. package/{esm → dist/esm}/parts/carousel/useCarousel.js +15 -34
  68. package/dist/esm/parts/carousel/useCarousel.js.map +7 -0
  69. package/{esm → dist/esm}/parts/carousel/useCarouselCallbacks.js +20 -28
  70. package/dist/esm/parts/carousel/useCarouselCallbacks.js.map +7 -0
  71. package/dist/esm/parts/tabBar/TabBar.js +149 -0
  72. package/dist/esm/parts/tabBar/TabBar.js.map +7 -0
  73. package/dist/esm/parts/tabBar/styles.js +265 -0
  74. package/dist/esm/parts/tabBar/styles.js.map +7 -0
  75. package/{esm → dist/esm}/parts/tabBar/useTabBar.js +26 -31
  76. package/dist/esm/parts/tabBar/useTabBar.js.map +7 -0
  77. package/dist/esm/parts/tabsContent/TabsContent.js +42 -0
  78. package/dist/esm/parts/tabsContent/TabsContent.js.map +7 -0
  79. package/dist/esm/parts/tabsContent/styles.js +10 -0
  80. package/dist/esm/parts/tabsContent/styles.js.map +7 -0
  81. package/dist/esm/parts/tabsPanel/TabsPanels.js +66 -0
  82. package/dist/esm/parts/tabsPanel/TabsPanels.js.map +7 -0
  83. package/dist/esm/parts/tabsPanel/styles.js +16 -0
  84. package/dist/esm/parts/tabsPanel/styles.js.map +7 -0
  85. package/dist/esm/propTypes.js +48 -0
  86. package/dist/esm/propTypes.js.map +7 -0
  87. package/dist/esm/sharedTypes.js +2 -0
  88. package/dist/esm/sharedTypes.js.map +7 -0
  89. package/dist/esm/utils/constants.js +27 -0
  90. package/dist/esm/utils/constants.js.map +7 -0
  91. package/{esm → dist/esm}/utils/helpers.js +19 -28
  92. package/dist/esm/utils/helpers.js.map +7 -0
  93. package/dist/esm/utils/hooks/useKeyboardNavigation.js +48 -0
  94. package/dist/esm/utils/hooks/useKeyboardNavigation.js.map +7 -0
  95. package/dist/esm/utils/hooks/useTabsCallbacks.js +31 -0
  96. package/dist/esm/utils/hooks/useTabsCallbacks.js.map +7 -0
  97. package/package.json +79 -70
  98. package/cjs/DSTabs.js +0 -45
  99. package/cjs/DSTabsCTX.js +0 -30
  100. package/cjs/DSTabsDatatestid.js +0 -18
  101. package/cjs/DSTabsTypes.js +0 -2
  102. package/cjs/config/useCrossRef.js +0 -17
  103. package/cjs/config/useTabs.js +0 -51
  104. package/cjs/defaultProps.js +0 -27
  105. package/cjs/exportsRelated/DSTab.js +0 -32
  106. package/cjs/index.js +0 -17
  107. package/cjs/parts/carousel/Carousel.js +0 -69
  108. package/cjs/parts/carousel/styles.js +0 -65
  109. package/cjs/parts/carousel/useCarousel.js +0 -78
  110. package/cjs/parts/carousel/useCarouselCallbacks.js +0 -72
  111. package/cjs/parts/tabBar/TabBar.js +0 -168
  112. package/cjs/parts/tabBar/styles.js +0 -200
  113. package/cjs/parts/tabBar/useTabBar.js +0 -87
  114. package/cjs/parts/tabsContent/TabsContent.js +0 -49
  115. package/cjs/parts/tabsContent/styles.js +0 -15
  116. package/cjs/parts/tabsPanel/TabsPanels.js +0 -77
  117. package/cjs/parts/tabsPanel/styles.js +0 -25
  118. package/cjs/propTypes.js +0 -33
  119. package/cjs/utils/constants.js +0 -28
  120. package/cjs/utils/helpers.js +0 -75
  121. package/cjs/utils/hooks/useKeyboardNavigation.js +0 -61
  122. package/cjs/utils/hooks/useTabsCallbacks.js +0 -41
  123. package/esm/DSTabs.js +0 -35
  124. package/esm/DSTabsCTX.js +0 -25
  125. package/esm/DSTabsDatatestid.js +0 -14
  126. package/esm/DSTabsTypes.js +0 -1
  127. package/esm/config/useTabs.js +0 -47
  128. package/esm/defaultProps.js +0 -23
  129. package/esm/exportsRelated/DSTab.js +0 -21
  130. package/esm/index.js +0 -4
  131. package/esm/parts/carousel/Carousel.js +0 -61
  132. package/esm/parts/carousel/styles.js +0 -54
  133. package/esm/parts/tabBar/TabBar.js +0 -159
  134. package/esm/parts/tabBar/styles.js +0 -186
  135. package/esm/parts/tabsContent/TabsContent.js +0 -40
  136. package/esm/parts/tabsContent/styles.js +0 -7
  137. package/esm/parts/tabsPanel/TabsPanels.js +0 -67
  138. package/esm/parts/tabsPanel/styles.js +0 -17
  139. package/esm/propTypes.js +0 -28
  140. package/esm/utils/constants.js +0 -20
  141. package/esm/utils/hooks/useKeyboardNavigation.js +0 -57
  142. package/esm/utils/hooks/useTabsCallbacks.js +0 -37
  143. package/types/DSTabs.d.ts +0 -14
  144. package/types/DSTabsCTX.d.ts +0 -4
  145. package/types/DSTabsDatatestid.d.ts +0 -12
  146. package/types/DSTabsTypes.d.ts +0 -205
  147. package/types/config/useCrossRef.d.ts +0 -2
  148. package/types/config/useTabs.d.ts +0 -2
  149. package/types/defaultProps.d.ts +0 -2
  150. package/types/exportsRelated/DSTab.d.ts +0 -14
  151. package/types/index.d.ts +0 -5
  152. package/types/parts/carousel/Carousel.d.ts +0 -3
  153. package/types/parts/carousel/styles.d.ts +0 -9
  154. package/types/parts/carousel/useCarousel.d.ts +0 -2
  155. package/types/parts/carousel/useCarouselCallbacks.d.ts +0 -2
  156. package/types/parts/tabBar/TabBar.d.ts +0 -2
  157. package/types/parts/tabBar/styles.d.ts +0 -7
  158. package/types/parts/tabBar/useTabBar.d.ts +0 -2
  159. package/types/parts/tabsContent/TabsContent.d.ts +0 -2
  160. package/types/parts/tabsContent/styles.d.ts +0 -1
  161. package/types/parts/tabsPanel/TabsPanels.d.ts +0 -2
  162. package/types/parts/tabsPanel/styles.d.ts +0 -2
  163. package/types/propTypes.d.ts +0 -54
  164. package/types/tests/DSTabs.callbacks.test.d.ts +0 -1
  165. package/types/tests/DSTabs.func.test.d.ts +0 -1
  166. package/types/tests/DSTabs.keyboard.test.d.ts +0 -1
  167. package/types/tests/DSTabs.test.d.ts +0 -1
  168. package/types/utils/constants.d.ts +0 -18
  169. package/types/utils/helpers.d.ts +0 -9
  170. package/types/utils/hooks/useKeyboardNavigation.d.ts +0 -2
  171. package/types/utils/hooks/useTabsCallbacks.d.ts +0 -2
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/parts/carousel/styles.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import styled from 'styled-components';\nimport { DSButtonV2 } from '@elliemae/ds-button';\nimport { TabTypes } from '../../utils/constants';\nimport type { DSTabsInternalsT } from '../../sharedTypes';\n\ninterface StyledCarouselButtonWrapperPropsT {\n right?: boolean;\n tabType: DSTabsInternalsT.TabTypesT;\n}\n\nexport const StyledCarouselBtn = styled(DSButtonV2)`\n margin: 0;\n min-width: ${({ theme }) => theme.space.xs};\n width: ${({ theme }) => theme.space.xs};\n\n &:hover:not(:disabled) {\n background-color: transparent;\n }\n background-color: transparent;\n border-radius: 0px;\n\n & .em-ds-icon svg {\n fill: ${({ theme }) => theme.colors.brand[600]};\n }\n`;\n\nexport const StyledCarouselWrapper = styled.span`\n position: relative;\n width: 100%;\n display: flex;\n`;\n\nexport const StyledChildrenWrap = styled.div`\n display: flex;\n flex-wrap: nowrap;\n flex: 1;\n overflow-x: hidden;\n`;\n\nexport const StyledCarouselButtonWrapper = styled.div<StyledCarouselButtonWrapperPropsT>`\n max-width: 16px;\n position: absolute;\n z-index: 200;\n ${({ right }) => (right ? 'right: 0;' : `left: 0;`)}\n width: 16px;\n height: ${({ tabType }) => (tabType === TabTypes.NORMAL ? '32px' : '22px')};\n padding-top: ${({ tabType }) => (tabType === TabTypes.NORMAL ? '5px' : '0px')};\n background: white;\n ${({ theme, tabType }) =>\n tabType === TabTypes.NORMAL\n ? `\n background: linear-gradient(to bottom, white 0px, white 30px, ${theme.colors.neutral[400]} 30px, ${theme.colors.neutral[400]} 31px, white 31px , white 32px );\n `\n : ``};\n`;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,+BAAmB;AACnB,uBAA2B;AAC3B,uBAAyB;AAQlB,MAAM,oBAAoB,sCAAO;AAAA;AAAA,eAEzB,CAAC,EAAE,YAAY,MAAM,MAAM;AAAA,WAC/B,CAAC,EAAE,YAAY,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAS1B,CAAC,EAAE,YAAY,MAAM,OAAO,MAAM;AAAA;AAAA;AAIvC,MAAM,wBAAwB,iCAAO;AAAA;AAAA;AAAA;AAAA;AAMrC,MAAM,qBAAqB,iCAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOlC,MAAM,8BAA8B,iCAAO;AAAA;AAAA;AAAA;AAAA,IAI9C,CAAC,EAAE,YAAa,QAAQ,cAAc;AAAA;AAAA,YAE9B,CAAC,EAAE,cAAe,YAAY,0BAAS,SAAS,SAAS;AAAA,iBACpD,CAAC,EAAE,cAAe,YAAY,0BAAS,SAAS,QAAQ;AAAA;AAAA,IAErE,CAAC,EAAE,OAAO,cACV,YAAY,0BAAS,SACjB;AAAA,sEAC8D,MAAM,OAAO,QAAQ,cAAc,MAAM,OAAO,QAAQ;AAAA,KAEtH;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,80 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var useCarousel_exports = {};
29
+ __export(useCarousel_exports, {
30
+ useCarousel: () => useCarousel
31
+ });
32
+ var React = __toESM(require("react"));
33
+ var import_react = require("react");
34
+ var import_resize_observer = __toESM(require("@react-hook/resize-observer"));
35
+ var import_DSTabsCTX = require("../../DSTabsCTX");
36
+ var import_helpers = require("../../utils/helpers");
37
+ var import_useCarouselCallbacks = require("./useCarouselCallbacks");
38
+ const useCarousel = ({ updateIndicatorStyle }) => {
39
+ const { carouselOnlyListRef } = (0, import_react.useContext)(import_DSTabsCTX.DSTabsContext);
40
+ const [showChevrons, setShowChevrons] = (0, import_react.useState)({
41
+ right: false,
42
+ left: false
43
+ });
44
+ const { tabsRefAsArray } = (0, import_react.useContext)(import_DSTabsCTX.DSTabsContext);
45
+ const shouldShowLeft = (0, import_react.useCallback)(() => carouselOnlyListRef.current ? carouselOnlyListRef.current.scrollLeft > 0 : false, [carouselOnlyListRef]);
46
+ const shouldShowRight = (0, import_react.useCallback)(() => carouselOnlyListRef.current ? carouselOnlyListRef.current.scrollLeft < carouselOnlyListRef.current.scrollWidth - carouselOnlyListRef.current.clientWidth : false, [carouselOnlyListRef]);
47
+ const recalcChevrons = (0, import_react.useCallback)(() => {
48
+ setShowChevrons({ right: shouldShowRight(), left: shouldShowLeft() });
49
+ }, [shouldShowLeft, shouldShowRight]);
50
+ const getVisibleItemsOffset = (0, import_react.useCallback)(() => {
51
+ if (tabsRefAsArray.current) {
52
+ const scroll = tabsRefAsArray.current.reduce((acc, c) => {
53
+ if ((0, import_helpers.isElementVisibleCarousel)(c, carouselOnlyListRef.current)) {
54
+ const styles = window.getComputedStyle(c);
55
+ const width = c.clientWidth;
56
+ const margin = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
57
+ return acc + (width + margin);
58
+ }
59
+ return acc;
60
+ }, 0);
61
+ return scroll - 16;
62
+ }
63
+ return 0;
64
+ }, [tabsRefAsArray, carouselOnlyListRef]);
65
+ (0, import_resize_observer.default)(carouselOnlyListRef, recalcChevrons);
66
+ const { leftButtonOnClick, rightButtonOnClick, handleOnClick, handleOnScroll } = (0, import_useCarouselCallbacks.useCarouselCallbacks)({
67
+ getVisibleItemsOffset,
68
+ recalcChevrons,
69
+ updateIndicatorStyle
70
+ });
71
+ return {
72
+ showChevrons,
73
+ leftButtonOnClick,
74
+ rightButtonOnClick,
75
+ handleOnClick,
76
+ handleOnScroll
77
+ };
78
+ };
79
+ module.exports = __toCommonJS(useCarousel_exports);
80
+ //# sourceMappingURL=useCarousel.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/parts/carousel/useCarousel.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { useCallback, useState, useContext } from 'react';\nimport useResizeObserver from '@react-hook/resize-observer';\nimport { DSTabsContext } from '../../DSTabsCTX';\nimport { isElementVisibleCarousel } from '../../utils/helpers';\nimport { useCarouselCallbacks } from './useCarouselCallbacks';\nimport type { DSTabsInternalsT } from '../../sharedTypes';\n\ninterface UseCarouselPropsT {\n updateIndicatorStyle?: () => void;\n}\n\ninterface UseCarouselReturnTypeT {\n showChevrons: DSTabsInternalsT.ShowChevronsT;\n leftButtonOnClick: () => void;\n rightButtonOnClick: () => void;\n handleOnClick: (e: React.MouseEvent) => void;\n handleOnScroll: (e: React.UIEvent) => void;\n}\n\nexport const useCarousel = ({ updateIndicatorStyle }: UseCarouselPropsT): UseCarouselReturnTypeT => {\n const { carouselOnlyListRef } = useContext(DSTabsContext);\n\n const [showChevrons, setShowChevrons] = useState<DSTabsInternalsT.ShowChevronsT>({\n right: false,\n left: false,\n });\n\n const { tabsRefAsArray } = useContext(DSTabsContext);\n\n const shouldShowLeft = useCallback(\n () => (carouselOnlyListRef.current ? carouselOnlyListRef.current.scrollLeft > 0 : false),\n\n [carouselOnlyListRef],\n );\n\n const shouldShowRight = useCallback(\n () =>\n carouselOnlyListRef.current\n ? carouselOnlyListRef.current.scrollLeft <\n carouselOnlyListRef.current.scrollWidth - carouselOnlyListRef.current.clientWidth\n : false,\n [carouselOnlyListRef],\n );\n\n const recalcChevrons = useCallback(() => {\n setShowChevrons({ right: shouldShowRight(), left: shouldShowLeft() });\n }, [shouldShowLeft, shouldShowRight]);\n\n const getVisibleItemsOffset = useCallback(() => {\n if (tabsRefAsArray.current) {\n const scroll = tabsRefAsArray.current.reduce((acc, c) => {\n if (isElementVisibleCarousel(c, carouselOnlyListRef.current)) {\n const styles = window.getComputedStyle(c);\n const width = c.clientWidth;\n const margin = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n\n return acc + (width + margin);\n }\n return acc;\n }, 0);\n\n return scroll - 16;\n }\n return 0;\n }, [tabsRefAsArray, carouselOnlyListRef]);\n\n useResizeObserver(carouselOnlyListRef, recalcChevrons);\n\n const { leftButtonOnClick, rightButtonOnClick, handleOnClick, handleOnScroll } = useCarouselCallbacks({\n getVisibleItemsOffset,\n recalcChevrons,\n updateIndicatorStyle,\n });\n\n return {\n showChevrons,\n leftButtonOnClick,\n rightButtonOnClick,\n handleOnClick,\n handleOnScroll,\n };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkD;AAClD,6BAA8B;AAC9B,uBAA8B;AAC9B,qBAAyC;AACzC,kCAAqC;AAe9B,MAAM,cAAc,CAAC,EAAE,2BAAsE;AAClG,QAAM,EAAE,wBAAwB,6BAAW;AAE3C,QAAM,CAAC,cAAc,mBAAmB,2BAAyC;AAAA,IAC/E,OAAO;AAAA,IACP,MAAM;AAAA;AAGR,QAAM,EAAE,mBAAmB,6BAAW;AAEtC,QAAM,iBAAiB,8BACrB,MAAO,oBAAoB,UAAU,oBAAoB,QAAQ,aAAa,IAAI,OAElF,CAAC;AAGH,QAAM,kBAAkB,8BACtB,MACE,oBAAoB,UAChB,oBAAoB,QAAQ,aAC5B,oBAAoB,QAAQ,cAAc,oBAAoB,QAAQ,cACtE,OACN,CAAC;AAGH,QAAM,iBAAiB,8BAAY,MAAM;AACvC,oBAAgB,EAAE,OAAO,mBAAmB,MAAM;AAAA,KACjD,CAAC,gBAAgB;AAEpB,QAAM,wBAAwB,8BAAY,MAAM;AAC9C,QAAI,eAAe,SAAS;AAC1B,YAAM,SAAS,eAAe,QAAQ,OAAO,CAAC,KAAK,MAAM;AACvD,YAAI,6CAAyB,GAAG,oBAAoB,UAAU;AAC5D,gBAAM,SAAS,OAAO,iBAAiB;AACvC,gBAAM,QAAQ,EAAE;AAChB,gBAAM,SAAS,WAAW,OAAO,cAAc,WAAW,OAAO;AAEjE,iBAAO,MAAO,SAAQ;AAAA;AAExB,eAAO;AAAA,SACN;AAEH,aAAO,SAAS;AAAA;AAElB,WAAO;AAAA,KACN,CAAC,gBAAgB;AAEpB,sCAAkB,qBAAqB;AAEvC,QAAM,EAAE,mBAAmB,oBAAoB,eAAe,mBAAmB,sDAAqB;AAAA,IACpG;AAAA,IACA;AAAA,IACA;AAAA;AAGF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,89 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var useCarouselCallbacks_exports = {};
29
+ __export(useCarouselCallbacks_exports, {
30
+ useCarouselCallbacks: () => useCarouselCallbacks
31
+ });
32
+ var React = __toESM(require("react"));
33
+ var import_react = require("react");
34
+ var import_helpers = require("../../utils/helpers");
35
+ var import_DSTabsCTX = require("../../DSTabsCTX");
36
+ const useCarouselCallbacks = ({
37
+ getVisibleItemsOffset,
38
+ updateIndicatorStyle,
39
+ recalcChevrons
40
+ }) => {
41
+ const { focusableTabsRef, carouselOnlyListRef } = (0, import_react.useContext)(import_DSTabsCTX.DSTabsContext);
42
+ const rightButtonOnClick = (0, import_react.useCallback)(() => {
43
+ if (carouselOnlyListRef.current) {
44
+ carouselOnlyListRef.current.scrollLeft += getVisibleItemsOffset();
45
+ }
46
+ }, [getVisibleItemsOffset, carouselOnlyListRef]);
47
+ const leftButtonOnClick = (0, import_react.useCallback)(() => {
48
+ if (carouselOnlyListRef.current) {
49
+ carouselOnlyListRef.current.scrollLeft -= getVisibleItemsOffset();
50
+ }
51
+ }, [getVisibleItemsOffset, carouselOnlyListRef]);
52
+ const handleOnScroll = (0, import_react.useCallback)(() => {
53
+ recalcChevrons();
54
+ if (updateIndicatorStyle)
55
+ updateIndicatorStyle();
56
+ }, [recalcChevrons, updateIndicatorStyle]);
57
+ const handleOnClick = (0, import_react.useCallback)(({ target }) => {
58
+ if (focusableTabsRef.current && target.getAttribute("role") === "tab") {
59
+ const tabList = carouselOnlyListRef.current;
60
+ const tabButton = target;
61
+ const tabButtonDimensions = tabButton.getBoundingClientRect();
62
+ const tabListDimensions = tabList?.getBoundingClientRect();
63
+ const tabButtonIndex = tabButton.dataset.index;
64
+ const lastItemIndex = focusableTabsRef.current.length.toString();
65
+ const magicNumber = 34;
66
+ const firstOrLastItem = tabButtonIndex === "0" || tabButtonIndex === lastItemIndex;
67
+ if (!(0, import_helpers.isElementVisibleCarousel)(tabButton, tabList, firstOrLastItem) && tabListDimensions && carouselOnlyListRef.current) {
68
+ const containerWidth = tabListDimensions.width;
69
+ const halfContainer = containerWidth / 2;
70
+ const elementScrollPosition = tabButtonDimensions.left - tabListDimensions.left;
71
+ const positionInContainer = elementScrollPosition % containerWidth;
72
+ const width = tabButton.offsetWidth + magicNumber;
73
+ if (positionInContainer > halfContainer) {
74
+ carouselOnlyListRef.current.scrollLeft += width + positionInContainer - containerWidth;
75
+ } else {
76
+ carouselOnlyListRef.current.scrollLeft += positionInContainer - magicNumber;
77
+ }
78
+ }
79
+ }
80
+ }, [focusableTabsRef, carouselOnlyListRef]);
81
+ return {
82
+ handleOnClick,
83
+ rightButtonOnClick,
84
+ leftButtonOnClick,
85
+ handleOnScroll
86
+ };
87
+ };
88
+ module.exports = __toCommonJS(useCarouselCallbacks_exports);
89
+ //# sourceMappingURL=useCarouselCallbacks.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/parts/carousel/useCarouselCallbacks.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable max-statements */\nimport { useCallback, useContext } from 'react';\nimport type { MouseEvent } from 'react';\nimport { isElementVisibleCarousel } from '../../utils/helpers';\nimport { DSTabsContext } from '../../DSTabsCTX';\n\ninterface UseCarouselCallbacksPropsT {\n getVisibleItemsOffset: () => number;\n recalcChevrons: () => void;\n updateIndicatorStyle?: () => void;\n}\ninterface UseCarouselCallbacksReturnTypeT {\n leftButtonOnClick: () => void;\n rightButtonOnClick: () => void;\n handleOnClick: (e: React.MouseEvent) => void;\n handleOnScroll: (e: React.UIEvent) => void;\n}\n\nexport const useCarouselCallbacks = ({\n getVisibleItemsOffset,\n updateIndicatorStyle,\n recalcChevrons,\n}: UseCarouselCallbacksPropsT): UseCarouselCallbacksReturnTypeT => {\n const { focusableTabsRef, carouselOnlyListRef } = useContext(DSTabsContext);\n\n const rightButtonOnClick = useCallback(() => {\n if (carouselOnlyListRef.current) {\n carouselOnlyListRef.current.scrollLeft += getVisibleItemsOffset();\n }\n }, [getVisibleItemsOffset, carouselOnlyListRef]);\n\n const leftButtonOnClick = useCallback(() => {\n if (carouselOnlyListRef.current) {\n carouselOnlyListRef.current.scrollLeft -= getVisibleItemsOffset();\n }\n }, [getVisibleItemsOffset, carouselOnlyListRef]);\n\n const handleOnScroll = useCallback(() => {\n recalcChevrons();\n if (updateIndicatorStyle) updateIndicatorStyle();\n }, [recalcChevrons, updateIndicatorStyle]);\n\n const handleOnClick = useCallback(\n ({ target }: MouseEvent) => {\n if (focusableTabsRef.current && (target as HTMLButtonElement).getAttribute('role') === 'tab') {\n const tabList = carouselOnlyListRef.current;\n const tabButton = target as HTMLButtonElement;\n const tabButtonDimensions = tabButton.getBoundingClientRect();\n const tabListDimensions = tabList?.getBoundingClientRect();\n const tabButtonIndex = tabButton.dataset.index as string;\n const lastItemIndex = focusableTabsRef.current.length.toString();\n const magicNumber = 34;\n\n const firstOrLastItem = tabButtonIndex === '0' || tabButtonIndex === lastItemIndex;\n\n if (\n !isElementVisibleCarousel(tabButton, tabList, firstOrLastItem) &&\n tabListDimensions &&\n carouselOnlyListRef.current\n ) {\n const containerWidth = tabListDimensions.width;\n const halfContainer = containerWidth / 2;\n const elementScrollPosition = tabButtonDimensions.left - tabListDimensions.left;\n const positionInContainer = elementScrollPosition % containerWidth;\n const width = tabButton.offsetWidth + magicNumber;\n\n if (positionInContainer > halfContainer) {\n carouselOnlyListRef.current.scrollLeft += width + positionInContainer - containerWidth;\n } else {\n carouselOnlyListRef.current.scrollLeft += positionInContainer - magicNumber;\n }\n }\n }\n },\n [focusableTabsRef, carouselOnlyListRef],\n );\n\n return {\n handleOnClick,\n rightButtonOnClick,\n leftButtonOnClick,\n handleOnScroll,\n };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAAwC;AAExC,qBAAyC;AACzC,uBAA8B;AAcvB,MAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,MACiE;AACjE,QAAM,EAAE,kBAAkB,wBAAwB,6BAAW;AAE7D,QAAM,qBAAqB,8BAAY,MAAM;AAC3C,QAAI,oBAAoB,SAAS;AAC/B,0BAAoB,QAAQ,cAAc;AAAA;AAAA,KAE3C,CAAC,uBAAuB;AAE3B,QAAM,oBAAoB,8BAAY,MAAM;AAC1C,QAAI,oBAAoB,SAAS;AAC/B,0BAAoB,QAAQ,cAAc;AAAA;AAAA,KAE3C,CAAC,uBAAuB;AAE3B,QAAM,iBAAiB,8BAAY,MAAM;AACvC;AACA,QAAI;AAAsB;AAAA,KACzB,CAAC,gBAAgB;AAEpB,QAAM,gBAAgB,8BACpB,CAAC,EAAE,aAAyB;AAC1B,QAAI,iBAAiB,WAAY,OAA6B,aAAa,YAAY,OAAO;AAC5F,YAAM,UAAU,oBAAoB;AACpC,YAAM,YAAY;AAClB,YAAM,sBAAsB,UAAU;AACtC,YAAM,oBAAoB,SAAS;AACnC,YAAM,iBAAiB,UAAU,QAAQ;AACzC,YAAM,gBAAgB,iBAAiB,QAAQ,OAAO;AACtD,YAAM,cAAc;AAEpB,YAAM,kBAAkB,mBAAmB,OAAO,mBAAmB;AAErE,UACE,CAAC,6CAAyB,WAAW,SAAS,oBAC9C,qBACA,oBAAoB,SACpB;AACA,cAAM,iBAAiB,kBAAkB;AACzC,cAAM,gBAAgB,iBAAiB;AACvC,cAAM,wBAAwB,oBAAoB,OAAO,kBAAkB;AAC3E,cAAM,sBAAsB,wBAAwB;AACpD,cAAM,QAAQ,UAAU,cAAc;AAEtC,YAAI,sBAAsB,eAAe;AACvC,8BAAoB,QAAQ,cAAc,QAAQ,sBAAsB;AAAA,eACnE;AACL,8BAAoB,QAAQ,cAAc,sBAAsB;AAAA;AAAA;AAAA;AAAA,KAKxE,CAAC,kBAAkB;AAGrB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,171 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var TabBar_exports = {};
29
+ __export(TabBar_exports, {
30
+ TabBar: () => TabBar
31
+ });
32
+ var React = __toESM(require("react"));
33
+ var import_react = __toESM(require("react"));
34
+ var import_Carousel = require("../carousel/Carousel");
35
+ var import_useTabBar = require("./useTabBar");
36
+ var import_styles = require("./styles");
37
+ var import_DSTabsCTX = require("../../DSTabsCTX");
38
+ var import_useKeyboardNavigation = require("../../utils/hooks/useKeyboardNavigation");
39
+ var import_helpers = require("../../utils/helpers");
40
+ var import_constants = require("../../utils/constants");
41
+ var import_useTabsCallbacks = require("../../utils/hooks/useTabsCallbacks");
42
+ var import_DSTabsDatatestid = require("../../DSTabsDatatestid");
43
+ const TabBar = () => {
44
+ const {
45
+ tabsRef,
46
+ focusableTabsRef,
47
+ tabsListRef,
48
+ tabsRefAsArray,
49
+ carouselOnlyListRef,
50
+ actualActiveTab,
51
+ props: { type, fixedTabsHeaders, withCarousel, isDSMobile, showSeparator, children: tabs }
52
+ } = (0, import_react.useContext)(import_DSTabsCTX.DSTabsContext);
53
+ const { lastTabInternalRef, firstSubtabInternalRef } = (0, import_react.useContext)(import_DSTabsCTX.DSTabsCrossRefContext);
54
+ const { handleOnTabChange } = (0, import_useTabsCallbacks.useTabsCallbacks)();
55
+ const { handleOnKeyDown } = (0, import_useKeyboardNavigation.useKeyboardNavigation)();
56
+ const { indicatorStyle, mobileGradients, updateMobileGradients, updateIndicatorStyle } = (0, import_useTabBar.useTabBar)();
57
+ const renderTabs = (0, import_react.useMemo)(() => {
58
+ const availableTabIndexes = [];
59
+ return import_react.default.Children.map(tabs, (tab, index) => {
60
+ const { tabId = "", title = "", style, required = false, disabled = false, ref, onClick, onKeyDown } = tab.props;
61
+ if (!disabled)
62
+ availableTabIndexes.push(index);
63
+ return /* @__PURE__ */ import_react.default.createElement(import_styles.StyledTabButton, {
64
+ key: tabId,
65
+ role: "tab",
66
+ ref: (tabButtonRef) => {
67
+ if (tabButtonRef && tabsRefAsArray.current && focusableTabsRef.current && tabsRef.current) {
68
+ tabsRefAsArray.current[index] = tabButtonRef;
69
+ if (!disabled && !focusableTabsRef.current.includes(tabButtonRef))
70
+ focusableTabsRef.current.push(tabButtonRef);
71
+ tabsRef.current[index] = tabButtonRef;
72
+ if (type === import_constants.TabTypes.SUBTABS && firstSubtabInternalRef && index === availableTabIndexes[0]) {
73
+ firstSubtabInternalRef.current = tabButtonRef;
74
+ }
75
+ if (type !== import_constants.TabTypes.SUBTABS && index === availableTabIndexes[availableTabIndexes.length - 1]) {
76
+ lastTabInternalRef.current = tabButtonRef;
77
+ }
78
+ if (ref)
79
+ ref.current = tabButtonRef;
80
+ }
81
+ },
82
+ type: "button",
83
+ "aria-controls": tabId,
84
+ "aria-selected": actualActiveTab === tabId,
85
+ "aria-disabled": disabled,
86
+ "aria-labelledby": `${tabId}-label`,
87
+ isDSMobile,
88
+ fixedTabsHeaders,
89
+ tabType: type,
90
+ title,
91
+ "data-required": required,
92
+ "data-tab-id": tabId,
93
+ "data-index": index,
94
+ withCarousel,
95
+ isActive: actualActiveTab === tabId,
96
+ disabled,
97
+ showSeparator: showSeparator && type !== import_constants.TabTypes.NORMAL,
98
+ "data-testid": type === import_constants.TabTypes.NORMAL ? import_DSTabsDatatestid.DSTabsDatatestid.TAB_BUTTON : import_DSTabsDatatestid.DSTabsDatatestid.SUBTAB_BUTTON,
99
+ id: `${tabId}-label`,
100
+ onClick: (e) => {
101
+ if (!disabled) {
102
+ handleOnTabChange(tabId, e);
103
+ updateIndicatorStyle();
104
+ }
105
+ if (onClick && !disabled)
106
+ onClick(tabId, e);
107
+ },
108
+ onFocus: (e) => {
109
+ if (withCarousel)
110
+ (0, import_helpers.centerTab)({ e, listRef: carouselOnlyListRef });
111
+ },
112
+ onKeyDown: (e) => {
113
+ if (e.key === "Enter")
114
+ e.stopPropagation();
115
+ if (!disabled)
116
+ handleOnKeyDown(e);
117
+ if (onKeyDown && !disabled)
118
+ onKeyDown(e);
119
+ },
120
+ style
121
+ }, title, required && /* @__PURE__ */ import_react.default.createElement(import_styles.StyledRequiredMark, null, "\u25CF"));
122
+ });
123
+ }, [
124
+ tabs,
125
+ actualActiveTab,
126
+ isDSMobile,
127
+ fixedTabsHeaders,
128
+ type,
129
+ withCarousel,
130
+ showSeparator,
131
+ tabsRefAsArray,
132
+ focusableTabsRef,
133
+ tabsRef,
134
+ firstSubtabInternalRef,
135
+ lastTabInternalRef,
136
+ handleOnTabChange,
137
+ updateIndicatorStyle,
138
+ carouselOnlyListRef,
139
+ handleOnKeyDown
140
+ ]);
141
+ if (type === import_constants.TabTypes.SUBTABS && !isDSMobile) {
142
+ return /* @__PURE__ */ import_react.default.createElement(import_styles.StyledSubTabsList, {
143
+ withCarousel,
144
+ "data-testid": import_DSTabsDatatestid.DSTabsDatatestid.SUB_TAB_LIST,
145
+ ref: tabsListRef,
146
+ role: "tablist"
147
+ }, withCarousel ? /* @__PURE__ */ import_react.default.createElement(import_Carousel.Carousel, null, renderTabs) : renderTabs);
148
+ }
149
+ return /* @__PURE__ */ import_react.default.createElement(import_styles.StyledTabList, {
150
+ withCarousel,
151
+ ref: tabsListRef,
152
+ role: "tablist",
153
+ "data-testid": import_DSTabsDatatestid.DSTabsDatatestid.TAB_LIST,
154
+ isDSMobile,
155
+ fixedTabsHeaders,
156
+ mobileGradients,
157
+ onScroll: updateMobileGradients,
158
+ indicatorStyle,
159
+ tabType: type
160
+ }, /* @__PURE__ */ import_react.default.createElement(import_styles.StyledTabWrapper, {
161
+ isDSMobile,
162
+ fixedTabsHeaders
163
+ }, !isDSMobile && withCarousel ? /* @__PURE__ */ import_react.default.createElement(import_Carousel.Carousel, {
164
+ updateIndicatorStyle
165
+ }, renderTabs) : renderTabs), /* @__PURE__ */ import_react.default.createElement(import_styles.StyledSelectionIndicator, {
166
+ isDSMobile,
167
+ tabType: type
168
+ }));
169
+ };
170
+ module.exports = __toCommonJS(TabBar_exports);
171
+ //# sourceMappingURL=TabBar.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/parts/tabBar/TabBar.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable complexity */\nimport React, { useMemo, useContext } from 'react';\nimport { Carousel } from '../carousel/Carousel';\nimport { useTabBar } from './useTabBar';\nimport {\n StyledTabButton,\n StyledTabList,\n StyledTabWrapper,\n StyledSelectionIndicator,\n StyledSubTabsList,\n StyledRequiredMark,\n} from './styles';\nimport { DSTabsContext, DSTabsCrossRefContext } from '../../DSTabsCTX';\nimport { useKeyboardNavigation } from '../../utils/hooks/useKeyboardNavigation';\nimport { centerTab } from '../../utils/helpers';\nimport { TabTypes } from '../../utils/constants';\nimport { useTabsCallbacks } from '../../utils/hooks/useTabsCallbacks';\nimport { DSTabsDatatestid } from '../../DSTabsDatatestid';\nimport type { DSTabT } from '../../propTypes';\n\nexport const TabBar = (): JSX.Element => {\n const {\n tabsRef,\n focusableTabsRef,\n tabsListRef,\n tabsRefAsArray,\n carouselOnlyListRef,\n actualActiveTab,\n props: { type, fixedTabsHeaders, withCarousel, isDSMobile, showSeparator, children: tabs },\n } = useContext(DSTabsContext);\n\n const { lastTabInternalRef, firstSubtabInternalRef } = useContext(DSTabsCrossRefContext);\n const { handleOnTabChange } = useTabsCallbacks();\n const { handleOnKeyDown } = useKeyboardNavigation();\n\n const { indicatorStyle, mobileGradients, updateMobileGradients, updateIndicatorStyle } = useTabBar();\n\n const renderTabs = useMemo(() => {\n const availableTabIndexes: number[] = [];\n\n return React.Children.map(tabs, (tab: React.ReactElement<DSTabT.Props>, index) => {\n const { tabId = '', title = '', style, required = false, disabled = false, ref, onClick, onKeyDown } = tab.props;\n if (!disabled) availableTabIndexes.push(index);\n return (\n <StyledTabButton\n key={tabId}\n role=\"tab\"\n ref={(tabButtonRef: HTMLButtonElement) => {\n if (tabButtonRef && tabsRefAsArray.current && focusableTabsRef.current && tabsRef.current) {\n tabsRefAsArray.current[index] = tabButtonRef;\n if (!disabled && !focusableTabsRef.current.includes(tabButtonRef))\n focusableTabsRef.current.push(tabButtonRef);\n tabsRef.current[index] = tabButtonRef;\n if (type === TabTypes.SUBTABS && firstSubtabInternalRef && index === availableTabIndexes[0]) {\n firstSubtabInternalRef.current = tabButtonRef;\n }\n if (type !== TabTypes.SUBTABS && index === availableTabIndexes[availableTabIndexes.length - 1]) {\n lastTabInternalRef.current = tabButtonRef;\n }\n if (ref) ref.current = tabButtonRef;\n }\n }}\n type=\"button\"\n aria-controls={tabId}\n aria-selected={actualActiveTab === tabId}\n aria-disabled={disabled}\n aria-labelledby={`${tabId}-label`}\n isDSMobile={isDSMobile}\n fixedTabsHeaders={fixedTabsHeaders}\n tabType={type}\n title={title}\n data-required={required}\n data-tab-id={tabId}\n data-index={index}\n withCarousel={withCarousel}\n isActive={actualActiveTab === tabId}\n disabled={disabled}\n showSeparator={showSeparator && type !== TabTypes.NORMAL}\n data-testid={type === TabTypes.NORMAL ? DSTabsDatatestid.TAB_BUTTON : DSTabsDatatestid.SUBTAB_BUTTON}\n id={`${tabId}-label`}\n onClick={(e) => {\n if (!disabled) {\n handleOnTabChange(tabId, e);\n updateIndicatorStyle();\n }\n if (onClick && !disabled) onClick(tabId, e);\n }}\n onFocus={(e) => {\n if (withCarousel) centerTab({ e, listRef: carouselOnlyListRef });\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') e.stopPropagation();\n if (!disabled) handleOnKeyDown(e);\n if (onKeyDown && !disabled) onKeyDown(e);\n }}\n style={style}\n >\n {title}\n {required && <StyledRequiredMark>&#9679;</StyledRequiredMark>}\n </StyledTabButton>\n );\n });\n }, [\n tabs,\n actualActiveTab,\n isDSMobile,\n fixedTabsHeaders,\n type,\n withCarousel,\n showSeparator,\n tabsRefAsArray,\n focusableTabsRef,\n tabsRef,\n firstSubtabInternalRef,\n lastTabInternalRef,\n handleOnTabChange,\n updateIndicatorStyle,\n carouselOnlyListRef,\n handleOnKeyDown,\n ]);\n\n if (type === TabTypes.SUBTABS && !isDSMobile) {\n return (\n <StyledSubTabsList\n withCarousel={withCarousel}\n data-testid={DSTabsDatatestid.SUB_TAB_LIST}\n ref={tabsListRef}\n role=\"tablist\"\n >\n {withCarousel ? <Carousel>{renderTabs}</Carousel> : renderTabs}\n </StyledSubTabsList>\n );\n }\n\n return (\n <StyledTabList\n withCarousel={withCarousel}\n ref={tabsListRef}\n role=\"tablist\"\n data-testid={DSTabsDatatestid.TAB_LIST}\n isDSMobile={isDSMobile}\n fixedTabsHeaders={fixedTabsHeaders}\n mobileGradients={mobileGradients}\n onScroll={updateMobileGradients}\n indicatorStyle={indicatorStyle}\n tabType={type}\n >\n <StyledTabWrapper isDSMobile={isDSMobile} fixedTabsHeaders={fixedTabsHeaders}>\n {!isDSMobile && withCarousel ? (\n <Carousel updateIndicatorStyle={updateIndicatorStyle}>{renderTabs}</Carousel>\n ) : (\n renderTabs\n )}\n </StyledTabWrapper>\n <StyledSelectionIndicator isDSMobile={isDSMobile} tabType={type} />\n </StyledTabList>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAA2C;AAC3C,sBAAyB;AACzB,uBAA0B;AAC1B,oBAOO;AACP,uBAAqD;AACrD,mCAAsC;AACtC,qBAA0B;AAC1B,uBAAyB;AACzB,8BAAiC;AACjC,8BAAiC;AAG1B,MAAM,SAAS,MAAmB;AACvC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,MAAM,kBAAkB,cAAc,YAAY,eAAe,UAAU;AAAA,MAClF,6BAAW;AAEf,QAAM,EAAE,oBAAoB,2BAA2B,6BAAW;AAClE,QAAM,EAAE,sBAAsB;AAC9B,QAAM,EAAE,oBAAoB;AAE5B,QAAM,EAAE,gBAAgB,iBAAiB,uBAAuB,yBAAyB;AAEzF,QAAM,aAAa,0BAAQ,MAAM;AAC/B,UAAM,sBAAgC;AAEtC,WAAO,qBAAM,SAAS,IAAI,MAAM,CAAC,KAAuC,UAAU;AAChF,YAAM,EAAE,QAAQ,IAAI,QAAQ,IAAI,OAAO,WAAW,OAAO,WAAW,OAAO,KAAK,SAAS,cAAc,IAAI;AAC3G,UAAI,CAAC;AAAU,4BAAoB,KAAK;AACxC,aACE,mDAAC,+BAAD;AAAA,QACE,KAAK;AAAA,QACL,MAAK;AAAA,QACL,KAAK,CAAC,iBAAoC;AACxC,cAAI,gBAAgB,eAAe,WAAW,iBAAiB,WAAW,QAAQ,SAAS;AACzF,2BAAe,QAAQ,SAAS;AAChC,gBAAI,CAAC,YAAY,CAAC,iBAAiB,QAAQ,SAAS;AAClD,+BAAiB,QAAQ,KAAK;AAChC,oBAAQ,QAAQ,SAAS;AACzB,gBAAI,SAAS,0BAAS,WAAW,0BAA0B,UAAU,oBAAoB,IAAI;AAC3F,qCAAuB,UAAU;AAAA;AAEnC,gBAAI,SAAS,0BAAS,WAAW,UAAU,oBAAoB,oBAAoB,SAAS,IAAI;AAC9F,iCAAmB,UAAU;AAAA;AAE/B,gBAAI;AAAK,kBAAI,UAAU;AAAA;AAAA;AAAA,QAG3B,MAAK;AAAA,QACL,iBAAe;AAAA,QACf,iBAAe,oBAAoB;AAAA,QACnC,iBAAe;AAAA,QACf,mBAAiB,GAAG;AAAA,QACpB;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,iBAAe;AAAA,QACf,eAAa;AAAA,QACb,cAAY;AAAA,QACZ;AAAA,QACA,UAAU,oBAAoB;AAAA,QAC9B;AAAA,QACA,eAAe,iBAAiB,SAAS,0BAAS;AAAA,QAClD,eAAa,SAAS,0BAAS,SAAS,yCAAiB,aAAa,yCAAiB;AAAA,QACvF,IAAI,GAAG;AAAA,QACP,SAAS,CAAC,MAAM;AACd,cAAI,CAAC,UAAU;AACb,8BAAkB,OAAO;AACzB;AAAA;AAEF,cAAI,WAAW,CAAC;AAAU,oBAAQ,OAAO;AAAA;AAAA,QAE3C,SAAS,CAAC,MAAM;AACd,cAAI;AAAc,0CAAU,EAAE,GAAG,SAAS;AAAA;AAAA,QAE5C,WAAW,CAAC,MAAM;AAChB,cAAI,EAAE,QAAQ;AAAS,cAAE;AACzB,cAAI,CAAC;AAAU,4BAAgB;AAC/B,cAAI,aAAa,CAAC;AAAU,sBAAU;AAAA;AAAA,QAExC;AAAA,SAEC,OACA,YAAY,mDAAC,kCAAD,MAAoB;AAAA;AAAA,KAItC;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGF,MAAI,SAAS,0BAAS,WAAW,CAAC,YAAY;AAC5C,WACE,mDAAC,iCAAD;AAAA,MACE;AAAA,MACA,eAAa,yCAAiB;AAAA,MAC9B,KAAK;AAAA,MACL,MAAK;AAAA,OAEJ,eAAe,mDAAC,0BAAD,MAAW,cAAyB;AAAA;AAK1D,SACE,mDAAC,6BAAD;AAAA,IACE;AAAA,IACA,KAAK;AAAA,IACL,MAAK;AAAA,IACL,eAAa,yCAAiB;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,KAET,mDAAC,gCAAD;AAAA,IAAkB;AAAA,IAAwB;AAAA,KACvC,CAAC,cAAc,eACd,mDAAC,0BAAD;AAAA,IAAU;AAAA,KAA6C,cAEvD,aAGJ,mDAAC,wCAAD;AAAA,IAA0B;AAAA,IAAwB,SAAS;AAAA;AAAA;",
6
+ "names": []
7
+ }