@elliemae/ds-tabs 3.52.0-rc.2 → 3.52.0-rc.20

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 (95) hide show
  1. package/dist/cjs/DSTabs.js +3 -3
  2. package/dist/cjs/DSTabs.js.map +2 -2
  3. package/dist/cjs/DSTabsCTX.js +1 -1
  4. package/dist/cjs/DSTabsCTX.js.map +2 -2
  5. package/dist/cjs/config/useTabs.js +1 -1
  6. package/dist/cjs/config/useTabs.js.map +2 -2
  7. package/dist/cjs/{utils/constants.js → constants/index.js} +40 -13
  8. package/dist/cjs/constants/index.js.map +7 -0
  9. package/dist/cjs/exported-related/DSTab.js +1 -1
  10. package/dist/cjs/exported-related/DSTab.js.map +2 -2
  11. package/dist/cjs/index.js +12 -6
  12. package/dist/cjs/index.js.map +2 -2
  13. package/dist/cjs/parts/carousel/Carousel.js +3 -3
  14. package/dist/cjs/parts/carousel/Carousel.js.map +2 -2
  15. package/dist/cjs/parts/carousel/styles.js +4 -4
  16. package/dist/cjs/parts/carousel/styles.js.map +2 -2
  17. package/dist/cjs/parts/carousel/useCarouselCallbacks.js.map +2 -2
  18. package/dist/cjs/parts/tabBar/TabBar.js +9 -111
  19. package/dist/cjs/parts/tabBar/TabBar.js.map +3 -3
  20. package/dist/cjs/parts/tabBar/TabBarItemRenderer.js +136 -0
  21. package/dist/cjs/parts/tabBar/TabBarItemRenderer.js.map +7 -0
  22. package/dist/cjs/parts/tabBar/styles.js +17 -7
  23. package/dist/cjs/parts/tabBar/styles.js.map +2 -2
  24. package/dist/cjs/parts/tabBar/useTabBar.js +4 -4
  25. package/dist/cjs/parts/tabBar/useTabBar.js.map +2 -2
  26. package/dist/cjs/parts/tabsContent/TabsContent.js +2 -2
  27. package/dist/cjs/parts/tabsContent/TabsContent.js.map +2 -2
  28. package/dist/cjs/parts/tabsPanel/TabsPanels.js.map +2 -2
  29. package/dist/cjs/react-desc-prop-types.js +27 -13
  30. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  31. package/dist/cjs/sharedTypes.js.map +1 -1
  32. package/dist/cjs/typescript-testing/typescript-tabs-valid.js +6 -6
  33. package/dist/cjs/typescript-testing/typescript-tabs-valid.js.map +2 -2
  34. package/dist/cjs/utils/helpers.js +1 -1
  35. package/dist/cjs/utils/helpers.js.map +1 -1
  36. package/dist/cjs/utils/hooks/useTabsCallbacks.js.map +2 -2
  37. package/dist/esm/DSTabs.js +4 -4
  38. package/dist/esm/DSTabs.js.map +2 -2
  39. package/dist/esm/DSTabsCTX.js +1 -1
  40. package/dist/esm/DSTabsCTX.js.map +2 -2
  41. package/dist/esm/config/useTabs.js +2 -2
  42. package/dist/esm/config/useTabs.js.map +2 -2
  43. package/dist/esm/constants/index.js +53 -0
  44. package/dist/esm/constants/index.js.map +7 -0
  45. package/dist/esm/exported-related/DSTab.js +2 -2
  46. package/dist/esm/exported-related/DSTab.js.map +2 -2
  47. package/dist/esm/index.js +18 -5
  48. package/dist/esm/index.js.map +3 -3
  49. package/dist/esm/parts/carousel/Carousel.js +3 -3
  50. package/dist/esm/parts/carousel/Carousel.js.map +2 -2
  51. package/dist/esm/parts/carousel/styles.js +4 -4
  52. package/dist/esm/parts/carousel/styles.js.map +2 -2
  53. package/dist/esm/parts/carousel/useCarouselCallbacks.js.map +2 -2
  54. package/dist/esm/parts/tabBar/TabBar.js +11 -115
  55. package/dist/esm/parts/tabBar/TabBar.js.map +3 -3
  56. package/dist/esm/parts/tabBar/TabBarItemRenderer.js +106 -0
  57. package/dist/esm/parts/tabBar/TabBarItemRenderer.js.map +7 -0
  58. package/dist/esm/parts/tabBar/styles.js +17 -7
  59. package/dist/esm/parts/tabBar/styles.js.map +2 -2
  60. package/dist/esm/parts/tabBar/useTabBar.js +4 -4
  61. package/dist/esm/parts/tabBar/useTabBar.js.map +2 -2
  62. package/dist/esm/parts/tabsContent/TabsContent.js +2 -2
  63. package/dist/esm/parts/tabsContent/TabsContent.js.map +1 -1
  64. package/dist/esm/parts/tabsPanel/TabsPanels.js.map +2 -2
  65. package/dist/esm/react-desc-prop-types.js +33 -14
  66. package/dist/esm/react-desc-prop-types.js.map +2 -2
  67. package/dist/esm/typescript-testing/typescript-tabs-valid.js +7 -7
  68. package/dist/esm/typescript-testing/typescript-tabs-valid.js.map +2 -2
  69. package/dist/esm/utils/helpers.js +1 -1
  70. package/dist/esm/utils/helpers.js.map +1 -1
  71. package/dist/esm/utils/hooks/useTabsCallbacks.js.map +2 -2
  72. package/dist/types/constants/index.d.ts +44 -0
  73. package/dist/types/index.d.ts +3 -4
  74. package/dist/types/parts/carousel/Carousel.d.ts +1 -1
  75. package/dist/types/parts/carousel/styles.d.ts +2 -2
  76. package/dist/types/parts/tabBar/TabBarItemRenderer.d.ts +2 -0
  77. package/dist/types/parts/tabBar/styles.d.ts +1 -0
  78. package/dist/types/react-desc-prop-types.d.ts +10 -485
  79. package/dist/types/sharedTypes.d.ts +2 -2
  80. package/dist/types/tests/DSTabs.PUI-15144.test.d.ts +1 -0
  81. package/dist/types/tests/DSTabs.PUI-15145.test.d.ts +1 -0
  82. package/dist/types/tests/DSTabs.data-testid.test.d.ts +1 -0
  83. package/dist/types/tests/DSTabs.exports.test.d.ts +1 -0
  84. package/dist/types/tests/DStabs.default-props.test.d.ts +1 -0
  85. package/dist/types/tests/axe-tabs.test.d.ts +1 -0
  86. package/package.json +9 -9
  87. package/dist/cjs/DSTabsDatatestid.js +0 -47
  88. package/dist/cjs/DSTabsDatatestid.js.map +0 -7
  89. package/dist/cjs/utils/constants.js.map +0 -7
  90. package/dist/esm/DSTabsDatatestid.js +0 -17
  91. package/dist/esm/DSTabsDatatestid.js.map +0 -7
  92. package/dist/esm/utils/constants.js +0 -26
  93. package/dist/esm/utils/constants.js.map +0 -7
  94. package/dist/types/DSTabsDatatestid.d.ts +0 -12
  95. package/dist/types/utils/constants.d.ts +0 -17
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/sharedTypes.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import type { TabTypes } from './utils/constants.js';\nimport type { DSTabsT } from './react-desc-prop-types.js';\n\nexport namespace DSTabsInternalsT {\n export type TabTypesT = (typeof TabTypes)[keyof typeof TabTypes];\n\n export interface MobileGradientsT {\n right: boolean;\n left: boolean;\n }\n\n export interface IndicatorStyleT {\n left: number;\n width: number;\n }\n\n export interface ShowChevronsT {\n right: boolean;\n left: boolean;\n }\n\n export interface DSTabsUseTabsContextT {\n props: DSTabsT.InternalProps;\n tabsRef: React.MutableRefObject<Record<number, HTMLButtonElement> | null>;\n focusableTabsRef: React.MutableRefObject<HTMLButtonElement[] | null>;\n tabsListRef: React.MutableRefObject<HTMLDivElement | null>;\n tabsRefAsArray: React.MutableRefObject<HTMLButtonElement[] | null>;\n actualActiveTabRef: React.MutableRefObject<HTMLButtonElement | null>;\n carouselOnlyListRef: React.MutableRefObject<HTMLDivElement | null>;\n setInternalActiveTab: React.Dispatch<React.SetStateAction<string>>;\n actualActiveTab: string;\n }\n\n export interface DSTabsUseCrossRefContextT {\n lastTabInternalRef: React.MutableRefObject<HTMLButtonElement | null | undefined>;\n firstSubtabInternalRef: React.MutableRefObject<HTMLButtonElement | null | undefined>;\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
4
+ "sourcesContent": ["import type { TAB_TYPES } from './constants/index.js';\n\nimport type { DSTabsT } from './react-desc-prop-types.js';\n\nexport namespace DSTabsInternalsT {\n export type TabTypesT = (typeof TAB_TYPES)[keyof typeof TAB_TYPES];\n\n export interface MobileGradientsT {\n right: boolean;\n left: boolean;\n }\n\n export interface IndicatorStyleT {\n left: number;\n width: number;\n }\n\n export interface ShowChevronsT {\n right: boolean;\n left: boolean;\n }\n\n export interface DSTabsUseTabsContextT {\n props: DSTabsT.InternalProps;\n tabsRef: React.MutableRefObject<Record<number, HTMLButtonElement> | null>;\n focusableTabsRef: React.MutableRefObject<HTMLButtonElement[] | null>;\n tabsListRef: React.MutableRefObject<HTMLDivElement | null>;\n tabsRefAsArray: React.MutableRefObject<HTMLButtonElement[] | null>;\n actualActiveTabRef: React.MutableRefObject<HTMLButtonElement | null>;\n carouselOnlyListRef: React.MutableRefObject<HTMLDivElement | null>;\n setInternalActiveTab: React.Dispatch<React.SetStateAction<string>>;\n actualActiveTab: string;\n }\n\n export interface DSTabsUseCrossRefContextT {\n lastTabInternalRef: React.MutableRefObject<HTMLButtonElement | null | undefined>;\n firstSubtabInternalRef: React.MutableRefObject<HTMLButtonElement | null | undefined>;\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;ACAA,YAAuB;",
6
6
  "names": []
7
7
  }
@@ -55,7 +55,7 @@ const testTabsPartialDefaults = {
55
55
  isDSMobile: false,
56
56
  onTabChange: (tabId) => {
57
57
  },
58
- type: import__.TabTypes.NORMAL,
58
+ type: import__.TAB_TYPES.NORMAL,
59
59
  showSeparator: true
60
60
  };
61
61
  const testTabsProps = {
@@ -87,7 +87,7 @@ const testTabsCompleteDefaults = {
87
87
  onTabChange: (tabId) => {
88
88
  },
89
89
  tabsListAriaLabel: "Tab list",
90
- type: import__.TabTypes.NORMAL,
90
+ type: import__.TAB_TYPES.NORMAL,
91
91
  onlyRenderActiveTab: false,
92
92
  withCarousel: false,
93
93
  isDSMobile: false,
@@ -118,7 +118,7 @@ const testTabsExplicitDefinition = {
118
118
  onTabChange: (tabId) => {
119
119
  },
120
120
  tabsListAriaLabel: "Tab list",
121
- type: import__.TabTypes.NORMAL,
121
+ type: import__.TAB_TYPES.NORMAL,
122
122
  onlyRenderActiveTab: false,
123
123
  withCarousel: false,
124
124
  isDSMobile: false,
@@ -157,7 +157,7 @@ const testTabsInferedTypeCompatibility = {
157
157
  onTabChange: (tabId) => {
158
158
  },
159
159
  tabsListAriaLabel: "Tab list",
160
- type: import__.TabTypes.NORMAL,
160
+ type: import__.TAB_TYPES.NORMAL,
161
161
  onlyRenderActiveTab: false,
162
162
  withCarousel: false,
163
163
  isDSMobile: false,
@@ -182,7 +182,7 @@ const testTabsDefinitionAsConst = {
182
182
  onTabChange: (tabId) => {
183
183
  },
184
184
  tabsListAriaLabel: "Tab list",
185
- type: import__.TabTypes.NORMAL,
185
+ type: import__.TAB_TYPES.NORMAL,
186
186
  onlyRenderActiveTab: false,
187
187
  withCarousel: false,
188
188
  isDSMobile: false,
@@ -244,7 +244,7 @@ const ExampleUsageComponent = () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)
244
244
  onTabChange: (tabId) => {
245
245
  },
246
246
  tabsListAriaLabel: "Tab list",
247
- type: import__.TabTypes.NORMAL,
247
+ type: import__.TAB_TYPES.NORMAL,
248
248
  onlyRenderActiveTab: false,
249
249
  withCarousel: false,
250
250
  isDSMobile: false,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/typescript-testing/typescript-tabs-valid.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable react/jsx-no-duplicate-props */\n/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */\nimport React from 'react';\nimport { DSTabs, DSTab, TabTypes } from '../index.js';\nimport type { DSTabsT, DSTabT } from '../index.js';\n\n// test we expose the namespace and the namespace follows our deliverable conventions\ntype ComponentPropsForTabs = DSTabsT.Props;\ntype ComponentPropsTabsInternals = DSTabsT.InternalProps;\ntype ComponentPropsTabsDefaultProps = DSTabsT.DefaultProps;\ntype ComponentPropsTabsOptionalProps = DSTabsT.PropsOptional;\n\ntype ComponentPropsForTab = DSTabT.Props;\ntype ComponentPropsTabDefaultProps = DSTabT.DefaultProps;\ntype ComponentPropsTabOptionalProps = DSTabT.PropsOptional;\ntype ComponentPropsTabRequiredProps = DSTabT.PropsRequired;\n\nconst buttonRef = React.createRef() as React.MutableRefObject<HTMLButtonElement>;\nconst divRef = React.createRef() as React.MutableRefObject<HTMLDivElement>;\nconst MockComponent: React.ComponentType = () => <div></div>;\n\n// Tabs\nconst testTabsOptionalProps: ComponentPropsTabsOptionalProps = {\n activeTab: '',\n innerRef: divRef,\n firstSubtabRef: buttonRef,\n lastTabRef: buttonRef,\n TabBarExtraContent: MockComponent,\n tabBarExtraContent: '',\n};\n\n// Tab\nconst testTabRequiredProps: ComponentPropsTabRequiredProps = {\n children: <div></div>,\n};\n\nconst testTabOptionalProps: ComponentPropsTabOptionalProps = {\n disabled: false,\n onClick: () => {},\n onKeyDown: () => {},\n ref: buttonRef,\n required: true,\n style: {},\n title: '',\n};\n\n// difference Props and InternalProps is that InternalProps has all the default props filled in\n// Props allows for partial defaults\n\n// Tabs\nconst testTabsPartialDefaults: Partial<ComponentPropsTabsDefaultProps> = {\n allowTextSelection: false,\n isDSMobile: false,\n onTabChange: (tabId: string) => {},\n type: TabTypes.NORMAL,\n showSeparator: true,\n};\n\nconst testTabsProps: ComponentPropsForTabs = {\n ...testTabsOptionalProps,\n ...testTabsPartialDefaults,\n};\n\nconst testTabsPropsAsSyntax = {\n ...testTabsOptionalProps,\n ...testTabsPartialDefaults,\n} as ComponentPropsForTabs;\n\n// Tab\nconst testTabPartialDefaults: Partial<ComponentPropsTabDefaultProps> = {\n tabId: '',\n};\n\nconst testTabProps: ComponentPropsForTab = {\n ...testTabRequiredProps,\n ...testTabOptionalProps,\n ...testTabPartialDefaults,\n};\n\nconst testTabPropsAsSyntax = {\n ...testTabRequiredProps,\n ...testTabOptionalProps,\n ...testTabPartialDefaults,\n} as ComponentPropsForTab;\n\n// InternalProps requires all defaults to be filled in\n\n// Tabs\nconst testTabsCompleteDefaults: Required<ComponentPropsTabsDefaultProps> = {\n containerProps: {},\n animated: true,\n enableMouseEvents: false,\n allowTextSelection: false,\n onTabChange: (tabId: string) => {},\n tabsListAriaLabel: 'Tab list',\n type: TabTypes.NORMAL,\n onlyRenderActiveTab: false,\n withCarousel: false,\n isDSMobile: false,\n showSelectionIndicator: true,\n children: [],\n fixedTabsHeaders: false,\n showSeparator: true,\n tabPanelsProps: {},\n swipeableViewsContainerProps: {},\n};\n\nconst testTabsInternalProps: ComponentPropsTabsInternals = {\n ...testTabsOptionalProps,\n ...testTabsCompleteDefaults,\n};\n\nconst testTabsInternalPropsAsSyntax = {\n ...testTabsOptionalProps,\n ...testTabsCompleteDefaults,\n} as ComponentPropsTabsInternals;\n\n// Tab\nconst testTabCompleteDefaults: Required<ComponentPropsTabDefaultProps> = {\n tabId: '',\n applyAriaDisabled: false,\n};\n\n// using the explicit type definition, if there is an error, it will be marked on the key that is wrong\n\n// Tabs\nconst testTabsExplicitDefinition: ComponentPropsForTabs = {\n containerProps: {},\n animated: true,\n enableMouseEvents: false,\n allowTextSelection: false,\n onTabChange: (tabId: string) => {},\n tabsListAriaLabel: 'Tab list',\n type: TabTypes.NORMAL,\n onlyRenderActiveTab: false,\n withCarousel: false,\n isDSMobile: false,\n showSelectionIndicator: true,\n children: [],\n fixedTabsHeaders: false,\n showSeparator: true,\n tabPanelsProps: {},\n swipeableViewsContainerProps: {},\n activeTab: '',\n innerRef: divRef,\n firstSubtabRef: buttonRef,\n lastTabRef: buttonRef,\n TabBarExtraContent: MockComponent,\n tabBarExtraContent: '',\n};\n\n// Tab\nconst testTabExplicitDefinition: ComponentPropsForTab = {\n children: [],\n disabled: false,\n onClick: () => {},\n onKeyDown: () => {},\n ref: buttonRef,\n required: true,\n style: {},\n title: '',\n tabId: '',\n applyAriaDisabled: false,\n};\n\n// using the \"as\" syntax, if there is an error, it will be marking the whole object as wrong because it is not compatible with the type\n\n// Tabs\nconst testTabsInferedTypeCompatibility = {\n containerProps: {},\n animated: true,\n enableMouseEvents: false,\n allowTextSelection: false,\n onTabChange: (tabId: string) => {},\n tabsListAriaLabel: 'Tab list',\n type: TabTypes.NORMAL,\n onlyRenderActiveTab: false,\n withCarousel: false,\n isDSMobile: false,\n showSelectionIndicator: true,\n children: [],\n fixedTabsHeaders: false,\n showSeparator: true,\n tabPanelsProps: {},\n swipeableViewsContainerProps: {},\n activeTab: '',\n innerRef: divRef,\n firstSubtabRef: buttonRef,\n lastTabRef: buttonRef,\n TabBarExtraContent: MockComponent,\n tabBarExtraContent: '',\n} as ComponentPropsForTabs;\n\nconst testTabsDefinitionAsConst = {\n containerProps: {},\n animated: true,\n enableMouseEvents: false,\n allowTextSelection: false,\n onTabChange: (tabId: string) => {},\n tabsListAriaLabel: 'Tab list',\n type: TabTypes.NORMAL,\n onlyRenderActiveTab: false,\n withCarousel: false,\n isDSMobile: false,\n showSelectionIndicator: true,\n children: [],\n fixedTabsHeaders: false,\n showSeparator: true,\n tabPanelsProps: {},\n swipeableViewsContainerProps: {},\n activeTab: '',\n innerRef: divRef,\n firstSubtabRef: buttonRef,\n lastTabRef: buttonRef,\n TabBarExtraContent: MockComponent,\n tabBarExtraContent: '',\n} as const;\n\n// Tab\nconst testTabInferedTypeCompatibility = {\n children: <div></div>,\n disabled: false,\n onClick: () => {},\n onKeyDown: () => {},\n ref: buttonRef,\n required: true,\n style: {},\n title: '',\n tabId: '',\n applyAriaDisabled: false,\n} as ComponentPropsForTab;\n\nconst testTabDefinitionAsConst = {\n children: <div></div>,\n disabled: false,\n onClick: () => {},\n onKeyDown: () => {},\n ref: buttonRef,\n required: true,\n style: {},\n title: '',\n tabId: '',\n applyAriaDisabled: false,\n} as const;\n\nconst ExampleUsageComponent = () => (\n <>\n {/* works with explicitly casted props, all syntaxes */}\n <DSTabs {...testTabsExplicitDefinition} />\n <DSTabs {...testTabsInferedTypeCompatibility}></DSTabs>\n <DSTabs {...testTabsDefinitionAsConst}></DSTabs>\n\n <DSTab {...testTabExplicitDefinition} />\n <DSTab {...testTabInferedTypeCompatibility} />\n <DSTab {...testTabDefinitionAsConst} />\n\n {/* works with inline values */}\n <DSTabs\n containerProps={{}}\n animated\n enableMouseEvents={false}\n allowTextSelection={false}\n onTabChange={(tabId: string) => {}}\n tabsListAriaLabel=\"Tab list\"\n type={TabTypes.NORMAL}\n onlyRenderActiveTab={false}\n withCarousel={false}\n isDSMobile={false}\n showSelectionIndicator\n fixedTabsHeaders={false}\n showSeparator\n tabPanelsProps={{}}\n swipeableViewsContainerProps={{}}\n activeTab=\"\"\n innerRef={divRef}\n firstSubtabRef={buttonRef}\n lastTabRef={buttonRef}\n TabBarExtraContent={MockComponent}\n tabBarExtraContent=\"\"\n >\n {[]}\n </DSTabs>\n\n <DSTab\n disabled={false}\n onClick={() => {}}\n onKeyDown={() => {}}\n ref={buttonRef}\n required\n style={{}}\n title=\"\"\n tabId=\"\"\n applyAriaDisabled={false}\n >\n <div></div>\n </DSTab>\n </>\n);\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable react/jsx-no-duplicate-props */\n/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */\nimport React from 'react';\nimport { DSTabs, DSTab, TAB_TYPES } from '../index.js';\nimport type { DSTabsT, DSTabT } from '../index.js';\n\n// test we expose the namespace and the namespace follows our deliverable conventions\ntype ComponentPropsForTabs = DSTabsT.Props;\ntype ComponentPropsTabsInternals = DSTabsT.InternalProps;\ntype ComponentPropsTabsDefaultProps = DSTabsT.DefaultProps;\ntype ComponentPropsTabsOptionalProps = DSTabsT.OptionalProps;\n\ntype ComponentPropsForTab = DSTabT.Props;\ntype ComponentPropsTabDefaultProps = DSTabT.DefaultProps;\ntype ComponentPropsTabOptionalProps = DSTabT.OptionalProps;\ntype ComponentPropsTabRequiredProps = DSTabT.RequiredProps;\n\nconst buttonRef = React.createRef() as React.MutableRefObject<HTMLButtonElement>;\nconst divRef = React.createRef() as React.MutableRefObject<HTMLDivElement>;\nconst MockComponent: React.ComponentType = () => <div></div>;\n\n// Tabs\nconst testTabsOptionalProps: ComponentPropsTabsOptionalProps = {\n activeTab: '',\n innerRef: divRef,\n firstSubtabRef: buttonRef,\n lastTabRef: buttonRef,\n TabBarExtraContent: MockComponent,\n tabBarExtraContent: '',\n};\n\n// Tab\nconst testTabRequiredProps: ComponentPropsTabRequiredProps = {\n children: <div></div>,\n};\n\nconst testTabOptionalProps: ComponentPropsTabOptionalProps = {\n disabled: false,\n onClick: () => {},\n onKeyDown: () => {},\n ref: buttonRef,\n required: true,\n style: {},\n title: '',\n};\n\n// difference Props and InternalProps is that InternalProps has all the default props filled in\n// Props allows for partial defaults\n\n// Tabs\nconst testTabsPartialDefaults: Partial<ComponentPropsTabsDefaultProps> = {\n allowTextSelection: false,\n isDSMobile: false,\n onTabChange: (tabId: string) => {},\n type: TAB_TYPES.NORMAL,\n showSeparator: true,\n};\n\nconst testTabsProps: ComponentPropsForTabs = {\n ...testTabsOptionalProps,\n ...testTabsPartialDefaults,\n};\n\nconst testTabsPropsAsSyntax = {\n ...testTabsOptionalProps,\n ...testTabsPartialDefaults,\n} as ComponentPropsForTabs;\n\n// Tab\nconst testTabPartialDefaults: Partial<ComponentPropsTabDefaultProps> = {\n tabId: '',\n};\n\nconst testTabProps: ComponentPropsForTab = {\n ...testTabRequiredProps,\n ...testTabOptionalProps,\n ...testTabPartialDefaults,\n};\n\nconst testTabPropsAsSyntax = {\n ...testTabRequiredProps,\n ...testTabOptionalProps,\n ...testTabPartialDefaults,\n} as ComponentPropsForTab;\n\n// InternalProps requires all defaults to be filled in\n\n// Tabs\nconst testTabsCompleteDefaults: Required<ComponentPropsTabsDefaultProps> = {\n containerProps: {},\n animated: true,\n enableMouseEvents: false,\n allowTextSelection: false,\n onTabChange: (tabId: string) => {},\n tabsListAriaLabel: 'Tab list',\n type: TAB_TYPES.NORMAL,\n onlyRenderActiveTab: false,\n withCarousel: false,\n isDSMobile: false,\n showSelectionIndicator: true,\n children: [],\n fixedTabsHeaders: false,\n showSeparator: true,\n tabPanelsProps: {},\n swipeableViewsContainerProps: {},\n};\n\nconst testTabsInternalProps: ComponentPropsTabsInternals = {\n ...testTabsOptionalProps,\n ...testTabsCompleteDefaults,\n};\n\nconst testTabsInternalPropsAsSyntax = {\n ...testTabsOptionalProps,\n ...testTabsCompleteDefaults,\n} as ComponentPropsTabsInternals;\n\n// Tab\nconst testTabCompleteDefaults: Required<ComponentPropsTabDefaultProps> = {\n tabId: '',\n applyAriaDisabled: false,\n};\n\n// using the explicit type definition, if there is an error, it will be marked on the key that is wrong\n\n// Tabs\nconst testTabsExplicitDefinition: ComponentPropsForTabs = {\n containerProps: {},\n animated: true,\n enableMouseEvents: false,\n allowTextSelection: false,\n onTabChange: (tabId: string) => {},\n tabsListAriaLabel: 'Tab list',\n type: TAB_TYPES.NORMAL,\n onlyRenderActiveTab: false,\n withCarousel: false,\n isDSMobile: false,\n showSelectionIndicator: true,\n children: [],\n fixedTabsHeaders: false,\n showSeparator: true,\n tabPanelsProps: {},\n swipeableViewsContainerProps: {},\n activeTab: '',\n innerRef: divRef,\n firstSubtabRef: buttonRef,\n lastTabRef: buttonRef,\n TabBarExtraContent: MockComponent,\n tabBarExtraContent: '',\n};\n\n// Tab\nconst testTabExplicitDefinition: ComponentPropsForTab = {\n children: [],\n disabled: false,\n onClick: () => {},\n onKeyDown: () => {},\n ref: buttonRef,\n required: true,\n style: {},\n title: '',\n tabId: '',\n applyAriaDisabled: false,\n};\n\n// using the \"as\" syntax, if there is an error, it will be marking the whole object as wrong because it is not compatible with the type\n\n// Tabs\nconst testTabsInferedTypeCompatibility = {\n containerProps: {},\n animated: true,\n enableMouseEvents: false,\n allowTextSelection: false,\n onTabChange: (tabId: string) => {},\n tabsListAriaLabel: 'Tab list',\n type: TAB_TYPES.NORMAL,\n onlyRenderActiveTab: false,\n withCarousel: false,\n isDSMobile: false,\n showSelectionIndicator: true,\n children: [],\n fixedTabsHeaders: false,\n showSeparator: true,\n tabPanelsProps: {},\n swipeableViewsContainerProps: {},\n activeTab: '',\n innerRef: divRef,\n firstSubtabRef: buttonRef,\n lastTabRef: buttonRef,\n TabBarExtraContent: MockComponent,\n tabBarExtraContent: '',\n} as ComponentPropsForTabs;\n\nconst testTabsDefinitionAsConst = {\n containerProps: {},\n animated: true,\n enableMouseEvents: false,\n allowTextSelection: false,\n onTabChange: (tabId: string) => {},\n tabsListAriaLabel: 'Tab list',\n type: TAB_TYPES.NORMAL,\n onlyRenderActiveTab: false,\n withCarousel: false,\n isDSMobile: false,\n showSelectionIndicator: true,\n children: [],\n fixedTabsHeaders: false,\n showSeparator: true,\n tabPanelsProps: {},\n swipeableViewsContainerProps: {},\n activeTab: '',\n innerRef: divRef,\n firstSubtabRef: buttonRef,\n lastTabRef: buttonRef,\n TabBarExtraContent: MockComponent,\n tabBarExtraContent: '',\n} as const;\n\n// Tab\nconst testTabInferedTypeCompatibility = {\n children: <div></div>,\n disabled: false,\n onClick: () => {},\n onKeyDown: () => {},\n ref: buttonRef,\n required: true,\n style: {},\n title: '',\n tabId: '',\n applyAriaDisabled: false,\n} as ComponentPropsForTab;\n\nconst testTabDefinitionAsConst = {\n children: <div></div>,\n disabled: false,\n onClick: () => {},\n onKeyDown: () => {},\n ref: buttonRef,\n required: true,\n style: {},\n title: '',\n tabId: '',\n applyAriaDisabled: false,\n} as const;\n\nconst ExampleUsageComponent = () => (\n <>\n {/* works with explicitly casted props, all syntaxes */}\n <DSTabs {...testTabsExplicitDefinition} />\n <DSTabs {...testTabsInferedTypeCompatibility}></DSTabs>\n <DSTabs {...testTabsDefinitionAsConst}></DSTabs>\n\n <DSTab {...testTabExplicitDefinition} />\n <DSTab {...testTabInferedTypeCompatibility} />\n <DSTab {...testTabDefinitionAsConst} />\n\n {/* works with inline values */}\n <DSTabs\n containerProps={{}}\n animated\n enableMouseEvents={false}\n allowTextSelection={false}\n onTabChange={(tabId: string) => {}}\n tabsListAriaLabel=\"Tab list\"\n type={TAB_TYPES.NORMAL}\n onlyRenderActiveTab={false}\n withCarousel={false}\n isDSMobile={false}\n showSelectionIndicator\n fixedTabsHeaders={false}\n showSeparator\n tabPanelsProps={{}}\n swipeableViewsContainerProps={{}}\n activeTab=\"\"\n innerRef={divRef}\n firstSubtabRef={buttonRef}\n lastTabRef={buttonRef}\n TabBarExtraContent={MockComponent}\n tabBarExtraContent=\"\"\n >\n {[]}\n </DSTabs>\n\n <DSTab\n disabled={false}\n onClick={() => {}}\n onKeyDown={() => {}}\n ref={buttonRef}\n required\n style={{}}\n title=\"\"\n tabId=\"\"\n applyAriaDisabled={false}\n >\n <div></div>\n </DSTab>\n </>\n);\n"],
5
+ "mappings": "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",
6
6
  "names": ["React"]
7
7
  }
@@ -37,7 +37,7 @@ __export(helpers_exports, {
37
37
  });
38
38
  module.exports = __toCommonJS(helpers_exports);
39
39
  var React = __toESM(require("react"));
40
- var import_constants = require("./constants.js");
40
+ var import_constants = require("../constants/index.js");
41
41
  const isElementVisible = (tab, tabList) => {
42
42
  const tabDimensions = tab.getBoundingClientRect();
43
43
  const tabListDimensions = tabList.getBoundingClientRect();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/utils/helpers.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import type React from 'react';\nimport { MOBILE_GRADIENT_WIDTH } from './constants.js';\n\ninterface VisibleDimensionsT {\n width: number;\n height: number;\n}\n\ninterface CenterTabPropsT {\n e?: React.MouseEvent | React.FocusEvent;\n listRef: React.MutableRefObject<HTMLDivElement | null>;\n}\n\nexport const isElementVisible = (tab: HTMLElement, tabList: HTMLElement): boolean => {\n const tabDimensions = tab.getBoundingClientRect();\n const tabListDimensions = tabList.getBoundingClientRect();\n\n return tabDimensions.left <= tabListDimensions.left\n ? tabListDimensions.left - tabDimensions.left <= tabDimensions.width\n : tabDimensions.right - tabListDimensions.right <= tabDimensions.width;\n};\n\nexport const isElementVisibleCarousel = (\n tab: HTMLElement | null,\n tabContainer: HTMLDivElement | null,\n firstOrLastItem = true,\n): boolean => {\n if (tab && tabContainer) {\n const tabDimensions = tab.getBoundingClientRect();\n const tabContainerDimensions = tabContainer.getBoundingClientRect();\n\n const offset = firstOrLastItem ? 16 : 32;\n const tabDimensionsLeft = Math.floor(tabDimensions.left - offset);\n const tabDimensionsRight = Math.floor(tabDimensions.right + offset);\n\n const tabContainerDimensionsLeft = Math.floor(tabContainerDimensions.left);\n const tabContainerDimensionsRight = Math.floor(tabContainerDimensions.right);\n\n return tabDimensionsLeft >= tabContainerDimensionsLeft && tabDimensionsRight <= tabContainerDimensionsRight;\n }\n return false;\n};\n\nexport const centerTab = ({ e, listRef }: CenterTabPropsT) => {\n if (listRef.current) {\n const { offsetLeft } = e?.target as HTMLButtonElement;\n const { width: tabWidth } = (e?.target as HTMLButtonElement).getBoundingClientRect();\n const { width: listWidth } = listRef.current.getBoundingClientRect();\n const extraSideSpace = listWidth - tabWidth;\n const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;\n const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;\n listRef.current.scrollTo({\n top: 0,\n left: centeredLeftOffset,\n behavior: 'smooth',\n });\n\n e?.preventDefault();\n }\n};\n\nexport const getVisibleDimensions = (node: HTMLElement, referenceNode: HTMLElement): VisibleDimensionsT => {\n const nodeDimensions = node.getBoundingClientRect();\n const referenceNodeDimensions = referenceNode.getBoundingClientRect();\n\n return {\n width: Math.min(\n node.clientWidth,\n referenceNodeDimensions.left + referenceNode.clientWidth - nodeDimensions.left,\n node.clientWidth - (referenceNodeDimensions.left - nodeDimensions.left),\n ),\n height: Math.min(\n node.clientHeight,\n referenceNodeDimensions.top + referenceNode.clientHeight - nodeDimensions.top,\n node.clientHeight - (referenceNodeDimensions.top - nodeDimensions.top),\n ),\n };\n};\n\nexport const shouldHaveLeftGradient = (scrollLeft: number): boolean => Math.abs(scrollLeft) > MOBILE_GRADIENT_WIDTH;\n\nexport const shouldHaveRightGradient = (scrollLeft: number, clientWidth: number, scrollWidth: number): boolean =>\n Math.abs(scrollLeft) <= scrollWidth - (clientWidth + MOBILE_GRADIENT_WIDTH);\n", "import * as React from 'react';\nexport { React };\n"],
4
+ "sourcesContent": ["import type React from 'react';\nimport { MOBILE_GRADIENT_WIDTH } from '../constants/index.js';\n\ninterface VisibleDimensionsT {\n width: number;\n height: number;\n}\n\ninterface CenterTabPropsT {\n e?: React.MouseEvent | React.FocusEvent;\n listRef: React.MutableRefObject<HTMLDivElement | null>;\n}\n\nexport const isElementVisible = (tab: HTMLElement, tabList: HTMLElement): boolean => {\n const tabDimensions = tab.getBoundingClientRect();\n const tabListDimensions = tabList.getBoundingClientRect();\n\n return tabDimensions.left <= tabListDimensions.left\n ? tabListDimensions.left - tabDimensions.left <= tabDimensions.width\n : tabDimensions.right - tabListDimensions.right <= tabDimensions.width;\n};\n\nexport const isElementVisibleCarousel = (\n tab: HTMLElement | null,\n tabContainer: HTMLDivElement | null,\n firstOrLastItem = true,\n): boolean => {\n if (tab && tabContainer) {\n const tabDimensions = tab.getBoundingClientRect();\n const tabContainerDimensions = tabContainer.getBoundingClientRect();\n\n const offset = firstOrLastItem ? 16 : 32;\n const tabDimensionsLeft = Math.floor(tabDimensions.left - offset);\n const tabDimensionsRight = Math.floor(tabDimensions.right + offset);\n\n const tabContainerDimensionsLeft = Math.floor(tabContainerDimensions.left);\n const tabContainerDimensionsRight = Math.floor(tabContainerDimensions.right);\n\n return tabDimensionsLeft >= tabContainerDimensionsLeft && tabDimensionsRight <= tabContainerDimensionsRight;\n }\n return false;\n};\n\nexport const centerTab = ({ e, listRef }: CenterTabPropsT) => {\n if (listRef.current) {\n const { offsetLeft } = e?.target as HTMLButtonElement;\n const { width: tabWidth } = (e?.target as HTMLButtonElement).getBoundingClientRect();\n const { width: listWidth } = listRef.current.getBoundingClientRect();\n const extraSideSpace = listWidth - tabWidth;\n const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;\n const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;\n listRef.current.scrollTo({\n top: 0,\n left: centeredLeftOffset,\n behavior: 'smooth',\n });\n\n e?.preventDefault();\n }\n};\n\nexport const getVisibleDimensions = (node: HTMLElement, referenceNode: HTMLElement): VisibleDimensionsT => {\n const nodeDimensions = node.getBoundingClientRect();\n const referenceNodeDimensions = referenceNode.getBoundingClientRect();\n\n return {\n width: Math.min(\n node.clientWidth,\n referenceNodeDimensions.left + referenceNode.clientWidth - nodeDimensions.left,\n node.clientWidth - (referenceNodeDimensions.left - nodeDimensions.left),\n ),\n height: Math.min(\n node.clientHeight,\n referenceNodeDimensions.top + referenceNode.clientHeight - nodeDimensions.top,\n node.clientHeight - (referenceNodeDimensions.top - nodeDimensions.top),\n ),\n };\n};\n\nexport const shouldHaveLeftGradient = (scrollLeft: number): boolean => Math.abs(scrollLeft) > MOBILE_GRADIENT_WIDTH;\n\nexport const shouldHaveRightGradient = (scrollLeft: number, clientWidth: number, scrollWidth: number): boolean =>\n Math.abs(scrollLeft) <= scrollWidth - (clientWidth + MOBILE_GRADIENT_WIDTH);\n", "import * as React from 'react';\nexport { React };\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,uBAAsC;AAY/B,MAAM,mBAAmB,CAAC,KAAkB,YAAkC;AACnF,QAAM,gBAAgB,IAAI,sBAAsB;AAChD,QAAM,oBAAoB,QAAQ,sBAAsB;AAExD,SAAO,cAAc,QAAQ,kBAAkB,OAC3C,kBAAkB,OAAO,cAAc,QAAQ,cAAc,QAC7D,cAAc,QAAQ,kBAAkB,SAAS,cAAc;AACrE;AAEO,MAAM,2BAA2B,CACtC,KACA,cACA,kBAAkB,SACN;AACZ,MAAI,OAAO,cAAc;AACvB,UAAM,gBAAgB,IAAI,sBAAsB;AAChD,UAAM,yBAAyB,aAAa,sBAAsB;AAElE,UAAM,SAAS,kBAAkB,KAAK;AACtC,UAAM,oBAAoB,KAAK,MAAM,cAAc,OAAO,MAAM;AAChE,UAAM,qBAAqB,KAAK,MAAM,cAAc,QAAQ,MAAM;AAElE,UAAM,6BAA6B,KAAK,MAAM,uBAAuB,IAAI;AACzE,UAAM,8BAA8B,KAAK,MAAM,uBAAuB,KAAK;AAE3E,WAAO,qBAAqB,8BAA8B,sBAAsB;AAAA,EAClF;AACA,SAAO;AACT;AAEO,MAAM,YAAY,CAAC,EAAE,GAAG,QAAQ,MAAuB;AAC5D,MAAI,QAAQ,SAAS;AACnB,UAAM,EAAE,WAAW,IAAI,GAAG;AAC1B,UAAM,EAAE,OAAO,SAAS,KAAK,GAAG,QAA6B,sBAAsB;AACnF,UAAM,EAAE,OAAO,UAAU,IAAI,QAAQ,QAAQ,sBAAsB;AACnE,UAAM,iBAAiB,YAAY;AACnC,UAAM,qBAAqB,iBAAiB,IAAI,iBAAiB,IAAI;AACrE,UAAM,qBAAqB,aAAa,qBAAqB,aAAa,qBAAqB;AAC/F,YAAQ,QAAQ,SAAS;AAAA,MACvB,KAAK;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,IACZ,CAAC;AAED,OAAG,eAAe;AAAA,EACpB;AACF;AAEO,MAAM,uBAAuB,CAAC,MAAmB,kBAAmD;AACzG,QAAM,iBAAiB,KAAK,sBAAsB;AAClD,QAAM,0BAA0B,cAAc,sBAAsB;AAEpE,SAAO;AAAA,IACL,OAAO,KAAK;AAAA,MACV,KAAK;AAAA,MACL,wBAAwB,OAAO,cAAc,cAAc,eAAe;AAAA,MAC1E,KAAK,eAAe,wBAAwB,OAAO,eAAe;AAAA,IACpE;AAAA,IACA,QAAQ,KAAK;AAAA,MACX,KAAK;AAAA,MACL,wBAAwB,MAAM,cAAc,eAAe,eAAe;AAAA,MAC1E,KAAK,gBAAgB,wBAAwB,MAAM,eAAe;AAAA,IACpE;AAAA,EACF;AACF;AAEO,MAAM,yBAAyB,CAAC,eAAgC,KAAK,IAAI,UAAU,IAAI;AAEvF,MAAM,0BAA0B,CAAC,YAAoB,aAAqB,gBAC/E,KAAK,IAAI,UAAU,KAAK,eAAe,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/utils/hooks/useTabsCallbacks.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import type React from 'react';\nimport { useCallback, useContext } from 'react';\nimport { centerTab } from '../helpers.js';\nimport { DSTabsContext } from '../../DSTabsCTX.js';\n\ninterface UseTabsCallbacksReturnTypeT {\n handleOnTabChange: (tabId: string, e?: React.MouseEvent) => void;\n handleOnMouseDown: (e: React.MouseEvent) => void;\n}\n\nexport const useTabsCallbacks = (): UseTabsCallbacksReturnTypeT => {\n const {\n setInternalActiveTab,\n tabsListRef,\n props: { onTabChange, isDSMobile, allowTextSelection, fixedTabsHeaders },\n } = useContext(DSTabsContext);\n\n const handleOnTabChange = useCallback(\n (tabId: string, e?: React.MouseEvent) => {\n setInternalActiveTab(tabId);\n onTabChange(tabId, e);\n if (isDSMobile && !fixedTabsHeaders && e) {\n centerTab({ e, listRef: tabsListRef });\n }\n },\n [fixedTabsHeaders, isDSMobile, onTabChange, setInternalActiveTab, tabsListRef],\n );\n\n const handleOnMouseDown = useCallback(\n (e: React.MouseEvent) => {\n const role = (e.target as HTMLElement).getAttribute('role');\n if (role !== 'tabpanel' && allowTextSelection) e.stopPropagation();\n },\n [allowTextSelection],\n );\n\n return {\n handleOnTabChange,\n handleOnMouseDown,\n };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAAwC;AACxC,qBAA0B;AAC1B,uBAA8B;AAOvB,MAAM,mBAAmB,MAAmC;AACjE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,aAAa,YAAY,oBAAoB,iBAAiB;AAAA,EACzE,QAAI,yBAAW,8BAAa;AAE5B,QAAM,wBAAoB;AAAA,IACxB,CAAC,OAAe,MAAyB;AACvC,2BAAqB,KAAK;AAC1B,kBAAY,OAAO,CAAC;AACpB,UAAI,cAAc,CAAC,oBAAoB,GAAG;AACxC,sCAAU,EAAE,GAAG,SAAS,YAAY,CAAC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB,YAAY,aAAa,sBAAsB,WAAW;AAAA,EAC/E;AAEA,QAAM,wBAAoB;AAAA,IACxB,CAAC,MAAwB;AACvB,YAAM,OAAQ,EAAE,OAAuB,aAAa,MAAM;AAC1D,UAAI,SAAS,cAAc,mBAAoB,GAAE,gBAAgB;AAAA,IACnE;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["import type React from 'react';\nimport { useCallback, useContext } from 'react';\nimport { centerTab } from '../helpers.js';\nimport { DSTabsContext } from '../../DSTabsCTX.js';\n\ninterface UseTabsCallbacksReturnTypeT {\n handleOnTabChange: (tabId: string, e?: React.MouseEvent) => void;\n handleOnMouseDown: (e: React.MouseEvent) => void;\n}\n\nexport const useTabsCallbacks = (): UseTabsCallbacksReturnTypeT => {\n const {\n setInternalActiveTab,\n tabsListRef,\n props: { onTabChange, isDSMobile, allowTextSelection, fixedTabsHeaders },\n } = useContext(DSTabsContext);\n\n /** [PUI-15772] - Tabs Pre Refactor\n * Main handler for active tab changes. It is responsible for:\n * 1. Updating the internal active tab state\n * 2. Notifying the user through the onTabChange callback\n * 3. Centering the tab on mobile if needed\n */\n const handleOnTabChange = useCallback(\n (tabId: string, e?: React.MouseEvent) => {\n setInternalActiveTab(tabId);\n onTabChange(tabId, e);\n if (isDSMobile && !fixedTabsHeaders && e) {\n centerTab({ e, listRef: tabsListRef });\n }\n },\n [fixedTabsHeaders, isDSMobile, onTabChange, setInternalActiveTab, tabsListRef],\n );\n\n const handleOnMouseDown = useCallback(\n (e: React.MouseEvent) => {\n const role = (e.target as HTMLElement).getAttribute('role');\n if (role !== 'tabpanel' && allowTextSelection) e.stopPropagation();\n },\n [allowTextSelection],\n );\n\n return {\n handleOnTabChange,\n handleOnMouseDown,\n };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAAwC;AACxC,qBAA0B;AAC1B,uBAA8B;AAOvB,MAAM,mBAAmB,MAAmC;AACjE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,aAAa,YAAY,oBAAoB,iBAAiB;AAAA,EACzE,QAAI,yBAAW,8BAAa;AAQ5B,QAAM,wBAAoB;AAAA,IACxB,CAAC,OAAe,MAAyB;AACvC,2BAAqB,KAAK;AAC1B,kBAAY,OAAO,CAAC;AACpB,UAAI,cAAc,CAAC,oBAAoB,GAAG;AACxC,sCAAU,EAAE,GAAG,SAAS,YAAY,CAAC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB,YAAY,aAAa,sBAAsB,WAAW;AAAA,EAC/E;AAEA,QAAM,wBAAoB;AAAA,IACxB,CAAC,MAAwB;AACvB,YAAM,OAAQ,EAAE,OAAuB,aAAa,MAAM;AAC1D,UAAI,SAAS,cAAc,mBAAoB,GAAE,gBAAgB;AAAA,IACnE;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,24 +1,24 @@
1
1
  import * as React from "react";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { describe } from "@elliemae/ds-props-helpers";
4
- import { tabsPropTypes } from "./react-desc-prop-types.js";
4
+ import { DSTabsPropTypes } from "./react-desc-prop-types.js";
5
5
  import { DSTabsContext, DSTabsCrossRefContext } from "./DSTabsCTX.js";
6
6
  import { TabsContent } from "./parts/tabsContent/TabsContent.js";
7
7
  import { useTabs } from "./config/useTabs.js";
8
8
  import { useCrossRef } from "./config/useCrossRef.js";
9
- import { TabTypes } from "./utils/constants.js";
9
+ import { TAB_TYPES } from "./constants/index.js";
10
10
  const DSTabs = (props) => {
11
11
  const ctx = useTabs(props);
12
12
  const crossRefsCtx = useCrossRef();
13
13
  const { type } = props;
14
- if (type === TabTypes.SUBTABS) {
14
+ if (type === TAB_TYPES.SUBTABS) {
15
15
  return /* @__PURE__ */ jsx(DSTabsContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(TabsContent, {}) });
16
16
  }
17
17
  return /* @__PURE__ */ jsx(DSTabsCrossRefContext.Provider, { value: crossRefsCtx, children: /* @__PURE__ */ jsx(DSTabsContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(TabsContent, {}) }) });
18
18
  };
19
19
  DSTabs.displayName = "DSTabs";
20
20
  const DSTabsWithSchema = describe(DSTabs);
21
- DSTabsWithSchema.propTypes = tabsPropTypes;
21
+ DSTabsWithSchema.propTypes = DSTabsPropTypes;
22
22
  var DSTabs_default = DSTabs;
23
23
  export {
24
24
  DSTabs,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/DSTabs.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { describe, type ValidationMap } from '@elliemae/ds-props-helpers';\nimport { tabsPropTypes } from './react-desc-prop-types.js';\nimport { DSTabsContext, DSTabsCrossRefContext } from './DSTabsCTX.js';\nimport { TabsContent } from './parts/tabsContent/TabsContent.js';\nimport { useTabs } from './config/useTabs.js';\nimport { useCrossRef } from './config/useCrossRef.js';\nimport { TabTypes } from './utils/constants.js';\nimport type { DSTabsT } from './react-desc-prop-types.js';\n\nconst DSTabs = (props: DSTabsT.Props): JSX.Element => {\n const ctx = useTabs(props);\n const crossRefsCtx = useCrossRef();\n\n const { type } = props;\n\n if (type === TabTypes.SUBTABS) {\n return (\n <DSTabsContext.Provider value={ctx}>\n <TabsContent />\n </DSTabsContext.Provider>\n );\n }\n\n return (\n <DSTabsCrossRefContext.Provider value={crossRefsCtx}>\n <DSTabsContext.Provider value={ctx}>\n <TabsContent />\n </DSTabsContext.Provider>\n </DSTabsCrossRefContext.Provider>\n );\n};\n\nDSTabs.displayName = 'DSTabs';\nconst DSTabsWithSchema = describe(DSTabs);\nDSTabsWithSchema.propTypes = tabsPropTypes as unknown as ValidationMap<DSTabsT.Props>;\n\nexport { DSTabs, DSTabsWithSchema };\nexport default DSTabs;\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACmBf;AAlBR,SAAS,gBAAoC;AAC7C,SAAS,qBAAqB;AAC9B,SAAS,eAAe,6BAA6B;AACrD,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB;AAGzB,MAAM,SAAS,CAAC,UAAsC;AACpD,QAAM,MAAM,QAAQ,KAAK;AACzB,QAAM,eAAe,YAAY;AAEjC,QAAM,EAAE,KAAK,IAAI;AAEjB,MAAI,SAAS,SAAS,SAAS;AAC7B,WACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,KAC7B,8BAAC,eAAY,GACf;AAAA,EAEJ;AAEA,SACE,oBAAC,sBAAsB,UAAtB,EAA+B,OAAO,cACrC,8BAAC,cAAc,UAAd,EAAuB,OAAO,KAC7B,8BAAC,eAAY,GACf,GACF;AAEJ;AAEA,OAAO,cAAc;AACrB,MAAM,mBAAmB,SAAS,MAAM;AACxC,iBAAiB,YAAY;AAG7B,IAAO,iBAAQ;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { describe, type ValidationMap } from '@elliemae/ds-props-helpers';\nimport { DSTabsPropTypes } from './react-desc-prop-types.js';\nimport { DSTabsContext, DSTabsCrossRefContext } from './DSTabsCTX.js';\nimport { TabsContent } from './parts/tabsContent/TabsContent.js';\nimport { useTabs } from './config/useTabs.js';\nimport { useCrossRef } from './config/useCrossRef.js';\n\nimport type { DSTabsT } from './react-desc-prop-types.js';\nimport { TAB_TYPES } from './constants/index.js';\n\nconst DSTabs = (props: DSTabsT.Props): JSX.Element => {\n const ctx = useTabs(props);\n const crossRefsCtx = useCrossRef();\n\n const { type } = props;\n\n if (type === TAB_TYPES.SUBTABS) {\n return (\n <DSTabsContext.Provider value={ctx}>\n <TabsContent />\n </DSTabsContext.Provider>\n );\n }\n\n return (\n <DSTabsCrossRefContext.Provider value={crossRefsCtx}>\n <DSTabsContext.Provider value={ctx}>\n <TabsContent />\n </DSTabsContext.Provider>\n </DSTabsCrossRefContext.Provider>\n );\n};\n\nDSTabs.displayName = 'DSTabs';\nconst DSTabsWithSchema = describe(DSTabs);\nDSTabsWithSchema.propTypes = DSTabsPropTypes as unknown as ValidationMap<DSTabsT.Props>;\n\nexport { DSTabs, DSTabsWithSchema };\nexport default DSTabs;\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACoBf;AAnBR,SAAS,gBAAoC;AAC7C,SAAS,uBAAuB;AAChC,SAAS,eAAe,6BAA6B;AACrD,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAG5B,SAAS,iBAAiB;AAE1B,MAAM,SAAS,CAAC,UAAsC;AACpD,QAAM,MAAM,QAAQ,KAAK;AACzB,QAAM,eAAe,YAAY;AAEjC,QAAM,EAAE,KAAK,IAAI;AAEjB,MAAI,SAAS,UAAU,SAAS;AAC9B,WACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,KAC7B,8BAAC,eAAY,GACf;AAAA,EAEJ;AAEA,SACE,oBAAC,sBAAsB,UAAtB,EAA+B,OAAO,cACrC,8BAAC,cAAc,UAAd,EAAuB,OAAO,KAC7B,8BAAC,eAAY,GACf,GACF;AAEJ;AAEA,OAAO,cAAc;AACrB,MAAM,mBAAmB,SAAS,MAAM;AACxC,iBAAiB,YAAY;AAG7B,IAAO,iBAAQ;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { createContext, createRef } from "react";
3
- import { tabsDefaultProps as defaultProps } from "./react-desc-prop-types.js";
3
+ import { DSTabsDefaultProps as defaultProps } from "./react-desc-prop-types.js";
4
4
  const noop = () => {
5
5
  };
6
6
  const defaultContext = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/DSTabsCTX.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { createContext, createRef } from 'react';\nimport { tabsDefaultProps as defaultProps } from './react-desc-prop-types.js';\nimport type { DSTabsInternalsT } from './sharedTypes.js';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\n\nconst defaultContext = {\n props: defaultProps,\n tabsRef: createRef<Record<number, HTMLButtonElement> | null>(),\n tabsListRef: createRef<HTMLDivElement | null>(),\n carouselOnlyListRef: createRef<HTMLDivElement | null>(),\n focusableTabsRef: createRef<HTMLButtonElement[] | null>(),\n tabsRefAsArray: createRef<HTMLButtonElement[] | null>(),\n actualActiveTabRef: createRef<HTMLButtonElement | null>(),\n setInternalActiveTab: noop,\n actualActiveTab: '',\n};\n\nconst defaultCrossRefsContext = {\n lastTabInternalRef: createRef<HTMLButtonElement | null>(),\n firstSubtabInternalRef: createRef<HTMLButtonElement | null>(),\n};\n\nexport const DSTabsContext = createContext<DSTabsInternalsT.DSTabsUseTabsContextT>(defaultContext);\nexport const DSTabsCrossRefContext = createContext<DSTabsInternalsT.DSTabsUseCrossRefContextT>(defaultCrossRefsContext);\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,eAAe,iBAAiB;AACzC,SAAS,oBAAoB,oBAAoB;AAIjD,MAAM,OAAO,MAAM;AAAC;AAEpB,MAAM,iBAAiB;AAAA,EACrB,OAAO;AAAA,EACP,SAAS,UAAoD;AAAA,EAC7D,aAAa,UAAiC;AAAA,EAC9C,qBAAqB,UAAiC;AAAA,EACtD,kBAAkB,UAAsC;AAAA,EACxD,gBAAgB,UAAsC;AAAA,EACtD,oBAAoB,UAAoC;AAAA,EACxD,sBAAsB;AAAA,EACtB,iBAAiB;AACnB;AAEA,MAAM,0BAA0B;AAAA,EAC9B,oBAAoB,UAAoC;AAAA,EACxD,wBAAwB,UAAoC;AAC9D;AAEO,MAAM,gBAAgB,cAAsD,cAAc;AAC1F,MAAM,wBAAwB,cAA0D,uBAAuB;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { createContext, createRef } from 'react';\nimport { DSTabsDefaultProps as defaultProps } from './react-desc-prop-types.js';\nimport type { DSTabsInternalsT } from './sharedTypes.js';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\n\nconst defaultContext = {\n props: defaultProps,\n tabsRef: createRef<Record<number, HTMLButtonElement> | null>(),\n tabsListRef: createRef<HTMLDivElement | null>(),\n carouselOnlyListRef: createRef<HTMLDivElement | null>(),\n focusableTabsRef: createRef<HTMLButtonElement[] | null>(),\n tabsRefAsArray: createRef<HTMLButtonElement[] | null>(),\n actualActiveTabRef: createRef<HTMLButtonElement | null>(),\n setInternalActiveTab: noop,\n actualActiveTab: '',\n};\n\nconst defaultCrossRefsContext = {\n lastTabInternalRef: createRef<HTMLButtonElement | null>(),\n firstSubtabInternalRef: createRef<HTMLButtonElement | null>(),\n};\n\nexport const DSTabsContext = createContext<DSTabsInternalsT.DSTabsUseTabsContextT>(defaultContext);\nexport const DSTabsCrossRefContext = createContext<DSTabsInternalsT.DSTabsUseCrossRefContextT>(defaultCrossRefsContext);\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,eAAe,iBAAiB;AACzC,SAAS,sBAAsB,oBAAoB;AAInD,MAAM,OAAO,MAAM;AAAC;AAEpB,MAAM,iBAAiB;AAAA,EACrB,OAAO;AAAA,EACP,SAAS,UAAoD;AAAA,EAC7D,aAAa,UAAiC;AAAA,EAC9C,qBAAqB,UAAiC;AAAA,EACtD,kBAAkB,UAAsC;AAAA,EACxD,gBAAgB,UAAsC;AAAA,EACtD,oBAAoB,UAAoC;AAAA,EACxD,sBAAsB;AAAA,EACtB,iBAAiB;AACnB;AAEA,MAAM,0BAA0B;AAAA,EAC9B,oBAAoB,UAAoC;AAAA,EACxD,wBAAwB,UAAoC;AAC9D;AAEO,MAAM,gBAAgB,cAAsD,cAAc;AAC1F,MAAM,wBAAwB,cAA0D,uBAAuB;",
6
6
  "names": []
7
7
  }
@@ -1,9 +1,9 @@
1
1
  import * as React from "react";
2
2
  import React2, { useRef, useState, useMemo, useEffect } from "react";
3
3
  import { useMemoMergePropsWithDefault } from "@elliemae/ds-props-helpers";
4
- import { tabsDefaultProps } from "../react-desc-prop-types.js";
4
+ import { DSTabsDefaultProps } from "../react-desc-prop-types.js";
5
5
  const useTabs = (props) => {
6
- const propsWithDefaults = useMemoMergePropsWithDefault(props, tabsDefaultProps);
6
+ const propsWithDefaults = useMemoMergePropsWithDefault(props, DSTabsDefaultProps);
7
7
  const { activeTab, children } = propsWithDefaults;
8
8
  const tabsRef = useRef({});
9
9
  const tabsRefAsArray = useRef([]);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/config/useTabs.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useRef, useState, useMemo, useEffect } from 'react';\nimport { useMemoMergePropsWithDefault } from '@elliemae/ds-props-helpers';\nimport { tabsDefaultProps } from '../react-desc-prop-types.js';\nimport type { DSTabsT, DSTabT } from '../react-desc-prop-types.js';\nimport type { DSTabsInternalsT } from '../sharedTypes.js';\n\nexport const useTabs = (props: DSTabsT.Props): DSTabsInternalsT.DSTabsUseTabsContextT => {\n const propsWithDefaults = useMemoMergePropsWithDefault<DSTabsT.InternalProps>(props, tabsDefaultProps);\n\n const { activeTab, children } = propsWithDefaults;\n\n const tabsRef = useRef<Record<number, HTMLButtonElement>>({});\n const tabsRefAsArray = useRef<HTMLButtonElement[]>([]);\n const focusableTabsRef = useRef<HTMLButtonElement[]>([]);\n const carouselOnlyListRef = useRef<HTMLDivElement | null>(null);\n const tabsListRef = useRef<HTMLDivElement | null>(null);\n const actualActiveTabRef = useRef<HTMLButtonElement | null>(null);\n\n // we can't activate disabled tabs, we search for the first activable tab\n const firstActivableTabId = useMemo(() => {\n const childrenArray = React.Children.toArray(children) as React.ReactElement<DSTabT.Props>[];\n const firstActivableTab = childrenArray.filter((tab) => tab.props.disabled !== true)[0];\n\n if (firstActivableTab === null) return '';\n return firstActivableTab.props.tabId ?? '';\n }, [children]);\n\n const [internalActiveTab, setInternalActiveTab] = useState<string>(firstActivableTabId);\n\n const actualActiveTab = useMemo(() => {\n if (activeTab !== undefined) return activeTab;\n return internalActiveTab;\n }, [activeTab, internalActiveTab]);\n\n useEffect(() => {\n actualActiveTabRef.current = focusableTabsRef.current.find((el) => el.dataset.tabId === actualActiveTab) ?? null;\n }, [actualActiveTab]);\n\n useEffect(() => {\n if (activeTab === undefined) {\n const firstAvailableTab = focusableTabsRef.current.find((el) => el.ariaDisabled !== 'true');\n setInternalActiveTab(firstAvailableTab?.dataset.tabId || '');\n }\n }, [activeTab]);\n\n const ctx = useMemo(\n () => ({\n props: propsWithDefaults,\n tabsRef,\n focusableTabsRef,\n tabsListRef,\n tabsRefAsArray,\n setInternalActiveTab,\n actualActiveTab,\n actualActiveTabRef,\n carouselOnlyListRef,\n }),\n [actualActiveTab, propsWithDefaults],\n );\n\n return ctx;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB,OAAOA,UAAS,QAAQ,UAAU,SAAS,iBAAiB;AAC5D,SAAS,oCAAoC;AAC7C,SAAS,wBAAwB;AAI1B,MAAM,UAAU,CAAC,UAAiE;AACvF,QAAM,oBAAoB,6BAAoD,OAAO,gBAAgB;AAErG,QAAM,EAAE,WAAW,SAAS,IAAI;AAEhC,QAAM,UAAU,OAA0C,CAAC,CAAC;AAC5D,QAAM,iBAAiB,OAA4B,CAAC,CAAC;AACrD,QAAM,mBAAmB,OAA4B,CAAC,CAAC;AACvD,QAAM,sBAAsB,OAA8B,IAAI;AAC9D,QAAM,cAAc,OAA8B,IAAI;AACtD,QAAM,qBAAqB,OAAiC,IAAI;AAGhE,QAAM,sBAAsB,QAAQ,MAAM;AACxC,UAAM,gBAAgBA,OAAM,SAAS,QAAQ,QAAQ;AACrD,UAAM,oBAAoB,cAAc,OAAO,CAAC,QAAQ,IAAI,MAAM,aAAa,IAAI,EAAE,CAAC;AAEtF,QAAI,sBAAsB,KAAM,QAAO;AACvC,WAAO,kBAAkB,MAAM,SAAS;AAAA,EAC1C,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAiB,mBAAmB;AAEtF,QAAM,kBAAkB,QAAQ,MAAM;AACpC,QAAI,cAAc,OAAW,QAAO;AACpC,WAAO;AAAA,EACT,GAAG,CAAC,WAAW,iBAAiB,CAAC;AAEjC,YAAU,MAAM;AACd,uBAAmB,UAAU,iBAAiB,QAAQ,KAAK,CAAC,OAAO,GAAG,QAAQ,UAAU,eAAe,KAAK;AAAA,EAC9G,GAAG,CAAC,eAAe,CAAC;AAEpB,YAAU,MAAM;AACd,QAAI,cAAc,QAAW;AAC3B,YAAM,oBAAoB,iBAAiB,QAAQ,KAAK,CAAC,OAAO,GAAG,iBAAiB,MAAM;AAC1F,2BAAqB,mBAAmB,QAAQ,SAAS,EAAE;AAAA,IAC7D;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,MAAM;AAAA,IACV,OAAO;AAAA,MACL,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,iBAAiB,iBAAiB;AAAA,EACrC;AAEA,SAAO;AACT;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useRef, useState, useMemo, useEffect } from 'react';\nimport { useMemoMergePropsWithDefault } from '@elliemae/ds-props-helpers';\nimport { DSTabsDefaultProps } from '../react-desc-prop-types.js';\nimport type { DSTabsT, DSTabT } from '../react-desc-prop-types.js';\nimport type { DSTabsInternalsT } from '../sharedTypes.js';\n\nexport const useTabs = (props: DSTabsT.Props): DSTabsInternalsT.DSTabsUseTabsContextT => {\n const propsWithDefaults = useMemoMergePropsWithDefault<DSTabsT.InternalProps>(props, DSTabsDefaultProps);\n\n const { activeTab, children } = propsWithDefaults;\n\n const tabsRef = useRef<Record<number, HTMLButtonElement>>({});\n const tabsRefAsArray = useRef<HTMLButtonElement[]>([]);\n const focusableTabsRef = useRef<HTMLButtonElement[]>([]);\n const carouselOnlyListRef = useRef<HTMLDivElement | null>(null);\n const tabsListRef = useRef<HTMLDivElement | null>(null);\n const actualActiveTabRef = useRef<HTMLButtonElement | null>(null);\n\n // we can't activate disabled tabs, we search for the first activable tab\n const firstActivableTabId = useMemo(() => {\n const childrenArray = React.Children.toArray(children) as React.ReactElement<DSTabT.Props>[];\n const firstActivableTab = childrenArray.filter((tab) => tab.props.disabled !== true)[0];\n\n if (firstActivableTab === null) return '';\n return firstActivableTab.props.tabId ?? '';\n }, [children]);\n\n const [internalActiveTab, setInternalActiveTab] = useState<string>(firstActivableTabId);\n\n const actualActiveTab = useMemo(() => {\n if (activeTab !== undefined) return activeTab;\n return internalActiveTab;\n }, [activeTab, internalActiveTab]);\n\n useEffect(() => {\n actualActiveTabRef.current = focusableTabsRef.current.find((el) => el.dataset.tabId === actualActiveTab) ?? null;\n }, [actualActiveTab]);\n\n useEffect(() => {\n if (activeTab === undefined) {\n const firstAvailableTab = focusableTabsRef.current.find((el) => el.ariaDisabled !== 'true');\n setInternalActiveTab(firstAvailableTab?.dataset.tabId || '');\n }\n }, [activeTab]);\n\n const ctx = useMemo(\n () => ({\n props: propsWithDefaults,\n tabsRef,\n focusableTabsRef,\n tabsListRef,\n tabsRefAsArray,\n setInternalActiveTab,\n actualActiveTab,\n actualActiveTabRef,\n carouselOnlyListRef,\n }),\n [actualActiveTab, propsWithDefaults],\n );\n\n return ctx;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,OAAOA,UAAS,QAAQ,UAAU,SAAS,iBAAiB;AAC5D,SAAS,oCAAoC;AAC7C,SAAS,0BAA0B;AAI5B,MAAM,UAAU,CAAC,UAAiE;AACvF,QAAM,oBAAoB,6BAAoD,OAAO,kBAAkB;AAEvG,QAAM,EAAE,WAAW,SAAS,IAAI;AAEhC,QAAM,UAAU,OAA0C,CAAC,CAAC;AAC5D,QAAM,iBAAiB,OAA4B,CAAC,CAAC;AACrD,QAAM,mBAAmB,OAA4B,CAAC,CAAC;AACvD,QAAM,sBAAsB,OAA8B,IAAI;AAC9D,QAAM,cAAc,OAA8B,IAAI;AACtD,QAAM,qBAAqB,OAAiC,IAAI;AAGhE,QAAM,sBAAsB,QAAQ,MAAM;AACxC,UAAM,gBAAgBA,OAAM,SAAS,QAAQ,QAAQ;AACrD,UAAM,oBAAoB,cAAc,OAAO,CAAC,QAAQ,IAAI,MAAM,aAAa,IAAI,EAAE,CAAC;AAEtF,QAAI,sBAAsB,KAAM,QAAO;AACvC,WAAO,kBAAkB,MAAM,SAAS;AAAA,EAC1C,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAiB,mBAAmB;AAEtF,QAAM,kBAAkB,QAAQ,MAAM;AACpC,QAAI,cAAc,OAAW,QAAO;AACpC,WAAO;AAAA,EACT,GAAG,CAAC,WAAW,iBAAiB,CAAC;AAEjC,YAAU,MAAM;AACd,uBAAmB,UAAU,iBAAiB,QAAQ,KAAK,CAAC,OAAO,GAAG,QAAQ,UAAU,eAAe,KAAK;AAAA,EAC9G,GAAG,CAAC,eAAe,CAAC;AAEpB,YAAU,MAAM;AACd,QAAI,cAAc,QAAW;AAC3B,YAAM,oBAAoB,iBAAiB,QAAQ,KAAK,CAAC,OAAO,GAAG,iBAAiB,MAAM;AAC1F,2BAAqB,mBAAmB,QAAQ,SAAS,EAAE;AAAA,IAC7D;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,MAAM;AAAA,IACV,OAAO;AAAA,MACL,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,iBAAiB,iBAAiB;AAAA,EACrC;AAEA,SAAO;AACT;",
6
6
  "names": ["React"]
7
7
  }
@@ -0,0 +1,53 @@
1
+ import * as React from "react";
2
+ import { slotObjectToDataTestIds } from "@elliemae/ds-system";
3
+ const DSTabsName = "DSTabs";
4
+ const TAB_TYPES = {
5
+ NORMAL: "normal",
6
+ NORMAL_SMALL: "normal_small",
7
+ SUBTABS: "subtabs"
8
+ };
9
+ const TAB_TYPES_VALUES_AS_ARRAY = Object.values(TAB_TYPES);
10
+ const MOBILE_GRADIENT_WIDTH = 24;
11
+ const DEFAULT_INDICATOR_STYLES = {
12
+ left: 0,
13
+ width: 0
14
+ };
15
+ const GRADIENT_OFFSETS_ACCORDING_TYPE = {
16
+ NORMAL_SMALL: 14,
17
+ NORMAL: 16,
18
+ SUBTABS: 16,
19
+ FIXED_TABS_HEADERS: 0
20
+ };
21
+ const TABS_SLOTS = {
22
+ ROOT: "root",
23
+ TABS_CONTAINER: "container",
24
+ TAB_BUTTON: "tab-button",
25
+ SUBTAB_BUTTON: "subtab-button",
26
+ TAB_PANEL: "tab-panel",
27
+ SUB_TAB_LIST: "subtabs-list",
28
+ TAB_LIST: "tab-list",
29
+ CAROUSEL_BUTTON_RIGHT: "chevron-right",
30
+ CAROUSEL_BUTTON_LEFT: "chevron-left"
31
+ };
32
+ const TABS_DATA_TESTID = {
33
+ ...slotObjectToDataTestIds(DSTabsName, TABS_SLOTS),
34
+ SUB_TAB_LIST: "subtabs-list",
35
+ TAB_LIST: "tab-list",
36
+ CAROUSEL_BUTTON_RIGHT: "chevron-right",
37
+ CAROUSEL_BUTTON_LEFT: "chevron-left",
38
+ CAROUSEL: {
39
+ BUTTON_RIGHT: "chevron-right",
40
+ BUTTON_LEFT: "chevron-left"
41
+ }
42
+ };
43
+ export {
44
+ DEFAULT_INDICATOR_STYLES,
45
+ DSTabsName,
46
+ GRADIENT_OFFSETS_ACCORDING_TYPE,
47
+ MOBILE_GRADIENT_WIDTH,
48
+ TABS_DATA_TESTID,
49
+ TABS_SLOTS,
50
+ TAB_TYPES,
51
+ TAB_TYPES_VALUES_AS_ARRAY
52
+ };
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/constants/index.ts"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { slotObjectToDataTestIds } from '@elliemae/ds-system';\n\nexport const DSTabsName = 'DSTabs';\n\nexport const TAB_TYPES = {\n NORMAL: 'normal' as const,\n NORMAL_SMALL: 'normal_small' as const,\n SUBTABS: 'subtabs' as const,\n};\n\nexport const TAB_TYPES_VALUES_AS_ARRAY = Object.values(TAB_TYPES);\n\nexport const MOBILE_GRADIENT_WIDTH = 24;\n\nexport const DEFAULT_INDICATOR_STYLES = {\n left: 0,\n width: 0,\n};\n\nexport const GRADIENT_OFFSETS_ACCORDING_TYPE = {\n NORMAL_SMALL: 14,\n NORMAL: 16,\n SUBTABS: 16,\n FIXED_TABS_HEADERS: 0,\n};\n\nexport const TABS_SLOTS = {\n ROOT: 'root',\n TABS_CONTAINER: 'container',\n TAB_BUTTON: 'tab-button',\n SUBTAB_BUTTON: 'subtab-button',\n TAB_PANEL: 'tab-panel',\n SUB_TAB_LIST: 'subtabs-list',\n TAB_LIST: 'tab-list',\n CAROUSEL_BUTTON_RIGHT: 'chevron-right',\n CAROUSEL_BUTTON_LEFT: 'chevron-left',\n} as const;\n\nexport const TABS_DATA_TESTID = {\n ...(slotObjectToDataTestIds(DSTabsName, TABS_SLOTS) as Record<keyof typeof TABS_SLOTS, string>),\n SUB_TAB_LIST: 'subtabs-list',\n TAB_LIST: 'tab-list',\n CAROUSEL_BUTTON_RIGHT: 'chevron-right',\n CAROUSEL_BUTTON_LEFT: 'chevron-left',\n CAROUSEL: {\n BUTTON_RIGHT: 'chevron-right',\n BUTTON_LEFT: 'chevron-left',\n },\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,+BAA+B;AAEjC,MAAM,aAAa;AAEnB,MAAM,YAAY;AAAA,EACvB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,SAAS;AACX;AAEO,MAAM,4BAA4B,OAAO,OAAO,SAAS;AAEzD,MAAM,wBAAwB;AAE9B,MAAM,2BAA2B;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AACT;AAEO,MAAM,kCAAkC;AAAA,EAC7C,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,oBAAoB;AACtB;AAEO,MAAM,aAAa;AAAA,EACxB,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,WAAW;AAAA,EACX,cAAc;AAAA,EACd,UAAU;AAAA,EACV,uBAAuB;AAAA,EACvB,sBAAsB;AACxB;AAEO,MAAM,mBAAmB;AAAA,EAC9B,GAAI,wBAAwB,YAAY,UAAU;AAAA,EAClD,cAAc;AAAA,EACd,UAAU;AAAA,EACV,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,UAAU;AAAA,IACR,cAAc;AAAA,IACd,aAAa;AAAA,EACf;AACF;",
6
+ "names": []
7
+ }
@@ -1,10 +1,10 @@
1
1
  import * as React from "react";
2
2
  import { describe } from "@elliemae/ds-props-helpers";
3
- import { tabPropTypes } from "../react-desc-prop-types.js";
3
+ import { DSTabPropTypes } from "../react-desc-prop-types.js";
4
4
  const DSTab = (props) => props.children;
5
5
  DSTab.displayName = "DSTab";
6
6
  const DSTabWithSchema = describe(DSTab);
7
- DSTabWithSchema.propTypes = tabPropTypes;
7
+ DSTabWithSchema.propTypes = DSTabPropTypes;
8
8
  var DSTab_default = DSTab;
9
9
  export {
10
10
  DSTab,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/exported-related/DSTab.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { describe, type ValidationMap } from '@elliemae/ds-props-helpers';\nimport { tabPropTypes } from '../react-desc-prop-types.js';\nimport type { DSTabT } from '../react-desc-prop-types.js';\n\n// const DSTab = (props: DSTabT.Props): JSX.Element => <React.Fragment {...props} />;\nconst DSTab = (props: DSTabT.Props) => props.children;\n\nDSTab.displayName = 'DSTab';\nconst DSTabWithSchema = describe(DSTab);\nDSTabWithSchema.propTypes = tabPropTypes as unknown as ValidationMap<DSTabT.Props>;\n\nexport { DSTab, DSTabWithSchema };\nexport default DSTab;\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,gBAAoC;AAC7C,SAAS,oBAAoB;AAI7B,MAAM,QAAQ,CAAC,UAAwB,MAAM;AAE7C,MAAM,cAAc;AACpB,MAAM,kBAAkB,SAAS,KAAK;AACtC,gBAAgB,YAAY;AAG5B,IAAO,gBAAQ;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { describe, type ValidationMap } from '@elliemae/ds-props-helpers';\nimport { DSTabPropTypes } from '../react-desc-prop-types.js';\nimport type { DSTabT } from '../react-desc-prop-types.js';\n\n// const DSTab = (props: DSTabT.Props): JSX.Element => <React.Fragment {...props} />;\nconst DSTab = (props: DSTabT.Props) => props.children;\n\nDSTab.displayName = 'DSTab';\nconst DSTabWithSchema = describe(DSTab);\nDSTabWithSchema.propTypes = DSTabPropTypes as unknown as ValidationMap<DSTabT.Props>;\n\nexport { DSTab, DSTabWithSchema };\nexport default DSTab;\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,gBAAoC;AAC7C,SAAS,sBAAsB;AAI/B,MAAM,QAAQ,CAAC,UAAwB,MAAM;AAE7C,MAAM,cAAc;AACpB,MAAM,kBAAkB,SAAS,KAAK;AACtC,gBAAgB,YAAY;AAG5B,IAAO,gBAAQ;",
6
6
  "names": []
7
7
  }
package/dist/esm/index.js CHANGED
@@ -1,9 +1,22 @@
1
1
  import * as React from "react";
2
- export * from "./exported-related/DSTab.js";
3
- export * from "./DSTabs.js";
4
- import { TabTypes } from "./utils/constants.js";
5
- export * from "./DSTabsDatatestid.js";
2
+ import { DSTabs, DSTabsWithSchema } from "./DSTabs.js";
3
+ import {
4
+ TABS_SLOTS,
5
+ TABS_DATA_TESTID,
6
+ TABS_DATA_TESTID as TABS_DATA_TESTID2,
7
+ TAB_TYPES,
8
+ TAB_TYPES as TAB_TYPES2
9
+ } from "./constants/index.js";
10
+ import { DSTab, DSTabWithSchema } from "./exported-related/DSTab.js";
6
11
  export {
7
- TabTypes
12
+ DSTab,
13
+ DSTabWithSchema,
14
+ DSTabs,
15
+ TABS_DATA_TESTID2 as DSTabsDatatestid,
16
+ DSTabsWithSchema,
17
+ TABS_DATA_TESTID,
18
+ TABS_SLOTS,
19
+ TAB_TYPES,
20
+ TAB_TYPES2 as TabTypes
8
21
  };
9
22
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/index.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './exported-related/DSTab.js';\nexport * from './DSTabs.js';\nexport { TabTypes } from './utils/constants.js';\nexport * from './DSTabsDatatestid.js';\nexport type { DSTabT, DSTabsT } from './react-desc-prop-types.js';\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB,cAAc;AACd,cAAc;AACd,SAAS,gBAAgB;AACzB,cAAc;",
6
- "names": []
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export { DSTabs, DSTabsWithSchema } from './DSTabs.js';\nexport type { DSTabT, DSTabsT } from './react-desc-prop-types.js';\nexport {\n TABS_SLOTS,\n TABS_DATA_TESTID,\n TABS_DATA_TESTID as DSTabsDatatestid,\n TAB_TYPES,\n TAB_TYPES as TabTypes,\n} from './constants/index.js';\nexport { DSTab, DSTabWithSchema } from './exported-related/DSTab.js';\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,QAAQ,wBAAwB;AAEzC;AAAA,EACE;AAAA,EACA;AAAA,EACoB,oBAApBA;AAAA,EACA;AAAA,EACa,aAAbC;AAAA,OACK;AACP,SAAS,OAAO,uBAAuB;",
6
+ "names": ["TABS_DATA_TESTID", "TAB_TYPES"]
7
7
  }
@@ -7,7 +7,7 @@ import { ChevronRight, ChevronLeft } from "@elliemae/ds-icons";
7
7
  import { StyledCarouselBtn, StyledCarouselButtonWrapper, StyledCarouselWrapper, StyledChildrenWrap } from "./styles.js";
8
8
  import { useCarousel } from "./useCarousel.js";
9
9
  import { DSTabsContext } from "../../DSTabsCTX.js";
10
- import { DSTabsDatatestid } from "../../DSTabsDatatestid.js";
10
+ import { TABS_DATA_TESTID } from "../../constants/index.js";
11
11
  const Carousel = ({ children, updateIndicatorStyle }) => {
12
12
  const { showChevrons, leftButtonOnClick, rightButtonOnClick, handleOnClick, handleOnScroll } = useCarousel({
13
13
  updateIndicatorStyle
@@ -23,7 +23,7 @@ const Carousel = ({ children, updateIndicatorStyle }) => {
23
23
  size: "s",
24
24
  onClick: leftButtonOnClick,
25
25
  tabIndex: -1,
26
- "data-testid": DSTabsDatatestid.CAROUSEL.BUTTON_LEFT,
26
+ "data-testid": TABS_DATA_TESTID.CAROUSEL_BUTTON_LEFT,
27
27
  buttonType: BUTTON_TYPES.ICON,
28
28
  "aria-label": "Scroll Left",
29
29
  children: /* @__PURE__ */ jsx(ChevronLeft, { size: DSIconSizes.S })
@@ -35,7 +35,7 @@ const Carousel = ({ children, updateIndicatorStyle }) => {
35
35
  size: "s",
36
36
  onClick: rightButtonOnClick,
37
37
  tabIndex: -1,
38
- "data-testid": DSTabsDatatestid.CAROUSEL.BUTTON_RIGHT,
38
+ "data-testid": TABS_DATA_TESTID.CAROUSEL_BUTTON_RIGHT,
39
39
  buttonType: BUTTON_TYPES.ICON,
40
40
  "aria-label": "Scroll Right",
41
41
  children: /* @__PURE__ */ jsx(ChevronRight, { size: DSIconSizes.S })
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/carousel/Carousel.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useContext } from 'react';\nimport { DSIconSizes } from '@elliemae/ds-icon';\nimport { BUTTON_TYPES } from '@elliemae/ds-button-v2';\nimport { ChevronRight, ChevronLeft } from '@elliemae/ds-icons';\nimport { StyledCarouselBtn, StyledCarouselButtonWrapper, StyledCarouselWrapper, StyledChildrenWrap } from './styles.js';\nimport { useCarousel } from './useCarousel.js';\nimport { DSTabsContext } from '../../DSTabsCTX.js';\nimport { DSTabsDatatestid } from '../../DSTabsDatatestid.js';\n\ninterface CarouselPropsT {\n children: React.ReactNode[];\n updateIndicatorStyle?: () => void;\n}\n\nexport const Carousel = ({ children, updateIndicatorStyle }: CarouselPropsT): JSX.Element => {\n const { showChevrons, leftButtonOnClick, rightButtonOnClick, handleOnClick, handleOnScroll } = useCarousel({\n updateIndicatorStyle,\n });\n\n const {\n carouselOnlyListRef,\n props: { type },\n } = useContext(DSTabsContext);\n\n return (\n <StyledCarouselWrapper>\n {showChevrons.left && (\n <StyledCarouselButtonWrapper tabType={type}>\n <StyledCarouselBtn\n size=\"s\"\n onClick={leftButtonOnClick}\n tabIndex={-1}\n data-testid={DSTabsDatatestid.CAROUSEL.BUTTON_LEFT}\n buttonType={BUTTON_TYPES.ICON}\n aria-label=\"Scroll Left\"\n >\n <ChevronLeft size={DSIconSizes.S} />\n </StyledCarouselBtn>\n </StyledCarouselButtonWrapper>\n )}\n {showChevrons.right && (\n <StyledCarouselButtonWrapper tabType={type} right={showChevrons.right}>\n <StyledCarouselBtn\n size=\"s\"\n onClick={rightButtonOnClick}\n tabIndex={-1}\n data-testid={DSTabsDatatestid.CAROUSEL.BUTTON_RIGHT}\n buttonType={BUTTON_TYPES.ICON}\n aria-label=\"Scroll Right\"\n >\n <ChevronRight size={DSIconSizes.S} />\n </StyledCarouselBtn>\n </StyledCarouselButtonWrapper>\n )}\n <StyledChildrenWrap\n role=\"tablist\"\n innerRef={carouselOnlyListRef}\n onClick={handleOnClick}\n onScroll={handleOnScroll}\n >\n {children}\n </StyledChildrenWrap>\n </StyledCarouselWrapper>\n );\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACyBnB,SAWQ,KAXR;AAzBJ,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,cAAc,mBAAmB;AAC1C,SAAS,mBAAmB,6BAA6B,uBAAuB,0BAA0B;AAC1G,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,wBAAwB;AAO1B,MAAM,WAAW,CAAC,EAAE,UAAU,qBAAqB,MAAmC;AAC3F,QAAM,EAAE,cAAc,mBAAmB,oBAAoB,eAAe,eAAe,IAAI,YAAY;AAAA,IACzG;AAAA,EACF,CAAC;AAED,QAAM;AAAA,IACJ;AAAA,IACA,OAAO,EAAE,KAAK;AAAA,EAChB,IAAI,WAAW,aAAa;AAE5B,SACE,qBAAC,yBACE;AAAA,iBAAa,QACZ,oBAAC,+BAA4B,SAAS,MACpC;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS;AAAA,QACT,UAAU;AAAA,QACV,eAAa,iBAAiB,SAAS;AAAA,QACvC,YAAY,aAAa;AAAA,QACzB,cAAW;AAAA,QAEX,8BAAC,eAAY,MAAM,YAAY,GAAG;AAAA;AAAA,IACpC,GACF;AAAA,IAED,aAAa,SACZ,oBAAC,+BAA4B,SAAS,MAAM,OAAO,aAAa,OAC9D;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS;AAAA,QACT,UAAU;AAAA,QACV,eAAa,iBAAiB,SAAS;AAAA,QACvC,YAAY,aAAa;AAAA,QACzB,cAAW;AAAA,QAEX,8BAAC,gBAAa,MAAM,YAAY,GAAG;AAAA;AAAA,IACrC,GACF;AAAA,IAEF;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QAET;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useContext } from 'react';\nimport { DSIconSizes } from '@elliemae/ds-icon';\nimport { BUTTON_TYPES } from '@elliemae/ds-button-v2';\nimport { ChevronRight, ChevronLeft } from '@elliemae/ds-icons';\nimport { StyledCarouselBtn, StyledCarouselButtonWrapper, StyledCarouselWrapper, StyledChildrenWrap } from './styles.js';\nimport { useCarousel } from './useCarousel.js';\nimport { DSTabsContext } from '../../DSTabsCTX.js';\nimport { TABS_DATA_TESTID } from '../../constants/index.js';\n\ninterface CarouselPropsT {\n children: React.ReactNode;\n updateIndicatorStyle?: () => void;\n}\n\nexport const Carousel = ({ children, updateIndicatorStyle }: CarouselPropsT): JSX.Element => {\n const { showChevrons, leftButtonOnClick, rightButtonOnClick, handleOnClick, handleOnScroll } = useCarousel({\n updateIndicatorStyle,\n });\n\n const {\n carouselOnlyListRef,\n props: { type },\n } = useContext(DSTabsContext);\n\n return (\n <StyledCarouselWrapper>\n {showChevrons.left && (\n <StyledCarouselButtonWrapper tabType={type}>\n <StyledCarouselBtn\n size=\"s\"\n onClick={leftButtonOnClick}\n tabIndex={-1}\n data-testid={TABS_DATA_TESTID.CAROUSEL_BUTTON_LEFT}\n buttonType={BUTTON_TYPES.ICON}\n aria-label=\"Scroll Left\"\n >\n <ChevronLeft size={DSIconSizes.S} />\n </StyledCarouselBtn>\n </StyledCarouselButtonWrapper>\n )}\n {showChevrons.right && (\n <StyledCarouselButtonWrapper tabType={type} right={showChevrons.right}>\n <StyledCarouselBtn\n size=\"s\"\n onClick={rightButtonOnClick}\n tabIndex={-1}\n data-testid={TABS_DATA_TESTID.CAROUSEL_BUTTON_RIGHT}\n buttonType={BUTTON_TYPES.ICON}\n aria-label=\"Scroll Right\"\n >\n <ChevronRight size={DSIconSizes.S} />\n </StyledCarouselBtn>\n </StyledCarouselButtonWrapper>\n )}\n <StyledChildrenWrap\n role=\"tablist\"\n innerRef={carouselOnlyListRef}\n onClick={handleOnClick}\n onScroll={handleOnScroll}\n >\n {children}\n </StyledChildrenWrap>\n </StyledCarouselWrapper>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACyBnB,SAWQ,KAXR;AAzBJ,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,cAAc,mBAAmB;AAC1C,SAAS,mBAAmB,6BAA6B,uBAAuB,0BAA0B;AAC1G,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,wBAAwB;AAO1B,MAAM,WAAW,CAAC,EAAE,UAAU,qBAAqB,MAAmC;AAC3F,QAAM,EAAE,cAAc,mBAAmB,oBAAoB,eAAe,eAAe,IAAI,YAAY;AAAA,IACzG;AAAA,EACF,CAAC;AAED,QAAM;AAAA,IACJ;AAAA,IACA,OAAO,EAAE,KAAK;AAAA,EAChB,IAAI,WAAW,aAAa;AAE5B,SACE,qBAAC,yBACE;AAAA,iBAAa,QACZ,oBAAC,+BAA4B,SAAS,MACpC;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS;AAAA,QACT,UAAU;AAAA,QACV,eAAa,iBAAiB;AAAA,QAC9B,YAAY,aAAa;AAAA,QACzB,cAAW;AAAA,QAEX,8BAAC,eAAY,MAAM,YAAY,GAAG;AAAA;AAAA,IACpC,GACF;AAAA,IAED,aAAa,SACZ,oBAAC,+BAA4B,SAAS,MAAM,OAAO,aAAa,OAC9D;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS;AAAA,QACT,UAAU;AAAA,QACV,eAAa,iBAAiB;AAAA,QAC9B,YAAY,aAAa;AAAA,QACzB,cAAW;AAAA,QAEX,8BAAC,gBAAa,MAAM,YAAY,GAAG;AAAA;AAAA,IACrC,GACF;AAAA,IAEF;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QAET;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { styled } from "@elliemae/ds-system";
3
3
  import { DSButtonV2 } from "@elliemae/ds-button-v2";
4
- import { TabTypes } from "../../utils/constants.js";
4
+ import { TAB_TYPES } from "../../constants/index.js";
5
5
  const StyledCarouselBtn = styled(DSButtonV2)`
6
6
  margin: 0;
7
7
  min-width: ${({ theme }) => theme.space.xs};
@@ -34,10 +34,10 @@ const StyledCarouselButtonWrapper = styled.div`
34
34
  z-index: 200;
35
35
  ${({ right }) => right ? "right: 0;" : `left: 0;`}
36
36
  width: 16px;
37
- height: ${({ tabType }) => tabType === TabTypes.NORMAL ? "32px" : "22px"};
38
- padding-top: ${({ tabType }) => tabType === TabTypes.NORMAL ? "5px" : "0px"};
37
+ height: ${({ tabType }) => tabType === TAB_TYPES.NORMAL ? "32px" : "22px"};
38
+ padding-top: ${({ tabType }) => tabType === TAB_TYPES.NORMAL ? "5px" : "0px"};
39
39
  background: white;
40
- ${({ theme, tabType }) => tabType === TabTypes.NORMAL ? `
40
+ ${({ theme, tabType }) => tabType === TAB_TYPES.NORMAL ? `
41
41
  background: linear-gradient(to bottom, white 0px, white 30px, ${theme.colors.neutral[400]} 30px, ${theme.colors.neutral[400]} 31px, white 31px , white 32px );
42
42
  ` : ``};
43
43
  `;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/carousel/styles.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { styled } from '@elliemae/ds-system';\nimport { DSButtonV2 } from '@elliemae/ds-button-v2';\nimport { TabTypes } from '../../utils/constants.js';\nimport type { DSTabsInternalsT } from '../../sharedTypes.js';\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"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAQlB,MAAM,oBAAoB,OAAO,UAAU;AAAA;AAAA,eAEnC,CAAC,EAAE,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,WACjC,CAAC,EAAE,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAS5B,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,MAAM,GAAG,CAAC;AAAA;AAAA;AAI3C,MAAM,wBAAwB,OAAO;AAAA;AAAA;AAAA;AAAA;AAMrC,MAAM,qBAAqB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOlC,MAAM,8BAA8B,OAAO;AAAA;AAAA;AAAA;AAAA,IAI9C,CAAC,EAAE,MAAM,MAAO,QAAQ,cAAc,UAAW;AAAA;AAAA,YAEzC,CAAC,EAAE,QAAQ,MAAO,YAAY,SAAS,SAAS,SAAS,MAAO;AAAA,iBAC3D,CAAC,EAAE,QAAQ,MAAO,YAAY,SAAS,SAAS,QAAQ,KAAM;AAAA;AAAA,IAE3E,CAAC,EAAE,OAAO,QAAQ,MAClB,YAAY,SAAS,SACjB;AAAA,sEAC8D,MAAM,OAAO,QAAQ,GAAG,CAAC,UAAU,MAAM,OAAO,QAAQ,GAAG,CAAC;AAAA,KAE1H,EAAE;AAAA;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { styled } from '@elliemae/ds-system';\nimport { DSButtonV2 } from '@elliemae/ds-button-v2';\n\nimport type { DSTabsInternalsT } from '../../sharedTypes.js';\nimport { TAB_TYPES } from '../../constants/index.js';\n\ninterface StyledCarouselButtonWrapperPropsT {\n right?: boolean;\n tabType: DSTabsInternalsT.TabTypesT;\n}\n\nexport const StyledCarouselBtn: typeof DSButtonV2 = 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 === TAB_TYPES.NORMAL ? '32px' : '22px')};\n padding-top: ${({ tabType }) => (tabType === TAB_TYPES.NORMAL ? '5px' : '0px')};\n background: white;\n ${({ theme, tabType }) =>\n tabType === TAB_TYPES.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"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAG3B,SAAS,iBAAiB;AAOnB,MAAM,oBAAuC,OAAO,UAAU;AAAA;AAAA,eAEtD,CAAC,EAAE,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,WACjC,CAAC,EAAE,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAS5B,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,MAAM,GAAG,CAAC;AAAA;AAAA;AAI3C,MAAM,wBAAwB,OAAO;AAAA;AAAA;AAAA;AAAA;AAMrC,MAAM,qBAAqB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOlC,MAAM,8BAA8B,OAAO;AAAA;AAAA;AAAA;AAAA,IAI9C,CAAC,EAAE,MAAM,MAAO,QAAQ,cAAc,UAAW;AAAA;AAAA,YAEzC,CAAC,EAAE,QAAQ,MAAO,YAAY,UAAU,SAAS,SAAS,MAAO;AAAA,iBAC5D,CAAC,EAAE,QAAQ,MAAO,YAAY,UAAU,SAAS,QAAQ,KAAM;AAAA;AAAA,IAE5E,CAAC,EAAE,OAAO,QAAQ,MAClB,YAAY,UAAU,SAClB;AAAA,sEAC8D,MAAM,OAAO,QAAQ,GAAG,CAAC,UAAU,MAAM,OAAO,QAAQ,GAAG,CAAC;AAAA,KAE1H,EAAE;AAAA;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/carousel/useCarouselCallbacks.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\nimport { useCallback, useContext } from 'react';\nimport type { MouseEvent } from 'react';\nimport { isElementVisibleCarousel } from '../../utils/helpers.js';\nimport { DSTabsContext } from '../../DSTabsCTX.js';\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"],
5
- "mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,aAAa,kBAAkB;AAExC,SAAS,gCAAgC;AACzC,SAAS,qBAAqB;AAcvB,MAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AACF,MAAmE;AACjE,QAAM,EAAE,kBAAkB,oBAAoB,IAAI,WAAW,aAAa;AAE1E,QAAM,qBAAqB,YAAY,MAAM;AAC3C,QAAI,oBAAoB,SAAS;AAC/B,0BAAoB,QAAQ,cAAc,sBAAsB;AAAA,IAClE;AAAA,EACF,GAAG,CAAC,uBAAuB,mBAAmB,CAAC;AAE/C,QAAM,oBAAoB,YAAY,MAAM;AAC1C,QAAI,oBAAoB,SAAS;AAC/B,0BAAoB,QAAQ,cAAc,sBAAsB;AAAA,IAClE;AAAA,EACF,GAAG,CAAC,uBAAuB,mBAAmB,CAAC;AAE/C,QAAM,iBAAiB,YAAY,MAAM;AACvC,mBAAe;AACf,QAAI,qBAAsB,sBAAqB;AAAA,EACjD,GAAG,CAAC,gBAAgB,oBAAoB,CAAC;AAEzC,QAAM,gBAAgB;AAAA,IACpB,CAAC,EAAE,OAAO,MAAkB;AAC1B,UAAI,iBAAiB,WAAY,OAA6B,aAAa,MAAM,MAAM,OAAO;AAC5F,cAAM,UAAU,oBAAoB;AACpC,cAAM,YAAY;AAClB,cAAM,sBAAsB,UAAU,sBAAsB;AAC5D,cAAM,oBAAoB,SAAS,sBAAsB;AACzD,cAAM,iBAAiB,UAAU,QAAQ;AACzC,cAAM,gBAAgB,iBAAiB,QAAQ,OAAO,SAAS;AAC/D,cAAM,cAAc;AAEpB,cAAM,kBAAkB,mBAAmB,OAAO,mBAAmB;AAErE,YACE,CAAC,yBAAyB,WAAW,SAAS,eAAe,KAC7D,qBACA,oBAAoB,SACpB;AACA,gBAAM,iBAAiB,kBAAkB;AACzC,gBAAM,gBAAgB,iBAAiB;AACvC,gBAAM,wBAAwB,oBAAoB,OAAO,kBAAkB;AAC3E,gBAAM,sBAAsB,wBAAwB;AACpD,gBAAM,QAAQ,UAAU,cAAc;AAEtC,cAAI,sBAAsB,eAAe;AACvC,gCAAoB,QAAQ,cAAc,QAAQ,sBAAsB;AAAA,UAC1E,OAAO;AACL,gCAAoB,QAAQ,cAAc,sBAAsB;AAAA,UAClE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB,mBAAmB;AAAA,EACxC;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\nimport { useCallback, useContext } from 'react';\nimport type { MouseEvent } from 'react';\nimport { isElementVisibleCarousel } from '../../utils/helpers.js';\nimport { DSTabsContext } from '../../DSTabsCTX.js';\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 /** [PUI-15772] - Tabs Pre Refactor\n * Scroll handler for carousel. It:\n * 1. Recalculates chevron visibility\n * 2. Updates indicator style\n * 3. May cause rerenders on every scroll event\n */\n const handleOnScroll = useCallback(() => {\n recalcChevrons();\n if (updateIndicatorStyle) updateIndicatorStyle();\n }, [recalcChevrons, updateIndicatorStyle]);\n\n /** [PUI-15772] - Tabs Pre Refactor\n * Click handler for carousel tabs. It:\n * 1. Checks if clicked element is a tab\n * 2. Calculates scroll position to center the tab\n * 3. Updates scroll position with magic number adjustments\n * 4. May cause rerenders due to scroll position updates\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"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,aAAa,kBAAkB;AAExC,SAAS,gCAAgC;AACzC,SAAS,qBAAqB;AAcvB,MAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AACF,MAAmE;AACjE,QAAM,EAAE,kBAAkB,oBAAoB,IAAI,WAAW,aAAa;AAE1E,QAAM,qBAAqB,YAAY,MAAM;AAC3C,QAAI,oBAAoB,SAAS;AAC/B,0BAAoB,QAAQ,cAAc,sBAAsB;AAAA,IAClE;AAAA,EACF,GAAG,CAAC,uBAAuB,mBAAmB,CAAC;AAE/C,QAAM,oBAAoB,YAAY,MAAM;AAC1C,QAAI,oBAAoB,SAAS;AAC/B,0BAAoB,QAAQ,cAAc,sBAAsB;AAAA,IAClE;AAAA,EACF,GAAG,CAAC,uBAAuB,mBAAmB,CAAC;AAQ/C,QAAM,iBAAiB,YAAY,MAAM;AACvC,mBAAe;AACf,QAAI,qBAAsB,sBAAqB;AAAA,EACjD,GAAG,CAAC,gBAAgB,oBAAoB,CAAC;AASzC,QAAM,gBAAgB;AAAA,IACpB,CAAC,EAAE,OAAO,MAAkB;AAC1B,UAAI,iBAAiB,WAAY,OAA6B,aAAa,MAAM,MAAM,OAAO;AAC5F,cAAM,UAAU,oBAAoB;AACpC,cAAM,YAAY;AAClB,cAAM,sBAAsB,UAAU,sBAAsB;AAC5D,cAAM,oBAAoB,SAAS,sBAAsB;AACzD,cAAM,iBAAiB,UAAU,QAAQ;AACzC,cAAM,gBAAgB,iBAAiB,QAAQ,OAAO,SAAS;AAC/D,cAAM,cAAc;AAEpB,cAAM,kBAAkB,mBAAmB,OAAO,mBAAmB;AAErE,YACE,CAAC,yBAAyB,WAAW,SAAS,eAAe,KAC7D,qBACA,oBAAoB,SACpB;AACA,gBAAM,iBAAiB,kBAAkB;AACzC,gBAAM,gBAAgB,iBAAiB;AACvC,gBAAM,wBAAwB,oBAAoB,OAAO,kBAAkB;AAC3E,gBAAM,sBAAsB,wBAAwB;AACpD,gBAAM,QAAQ,UAAU,cAAc;AAEtC,cAAI,sBAAsB,eAAe;AACvC,gCAAoB,QAAQ,cAAc,QAAQ,sBAAsB;AAAA,UAC1E,OAAO;AACL,gCAAoB,QAAQ,cAAc,sBAAsB;AAAA,UAClE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB,mBAAmB;AAAA,EACxC;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }