@elliemae/ds-tabs 1.60.0 → 2.0.0-alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/cjs/DSTabs.js +29 -150
  2. package/cjs/DSTabsCTX.js +30 -0
  3. package/cjs/DSTabsDatatestid.js +18 -0
  4. package/cjs/DSTabsTypes.js +2 -0
  5. package/cjs/config/useCrossRef.js +17 -0
  6. package/cjs/config/useTabs.js +51 -0
  7. package/cjs/defaultProps.js +27 -0
  8. package/cjs/exportsRelated/DSTab.js +32 -0
  9. package/cjs/index.js +5 -35
  10. package/cjs/parts/carousel/Carousel.js +71 -0
  11. package/cjs/parts/carousel/styles.js +60 -0
  12. package/cjs/parts/carousel/useCarousel.js +78 -0
  13. package/cjs/parts/carousel/useCarouselCallbacks.js +72 -0
  14. package/cjs/parts/tabBar/TabBar.js +160 -0
  15. package/cjs/parts/tabBar/styles.js +199 -0
  16. package/cjs/parts/tabBar/useTabBar.js +98 -0
  17. package/cjs/parts/tabsContent/TabsContent.js +49 -0
  18. package/cjs/parts/tabsContent/styles.js +15 -0
  19. package/cjs/parts/tabsPanel/TabsPanels.js +77 -0
  20. package/cjs/parts/tabsPanel/styles.js +25 -0
  21. package/cjs/propTypes.js +33 -0
  22. package/cjs/utils/constants.js +29 -0
  23. package/cjs/utils/helpers.js +47 -0
  24. package/cjs/utils/hooks/useKeyboardNavigation.js +61 -0
  25. package/cjs/utils/hooks/useTabsCallbacks.js +59 -0
  26. package/esm/DSTabs.js +31 -152
  27. package/esm/DSTabsCTX.js +25 -0
  28. package/esm/DSTabsDatatestid.js +14 -0
  29. package/esm/DSTabsTypes.js +1 -0
  30. package/esm/config/useCrossRef.js +13 -0
  31. package/esm/config/useTabs.js +47 -0
  32. package/esm/defaultProps.js +23 -0
  33. package/esm/exportsRelated/DSTab.js +21 -0
  34. package/esm/index.js +4 -33
  35. package/esm/parts/carousel/Carousel.js +63 -0
  36. package/esm/parts/carousel/styles.js +49 -0
  37. package/esm/parts/carousel/useCarousel.js +70 -0
  38. package/esm/parts/carousel/useCarouselCallbacks.js +68 -0
  39. package/esm/parts/tabBar/TabBar.js +151 -0
  40. package/esm/parts/tabBar/styles.js +185 -0
  41. package/esm/parts/tabBar/useTabBar.js +90 -0
  42. package/esm/parts/tabsContent/TabsContent.js +40 -0
  43. package/esm/parts/tabsContent/styles.js +7 -0
  44. package/esm/parts/tabsPanel/TabsPanels.js +67 -0
  45. package/esm/parts/tabsPanel/styles.js +17 -0
  46. package/esm/propTypes.js +28 -0
  47. package/esm/utils/constants.js +21 -0
  48. package/esm/utils/helpers.js +37 -0
  49. package/esm/utils/hooks/useKeyboardNavigation.js +57 -0
  50. package/esm/utils/hooks/useTabsCallbacks.js +55 -0
  51. package/package.json +134 -18
  52. package/types/DSTabs.d.ts +14 -0
  53. package/types/DSTabsCTX.d.ts +4 -0
  54. package/types/DSTabsDatatestid.d.ts +12 -0
  55. package/types/DSTabsTypes.d.ts +202 -0
  56. package/types/config/useCrossRef.d.ts +2 -0
  57. package/types/config/useTabs.d.ts +2 -0
  58. package/types/defaultProps.d.ts +2 -0
  59. package/types/exportsRelated/DSTab.d.ts +14 -0
  60. package/types/index.d.ts +5 -0
  61. package/types/parts/carousel/Carousel.d.ts +3 -0
  62. package/types/parts/carousel/styles.d.ts +9 -0
  63. package/types/parts/carousel/useCarousel.d.ts +2 -0
  64. package/types/parts/carousel/useCarouselCallbacks.d.ts +2 -0
  65. package/types/parts/tabBar/TabBar.d.ts +2 -0
  66. package/types/parts/tabBar/styles.d.ts +7 -0
  67. package/types/parts/tabBar/useTabBar.d.ts +2 -0
  68. package/types/parts/tabsContent/TabsContent.d.ts +2 -0
  69. package/types/parts/tabsContent/styles.d.ts +1 -0
  70. package/types/parts/tabsPanel/TabsPanels.d.ts +2 -0
  71. package/types/parts/tabsPanel/styles.d.ts +2 -0
  72. package/types/propTypes.d.ts +54 -0
  73. package/types/tests/DSTabs.callbacks.test.d.ts +1 -0
  74. package/types/tests/DSTabs.func.test.d.ts +1 -0
  75. package/types/tests/DSTabs.keyboard.test.d.ts +1 -0
  76. package/types/tests/DSTabs.test.d.ts +1 -0
  77. package/types/utils/constants.d.ts +19 -0
  78. package/types/utils/helpers.d.ts +8 -0
  79. package/types/utils/hooks/useKeyboardNavigation.d.ts +2 -0
  80. package/types/utils/hooks/useTabsCallbacks.d.ts +2 -0
  81. package/Carousel/package.json +0 -10
  82. package/DSTab/package.json +0 -10
  83. package/DSTabs/package.json +0 -10
  84. package/PanelContainer/package.json +0 -10
  85. package/SubTabBar/package.json +0 -10
  86. package/TabBar/package.json +0 -10
  87. package/TabTypes/package.json +0 -10
  88. package/TabsImpl/package.json +0 -10
  89. package/TabsPanels/package.json +0 -10
  90. package/cjs/Carousel.js +0 -219
  91. package/cjs/Carousel.js.map +0 -1
  92. package/cjs/DSTab.js +0 -50
  93. package/cjs/DSTab.js.map +0 -1
  94. package/cjs/DSTabs.js.map +0 -1
  95. package/cjs/PanelContainer.js +0 -45
  96. package/cjs/PanelContainer.js.map +0 -1
  97. package/cjs/SubTabBar.js +0 -81
  98. package/cjs/SubTabBar.js.map +0 -1
  99. package/cjs/TabBar.js +0 -480
  100. package/cjs/TabBar.js.map +0 -1
  101. package/cjs/TabTypes.js +0 -17
  102. package/cjs/TabTypes.js.map +0 -1
  103. package/cjs/TabsImpl.js +0 -173
  104. package/cjs/TabsImpl.js.map +0 -1
  105. package/cjs/TabsPanels.js +0 -116
  106. package/cjs/TabsPanels.js.map +0 -1
  107. package/cjs/index.js.map +0 -1
  108. package/cjs/useResize.js +0 -25
  109. package/cjs/useResize.js.map +0 -1
  110. package/esm/Carousel.js +0 -209
  111. package/esm/Carousel.js.map +0 -1
  112. package/esm/DSTab.js +0 -40
  113. package/esm/DSTab.js.map +0 -1
  114. package/esm/DSTabs.js.map +0 -1
  115. package/esm/PanelContainer.js +0 -37
  116. package/esm/PanelContainer.js.map +0 -1
  117. package/esm/SubTabBar.js +0 -74
  118. package/esm/SubTabBar.js.map +0 -1
  119. package/esm/TabBar.js +0 -464
  120. package/esm/TabBar.js.map +0 -1
  121. package/esm/TabTypes.js +0 -12
  122. package/esm/TabTypes.js.map +0 -1
  123. package/esm/TabsImpl.js +0 -163
  124. package/esm/TabsImpl.js.map +0 -1
  125. package/esm/TabsPanels.js +0 -103
  126. package/esm/TabsPanels.js.map +0 -1
  127. package/esm/index.js.map +0 -1
  128. package/esm/useResize.js +0 -21
  129. package/esm/useResize.js.map +0 -1
  130. package/useResize/package.json +0 -10
package/esm/TabBar.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabBar.js","sources":["../../src/TabBar.tsx"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { debounce } from 'lodash';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport RequiredMark from '@elliemae/ds-form/RequiredMark';\nimport memoizeOne from 'memoize-one';\nimport { ResizeObserver } from 'resize-observer';\nimport styled from 'styled-components';\nimport Carousel from './Carousel';\n\nconst blockName = 'tabs-tab-bar';\nconst gradientWidth = 24;\n\nconst StyledTabWrapper = styled.div`\n display: flex;\n flex: 1;\n flex-wrap: nowrap;\n ${({ flexibleTabsHeaders }) => (flexibleTabsHeaders ? '' : 'overflow-x: hidden')};\n`;\n\nconst StyledTabList = aggregatedClasses('div')(\n blockName,\n 'list',\n ({ withCarousel, flexibleTabsHeaders, fixedTabsHeaders, isDSMobile, withLeftGradients, withRightGradients }) => ({\n carousel: withCarousel,\n 'flexible-table-headers': isDSMobile && flexibleTabsHeaders,\n 'fixed-table-headers': isDSMobile && fixedTabsHeaders,\n 'left-gradients': isDSMobile && flexibleTabsHeaders && withLeftGradients,\n 'right-gradients': isDSMobile && flexibleTabsHeaders && withRightGradients,\n }),\n {\n propsToRemoveFromFinalElement: [\n 'withCarousel',\n 'flexibleTabsHeaders',\n 'fixedTabsHeaders',\n 'withLeftGradients',\n 'withRightGradients',\n 'isDSMobile',\n ],\n },\n);\nconst TabContainer = aggregatedClasses('button', {\n role: 'tab',\n})(blockName, 'tab', ({ isActive, showSeparator, disabled }) => ({\n active: isActive,\n separator: showSeparator,\n disabled,\n}));\nconst SelectionIndicator = aggregatedClasses('div')(blockName, 'selection-indicator');\n\nclass TabBar extends Component {\n constructor(props) {\n super(props);\n this.tabListRef = React.createRef();\n this.resizeObserver = new ResizeObserver(() => this.setIndicatorStyle());\n this.state = {\n indicatorStyle: null,\n withLeftGradients: false,\n withRightGradients: false,\n };\n this.setIndicatorStyle = this.setIndicatorStyle.bind(this);\n this.getIndicatorStyles = this.getIndicatorStyles.bind(this);\n this.handleGradients = this.handleGradients.bind(this);\n this.handleTabsHeadersHorizontalScroll = this.handleTabsHeadersHorizontalScroll.bind(this);\n this.tabsRef = {};\n }\n\n componentDidMount() {\n const { showSelectionIndicator } = this.props;\n this.resizeObserver.observe(this.tabListRef.current);\n if (showSelectionIndicator) {\n this.setIndicatorStyle();\n }\n\n window.addEventListener('resize', this.handleGradients);\n window.addEventListener('orientationchange', this.handleGradients);\n this.handleGradients();\n }\n\n componentDidUpdate(prevProps) {\n const { activeTab, showSelectionIndicator } = this.props;\n\n if (showSelectionIndicator && prevProps.activeTab !== activeTab) {\n this.setIndicatorStyle(activeTab);\n }\n }\n\n componentWillUnmount() {\n this.resizeObserver.unobserve(this.tabListRef.current);\n window.removeEventListener('resize', this.handleGradients);\n window.removeEventListener('orientationchange', this.handleGradients);\n }\n\n handleGradients() {\n const { scrollLeft, scrollWidth, clientWidth } = this.tabListRef.current;\n\n const withLeftGradients = this.shouldHaveLeftGradient(scrollLeft, gradientWidth);\n\n const withRightGradients = this.shouldHaveRightGradient(scrollLeft, gradientWidth, clientWidth, scrollWidth);\n this.setState({ withLeftGradients, withRightGradients });\n }\n\n shouldHaveLeftGradient(scrollLeft, gWidth) {\n return Math.abs(scrollLeft) > gWidth;\n }\n\n // eslint-disable-next-line max-params\n shouldHaveRightGradient(scrollLeft, gWidth, clientWidth, scrollWidth) {\n return Math.abs(scrollLeft) <= scrollWidth - (clientWidth + gWidth);\n }\n\n setIndicatorStyle() {\n const { activeTab } = this.props;\n setTimeout(\n () =>\n this.setState({\n indicatorStyle: this.getIndicatorStyles(activeTab),\n }),\n 100,\n );\n }\n\n getActiveTabElement(activeTab) {\n const tabListEl = this.tabListRef.current;\n\n const tabSelector = `[data-tab-id=\"${activeTab}\"]`;\n\n return tabListEl && tabListEl.querySelector(tabSelector);\n }\n\n isElementVisible(el, holder) {\n const { left, right, width } = el.getBoundingClientRect();\n const holderRect = holder.getBoundingClientRect();\n\n return left <= holderRect.left ? holderRect.left - left <= width : right - holderRect.right <= width;\n }\n\n getVisibleDimensions(node, referenceNode) {\n const pos = node.getBoundingClientRect();\n const referencePos = referenceNode.getBoundingClientRect();\n\n return {\n width: Math.min(\n node.clientWidth,\n referencePos.left + referenceNode.clientWidth - pos.left,\n node.clientWidth - (referencePos.left - pos.left),\n ),\n height: Math.min(\n node.clientHeight,\n referencePos.top + referenceNode.clientHeight - pos.top,\n node.clientHeight - (referencePos.top - pos.top),\n ),\n };\n }\n\n getIndicatorStyles(activeTab) {\n const tabListEl = this.tabListRef.current;\n const { withCarousel } = this.props;\n const activeTabEl = this.getActiveTabElement(activeTab);\n\n if (!activeTabEl || !this.isElementVisible(activeTabEl, tabListEl)) return null;\n\n const { clientHeight, clientWidth, offsetTop, offsetLeft } = activeTabEl;\n const { left } = activeTabEl.getBoundingClientRect();\n const leftOff = withCarousel ? Math.max(0, left - tabListEl.getBoundingClientRect().left) : offsetLeft;\n const width = withCarousel ? this.getVisibleDimensions(activeTabEl, tabListEl).width + 2 : clientWidth + 2;\n return {\n height: clientHeight,\n left: `${Math.floor(leftOff)}px`, // using left and top for ie compatibility\n top: `${Math.floor(offsetTop)}px`,\n width,\n };\n }\n\n handleTabClick = (tabId, e) => {\n const { tabListRef, props } = this;\n const { onTabClick, flexibleTabsHeaders, isDSMobile } = props;\n if (isDSMobile && flexibleTabsHeaders) {\n const tabListDomEl = tabListRef.current;\n const el = e.target;\n const { offsetLeft } = el;\n const { width: elWidth } = el.getBoundingClientRect();\n const { width: listWidth } = tabListDomEl.getBoundingClientRect();\n const extraSideSpace = listWidth - elWidth;\n const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;\n const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;\n tabListDomEl.scrollTo({\n top: 0,\n left: centeredLeftOffset,\n behavior: 'smooth',\n });\n }\n e.preventDefault();\n onTabClick(tabId);\n };\n\n handleKeyPress = (tabId, e, index) => {\n const {\n tabs,\n handleDownArrow,\n handleUpArrow,\n // onTabClick,\n } = this.props;\n if (e.keyCode === 39) {\n const nextTab = tabs[index + 1];\n if (!nextTab && handleDownArrow) handleDownArrow(e);\n if (!nextTab) return;\n // const { props } = nextTab\n // onTabClick(props.tabId)\n this.tabsRef[index + 1]?.focus();\n }\n if (e.keyCode === 37) {\n const nextTab = tabs[index - 1];\n if (!nextTab && handleUpArrow) handleUpArrow(e);\n if (!nextTab) return;\n // const { props } = nextTab\n // onTabClick(props.tabId)\n this.tabsRef[index - 1]?.focus();\n }\n\n if (e.keyCode === 40 && handleDownArrow) {\n handleDownArrow(e);\n }\n\n if (e.keyCode === 38 && handleUpArrow) {\n handleUpArrow(e);\n }\n };\n\n handleTabsHeadersHorizontalScroll = debounce(() => {\n const { tabListRef, props } = this;\n const { flexibleTabsHeaders, isDSMobile } = props;\n if (isDSMobile && flexibleTabsHeaders) {\n const tabListDomEl = tabListRef.current;\n const { scrollLeft, scrollWidth, clientWidth } = tabListDomEl;\n\n const withLeftGradients = this.shouldHaveLeftGradient(scrollLeft, gradientWidth);\n\n const withRightGradients = this.shouldHaveRightGradient(scrollLeft, gradientWidth, clientWidth, scrollWidth);\n\n this.setState({\n withLeftGradients,\n withRightGradients,\n });\n }\n }, 50);\n\n renderTabs = memoizeOne((activeTab, tabs) => {\n const { showSeparator } = this.props;\n return React.Children.map(\n tabs,\n (tab, index) => {\n const { tabId, title, style, required, disabled } = tab.props;\n const isActive = activeTab === tabId;\n return [\n <TabContainer\n key={tabId}\n // eslint-disable-next-line no-return-assign\n ref={(t) => {\n this.tabsRef[index] = t;\n if (index === 0 && this.props.firstSubtabRef) {\n this.props.firstSubtabRef.current = t;\n }\n if (index === tabs.length - 1 && this.props.lastTabRef) {\n this.props.lastTabRef.current = t;\n }\n }}\n aria-controls={tabId}\n aria-selected={isActive}\n aria-disabled={!!disabled}\n classProps={{ isActive, showSeparator, disabled }}\n data-tab-id={tabId}\n id={`${tabId}-label`}\n onClick={(e) => {\n if (!disabled) this.handleTabClick(tabId, e, index);\n }}\n onKeyDown={(e) => {\n if (!disabled) this.handleKeyPress(tabId, e, index);\n }}\n style={style}\n tabIndex={0}\n >\n {title}\n <RequiredMark required={required} />\n </TabContainer>,\n ];\n },\n null,\n );\n });\n\n render() {\n const { id, tabs, activeTab, renderCustomTabBar, withCarousel, isDSMobile, flexibleTabsHeaders, fixedTabsHeaders } =\n this.props;\n const { indicatorStyle, withLeftGradients, withRightGradients } = this.state;\n\n if (renderCustomTabBar) {\n return renderCustomTabBar({\n innerRef: this.tabListRef,\n withCarousel,\n tabsComponents: this.renderTabs(activeTab, tabs),\n });\n }\n\n const shouldUseCarousel = !isDSMobile && withCarousel;\n\n return (\n <>\n <StyledTabList\n withCarousel={withCarousel}\n aria-label={id}\n innerRef={this.tabListRef}\n role=\"tablist\"\n data-testid=\"tab-list\"\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n withLeftGradients={withLeftGradients}\n withRightGradients={withRightGradients}\n fixedTabsHeaders={fixedTabsHeaders}\n onScroll={this.handleTabsHeadersHorizontalScroll}\n style={{ width: '100%' }}\n >\n <StyledTabWrapper\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n >\n {shouldUseCarousel ? (\n <Carousel onScroll={this.setIndicatorStyle}>{this.renderTabs(activeTab, tabs)}</Carousel>\n ) : null}\n {!shouldUseCarousel ? this.renderTabs(activeTab, tabs) : null}\n <SelectionIndicator style={indicatorStyle} />\n </StyledTabWrapper>\n </StyledTabList>\n </>\n );\n }\n}\n\nTabBar.defaultProps = {\n showSelectionIndicator: true,\n showSeparator: false,\n isDSMobile: false,\n};\n\nTabBar.propTypes = {\n /** Separator between tabs */\n showSeparator: PropTypes.bool,\n /** Blue border under selected tab */\n showSelectionIndicator: PropTypes.bool,\n /** Tab list id */\n id: PropTypes.string,\n /** Array of tabs */\n tabs: PropTypes.arrayOf(PropTypes.element).isRequired,\n /** Renders a custom tabbar */\n renderCustomTabBar: PropTypes.func,\n /** tabId of active tab */\n activeTab: PropTypes.string,\n /** on tab click callback */\n onTabClick: PropTypes.func,\n /** carousel behavior */\n withCarousel: PropTypes.bool,\n handleDownArrow: PropTypes.func,\n handleUpArrow: PropTypes.func,\n firstSubtabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.any })]),\n lastTabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.any })]),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool,\n /** DSMobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool,\n /** DSMobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool,\n /** Whether we are in mobile mode or not */\n};\n\nexport default TabBar;\n"],"names":["blockName","gradientWidth","StyledTabWrapper","styled","div","flexibleTabsHeaders","StyledTabList","aggregatedClasses","withCarousel","fixedTabsHeaders","isDSMobile","withLeftGradients","withRightGradients","carousel","propsToRemoveFromFinalElement","TabContainer","role","isActive","showSeparator","disabled","active","separator","SelectionIndicator","TabBar","props","handleTabClick","tabId","e","tabListRef","onTabClick","tabListDomEl","current","el","target","offsetLeft","getBoundingClientRect","elWidth","width","listWidth","extraSideSpace","leftOffsetToCenter","centeredLeftOffset","scrollTo","top","left","behavior","preventDefault","handleKeyPress","index","tabs","handleDownArrow","handleUpArrow","keyCode","nextTab","tabsRef","focus","handleTabsHeadersHorizontalScroll","debounce","scrollLeft","scrollWidth","clientWidth","shouldHaveLeftGradient","shouldHaveRightGradient","setState","renderTabs","memoizeOne","activeTab","React","Children","map","tab","title","style","required","t","firstSubtabRef","length","lastTabRef","createRef","resizeObserver","ResizeObserver","setIndicatorStyle","state","indicatorStyle","bind","getIndicatorStyles","handleGradients","showSelectionIndicator","observe","window","addEventListener","prevProps","unobserve","removeEventListener","gWidth","Math","abs","setTimeout","tabListEl","tabSelector","querySelector","holder","right","holderRect","node","referenceNode","pos","referencePos","min","height","clientHeight","activeTabEl","getActiveTabElement","isElementVisible","offsetTop","leftOff","max","getVisibleDimensions","floor","id","renderCustomTabBar","innerRef","tabsComponents","shouldUseCarousel","Component","defaultProps","propTypes","PropTypes","bool","string","arrayOf","element","isRequired","func","oneOfType","shape","any"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAaA,IAAMA,SAAS,GAAG,cAAlB;AACA,IAAMC,aAAa,GAAG,EAAtB;AAEA,IAAMC,gBAAgB,gBAAGC,MAAM,CAACC,GAAV;AAAA;AAAA,mDAIlB;AAAA,MAAGC,mBAAH,QAAGA,mBAAH;AAAA,SAA8BA,mBAAmB,GAAG,EAAH,GAAQ,oBAAzD;AAAA,CAJkB,CAAtB;AAOA,IAAMC,aAAa,GAAGC,iBAAiB,CAAC,KAAD,CAAjB,CACpBP,SADoB,EAEpB,MAFoB,EAGpB;AAAA,MAAGQ,YAAH,SAAGA,YAAH;AAAA,MAAiBH,mBAAjB,SAAiBA,mBAAjB;AAAA,MAAsCI,gBAAtC,SAAsCA,gBAAtC;AAAA,MAAwDC,UAAxD,SAAwDA,UAAxD;AAAA,MAAoEC,iBAApE,SAAoEA,iBAApE;AAAA,MAAuFC,kBAAvF,SAAuFA,kBAAvF;AAAA,SAAiH;AAC/GC,IAAAA,QAAQ,EAAEL,YADqG;AAE/G,8BAA0BE,UAAU,IAAIL,mBAFuE;AAG/G,2BAAuBK,UAAU,IAAID,gBAH0E;AAI/G,sBAAkBC,UAAU,IAAIL,mBAAd,IAAqCM,iBAJwD;AAK/G,uBAAmBD,UAAU,IAAIL,mBAAd,IAAqCO;AALuD,GAAjH;AAAA,CAHoB,EAUpB;AACEE,EAAAA,6BAA6B,EAAE,CAC7B,cAD6B,EAE7B,qBAF6B,EAG7B,kBAH6B,EAI7B,mBAJ6B,EAK7B,oBAL6B,EAM7B,YAN6B;AADjC,CAVoB,CAAtB;AAqBA,IAAMC,YAAY,GAAGR,iBAAiB,CAAC,QAAD,EAAW;AAC/CS,EAAAA,IAAI,EAAE;AADyC,CAAX,CAAjB,CAElBhB,SAFkB,EAEP,KAFO,EAEA;AAAA,MAAGiB,QAAH,SAAGA,QAAH;AAAA,MAAaC,aAAb,SAAaA,aAAb;AAAA,MAA4BC,QAA5B,SAA4BA,QAA5B;AAAA,SAA4C;AAC/DC,IAAAA,MAAM,EAAEH,QADuD;AAE/DI,IAAAA,SAAS,EAAEH,aAFoD;AAG/DC,IAAAA,QAAQ,EAARA;AAH+D,GAA5C;AAAA,CAFA,CAArB;AAOA,IAAMG,kBAAkB,GAAGf,iBAAiB,CAAC,KAAD,CAAjB,CAAyBP,SAAzB,EAAoC,qBAApC,CAA3B;;IAEMuB;;;;;AACJ,kBAAYC,MAAZ,EAAmB;AAAA;;AAAA;;AACjB,8BAAMA,MAAN;;AADiB,UA2HnBC,cA3HmB,GA2HF,UAACC,KAAD,EAAQC,CAAR,EAAc;AAC7B;AAAA,UAAQC,UAAR,yBAAQA,UAAR;AAAA,UAAoBJ,KAApB,yBAAoBA,KAApB;;AACA,UAAQK,UAAR,GAAwDL,KAAxD,CAAQK,UAAR;AAAA,UAAoBxB,mBAApB,GAAwDmB,KAAxD,CAAoBnB,mBAApB;AAAA,UAAyCK,UAAzC,GAAwDc,KAAxD,CAAyCd,UAAzC;;AACA,UAAIA,UAAU,IAAIL,mBAAlB,EAAuC;AACrC,YAAMyB,YAAY,GAAGF,UAAU,CAACG,OAAhC;AACA,YAAMC,EAAE,GAAGL,CAAC,CAACM,MAAb;AACA,YAAQC,UAAR,GAAuBF,EAAvB,CAAQE,UAAR;;AACA,oCAA2BF,EAAE,CAACG,qBAAH,EAA3B;AAAA,YAAeC,OAAf,yBAAQC,KAAR;;AACA,oCAA6BP,YAAY,CAACK,qBAAb,EAA7B;AAAA,YAAeG,SAAf,yBAAQD,KAAR;;AACA,YAAME,cAAc,GAAGD,SAAS,GAAGF,OAAnC;AACA,YAAMI,kBAAkB,GAAGD,cAAc,GAAG,CAAjB,GAAqBA,cAAc,GAAG,CAAtC,GAA0C,CAArE;AACA,YAAME,kBAAkB,GAAGP,UAAU,GAAGM,kBAAb,GAAkCN,UAAU,GAAGM,kBAA/C,GAAoE,CAA/F;AACAV,QAAAA,YAAY,CAACY,QAAb,CAAsB;AACpBC,UAAAA,GAAG,EAAE,CADe;AAEpBC,UAAAA,IAAI,EAAEH,kBAFc;AAGpBI,UAAAA,QAAQ,EAAE;AAHU,SAAtB;AAKD;;AACDlB,MAAAA,CAAC,CAACmB,cAAF;AACAjB,MAAAA,UAAU,CAACH,KAAD,CAAV;AACD,KA/IkB;;AAAA,UAiJnBqB,cAjJmB,GAiJF,UAACrB,KAAD,EAAQC,CAAR,EAAWqB,KAAX,EAAqB;AACpC,wBAKI,MAAKxB,KALT;AAAA,UACEyB,IADF,eACEA,IADF;AAAA,UAEEC,eAFF,eAEEA,eAFF;AAAA,UAGEC,aAHF,eAGEA,aAHF;;AAMA,UAAIxB,CAAC,CAACyB,OAAF,KAAc,EAAlB,EAAsB;AAAA;;AACpB,YAAMC,OAAO,GAAGJ,IAAI,CAACD,KAAK,GAAG,CAAT,CAApB;AACA,YAAI,CAACK,OAAD,IAAYH,eAAhB,EAAiCA,eAAe,CAACvB,CAAD,CAAf;AACjC,YAAI,CAAC0B,OAAL,EAAc,OAHM;AAKpB;;AACA,+BAAKC,OAAL,CAAaN,KAAK,GAAG,CAArB,iEAAyBO,KAAzB;AACD;;AACD,UAAI5B,CAAC,CAACyB,OAAF,KAAc,EAAlB,EAAsB;AAAA;;AACpB,YAAMC,QAAO,GAAGJ,IAAI,CAACD,KAAK,GAAG,CAAT,CAApB;AACA,YAAI,CAACK,QAAD,IAAYF,aAAhB,EAA+BA,aAAa,CAACxB,CAAD,CAAb;AAC/B,YAAI,CAAC0B,QAAL,EAAc,OAHM;AAKpB;;AACA,gCAAKC,OAAL,CAAaN,KAAK,GAAG,CAArB,mEAAyBO,KAAzB;AACD;;AAED,UAAI5B,CAAC,CAACyB,OAAF,KAAc,EAAd,IAAoBF,eAAxB,EAAyC;AACvCA,QAAAA,eAAe,CAACvB,CAAD,CAAf;AACD;;AAED,UAAIA,CAAC,CAACyB,OAAF,KAAc,EAAd,IAAoBD,aAAxB,EAAuC;AACrCA,QAAAA,aAAa,CAACxB,CAAD,CAAb;AACD;AACF,KAhLkB;;AAAA,UAkLnB6B,iCAlLmB,GAkLiBC,QAAQ,CAAC,YAAM;AACjD;AAAA,UAAQ7B,UAAR,0BAAQA,UAAR;AAAA,UAAoBJ,KAApB,0BAAoBA,KAApB;;AACA,UAAQnB,mBAAR,GAA4CmB,KAA5C,CAAQnB,mBAAR;AAAA,UAA6BK,UAA7B,GAA4Cc,KAA5C,CAA6Bd,UAA7B;;AACA,UAAIA,UAAU,IAAIL,mBAAlB,EAAuC;AACrC,YAAMyB,YAAY,GAAGF,UAAU,CAACG,OAAhC;AACA,YAAQ2B,UAAR,GAAiD5B,YAAjD,CAAQ4B,UAAR;AAAA,YAAoBC,WAApB,GAAiD7B,YAAjD,CAAoB6B,WAApB;AAAA,YAAiCC,WAAjC,GAAiD9B,YAAjD,CAAiC8B,WAAjC;;AAEA,YAAMjD,iBAAiB,GAAG,MAAKkD,sBAAL,CAA4BH,UAA5B,EAAwCzD,aAAxC,CAA1B;;AAEA,YAAMW,kBAAkB,GAAG,MAAKkD,uBAAL,CAA6BJ,UAA7B,EAAyCzD,aAAzC,EAAwD2D,WAAxD,EAAqED,WAArE,CAA3B;;AAEA,cAAKI,QAAL,CAAc;AACZpD,UAAAA,iBAAiB,EAAjBA,iBADY;AAEZC,UAAAA,kBAAkB,EAAlBA;AAFY,SAAd;AAID;AACF,KAhB2C,EAgBzC,EAhByC,CAlLzB;AAAA,UAoMnBoD,UApMmB,GAoMNC,UAAU,CAAC,UAACC,SAAD,EAAYjB,IAAZ,EAAqB;AAC3C,UAAQ/B,aAAR,GAA0B,MAAKM,KAA/B,CAAQN,aAAR;AACA,aAAOiD,KAAK,CAACC,QAAN,CAAeC,GAAf,CACLpB,IADK,EAEL,UAACqB,GAAD,EAAMtB,KAAN,EAAgB;AACd,yBAAoDsB,GAAG,CAAC9C,KAAxD;AAAA,YAAQE,KAAR,cAAQA,KAAR;AAAA,YAAe6C,KAAf,cAAeA,KAAf;AAAA,YAAsBC,KAAtB,cAAsBA,KAAtB;AAAA,YAA6BC,QAA7B,cAA6BA,QAA7B;AAAA,YAAuCtD,QAAvC,cAAuCA,QAAvC;AACA,YAAMF,QAAQ,GAAGiD,SAAS,KAAKxC,KAA/B;AACA,eAAO,cACL,oBAAC,YAAD;AACE,UAAA,GAAG,EAAEA,KADP;AAAA;AAGE,UAAA,GAAG,EAAE,aAACgD,CAAD,EAAO;AACV,kBAAKpB,OAAL,CAAaN,KAAb,IAAsB0B,CAAtB;;AACA,gBAAI1B,KAAK,KAAK,CAAV,IAAe,MAAKxB,KAAL,CAAWmD,cAA9B,EAA8C;AAC5C,oBAAKnD,KAAL,CAAWmD,cAAX,CAA0B5C,OAA1B,GAAoC2C,CAApC;AACD;;AACD,gBAAI1B,KAAK,KAAKC,IAAI,CAAC2B,MAAL,GAAc,CAAxB,IAA6B,MAAKpD,KAAL,CAAWqD,UAA5C,EAAwD;AACtD,oBAAKrD,KAAL,CAAWqD,UAAX,CAAsB9C,OAAtB,GAAgC2C,CAAhC;AACD;AACF,WAXH;AAYE,2BAAehD,KAZjB;AAaE,2BAAeT,QAbjB;AAcE,2BAAe,CAAC,CAACE,QAdnB;AAeE,UAAA,UAAU,EAAE;AAAEF,YAAAA,QAAQ,EAARA,QAAF;AAAYC,YAAAA,aAAa,EAAbA,aAAZ;AAA2BC,YAAAA,QAAQ,EAARA;AAA3B,WAfd;AAgBE,yBAAaO,KAhBf;AAiBE,UAAA,EAAE,YAAKA,KAAL,WAjBJ;AAkBE,UAAA,OAAO,EAAE,iBAACC,CAAD,EAAO;AACd,gBAAI,CAACR,QAAL,EAAe,MAAKM,cAAL,CAAoBC,KAApB,EAA2BC,CAA3B,EAA8BqB,KAA9B;AAChB,WApBH;AAqBE,UAAA,SAAS,EAAE,mBAACrB,CAAD,EAAO;AAChB,gBAAI,CAACR,QAAL,EAAe,MAAK4B,cAAL,CAAoBrB,KAApB,EAA2BC,CAA3B,EAA8BqB,KAA9B;AAChB,WAvBH;AAwBE,UAAA,KAAK,EAAEwB,KAxBT;AAyBE,UAAA,QAAQ,EAAE;AAzBZ,WA2BGD,KA3BH,eA4BE,oBAAC,YAAD;AAAc,UAAA,QAAQ,EAAEE;AAAxB,UA5BF,CADK,CAAP;AAgCD,OArCI,EAsCL,IAtCK,CAAP;AAwCD,KA1CsB,CApMJ;AAEjB,UAAK7C,UAAL,gBAAkBuC,KAAK,CAACW,SAAN,EAAlB;AACA,UAAKC,cAAL,GAAsB,IAAIC,cAAJ,CAAmB;AAAA,aAAM,MAAKC,iBAAL,EAAN;AAAA,KAAnB,CAAtB;AACA,UAAKC,KAAL,GAAa;AACXC,MAAAA,cAAc,EAAE,IADL;AAEXxE,MAAAA,iBAAiB,EAAE,KAFR;AAGXC,MAAAA,kBAAkB,EAAE;AAHT,KAAb;AAKA,UAAKqE,iBAAL,GAAyB,MAAKA,iBAAL,CAAuBG,IAAvB,+BAAzB;AACA,UAAKC,kBAAL,GAA0B,MAAKA,kBAAL,CAAwBD,IAAxB,+BAA1B;AACA,UAAKE,eAAL,GAAuB,MAAKA,eAAL,CAAqBF,IAArB,+BAAvB;AACA,UAAK5B,iCAAL,GAAyC,MAAKA,iCAAL,CAAuC4B,IAAvC,+BAAzC;AACA,UAAK9B,OAAL,GAAe,EAAf;AAbiB;AAAA;AAclB;;;;WAED,6BAAoB;AAClB,UAAQiC,sBAAR,GAAmC,KAAK/D,KAAxC,CAAQ+D,sBAAR;AACA,WAAKR,cAAL,CAAoBS,OAApB,CAA4B,KAAK5D,UAAL,CAAgBG,OAA5C;;AACA,UAAIwD,sBAAJ,EAA4B;AAC1B,aAAKN,iBAAL;AACD;;AAEDQ,MAAAA,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkC,KAAKJ,eAAvC;AACAG,MAAAA,MAAM,CAACC,gBAAP,CAAwB,mBAAxB,EAA6C,KAAKJ,eAAlD;AACA,WAAKA,eAAL;AACD;;;WAED,4BAAmBK,SAAnB,EAA8B;AAC5B,yBAA8C,KAAKnE,KAAnD;AAAA,UAAQ0C,SAAR,gBAAQA,SAAR;AAAA,UAAmBqB,sBAAnB,gBAAmBA,sBAAnB;;AAEA,UAAIA,sBAAsB,IAAII,SAAS,CAACzB,SAAV,KAAwBA,SAAtD,EAAiE;AAC/D,aAAKe,iBAAL,CAAuBf,SAAvB;AACD;AACF;;;WAED,gCAAuB;AACrB,WAAKa,cAAL,CAAoBa,SAApB,CAA8B,KAAKhE,UAAL,CAAgBG,OAA9C;AACA0D,MAAAA,MAAM,CAACI,mBAAP,CAA2B,QAA3B,EAAqC,KAAKP,eAA1C;AACAG,MAAAA,MAAM,CAACI,mBAAP,CAA2B,mBAA3B,EAAgD,KAAKP,eAArD;AACD;;;WAED,2BAAkB;AAChB,kCAAiD,KAAK1D,UAAL,CAAgBG,OAAjE;AAAA,UAAQ2B,UAAR,yBAAQA,UAAR;AAAA,UAAoBC,WAApB,yBAAoBA,WAApB;AAAA,UAAiCC,WAAjC,yBAAiCA,WAAjC;AAEA,UAAMjD,iBAAiB,GAAG,KAAKkD,sBAAL,CAA4BH,UAA5B,EAAwCzD,aAAxC,CAA1B;AAEA,UAAMW,kBAAkB,GAAG,KAAKkD,uBAAL,CAA6BJ,UAA7B,EAAyCzD,aAAzC,EAAwD2D,WAAxD,EAAqED,WAArE,CAA3B;AACA,WAAKI,QAAL,CAAc;AAAEpD,QAAAA,iBAAiB,EAAjBA,iBAAF;AAAqBC,QAAAA,kBAAkB,EAAlBA;AAArB,OAAd;AACD;;;WAED,gCAAuB8C,UAAvB,EAAmCoC,MAAnC,EAA2C;AACzC,aAAOC,IAAI,CAACC,GAAL,CAAStC,UAAT,IAAuBoC,MAA9B;AACD;;;;WAGD,iCAAwBpC,UAAxB,EAAoCoC,MAApC,EAA4ClC,WAA5C,EAAyDD,WAAzD,EAAsE;AACpE,aAAOoC,IAAI,CAACC,GAAL,CAAStC,UAAT,KAAwBC,WAAW,IAAIC,WAAW,GAAGkC,MAAlB,CAA1C;AACD;;;WAED,6BAAoB;AAAA;;AAClB,UAAQ5B,SAAR,GAAsB,KAAK1C,KAA3B,CAAQ0C,SAAR;AACA+B,MAAAA,UAAU,CACR;AAAA,eACE,MAAI,CAAClC,QAAL,CAAc;AACZoB,UAAAA,cAAc,EAAE,MAAI,CAACE,kBAAL,CAAwBnB,SAAxB;AADJ,SAAd,CADF;AAAA,OADQ,EAKR,GALQ,CAAV;AAOD;;;WAED,6BAAoBA,SAApB,EAA+B;AAC7B,UAAMgC,SAAS,GAAG,KAAKtE,UAAL,CAAgBG,OAAlC;AAEA,UAAMoE,WAAW,4BAAoBjC,SAApB,QAAjB;AAEA,aAAOgC,SAAS,IAAIA,SAAS,CAACE,aAAV,CAAwBD,WAAxB,CAApB;AACD;;;WAED,0BAAiBnE,EAAjB,EAAqBqE,MAArB,EAA6B;AAC3B,mCAA+BrE,EAAE,CAACG,qBAAH,EAA/B;AAAA,UAAQS,IAAR,0BAAQA,IAAR;AAAA,UAAc0D,KAAd,0BAAcA,KAAd;AAAA,UAAqBjE,KAArB,0BAAqBA,KAArB;;AACA,UAAMkE,UAAU,GAAGF,MAAM,CAAClE,qBAAP,EAAnB;AAEA,aAAOS,IAAI,IAAI2D,UAAU,CAAC3D,IAAnB,GAA0B2D,UAAU,CAAC3D,IAAX,GAAkBA,IAAlB,IAA0BP,KAApD,GAA4DiE,KAAK,GAAGC,UAAU,CAACD,KAAnB,IAA4BjE,KAA/F;AACD;;;WAED,8BAAqBmE,IAArB,EAA2BC,aAA3B,EAA0C;AACxC,UAAMC,GAAG,GAAGF,IAAI,CAACrE,qBAAL,EAAZ;AACA,UAAMwE,YAAY,GAAGF,aAAa,CAACtE,qBAAd,EAArB;AAEA,aAAO;AACLE,QAAAA,KAAK,EAAE0D,IAAI,CAACa,GAAL,CACLJ,IAAI,CAAC5C,WADA,EAEL+C,YAAY,CAAC/D,IAAb,GAAoB6D,aAAa,CAAC7C,WAAlC,GAAgD8C,GAAG,CAAC9D,IAF/C,EAGL4D,IAAI,CAAC5C,WAAL,IAAoB+C,YAAY,CAAC/D,IAAb,GAAoB8D,GAAG,CAAC9D,IAA5C,CAHK,CADF;AAMLiE,QAAAA,MAAM,EAAEd,IAAI,CAACa,GAAL,CACNJ,IAAI,CAACM,YADC,EAENH,YAAY,CAAChE,GAAb,GAAmB8D,aAAa,CAACK,YAAjC,GAAgDJ,GAAG,CAAC/D,GAF9C,EAGN6D,IAAI,CAACM,YAAL,IAAqBH,YAAY,CAAChE,GAAb,GAAmB+D,GAAG,CAAC/D,GAA5C,CAHM;AANH,OAAP;AAYD;;;WAED,4BAAmBuB,SAAnB,EAA8B;AAC5B,UAAMgC,SAAS,GAAG,KAAKtE,UAAL,CAAgBG,OAAlC;AACA,UAAQvB,YAAR,GAAyB,KAAKgB,KAA9B,CAAQhB,YAAR;AACA,UAAMuG,WAAW,GAAG,KAAKC,mBAAL,CAAyB9C,SAAzB,CAApB;AAEA,UAAI,CAAC6C,WAAD,IAAgB,CAAC,KAAKE,gBAAL,CAAsBF,WAAtB,EAAmCb,SAAnC,CAArB,EAAoE,OAAO,IAAP;AAEpE,UAAQY,YAAR,GAA6DC,WAA7D,CAAQD,YAAR;AAAA,UAAsBlD,WAAtB,GAA6DmD,WAA7D,CAAsBnD,WAAtB;AAAA,UAAmCsD,SAAnC,GAA6DH,WAA7D,CAAmCG,SAAnC;AAAA,UAA8ChF,UAA9C,GAA6D6E,WAA7D,CAA8C7E,UAA9C;;AACA,kCAAiB6E,WAAW,CAAC5E,qBAAZ,EAAjB;AAAA,UAAQS,IAAR,yBAAQA,IAAR;;AACA,UAAMuE,OAAO,GAAG3G,YAAY,GAAGuF,IAAI,CAACqB,GAAL,CAAS,CAAT,EAAYxE,IAAI,GAAGsD,SAAS,CAAC/D,qBAAV,GAAkCS,IAArD,CAAH,GAAgEV,UAA5F;AACA,UAAMG,KAAK,GAAG7B,YAAY,GAAG,KAAK6G,oBAAL,CAA0BN,WAA1B,EAAuCb,SAAvC,EAAkD7D,KAAlD,GAA0D,CAA7D,GAAiEuB,WAAW,GAAG,CAAzG;AACA,aAAO;AACLiD,QAAAA,MAAM,EAAEC,YADH;AAELlE,QAAAA,IAAI,YAAKmD,IAAI,CAACuB,KAAL,CAAWH,OAAX,CAAL,OAFC;AAE6B;AAClCxE,QAAAA,GAAG,YAAKoD,IAAI,CAACuB,KAAL,CAAWJ,SAAX,CAAL,OAHE;AAIL7E,QAAAA,KAAK,EAALA;AAJK,OAAP;AAMD;;;WAuHD,kBAAS;AACP,yBACE,KAAKb,KADP;AAAA,UAAQ+F,EAAR,gBAAQA,EAAR;AAAA,UAAYtE,IAAZ,gBAAYA,IAAZ;AAAA,UAAkBiB,SAAlB,gBAAkBA,SAAlB;AAAA,UAA6BsD,kBAA7B,gBAA6BA,kBAA7B;AAAA,UAAiDhH,YAAjD,gBAAiDA,YAAjD;AAAA,UAA+DE,UAA/D,gBAA+DA,UAA/D;AAAA,UAA2EL,mBAA3E,gBAA2EA,mBAA3E;AAAA,UAAgGI,gBAAhG,gBAAgGA,gBAAhG;AAEA,wBAAkE,KAAKyE,KAAvE;AAAA,UAAQC,cAAR,eAAQA,cAAR;AAAA,UAAwBxE,iBAAxB,eAAwBA,iBAAxB;AAAA,UAA2CC,kBAA3C,eAA2CA,kBAA3C;;AAEA,UAAI4G,kBAAJ,EAAwB;AACtB,eAAOA,kBAAkB,CAAC;AACxBC,UAAAA,QAAQ,EAAE,KAAK7F,UADS;AAExBpB,UAAAA,YAAY,EAAZA,YAFwB;AAGxBkH,UAAAA,cAAc,EAAE,KAAK1D,UAAL,CAAgBE,SAAhB,EAA2BjB,IAA3B;AAHQ,SAAD,CAAzB;AAKD;;AAED,UAAM0E,iBAAiB,GAAG,CAACjH,UAAD,IAAeF,YAAzC;AAEA,0BACE,uDACE,oBAAC,aAAD;AACE,QAAA,YAAY,EAAEA,YADhB;AAEE,sBAAY+G,EAFd;AAGE,QAAA,QAAQ,EAAE,KAAK3F,UAHjB;AAIE,QAAA,IAAI,EAAC,SAJP;AAKE,uBAAY,UALd;AAME,QAAA,UAAU,EAAElB,UANd;AAOE,QAAA,mBAAmB,EAAEL,mBAPvB;AAQE,QAAA,iBAAiB,EAAEM,iBARrB;AASE,QAAA,kBAAkB,EAAEC,kBATtB;AAUE,QAAA,gBAAgB,EAAEH,gBAVpB;AAWE,QAAA,QAAQ,EAAE,KAAK+C,iCAXjB;AAYE,QAAA,KAAK,EAAE;AAAEnB,UAAAA,KAAK,EAAE;AAAT;AAZT,sBAcE,oBAAC,gBAAD;AACE,QAAA,UAAU,EAAE3B,UADd;AAEE,QAAA,mBAAmB,EAAEL,mBAFvB;AAGE,QAAA,gBAAgB,EAAEI;AAHpB,SAKGkH,iBAAiB,gBAChB,oBAAC,QAAD;AAAU,QAAA,QAAQ,EAAE,KAAK1C;AAAzB,SAA6C,KAAKjB,UAAL,CAAgBE,SAAhB,EAA2BjB,IAA3B,CAA7C,CADgB,GAEd,IAPN,EAQG,CAAC0E,iBAAD,GAAqB,KAAK3D,UAAL,CAAgBE,SAAhB,EAA2BjB,IAA3B,CAArB,GAAwD,IAR3D,eASE,oBAAC,kBAAD;AAAoB,QAAA,KAAK,EAAEkC;AAA3B,QATF,CAdF,CADF,CADF;AA8BD;;;;EA9RkByC;;AAiSrBrG,MAAM,CAACsG,YAAP,GAAsB;AACpBtC,EAAAA,sBAAsB,EAAE,IADJ;AAEpBrE,EAAAA,aAAa,EAAE,KAFK;AAGpBR,EAAAA,UAAU,EAAE;AAHQ,CAAtB;AAMAa,MAAM,CAACuG,SAAP,GAAmB;AACjB;AACA5G,EAAAA,aAAa,EAAE6G,SAAS,CAACC,IAFR;;AAGjB;AACAzC,EAAAA,sBAAsB,EAAEwC,SAAS,CAACC,IAJjB;;AAKjB;AACAT,EAAAA,EAAE,EAAEQ,SAAS,CAACE,MANG;;AAOjB;AACAhF,EAAAA,IAAI,EAAE8E,SAAS,CAACG,OAAV,CAAkBH,SAAS,CAACI,OAA5B,EAAqCC,UAR1B;;AASjB;AACAZ,EAAAA,kBAAkB,EAAEO,SAAS,CAACM,IAVb;;AAWjB;AACAnE,EAAAA,SAAS,EAAE6D,SAAS,CAACE,MAZJ;;AAajB;AACApG,EAAAA,UAAU,EAAEkG,SAAS,CAACM,IAdL;;AAejB;AACA7H,EAAAA,YAAY,EAAEuH,SAAS,CAACC,IAhBP;AAiBjB9E,EAAAA,eAAe,EAAE6E,SAAS,CAACM,IAjBV;AAkBjBlF,EAAAA,aAAa,EAAE4E,SAAS,CAACM,IAlBR;AAmBjB1D,EAAAA,cAAc,EAAEoD,SAAS,CAACO,SAAV,CAAoB,CAACP,SAAS,CAACM,IAAX,EAAiBN,SAAS,CAACQ,KAAV,CAAgB;AAAExG,IAAAA,OAAO,EAAEgG,SAAS,CAACS;AAArB,GAAhB,CAAjB,CAApB,CAnBC;AAoBjB3D,EAAAA,UAAU,EAAEkD,SAAS,CAACO,SAAV,CAAoB,CAACP,SAAS,CAACM,IAAX,EAAiBN,SAAS,CAACQ,KAAV,CAAgB;AAAExG,IAAAA,OAAO,EAAEgG,SAAS,CAACS;AAArB,GAAhB,CAAjB,CAApB,CApBK;;AAqBjB;AACA9H,EAAAA,UAAU,EAAEqH,SAAS,CAACC,IAtBL;;AAuBjB;AACA3H,EAAAA,mBAAmB,EAAE0H,SAAS,CAACC,IAxBd;;AAyBjB;AACAvH,EAAAA,gBAAgB,EAAEsH,SAAS,CAACC;AAC5B;;AA3BiB,CAAnB;;;;"}
package/esm/TabTypes.js DELETED
@@ -1,12 +0,0 @@
1
- var TabTypes = {
2
- NORMAL: 'normal',
3
- SUBTABS: 'subtabs'
4
- };
5
- var getTabTypes = function getTabTypes() {
6
- return Object.keys(TabTypes).map(function (key) {
7
- return TabTypes[key];
8
- });
9
- };
10
-
11
- export { TabTypes, getTabTypes };
12
- //# sourceMappingURL=TabTypes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabTypes.js","sources":["../../src/TabTypes.tsx"],"sourcesContent":["export const TabTypes = {\n NORMAL: 'normal',\n SUBTABS: 'subtabs',\n};\n\nexport const getTabTypes = () =>\n Object.keys(TabTypes).map((key) => TabTypes[key]);\n"],"names":["TabTypes","NORMAL","SUBTABS","getTabTypes","Object","keys","map","key"],"mappings":"IAAaA,QAAQ,GAAG;AACtBC,EAAAA,MAAM,EAAE,QADc;AAEtBC,EAAAA,OAAO,EAAE;AAFa;IAKXC,WAAW,GAAG,SAAdA,WAAc;AAAA,SACzBC,MAAM,CAACC,IAAP,CAAYL,QAAZ,EAAsBM,GAAtB,CAA0B,UAACC,GAAD;AAAA,WAASP,QAAQ,CAACO,GAAD,CAAjB;AAAA,GAA1B,CADyB;AAAA;;;;"}
package/esm/TabsImpl.js DELETED
@@ -1,163 +0,0 @@
1
- import _extends from '@babel/runtime/helpers/esm/extends';
2
- import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
3
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
4
- import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';
5
- import PropTypes from 'prop-types';
6
- import { aggregatedClasses } from '@elliemae/ds-classnames';
7
- import TabsPanels from './TabsPanels.js';
8
- import TabBar from './TabBar.js';
9
- import SubTabBar from './SubTabBar.js';
10
- import { TabTypes } from './TabTypes.js';
11
- import '@babel/runtime/helpers/esm/classCallCheck';
12
- import '@babel/runtime/helpers/esm/createClass';
13
- import '@babel/runtime/helpers/esm/inherits';
14
- import '@babel/runtime/helpers/esm/possibleConstructorReturn';
15
- import '@babel/runtime/helpers/esm/getPrototypeOf';
16
- import 'memoize-one';
17
- import 'react-swipeable-views';
18
- import './PanelContainer.js';
19
- import '@babel/runtime/helpers/esm/objectWithoutProperties';
20
- import '@babel/runtime/helpers/esm/assertThisInitialized';
21
- import 'lodash';
22
- import '@elliemae/ds-form/RequiredMark';
23
- import 'resize-observer';
24
- import 'styled-components';
25
- import './Carousel.js';
26
- import '@elliemae/ds-icons';
27
- import '@elliemae/ds-button';
28
- import './useResize.js';
29
-
30
- var _TabBarComponentsByTy;
31
- var blockName = 'tabs';
32
- var StyledTabsContainer = aggregatedClasses('div')(blockName);
33
- var StyledTabBarContainer = aggregatedClasses('div')(blockName, 'tab-bar-container');
34
- var TabBarComponentsByType = (_TabBarComponentsByTy = {}, _defineProperty(_TabBarComponentsByTy, TabTypes.NORMAL, TabBar), _defineProperty(_TabBarComponentsByTy, TabTypes.SUBTABS, SubTabBar), _TabBarComponentsByTy);
35
-
36
- var TabsImpl = function TabsImpl(props) {
37
- var _tabs$, _tabs$$props;
38
-
39
- var animated = props.animated,
40
- tabs = props.children,
41
- type = props.type,
42
- tabBarExtraContent = props.tabBarExtraContent,
43
- onTabChange = props.onTabChange,
44
- enableMouseEvents = props.enableMouseEvents,
45
- innerRef = props.innerRef,
46
- onlyRenderActiveTab = props.onlyRenderActiveTab,
47
- containerProps = props.containerProps,
48
- allowTextSelection = props.allowTextSelection,
49
- tabsListAriaLabel = props.tabsListAriaLabel,
50
- activeTab = props.activeTab,
51
- firstSubtabRef = props.firstSubtabRef,
52
- lastTabRef = props.lastTabRef,
53
- withCarousel = props.withCarousel,
54
- flexibleTabsHeaders = props.flexibleTabsHeaders,
55
- fixedTabsHeaders = props.fixedTabsHeaders,
56
- isDSMobile = props.isDSMobile;
57
-
58
- var _useState = useState(activeTab || (tabs === null || tabs === void 0 ? void 0 : (_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : (_tabs$$props = _tabs$.props) === null || _tabs$$props === void 0 ? void 0 : _tabs$$props.tabId)),
59
- _useState2 = _slicedToArray(_useState, 2),
60
- actualActiveTab = _useState2[0],
61
- setActualActiveTab = _useState2[1];
62
-
63
- var firstTabRefByParent = useRef(null);
64
- var lastTabRefByParent = useRef(null);
65
- useEffect(function () {
66
- if (activeTab) {
67
- setActualActiveTab(activeTab);
68
- }
69
- }, [activeTab]);
70
- var handleTabClick = useCallback(function (tab) {
71
- setActualActiveTab(tab);
72
- onTabChange(tab);
73
- }, [onTabChange]);
74
- var handleDownArrow = useCallback(function (e) {
75
- var _firstTabRefByParent$;
76
-
77
- e.preventDefault();
78
- e.stopPropagation();
79
- if (firstTabRefByParent !== null && firstTabRefByParent !== void 0 && firstTabRefByParent.current) (_firstTabRefByParent$ = firstTabRefByParent.current) === null || _firstTabRefByParent$ === void 0 ? void 0 : _firstTabRefByParent$.focus();
80
- }, [firstTabRefByParent]);
81
- var handleUpArrow = useCallback(function (e) {
82
- var _lastTabRef$current;
83
-
84
- e.preventDefault();
85
- e.stopPropagation();
86
- if (lastTabRef !== null && lastTabRef !== void 0 && lastTabRef.current) (_lastTabRef$current = lastTabRef.current) === null || _lastTabRef$current === void 0 ? void 0 : _lastTabRef$current.focus();
87
- }, [lastTabRef]);
88
- var PureTabBarComponent = useMemo(function () {
89
- var TabBarComponent = TabBarComponentsByType[type] || TabBar;
90
- return /*#__PURE__*/React.createElement(TabBarComponent, {
91
- withCarousel: withCarousel,
92
- activeTab: actualActiveTab,
93
- onTabClick: handleTabClick,
94
- tabs: tabs,
95
- firstSubtabRef: firstSubtabRef,
96
- lastTabRef: lastTabRefByParent,
97
- handleDownArrow: handleDownArrow,
98
- handleUpArrow: handleUpArrow,
99
- isDSMobile: isDSMobile,
100
- flexibleTabsHeaders: flexibleTabsHeaders,
101
- fixedTabsHeaders: fixedTabsHeaders
102
- });
103
- }, [type, withCarousel, actualActiveTab, handleTabClick, tabs, firstSubtabRef, lastTabRefByParent, handleDownArrow, handleUpArrow, isDSMobile]);
104
- var PureTabsPanels = useMemo(function () {
105
- return /*#__PURE__*/React.createElement(TabsPanels, {
106
- activeTab: actualActiveTab,
107
- allowTextSelection: allowTextSelection,
108
- animated: animated,
109
- enableMouseEvents: enableMouseEvents,
110
- onlyRenderActiveTab: onlyRenderActiveTab,
111
- onTabChange: handleTabClick,
112
- tabsComponents: tabs,
113
- lastTabRef: lastTabRefByParent,
114
- firstTabRefByParent: firstTabRefByParent
115
- });
116
- }, [actualActiveTab, allowTextSelection, animated, enableMouseEvents, onlyRenderActiveTab, handleTabClick, tabs, lastTabRefByParent, firstTabRefByParent]);
117
- var PureTabsImpl = useMemo(function () {
118
- return /*#__PURE__*/React.createElement(StyledTabsContainer, _extends({}, containerProps, {
119
- "aria-label": tabsListAriaLabel,
120
- innerRef: innerRef,
121
- role: "tablist"
122
- }), /*#__PURE__*/React.createElement(StyledTabBarContainer, null, PureTabBarComponent, tabBarExtraContent), PureTabsPanels);
123
- }, [containerProps, tabsListAriaLabel, innerRef, PureTabBarComponent, tabBarExtraContent, PureTabsPanels]);
124
- return PureTabsImpl;
125
- };
126
-
127
- TabsImpl.propTypes = {
128
- animated: PropTypes.bool,
129
- enableMouseEvents: PropTypes.bool,
130
- allowTextSelection: PropTypes.bool,
131
- onTabChange: PropTypes.func,
132
- type: PropTypes.oneOf(['normal', 'subtabs']),
133
- tabBarExtraContent: PropTypes.element,
134
- onlyRenderActiveTab: PropTypes.bool,
135
- withCarousel: PropTypes.bool,
136
- activeTab: PropTypes.string,
137
- children: PropTypes.arrayOf(PropTypes.shape({
138
- type: PropTypes.any
139
- })).isRequired,
140
- tabsListAriaLabel: PropTypes.string,
141
- containerProps: PropTypes.object,
142
- innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
143
- current: PropTypes.any
144
- })]),
145
- firstSubtabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
146
- current: PropTypes.any
147
- })]),
148
- lastTabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
149
- current: PropTypes.any
150
- })]),
151
-
152
- /** Whether or not it's a ds-tab from DSMobile tabs */
153
- isDSMobile: PropTypes.bool,
154
-
155
- /** DSMobile only flexible tabs mode */
156
- flexibleTabsHeaders: PropTypes.bool,
157
-
158
- /** DSMobile only fixed tabs mode */
159
- fixedTabsHeaders: PropTypes.bool
160
- };
161
-
162
- export { TabsImpl as default };
163
- //# sourceMappingURL=TabsImpl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabsImpl.js","sources":["../../src/TabsImpl.tsx"],"sourcesContent":["/* eslint-disable indent */\n/* eslint-disable max-lines */\nimport React, {\n useCallback,\n useState,\n useEffect,\n useRef,\n useMemo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport TabsPanels from './TabsPanels';\nimport TabBar from './TabBar';\nimport SubTabBar from './SubTabBar';\nimport { TabTypes } from './TabTypes';\n\nconst blockName = 'tabs';\n\nconst StyledTabsContainer = aggregatedClasses('div')(blockName);\nconst StyledTabBarContainer = aggregatedClasses('div')(\n blockName,\n 'tab-bar-container',\n);\n\nconst TabBarComponentsByType = {\n [TabTypes.NORMAL]: TabBar,\n [TabTypes.SUBTABS]: SubTabBar,\n};\n\nconst TabsImpl = (props) => {\n const {\n animated,\n children: tabs,\n type,\n tabBarExtraContent,\n onTabChange,\n enableMouseEvents,\n innerRef,\n onlyRenderActiveTab,\n containerProps,\n allowTextSelection,\n tabsListAriaLabel,\n activeTab,\n firstSubtabRef,\n lastTabRef,\n withCarousel,\n flexibleTabsHeaders,\n fixedTabsHeaders,\n isDSMobile,\n } = props;\n const [actualActiveTab, setActualActiveTab] = useState(\n activeTab || tabs?.[0]?.props?.tabId,\n );\n const firstTabRefByParent = useRef(null);\n const lastTabRefByParent = useRef(null);\n\n useEffect(() => {\n if (activeTab) {\n setActualActiveTab(activeTab);\n }\n }, [activeTab]);\n\n const handleTabClick = useCallback(\n (tab) => {\n setActualActiveTab(tab);\n onTabChange(tab);\n },\n [onTabChange],\n );\n const handleDownArrow = useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (firstTabRefByParent?.current) firstTabRefByParent.current?.focus();\n },\n [firstTabRefByParent],\n );\n const handleUpArrow = useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (lastTabRef?.current) lastTabRef.current?.focus();\n },\n [lastTabRef],\n );\n\n const PureTabBarComponent = useMemo(() => {\n const TabBarComponent = TabBarComponentsByType[type] || TabBar;\n return (\n <TabBarComponent\n withCarousel={withCarousel}\n activeTab={actualActiveTab}\n onTabClick={handleTabClick}\n tabs={tabs}\n firstSubtabRef={firstSubtabRef}\n lastTabRef={lastTabRefByParent}\n handleDownArrow={handleDownArrow}\n handleUpArrow={handleUpArrow}\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n />\n );\n }, [\n type,\n withCarousel,\n actualActiveTab,\n handleTabClick,\n tabs,\n firstSubtabRef,\n lastTabRefByParent,\n handleDownArrow,\n handleUpArrow,\n isDSMobile,\n ]);\n const PureTabsPanels = useMemo(\n () => (\n <TabsPanels\n activeTab={actualActiveTab}\n allowTextSelection={allowTextSelection}\n animated={animated}\n enableMouseEvents={enableMouseEvents}\n onlyRenderActiveTab={onlyRenderActiveTab}\n onTabChange={handleTabClick}\n tabsComponents={tabs}\n lastTabRef={lastTabRefByParent}\n firstTabRefByParent={firstTabRefByParent}\n />\n ),\n [\n actualActiveTab,\n allowTextSelection,\n animated,\n enableMouseEvents,\n onlyRenderActiveTab,\n handleTabClick,\n tabs,\n lastTabRefByParent,\n firstTabRefByParent,\n ],\n );\n const PureTabsImpl = useMemo(\n () => (\n <StyledTabsContainer\n {...containerProps}\n aria-label={tabsListAriaLabel}\n innerRef={innerRef}\n role=\"tablist\"\n >\n <StyledTabBarContainer>\n {PureTabBarComponent}\n {tabBarExtraContent}\n </StyledTabBarContainer>\n {PureTabsPanels}\n </StyledTabsContainer>\n ),\n [\n containerProps,\n tabsListAriaLabel,\n innerRef,\n PureTabBarComponent,\n tabBarExtraContent,\n PureTabsPanels,\n ],\n );\n return PureTabsImpl;\n};\n\nTabsImpl.propTypes = {\n animated: PropTypes.bool,\n enableMouseEvents: PropTypes.bool,\n allowTextSelection: PropTypes.bool,\n onTabChange: PropTypes.func,\n type: PropTypes.oneOf(['normal', 'subtabs']),\n tabBarExtraContent: PropTypes.element,\n onlyRenderActiveTab: PropTypes.bool,\n withCarousel: PropTypes.bool,\n activeTab: PropTypes.string,\n children: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.any,\n }),\n ).isRequired,\n tabsListAriaLabel: PropTypes.string,\n containerProps: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n lastTabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool,\n /** DSMobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool,\n /** DSMobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool,\n};\n\nexport default TabsImpl;\n"],"names":["blockName","StyledTabsContainer","aggregatedClasses","StyledTabBarContainer","TabBarComponentsByType","TabTypes","NORMAL","TabBar","SUBTABS","SubTabBar","TabsImpl","props","animated","tabs","children","type","tabBarExtraContent","onTabChange","enableMouseEvents","innerRef","onlyRenderActiveTab","containerProps","allowTextSelection","tabsListAriaLabel","activeTab","firstSubtabRef","lastTabRef","withCarousel","flexibleTabsHeaders","fixedTabsHeaders","isDSMobile","useState","tabId","actualActiveTab","setActualActiveTab","firstTabRefByParent","useRef","lastTabRefByParent","useEffect","handleTabClick","useCallback","tab","handleDownArrow","e","preventDefault","stopPropagation","current","focus","handleUpArrow","PureTabBarComponent","useMemo","TabBarComponent","PureTabsPanels","PureTabsImpl","propTypes","PropTypes","bool","func","oneOf","element","string","arrayOf","shape","any","isRequired","object","oneOfType"],"mappings":"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"}
package/esm/TabsPanels.js DELETED
@@ -1,103 +0,0 @@
1
- import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';
2
- import _createClass from '@babel/runtime/helpers/esm/createClass';
3
- import _inherits from '@babel/runtime/helpers/esm/inherits';
4
- import _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';
5
- import _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';
6
- import React, { Component } from 'react';
7
- import memoizeOne from 'memoize-one';
8
- import { aggregatedClasses } from '@elliemae/ds-classnames';
9
- import SwipeableViews from 'react-swipeable-views';
10
- import PanelContainer from './PanelContainer.js';
11
- import '@babel/runtime/helpers/esm/objectWithoutProperties';
12
- import 'prop-types';
13
-
14
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
15
-
16
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
17
- var blockName = 'tabs-panels';
18
- var Panels = aggregatedClasses('div')(blockName);
19
-
20
- var getIndexById = function getIndexById(children, activeId) {
21
- return children && children.findIndex(function (item) {
22
- return item.props.tabId === activeId;
23
- });
24
- };
25
-
26
- var getIdByIndex = function getIdByIndex(children, index) {
27
- return children && children[index].props.tabId;
28
- };
29
-
30
- var TabsPanels = /*#__PURE__*/function (_Component) {
31
- _inherits(TabsPanels, _Component);
32
-
33
- var _super = _createSuper(TabsPanels);
34
-
35
- function TabsPanels() {
36
- var _this;
37
-
38
- _classCallCheck(this, TabsPanels);
39
-
40
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
41
- args[_key] = arguments[_key];
42
- }
43
-
44
- _this = _super.call.apply(_super, [this].concat(args));
45
- _this.renderPanels = memoizeOne(function (activeTab, tabsComponents) {
46
- var _this$props = _this.props,
47
- animated = _this$props.animated,
48
- onlyRenderActiveTab = _this$props.onlyRenderActiveTab,
49
- allowTextSelection = _this$props.allowTextSelection;
50
- return React.Children.map(tabsComponents, function (tab) {
51
- var _tab$props = tab.props,
52
- panelId = _tab$props.tabId,
53
- style = _tab$props.style,
54
- content = _tab$props.children;
55
- var isActive = activeTab === panelId;
56
- var shouldRender = !onlyRenderActiveTab || isActive;
57
- return /*#__PURE__*/React.createElement(PanelContainer, {
58
- key: panelId,
59
- "aria-labelledby": "".concat(panelId, "-label"),
60
- lastTabRef: _this.props.lastTabRef,
61
- firstSubtabRef: _this.props.firstTabRefByParent,
62
- classProps: {
63
- isActive: isActive
64
- },
65
- "data-panel-id": panelId,
66
- hidden: !animated && !isActive,
67
- onMouseDown: function onMouseDown(e) {
68
- var role = e.target.getAttribute('role');
69
- if (role !== 'tabpanel' && allowTextSelection) e.stopPropagation();
70
- },
71
- role: "tabpanel",
72
- style: style
73
- }, shouldRender && content);
74
- }, null);
75
- });
76
- return _this;
77
- }
78
-
79
- _createClass(TabsPanels, [{
80
- key: "render",
81
- value: function render() {
82
- var _this$props2 = this.props,
83
- activeTab = _this$props2.activeTab,
84
- tabsComponents = _this$props2.tabsComponents,
85
- animated = _this$props2.animated,
86
- onTabChange = _this$props2.onTabChange,
87
- enableMouseEvents = _this$props2.enableMouseEvents;
88
- var panels = animated ? /*#__PURE__*/React.createElement(SwipeableViews, {
89
- enableMouseEvents: enableMouseEvents,
90
- index: getIndexById(tabsComponents, activeTab),
91
- onChangeIndex: function onChangeIndex(index) {
92
- return onTabChange(getIdByIndex(tabsComponents, index));
93
- }
94
- }, this.renderPanels(activeTab, tabsComponents)) : this.renderPanels(activeTab, tabsComponents);
95
- return /*#__PURE__*/React.createElement(Panels, null, panels);
96
- }
97
- }]);
98
-
99
- return TabsPanels;
100
- }(Component);
101
-
102
- export { TabsPanels as default };
103
- //# sourceMappingURL=TabsPanels.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabsPanels.js","sources":["../../src/TabsPanels.tsx"],"sourcesContent":["/* eslint-disable react/prop-types */\nimport React, { Component } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport SwipeableViews from 'react-swipeable-views';\n// eslint-disable-next-line import/extensions\nimport PanelContainer from './PanelContainer';\n\nconst blockName = 'tabs-panels';\n\nconst Panels = aggregatedClasses('div')(blockName);\n\nconst getIndexById = (children, activeId) =>\n children && children.findIndex((item) => item.props.tabId === activeId);\nconst getIdByIndex = (children, index) =>\n children && children[index].props.tabId;\n\nexport default class TabsPanels extends Component {\n renderPanels = memoizeOne((activeTab, tabsComponents) => {\n const { animated, onlyRenderActiveTab, allowTextSelection } = this.props;\n return React.Children.map(\n tabsComponents,\n (tab) => {\n const { tabId: panelId, style, children: content } = tab.props;\n const isActive = activeTab === panelId;\n const shouldRender = !onlyRenderActiveTab || isActive;\n return (\n <PanelContainer\n key={panelId}\n aria-labelledby={`${panelId}-label`}\n lastTabRef={this.props.lastTabRef}\n firstSubtabRef={this.props.firstTabRefByParent}\n classProps={{ isActive }}\n data-panel-id={panelId}\n hidden={!animated && !isActive}\n onMouseDown={(e) => {\n const role = e.target.getAttribute('role');\n if (role !== 'tabpanel' && allowTextSelection)\n e.stopPropagation();\n }}\n role=\"tabpanel\"\n style={style}\n >\n {shouldRender && content}\n </PanelContainer>\n );\n },\n null,\n );\n });\n\n render() {\n const {\n activeTab,\n tabsComponents,\n animated,\n onTabChange,\n enableMouseEvents,\n } = this.props;\n const panels = animated ? (\n <SwipeableViews\n enableMouseEvents={enableMouseEvents}\n index={getIndexById(tabsComponents, activeTab)}\n onChangeIndex={(index) =>\n onTabChange(getIdByIndex(tabsComponents, index))\n }\n >\n {this.renderPanels(activeTab, tabsComponents)}\n </SwipeableViews>\n ) : (\n this.renderPanels(activeTab, tabsComponents)\n );\n return <Panels>{panels}</Panels>;\n }\n}\n"],"names":["blockName","Panels","aggregatedClasses","getIndexById","children","activeId","findIndex","item","props","tabId","getIdByIndex","index","TabsPanels","renderPanels","memoizeOne","activeTab","tabsComponents","animated","onlyRenderActiveTab","allowTextSelection","React","Children","map","tab","panelId","style","content","isActive","shouldRender","lastTabRef","firstTabRefByParent","e","role","target","getAttribute","stopPropagation","onTabChange","enableMouseEvents","panels","Component"],"mappings":"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"}
package/esm/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/esm/useResize.js DELETED
@@ -1,21 +0,0 @@
1
- import { useLayoutEffect } from 'react';
2
- import { debounce } from 'lodash';
3
-
4
- function useResize(ref, callback) {
5
- var _ref$current;
6
-
7
- var _ref = (ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.getBoundingClientRect()) || {
8
- right: null,
9
- left: null
10
- },
11
- right = _ref.right,
12
- left = _ref.left;
13
-
14
- var handleResize = debounce(callback, 300);
15
- useLayoutEffect(function () {
16
- handleResize();
17
- }, [right, left]);
18
- }
19
-
20
- export { useResize };
21
- //# sourceMappingURL=useResize.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useResize.js","sources":["../../src/useResize.tsx"],"sourcesContent":["import { useLayoutEffect } from 'react';\nimport { debounce } from 'lodash';\n\nexport function useResize(ref, callback) {\n const { right, left } = ref?.current?.getBoundingClientRect() || {\n right: null,\n left: null,\n };\n const handleResize = debounce(callback, 300);\n\n useLayoutEffect(() => {\n handleResize();\n }, [right, left]);\n}\n"],"names":["useResize","ref","callback","current","getBoundingClientRect","right","left","handleResize","debounce","useLayoutEffect"],"mappings":";;;AAGO,SAASA,SAAT,CAAmBC,GAAnB,EAAwBC,QAAxB,EAAkC;AAAA;;AACvC,aAAwB,CAAAD,GAAG,SAAH,IAAAA,GAAG,WAAH,4BAAAA,GAAG,CAAEE,OAAL,8DAAcC,qBAAd,OAAyC;AAC/DC,IAAAA,KAAK,EAAE,IADwD;AAE/DC,IAAAA,IAAI,EAAE;AAFyD,GAAjE;AAAA,MAAQD,KAAR,QAAQA,KAAR;AAAA,MAAeC,IAAf,QAAeA,IAAf;;AAIA,MAAMC,YAAY,GAAGC,QAAQ,CAACN,QAAD,EAAW,GAAX,CAA7B;AAEAO,EAAAA,eAAe,CAAC,YAAM;AACpBF,IAAAA,YAAY;AACb,GAFc,EAEZ,CAACF,KAAD,EAAQC,IAAR,CAFY,CAAf;AAGD;;;;"}
@@ -1,10 +0,0 @@
1
- {
2
- "name": "@elliemae/ds-tabs/useResize",
3
- "sideEffects": [
4
- "*.css",
5
- "*.scss"
6
- ],
7
- "private": true,
8
- "main": "../cjs/useResize.js",
9
- "module": "../esm/useResize.js"
10
- }