{"version":3,"sources":["../node_modules/rc-tabs/es/hooks/useRaf.js","../node_modules/rc-tabs/es/TabNavList/TabNode.js","../node_modules/rc-tabs/es/hooks/useOffsets.js","../node_modules/rc-tabs/es/hooks/useVisibleRange.js","../node_modules/rc-tabs/es/TabNavList/AddButton.js","../node_modules/rc-tabs/es/TabNavList/OperationNode.js","../node_modules/rc-tabs/es/TabContext.js","../node_modules/rc-tabs/es/hooks/useTouchMove.js","../node_modules/rc-tabs/es/hooks/useSyncState.js","../node_modules/rc-tabs/es/TabNavList/index.js","../node_modules/rc-tabs/es/hooks/useRefs.js","../node_modules/rc-tabs/es/TabPanelList/index.js","../node_modules/rc-tabs/es/TabPanelList/TabPane.js","../node_modules/rc-tabs/es/Tabs.js","../node_modules/rc-tabs/es/index.js","../node_modules/antd/es/tabs/index.js","../node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js","../node_modules/@ant-design/icons/es/icons/PlusOutlined.js"],"names":["useRaf","callback","rafRef","useRef","removedRef","useEffect","current","raf","cancel","_len","arguments","length","args","Array","_key","apply","TabNode","_ref","ref","_classNames","prefixCls","id","active","_ref$tab","tab","key","disabled","closeIcon","closable","renderWrapper","removeAriaLabel","editable","onClick","onRemove","onFocus","style","tabPrefix","concat","React","removable","onInternalClick","e","node","className","classNames","_defineProperty","role","tabIndex","stopPropagation","onKeyDown","KeyCode","SPACE","ENTER","includes","which","preventDefault","type","event","onEdit","removeIcon","DEFAULT_SIZE","width","height","left","top","right","AddButton","locale","showAdd","addAriaLabel","addIcon","OperationNode","tabs","mobile","_ref$moreIcon","moreIcon","moreTransitionName","tabBarGutter","rtl","onTabClick","_useState","useState","_useState2","_slicedToArray","open","setOpen","_useState3","_useState4","selectedKey","setSelectedKey","popupId","dropdownPrefix","selectedItemId","dropdownAriaLabel","menu","Menu","_ref2","domEvent","selectedKeys","undefined","map","MenuItem","selectOffset","offset","enabledTabs","filter","selectedIndex","findIndex","len","i","ele","document","getElementById","scrollIntoView","moreStyle","visibility","order","overlayClassName","moreNode","Dropdown","overlay","trigger","visible","transitionName","onVisibleChange","mouseEnterDelay","mouseLeaveDelay","UP","DOWN","ESC","createContext","SPEED_OFF_MULTIPLE","Math","pow","useSyncState","defaultState","onChange","stateRef","_React$useState","forceUpdate","updater","newValue","ExtraContent","content","position","extra","assertExtra","_typeof","TabNavList","props","_React$useContext","TabContext","animated","activeKey","tabPosition","children","onTabScroll","tabsWrapperRef","tabListRef","operationsRef","innerAddButtonRef","_useRefs","cacheRefs","Map","has","set","get","delete","useRefs","_useRefs2","getBtnRef","removeBtnRef","tabPositionTopOrBottom","_useSyncState","next","prev","direction","_useSyncState2","transformLeft","setTransformLeft","_useSyncState3","_useSyncState4","transformTop","setTransformTop","wrapperScrollWidth","setWrapperScrollWidth","wrapperScrollHeight","setWrapperScrollHeight","_useState5","_useState6","wrapperContentWidth","setWrapperContentWidth","_useState7","_useState8","wrapperContentHeight","setWrapperContentHeight","_useState9","_useState10","wrapperWidth","setWrapperWidth","_useState11","_useState12","wrapperHeight","setWrapperHeight","_useState13","_useState14","addWidth","setAddWidth","_useState15","_useState16","addHeight","setAddHeight","_useRafState","batchRef","state","flushUpdate","forEach","push","useRafState","_useRafState2","tabSizes","setTabSizes","tabOffsets","holderScrollWidth","useMemo","_tabs$","lastOffset","rightOffset","_tabs","data","entity","_objectSpread","join","useOffsets","operationsHiddenClassName","transformMin","transformMax","alignInRange","value","max","min","touchMovingRef","_useState17","_useState18","lockAnimation","setLockAnimation","doLockAnimation","Date","now","clearTouchMoving","window","clearTimeout","scrollToTab","tabOffset","newTransform","_newTransform","onOffset","touchPosition","setTouchPosition","lastTimestamp","setLastTimestamp","lastTimeDiff","setLastTimeDiff","setLastOffset","motionRef","lastWheelDirectionRef","touchEventsRef","onTouchStart","_e$touches$","touches","screenX","screenY","x","y","clearInterval","onTouchMove","_e$touches$2","offsetX","offsetY","onTouchEnd","distanceX","distanceY","absX","abs","absY","currentX","currentY","setInterval","onWheel","deltaX","deltaY","mixed","onProxyTouchMove","onProxyTouchEnd","addEventListener","passive","removeEventListener","useTouchMove","doMove","setState","setTimeout","_useVisibleRange","containerSize","tabContentNodeSize","addNodeSize","unit","transformSize","basicSize","tabContentSize","addSize","mergedBasicSize","endIndex","startIndex","_i","useVisibleRange","_useVisibleRange2","visibleStart","visibleEnd","tabNodeStyle","marginTop","tabNodes","scrollLeft","scrollTop","onListHolderResize","_tabsWrapperRef$curre","_tabsWrapperRef$curre2","_innerAddButtonRef$cu","_innerAddButtonRef$cu2","_operationsRef$curren","_operationsRef$curren2","_tabListRef$current","_tabListRef$current2","_operationsRef$curren3","offsetWidth","offsetHeight","newAddWidth","newAddHeight","newOperationWidth","newOperationHeight","newWrapperScrollWidth","newWrapperScrollHeight","isOperationHidden","newSizes","btnNode","offsetLeft","offsetTop","startHiddenTabs","slice","endHiddenTabs","hiddenTabs","_toConsumableArray","_useState19","_useState20","inkStyle","setInkStyle","activeTabOffset","inkBarRafRef","cleanInkBarRaf","newInkStyle","pingLeft","pingRight","pingTop","pingBottom","hasDropdown","wrapPrefix","ResizeObserver","onResize","transform","transition","inkBar","_extends","TabPanelList","destroyInactiveTabPane","tabPaneAnimated","tabPane","activeIndex","tabKey","TabPane","forceRender","_React$useState2","visited","setVisited","mergedStyle","overflowY","display","_excluded","uuid","Tabs","mergedAnimated","_ref$prefixCls","defaultActiveKey","_ref$animated","_ref$tabPosition","tabBarStyle","tabBarExtraContent","renderTabBar","restProps","_objectWithoutProperties","toArray","String","parseTabList","setMobile","isMobile","_useMergedState","useMergedState","defaultValue","_useMergedState2","mergedActiveKey","setMergedActiveKey","setActiveIndex","_tabs$newActiveIndex","newActiveIndex","_useMergedState3","_useMergedState4","mergedId","setMergedId","mergedTabPosition","tabNavBar","sharedProps","tabNavBarProps","panes","Provider","ForwardTabs","__rest","s","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","propertyIsEnumerable","_a","propSize","size","_onEdit","hideAdd","centered","customizePrefixCls","_props$moreIcon","EllipsisOutlined","ConfigContext","getPrefixCls","editType","CloseOutlined","PlusOutlined","rootPrefixCls","devWarning","SizeContext","Consumer","contextSize","RcTabs","AntdIcon","icon","PlusOutlinedSvg","displayName"],"mappings":"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","file":"static/js/0.39aa9374.chunk.js","sourcesContent":["import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useRef, useState, useEffect } from 'react';\nimport raf from \"rc-util/es/raf\";\nexport default function useRaf(callback) {\n var rafRef = useRef();\n var removedRef = useRef(false);\n\n function trigger() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (!removedRef.current) {\n raf.cancel(rafRef.current);\n rafRef.current = raf(function () {\n callback.apply(void 0, args);\n });\n }\n }\n\n useEffect(function () {\n return function () {\n removedRef.current = true;\n raf.cancel(rafRef.current);\n };\n }, []);\n return trigger;\n}\nexport function useRafState(defaultState) {\n var batchRef = useRef([]);\n\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n forceUpdate = _useState2[1];\n\n var state = useRef(typeof defaultState === 'function' ? defaultState() : defaultState);\n var flushUpdate = useRaf(function () {\n var current = state.current;\n batchRef.current.forEach(function (callback) {\n current = callback(current);\n });\n batchRef.current = [];\n state.current = current;\n forceUpdate({});\n });\n\n function updater(callback) {\n batchRef.current.push(callback);\n flushUpdate();\n }\n\n return [state.current, updater];\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\n\nfunction TabNode(_ref, ref) {\n var _classNames;\n\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n active = _ref.active,\n _ref$tab = _ref.tab,\n key = _ref$tab.key,\n tab = _ref$tab.tab,\n disabled = _ref$tab.disabled,\n closeIcon = _ref$tab.closeIcon,\n closable = _ref.closable,\n renderWrapper = _ref.renderWrapper,\n removeAriaLabel = _ref.removeAriaLabel,\n editable = _ref.editable,\n onClick = _ref.onClick,\n onRemove = _ref.onRemove,\n onFocus = _ref.onFocus,\n style = _ref.style;\n var tabPrefix = \"\".concat(prefixCls, \"-tab\");\n React.useEffect(function () {\n return onRemove;\n }, []);\n var removable = editable && closable !== false && !disabled;\n\n function onInternalClick(e) {\n if (disabled) {\n return;\n }\n\n onClick(e);\n }\n\n function onRemoveTab(event) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key: key,\n event: event\n });\n }\n\n var node = /*#__PURE__*/React.createElement(\"div\", {\n key: key,\n ref: ref,\n className: classNames(tabPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(tabPrefix, \"-with-remove\"), removable), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-active\"), active), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-disabled\"), disabled), _classNames)),\n style: style,\n onClick: onInternalClick\n }, /*#__PURE__*/React.createElement(\"div\", {\n role: \"tab\",\n \"aria-selected\": active,\n id: id && \"\".concat(id, \"-tab-\").concat(key),\n className: \"\".concat(tabPrefix, \"-btn\"),\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(key),\n \"aria-disabled\": disabled,\n tabIndex: disabled ? null : 0,\n onClick: function onClick(e) {\n e.stopPropagation();\n onInternalClick(e);\n },\n onKeyDown: function onKeyDown(e) {\n if ([KeyCode.SPACE, KeyCode.ENTER].includes(e.which)) {\n e.preventDefault();\n onInternalClick(e);\n }\n },\n onFocus: onFocus\n }, tab), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: \"\".concat(tabPrefix, \"-remove\"),\n onClick: function onClick(e) {\n e.stopPropagation();\n onRemoveTab(e);\n }\n }, closeIcon || editable.removeIcon || '×'));\n return renderWrapper ? renderWrapper(node) : node;\n}\n\nexport default /*#__PURE__*/React.forwardRef(TabNode);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n};\nexport default function useOffsets(tabs, tabSizes, holderScrollWidth) {\n return useMemo(function () {\n var _tabs$;\n\n var map = new Map();\n var lastOffset = tabSizes.get((_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key) || DEFAULT_SIZE;\n var rightOffset = lastOffset.left + lastOffset.width;\n\n for (var i = 0; i < tabs.length; i += 1) {\n var key = tabs[i].key;\n var data = tabSizes.get(key); // Reuse last one when not exist yet\n\n if (!data) {\n var _tabs;\n\n data = tabSizes.get((_tabs = tabs[i - 1]) === null || _tabs === void 0 ? void 0 : _tabs.key) || DEFAULT_SIZE;\n }\n\n var entity = map.get(key) || _objectSpread({}, data); // Right\n\n\n entity.right = rightOffset - entity.left - entity.width; // Update entity\n\n map.set(key, entity);\n }\n\n return map;\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), tabSizes, holderScrollWidth]);\n}","import { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0\n};\nexport default function useVisibleRange(tabOffsets, containerSize, tabContentNodeSize, addNodeSize, _ref) {\n var tabs = _ref.tabs,\n tabPosition = _ref.tabPosition,\n rtl = _ref.rtl;\n var unit;\n var position;\n var transformSize;\n\n if (['top', 'bottom'].includes(tabPosition)) {\n unit = 'width';\n position = rtl ? 'right' : 'left';\n transformSize = Math.abs(containerSize.left);\n } else {\n unit = 'height';\n position = 'top';\n transformSize = -containerSize.top;\n }\n\n var basicSize = containerSize[unit];\n var tabContentSize = tabContentNodeSize[unit];\n var addSize = addNodeSize[unit];\n var mergedBasicSize = basicSize;\n\n if (tabContentSize + addSize > basicSize) {\n mergedBasicSize = basicSize - addSize;\n }\n\n return useMemo(function () {\n if (!tabs.length) {\n return [0, 0];\n }\n\n var len = tabs.length;\n var endIndex = len;\n\n for (var i = 0; i < len; i += 1) {\n var offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;\n\n if (offset[position] + offset[unit] > transformSize + mergedBasicSize) {\n endIndex = i - 1;\n break;\n }\n }\n\n var startIndex = 0;\n\n for (var _i = len - 1; _i >= 0; _i -= 1) {\n var _offset = tabOffsets.get(tabs[_i].key) || DEFAULT_SIZE;\n\n if (_offset[position] < transformSize) {\n startIndex = _i + 1;\n break;\n }\n }\n\n return [startIndex, endIndex];\n }, [tabOffsets, transformSize, mergedBasicSize, tabPosition, tabs.map(function (tab) {\n return tab.key;\n }).join('_'), rtl]);\n}","import * as React from 'react';\n\nfunction AddButton(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n editable = _ref.editable,\n locale = _ref.locale,\n style = _ref.style;\n\n if (!editable || editable.showAdd === false) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"button\", {\n ref: ref,\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-add\"),\n style: style,\n \"aria-label\": (locale === null || locale === void 0 ? void 0 : locale.addAriaLabel) || 'Add tab',\n onClick: function onClick(event) {\n editable.onEdit('add', {\n event: event\n });\n }\n }, editable.addIcon || '+');\n}\n\nexport default /*#__PURE__*/React.forwardRef(AddButton);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useState, useEffect } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport Menu, { MenuItem } from 'rc-menu';\nimport Dropdown from 'rc-dropdown';\nimport AddButton from './AddButton';\n\nfunction OperationNode(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n tabs = _ref.tabs,\n locale = _ref.locale,\n mobile = _ref.mobile,\n _ref$moreIcon = _ref.moreIcon,\n moreIcon = _ref$moreIcon === void 0 ? 'More' : _ref$moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n style = _ref.style,\n className = _ref.className,\n editable = _ref.editable,\n tabBarGutter = _ref.tabBarGutter,\n rtl = _ref.rtl,\n onTabClick = _ref.onTabClick;\n\n // ======================== Dropdown ========================\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n open = _useState2[0],\n setOpen = _useState2[1];\n\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n selectedKey = _useState4[0],\n setSelectedKey = _useState4[1];\n\n var popupId = \"\".concat(id, \"-more-popup\");\n var dropdownPrefix = \"\".concat(prefixCls, \"-dropdown\");\n var selectedItemId = selectedKey !== null ? \"\".concat(popupId, \"-\").concat(selectedKey) : null;\n var dropdownAriaLabel = locale === null || locale === void 0 ? void 0 : locale.dropdownAriaLabel;\n var menu = /*#__PURE__*/React.createElement(Menu, {\n onClick: function onClick(_ref2) {\n var key = _ref2.key,\n domEvent = _ref2.domEvent;\n onTabClick(key, domEvent);\n setOpen(false);\n },\n id: popupId,\n tabIndex: -1,\n role: \"listbox\",\n \"aria-activedescendant\": selectedItemId,\n selectedKeys: [selectedKey],\n \"aria-label\": dropdownAriaLabel !== undefined ? dropdownAriaLabel : 'expanded dropdown'\n }, tabs.map(function (tab) {\n return /*#__PURE__*/React.createElement(MenuItem, {\n key: tab.key,\n id: \"\".concat(popupId, \"-\").concat(tab.key),\n role: \"option\",\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(tab.key),\n disabled: tab.disabled\n }, tab.tab);\n }));\n\n function selectOffset(offset) {\n var enabledTabs = tabs.filter(function (tab) {\n return !tab.disabled;\n });\n var selectedIndex = enabledTabs.findIndex(function (tab) {\n return tab.key === selectedKey;\n }) || 0;\n var len = enabledTabs.length;\n\n for (var i = 0; i < len; i += 1) {\n selectedIndex = (selectedIndex + offset + len) % len;\n var tab = enabledTabs[selectedIndex];\n\n if (!tab.disabled) {\n setSelectedKey(tab.key);\n return;\n }\n }\n }\n\n function onKeyDown(e) {\n var which = e.which;\n\n if (!open) {\n if ([KeyCode.DOWN, KeyCode.SPACE, KeyCode.ENTER].includes(which)) {\n setOpen(true);\n e.preventDefault();\n }\n\n return;\n }\n\n switch (which) {\n case KeyCode.UP:\n selectOffset(-1);\n e.preventDefault();\n break;\n\n case KeyCode.DOWN:\n selectOffset(1);\n e.preventDefault();\n break;\n\n case KeyCode.ESC:\n setOpen(false);\n break;\n\n case KeyCode.SPACE:\n case KeyCode.ENTER:\n if (selectedKey !== null) onTabClick(selectedKey, e);\n break;\n }\n } // ========================= Effect =========================\n\n\n useEffect(function () {\n // We use query element here to avoid React strict warning\n var ele = document.getElementById(selectedItemId);\n\n if (ele && ele.scrollIntoView) {\n ele.scrollIntoView(false);\n }\n }, [selectedKey]);\n useEffect(function () {\n if (!open) {\n setSelectedKey(null);\n }\n }, [open]); // ========================= Render =========================\n\n var moreStyle = _defineProperty({}, rtl ? 'marginRight' : 'marginLeft', tabBarGutter);\n\n if (!tabs.length) {\n moreStyle.visibility = 'hidden';\n moreStyle.order = 1;\n }\n\n var overlayClassName = classNames(_defineProperty({}, \"\".concat(dropdownPrefix, \"-rtl\"), rtl));\n var moreNode = mobile ? null : /*#__PURE__*/React.createElement(Dropdown, {\n prefixCls: dropdownPrefix,\n overlay: menu,\n trigger: ['hover'],\n visible: open,\n transitionName: moreTransitionName,\n onVisibleChange: setOpen,\n overlayClassName: overlayClassName,\n mouseEnterDelay: 0.1,\n mouseLeaveDelay: 0.1\n }, /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-more\"),\n style: moreStyle,\n tabIndex: -1,\n \"aria-hidden\": \"true\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": popupId,\n id: \"\".concat(id, \"-more\"),\n \"aria-expanded\": open,\n onKeyDown: onKeyDown\n }, moreIcon));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-nav-operations\"), className),\n style: style,\n ref: ref\n }, moreNode, /*#__PURE__*/React.createElement(AddButton, {\n prefixCls: prefixCls,\n locale: locale,\n editable: editable\n }));\n}\n\nexport default /*#__PURE__*/React.forwardRef(OperationNode);","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState, useRef } from 'react';\nvar MIN_SWIPE_DISTANCE = 0.1;\nvar STOP_SWIPE_DISTANCE = 0.01;\nvar REFRESH_INTERVAL = 20;\nvar SPEED_OFF_MULTIPLE = Math.pow(0.995, REFRESH_INTERVAL); // ================================= Hook =================================\n\nexport default function useTouchMove(ref, onOffset) {\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n touchPosition = _useState2[0],\n setTouchPosition = _useState2[1];\n\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n lastTimestamp = _useState4[0],\n setLastTimestamp = _useState4[1];\n\n var _useState5 = useState(0),\n _useState6 = _slicedToArray(_useState5, 2),\n lastTimeDiff = _useState6[0],\n setLastTimeDiff = _useState6[1];\n\n var _useState7 = useState(),\n _useState8 = _slicedToArray(_useState7, 2),\n lastOffset = _useState8[0],\n setLastOffset = _useState8[1];\n\n var motionRef = useRef(); // ========================= Events =========================\n // >>> Touch events\n\n function onTouchStart(e) {\n var _e$touches$ = e.touches[0],\n screenX = _e$touches$.screenX,\n screenY = _e$touches$.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n window.clearInterval(motionRef.current);\n }\n\n function onTouchMove(e) {\n if (!touchPosition) return;\n e.preventDefault();\n var _e$touches$2 = e.touches[0],\n screenX = _e$touches$2.screenX,\n screenY = _e$touches$2.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n var offsetX = screenX - touchPosition.x;\n var offsetY = screenY - touchPosition.y;\n onOffset(offsetX, offsetY);\n var now = Date.now();\n setLastTimestamp(now);\n setLastTimeDiff(now - lastTimestamp);\n setLastOffset({\n x: offsetX,\n y: offsetY\n });\n }\n\n function onTouchEnd() {\n if (!touchPosition) return;\n setTouchPosition(null);\n setLastOffset(null); // Swipe if needed\n\n if (lastOffset) {\n var distanceX = lastOffset.x / lastTimeDiff;\n var distanceY = lastOffset.y / lastTimeDiff;\n var absX = Math.abs(distanceX);\n var absY = Math.abs(distanceY); // Skip swipe if low distance\n\n if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) return;\n var currentX = distanceX;\n var currentY = distanceY;\n motionRef.current = window.setInterval(function () {\n if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) {\n window.clearInterval(motionRef.current);\n return;\n }\n\n currentX *= SPEED_OFF_MULTIPLE;\n currentY *= SPEED_OFF_MULTIPLE;\n onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL);\n }, REFRESH_INTERVAL);\n }\n } // >>> Wheel event\n\n\n var lastWheelDirectionRef = useRef();\n\n function onWheel(e) {\n var deltaX = e.deltaX,\n deltaY = e.deltaY; // Convert both to x & y since wheel only happened on PC\n\n var mixed = 0;\n var absX = Math.abs(deltaX);\n var absY = Math.abs(deltaY);\n\n if (absX === absY) {\n mixed = lastWheelDirectionRef.current === 'x' ? deltaX : deltaY;\n } else if (absX > absY) {\n mixed = deltaX;\n lastWheelDirectionRef.current = 'x';\n } else {\n mixed = deltaY;\n lastWheelDirectionRef.current = 'y';\n }\n\n if (onOffset(-mixed, -mixed)) {\n e.preventDefault();\n }\n } // ========================= Effect =========================\n\n\n var touchEventsRef = useRef(null);\n touchEventsRef.current = {\n onTouchStart: onTouchStart,\n onTouchMove: onTouchMove,\n onTouchEnd: onTouchEnd,\n onWheel: onWheel\n };\n React.useEffect(function () {\n function onProxyTouchStart(e) {\n touchEventsRef.current.onTouchStart(e);\n }\n\n function onProxyTouchMove(e) {\n touchEventsRef.current.onTouchMove(e);\n }\n\n function onProxyTouchEnd(e) {\n touchEventsRef.current.onTouchEnd(e);\n }\n\n function onProxyWheel(e) {\n touchEventsRef.current.onWheel(e);\n }\n\n document.addEventListener('touchmove', onProxyTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', onProxyTouchEnd, {\n passive: false\n }); // No need to clean up since element removed\n\n ref.current.addEventListener('touchstart', onProxyTouchStart, {\n passive: false\n });\n ref.current.addEventListener('wheel', onProxyWheel);\n return function () {\n document.removeEventListener('touchmove', onProxyTouchMove);\n document.removeEventListener('touchend', onProxyTouchEnd);\n };\n }, []);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useSyncState(defaultState, onChange) {\n var stateRef = React.useRef(defaultState);\n\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n forceUpdate = _React$useState2[1];\n\n function setState(updater) {\n var newValue = typeof updater === 'function' ? updater(stateRef.current) : updater;\n\n if (newValue !== stateRef.current) {\n onChange(newValue, stateRef.current);\n }\n\n stateRef.current = newValue;\n forceUpdate({});\n }\n\n return [stateRef.current, setState];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport { useState, useRef, useEffect } from 'react';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport ResizeObserver from 'rc-resize-observer';\nimport useRaf, { useRafState } from '../hooks/useRaf';\nimport TabNode from './TabNode';\nimport useOffsets from '../hooks/useOffsets';\nimport useVisibleRange from '../hooks/useVisibleRange';\nimport OperationNode from './OperationNode';\nimport TabContext from '../TabContext';\nimport useTouchMove from '../hooks/useTouchMove';\nimport useRefs from '../hooks/useRefs';\nimport AddButton from './AddButton';\nimport useSyncState from '../hooks/useSyncState';\n\nvar ExtraContent = function ExtraContent(_ref) {\n var position = _ref.position,\n prefixCls = _ref.prefixCls,\n extra = _ref.extra;\n if (!extra) return null;\n var content; // Parse extra\n\n var assertExtra = {};\n\n if (extra && _typeof(extra) === 'object' && ! /*#__PURE__*/React.isValidElement(extra)) {\n assertExtra = extra;\n } else {\n assertExtra.right = extra;\n }\n\n if (position === 'right') {\n content = assertExtra.right;\n }\n\n if (position === 'left') {\n content = assertExtra.left;\n }\n\n return content ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra-content\")\n }, content) : null;\n};\n\nfunction TabNavList(props, ref) {\n var _classNames;\n\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n\n var className = props.className,\n style = props.style,\n id = props.id,\n animated = props.animated,\n activeKey = props.activeKey,\n rtl = props.rtl,\n extra = props.extra,\n editable = props.editable,\n locale = props.locale,\n tabPosition = props.tabPosition,\n tabBarGutter = props.tabBarGutter,\n children = props.children,\n onTabClick = props.onTabClick,\n onTabScroll = props.onTabScroll;\n var tabsWrapperRef = useRef();\n var tabListRef = useRef();\n var operationsRef = useRef();\n var innerAddButtonRef = useRef();\n\n var _useRefs = useRefs(),\n _useRefs2 = _slicedToArray(_useRefs, 2),\n getBtnRef = _useRefs2[0],\n removeBtnRef = _useRefs2[1];\n\n var tabPositionTopOrBottom = tabPosition === 'top' || tabPosition === 'bottom';\n\n var _useSyncState = useSyncState(0, function (next, prev) {\n if (tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'left' : 'right'\n });\n }\n }),\n _useSyncState2 = _slicedToArray(_useSyncState, 2),\n transformLeft = _useSyncState2[0],\n setTransformLeft = _useSyncState2[1];\n\n var _useSyncState3 = useSyncState(0, function (next, prev) {\n if (!tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'top' : 'bottom'\n });\n }\n }),\n _useSyncState4 = _slicedToArray(_useSyncState3, 2),\n transformTop = _useSyncState4[0],\n setTransformTop = _useSyncState4[1];\n\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n wrapperScrollWidth = _useState2[0],\n setWrapperScrollWidth = _useState2[1];\n\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n wrapperScrollHeight = _useState4[0],\n setWrapperScrollHeight = _useState4[1];\n\n var _useState5 = useState(0),\n _useState6 = _slicedToArray(_useState5, 2),\n wrapperContentWidth = _useState6[0],\n setWrapperContentWidth = _useState6[1];\n\n var _useState7 = useState(0),\n _useState8 = _slicedToArray(_useState7, 2),\n wrapperContentHeight = _useState8[0],\n setWrapperContentHeight = _useState8[1];\n\n var _useState9 = useState(null),\n _useState10 = _slicedToArray(_useState9, 2),\n wrapperWidth = _useState10[0],\n setWrapperWidth = _useState10[1];\n\n var _useState11 = useState(null),\n _useState12 = _slicedToArray(_useState11, 2),\n wrapperHeight = _useState12[0],\n setWrapperHeight = _useState12[1];\n\n var _useState13 = useState(0),\n _useState14 = _slicedToArray(_useState13, 2),\n addWidth = _useState14[0],\n setAddWidth = _useState14[1];\n\n var _useState15 = useState(0),\n _useState16 = _slicedToArray(_useState15, 2),\n addHeight = _useState16[0],\n setAddHeight = _useState16[1];\n\n var _useRafState = useRafState(new Map()),\n _useRafState2 = _slicedToArray(_useRafState, 2),\n tabSizes = _useRafState2[0],\n setTabSizes = _useRafState2[1];\n\n var tabOffsets = useOffsets(tabs, tabSizes, wrapperScrollWidth); // ========================== Util =========================\n\n var operationsHiddenClassName = \"\".concat(prefixCls, \"-nav-operations-hidden\");\n var transformMin = 0;\n var transformMax = 0;\n\n if (!tabPositionTopOrBottom) {\n transformMin = Math.min(0, wrapperHeight - wrapperScrollHeight);\n transformMax = 0;\n } else if (rtl) {\n transformMin = 0;\n transformMax = Math.max(0, wrapperScrollWidth - wrapperWidth);\n } else {\n transformMin = Math.min(0, wrapperWidth - wrapperScrollWidth);\n transformMax = 0;\n }\n\n function alignInRange(value) {\n if (value < transformMin) {\n return transformMin;\n }\n\n if (value > transformMax) {\n return transformMax;\n }\n\n return value;\n } // ========================= Mobile ========================\n\n\n var touchMovingRef = useRef();\n\n var _useState17 = useState(),\n _useState18 = _slicedToArray(_useState17, 2),\n lockAnimation = _useState18[0],\n setLockAnimation = _useState18[1];\n\n function doLockAnimation() {\n setLockAnimation(Date.now());\n }\n\n function clearTouchMoving() {\n window.clearTimeout(touchMovingRef.current);\n }\n\n useTouchMove(tabsWrapperRef, function (offsetX, offsetY) {\n function doMove(setState, offset) {\n setState(function (value) {\n var newValue = alignInRange(value + offset);\n return newValue;\n });\n }\n\n if (tabPositionTopOrBottom) {\n // Skip scroll if place is enough\n if (wrapperWidth >= wrapperScrollWidth) {\n return false;\n }\n\n doMove(setTransformLeft, offsetX);\n } else {\n if (wrapperHeight >= wrapperScrollHeight) {\n return false;\n }\n\n doMove(setTransformTop, offsetY);\n }\n\n clearTouchMoving();\n doLockAnimation();\n return true;\n });\n useEffect(function () {\n clearTouchMoving();\n\n if (lockAnimation) {\n touchMovingRef.current = window.setTimeout(function () {\n setLockAnimation(0);\n }, 100);\n }\n\n return clearTouchMoving;\n }, [lockAnimation]); // ========================= Scroll ========================\n\n function scrollToTab() {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeKey;\n var tabOffset = tabOffsets.get(key) || {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0\n };\n\n if (tabPositionTopOrBottom) {\n // ============ Align with top & bottom ============\n var newTransform = transformLeft; // RTL\n\n if (rtl) {\n if (tabOffset.right < transformLeft) {\n newTransform = tabOffset.right;\n } else if (tabOffset.right + tabOffset.width > transformLeft + wrapperWidth) {\n newTransform = tabOffset.right + tabOffset.width - wrapperWidth;\n }\n } // LTR\n else if (tabOffset.left < -transformLeft) {\n newTransform = -tabOffset.left;\n } else if (tabOffset.left + tabOffset.width > -transformLeft + wrapperWidth) {\n newTransform = -(tabOffset.left + tabOffset.width - wrapperWidth);\n }\n\n setTransformTop(0);\n setTransformLeft(alignInRange(newTransform));\n } else {\n // ============ Align with left & right ============\n var _newTransform = transformTop;\n\n if (tabOffset.top < -transformTop) {\n _newTransform = -tabOffset.top;\n } else if (tabOffset.top + tabOffset.height > -transformTop + wrapperHeight) {\n _newTransform = -(tabOffset.top + tabOffset.height - wrapperHeight);\n }\n\n setTransformLeft(0);\n setTransformTop(alignInRange(_newTransform));\n }\n } // ========================== Tab ==========================\n // Render tab node & collect tab offset\n\n\n var _useVisibleRange = useVisibleRange(tabOffsets, {\n width: wrapperWidth,\n height: wrapperHeight,\n left: transformLeft,\n top: transformTop\n }, {\n width: wrapperContentWidth,\n height: wrapperContentHeight\n }, {\n width: addWidth,\n height: addHeight\n }, _objectSpread(_objectSpread({}, props), {}, {\n tabs: tabs\n })),\n _useVisibleRange2 = _slicedToArray(_useVisibleRange, 2),\n visibleStart = _useVisibleRange2[0],\n visibleEnd = _useVisibleRange2[1];\n\n var tabNodeStyle = {};\n\n if (tabPosition === 'top' || tabPosition === 'bottom') {\n tabNodeStyle[rtl ? 'marginRight' : 'marginLeft'] = tabBarGutter;\n } else {\n tabNodeStyle.marginTop = tabBarGutter;\n }\n\n var tabNodes = tabs.map(function (tab, i) {\n var key = tab.key;\n return /*#__PURE__*/React.createElement(TabNode, {\n id: id,\n prefixCls: prefixCls,\n key: key,\n tab: tab\n /* first node should not have margin left */\n ,\n style: i === 0 ? undefined : tabNodeStyle,\n closable: tab.closable,\n editable: editable,\n active: key === activeKey,\n renderWrapper: children,\n removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n ref: getBtnRef(key),\n onClick: function onClick(e) {\n onTabClick(key, e);\n },\n onRemove: function onRemove() {\n removeBtnRef(key);\n },\n onFocus: function onFocus() {\n scrollToTab(key);\n doLockAnimation();\n\n if (!tabsWrapperRef.current) {\n return;\n } // Focus element will make scrollLeft change which we should reset back\n\n\n if (!rtl) {\n tabsWrapperRef.current.scrollLeft = 0;\n }\n\n tabsWrapperRef.current.scrollTop = 0;\n }\n });\n });\n var onListHolderResize = useRaf(function () {\n var _tabsWrapperRef$curre, _tabsWrapperRef$curre2, _innerAddButtonRef$cu, _innerAddButtonRef$cu2, _operationsRef$curren, _operationsRef$curren2, _tabListRef$current, _tabListRef$current2, _operationsRef$curren3;\n\n // Update wrapper records\n var offsetWidth = ((_tabsWrapperRef$curre = tabsWrapperRef.current) === null || _tabsWrapperRef$curre === void 0 ? void 0 : _tabsWrapperRef$curre.offsetWidth) || 0;\n var offsetHeight = ((_tabsWrapperRef$curre2 = tabsWrapperRef.current) === null || _tabsWrapperRef$curre2 === void 0 ? void 0 : _tabsWrapperRef$curre2.offsetHeight) || 0;\n var newAddWidth = ((_innerAddButtonRef$cu = innerAddButtonRef.current) === null || _innerAddButtonRef$cu === void 0 ? void 0 : _innerAddButtonRef$cu.offsetWidth) || 0;\n var newAddHeight = ((_innerAddButtonRef$cu2 = innerAddButtonRef.current) === null || _innerAddButtonRef$cu2 === void 0 ? void 0 : _innerAddButtonRef$cu2.offsetHeight) || 0;\n var newOperationWidth = ((_operationsRef$curren = operationsRef.current) === null || _operationsRef$curren === void 0 ? void 0 : _operationsRef$curren.offsetWidth) || 0;\n var newOperationHeight = ((_operationsRef$curren2 = operationsRef.current) === null || _operationsRef$curren2 === void 0 ? void 0 : _operationsRef$curren2.offsetHeight) || 0;\n setWrapperWidth(offsetWidth);\n setWrapperHeight(offsetHeight);\n setAddWidth(newAddWidth);\n setAddHeight(newAddHeight);\n var newWrapperScrollWidth = (((_tabListRef$current = tabListRef.current) === null || _tabListRef$current === void 0 ? void 0 : _tabListRef$current.offsetWidth) || 0) - newAddWidth;\n var newWrapperScrollHeight = (((_tabListRef$current2 = tabListRef.current) === null || _tabListRef$current2 === void 0 ? void 0 : _tabListRef$current2.offsetHeight) || 0) - newAddHeight;\n setWrapperScrollWidth(newWrapperScrollWidth);\n setWrapperScrollHeight(newWrapperScrollHeight);\n var isOperationHidden = (_operationsRef$curren3 = operationsRef.current) === null || _operationsRef$curren3 === void 0 ? void 0 : _operationsRef$curren3.className.includes(operationsHiddenClassName);\n setWrapperContentWidth(newWrapperScrollWidth - (isOperationHidden ? 0 : newOperationWidth));\n setWrapperContentHeight(newWrapperScrollHeight - (isOperationHidden ? 0 : newOperationHeight)); // Update buttons records\n\n setTabSizes(function () {\n var newSizes = new Map();\n tabs.forEach(function (_ref2) {\n var key = _ref2.key;\n var btnNode = getBtnRef(key).current;\n\n if (btnNode) {\n newSizes.set(key, {\n width: btnNode.offsetWidth,\n height: btnNode.offsetHeight,\n left: btnNode.offsetLeft,\n top: btnNode.offsetTop\n });\n }\n });\n return newSizes;\n });\n }); // ======================== Dropdown =======================\n\n var startHiddenTabs = tabs.slice(0, visibleStart);\n var endHiddenTabs = tabs.slice(visibleEnd + 1);\n var hiddenTabs = [].concat(_toConsumableArray(startHiddenTabs), _toConsumableArray(endHiddenTabs)); // =================== Link & Operations ===================\n\n var _useState19 = useState(),\n _useState20 = _slicedToArray(_useState19, 2),\n inkStyle = _useState20[0],\n setInkStyle = _useState20[1];\n\n var activeTabOffset = tabOffsets.get(activeKey); // Delay set ink style to avoid remove tab blink\n\n var inkBarRafRef = useRef();\n\n function cleanInkBarRaf() {\n raf.cancel(inkBarRafRef.current);\n }\n\n useEffect(function () {\n var newInkStyle = {};\n\n if (activeTabOffset) {\n if (tabPositionTopOrBottom) {\n if (rtl) {\n newInkStyle.right = activeTabOffset.right;\n } else {\n newInkStyle.left = activeTabOffset.left;\n }\n\n newInkStyle.width = activeTabOffset.width;\n } else {\n newInkStyle.top = activeTabOffset.top;\n newInkStyle.height = activeTabOffset.height;\n }\n }\n\n cleanInkBarRaf();\n inkBarRafRef.current = raf(function () {\n setInkStyle(newInkStyle);\n });\n return cleanInkBarRaf;\n }, [activeTabOffset, tabPositionTopOrBottom, rtl]); // ========================= Effect ========================\n\n useEffect(function () {\n scrollToTab();\n }, [activeKey, activeTabOffset, tabOffsets, tabPositionTopOrBottom]); // Should recalculate when rtl changed\n\n useEffect(function () {\n onListHolderResize();\n }, [rtl, tabBarGutter, activeKey, tabs.map(function (tab) {\n return tab.key;\n }).join('_')]); // ========================= Render ========================\n\n var hasDropdown = !!hiddenTabs.length;\n var wrapPrefix = \"\".concat(prefixCls, \"-nav-wrap\");\n var pingLeft;\n var pingRight;\n var pingTop;\n var pingBottom;\n\n if (tabPositionTopOrBottom) {\n if (rtl) {\n pingRight = transformLeft > 0;\n pingLeft = transformLeft + wrapperWidth < wrapperScrollWidth;\n } else {\n pingLeft = transformLeft < 0;\n pingRight = -transformLeft + wrapperWidth < wrapperScrollWidth;\n }\n } else {\n pingTop = transformTop < 0;\n pingBottom = -transformTop + wrapperHeight < wrapperScrollHeight;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n role: \"tablist\",\n className: classNames(\"\".concat(prefixCls, \"-nav\"), className),\n style: style,\n onKeyDown: function onKeyDown() {\n // No need animation when use keyboard\n doLockAnimation();\n }\n }, /*#__PURE__*/React.createElement(ExtraContent, {\n position: \"left\",\n extra: extra,\n prefixCls: prefixCls\n }), /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(wrapPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-left\"), pingLeft), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-right\"), pingRight), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-top\"), pingTop), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-bottom\"), pingBottom), _classNames)),\n ref: tabsWrapperRef\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: tabListRef,\n className: \"\".concat(prefixCls, \"-nav-list\"),\n style: {\n transform: \"translate(\".concat(transformLeft, \"px, \").concat(transformTop, \"px)\"),\n transition: lockAnimation ? 'none' : undefined\n }\n }, tabNodes, /*#__PURE__*/React.createElement(AddButton, {\n ref: innerAddButtonRef,\n prefixCls: prefixCls,\n locale: locale,\n editable: editable,\n style: _objectSpread(_objectSpread({}, tabNodes.length === 0 ? undefined : tabNodeStyle), {}, {\n visibility: hasDropdown ? 'hidden' : null\n })\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-ink-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-ink-bar-animated\"), animated.inkBar)),\n style: inkStyle\n }))))), /*#__PURE__*/React.createElement(OperationNode, _extends({}, props, {\n ref: operationsRef,\n prefixCls: prefixCls,\n tabs: hiddenTabs,\n className: !hasDropdown && operationsHiddenClassName\n })), /*#__PURE__*/React.createElement(ExtraContent, {\n position: \"right\",\n extra: extra,\n prefixCls: prefixCls\n }));\n /* eslint-enable */\n}\n\nexport default /*#__PURE__*/React.forwardRef(TabNavList);","import * as React from 'react';\nimport { useRef } from 'react';\nexport default function useRefs() {\n var cacheRefs = useRef(new Map());\n\n function getRef(key) {\n if (!cacheRefs.current.has(key)) {\n cacheRefs.current.set(key, /*#__PURE__*/React.createRef());\n }\n\n return cacheRefs.current.get(key);\n }\n\n function removeRef(key) {\n cacheRefs.current.delete(key);\n }\n\n return [getRef, removeRef];\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport TabContext from '../TabContext';\nexport default function TabPanelList(_ref) {\n var id = _ref.id,\n activeKey = _ref.activeKey,\n animated = _ref.animated,\n tabPosition = _ref.tabPosition,\n rtl = _ref.rtl,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane;\n\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n\n var tabPaneAnimated = animated.tabPane;\n var activeIndex = tabs.findIndex(function (tab) {\n return tab.key === activeKey;\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content-holder\"))\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content\"), \"\".concat(prefixCls, \"-content-\").concat(tabPosition), _defineProperty({}, \"\".concat(prefixCls, \"-content-animated\"), tabPaneAnimated)),\n style: activeIndex && tabPaneAnimated ? _defineProperty({}, rtl ? 'marginRight' : 'marginLeft', \"-\".concat(activeIndex, \"00%\")) : null\n }, tabs.map(function (tab) {\n return /*#__PURE__*/React.cloneElement(tab.node, {\n key: tab.key,\n prefixCls: prefixCls,\n tabKey: tab.key,\n id: id,\n animated: tabPaneAnimated,\n active: tab.key === activeKey,\n destroyInactiveTabPane: destroyInactiveTabPane\n });\n })));\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nexport default function TabPane(_ref) {\n var prefixCls = _ref.prefixCls,\n forceRender = _ref.forceRender,\n className = _ref.className,\n style = _ref.style,\n id = _ref.id,\n active = _ref.active,\n animated = _ref.animated,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane,\n tabKey = _ref.tabKey,\n children = _ref.children;\n\n var _React$useState = React.useState(forceRender),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n visited = _React$useState2[0],\n setVisited = _React$useState2[1];\n\n React.useEffect(function () {\n if (active) {\n setVisited(true);\n } else if (destroyInactiveTabPane) {\n setVisited(false);\n }\n }, [active, destroyInactiveTabPane]);\n var mergedStyle = {};\n\n if (!active) {\n if (animated) {\n mergedStyle.visibility = 'hidden';\n mergedStyle.height = 0;\n mergedStyle.overflowY = 'hidden';\n } else {\n mergedStyle.display = 'none';\n }\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id && \"\".concat(id, \"-panel-\").concat(tabKey),\n role: \"tabpanel\",\n tabIndex: active ? 0 : -1,\n \"aria-labelledby\": id && \"\".concat(id, \"-tab-\").concat(tabKey),\n \"aria-hidden\": !active,\n style: _objectSpread(_objectSpread({}, mergedStyle), style),\n className: classNames(\"\".concat(prefixCls, \"-tabpane\"), active && \"\".concat(prefixCls, \"-tabpane-active\"), className)\n }, (active || visited || forceRender) && children);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"children\", \"direction\", \"activeKey\", \"defaultActiveKey\", \"editable\", \"animated\", \"tabPosition\", \"tabBarGutter\", \"tabBarStyle\", \"tabBarExtraContent\", \"locale\", \"moreIcon\", \"moreTransitionName\", \"destroyInactiveTabPane\", \"renderTabBar\", \"onChange\", \"onTabClick\", \"onTabScroll\"];\n// Accessibility https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport TabNavList from './TabNavList';\nimport TabPanelList from './TabPanelList';\nimport TabPane from './TabPanelList/TabPane';\nimport TabContext from './TabContext';\n/**\n * Should added antd:\n * - type\n *\n * Removed:\n * - onNextClick\n * - onPrevClick\n * - keyboard\n */\n// Used for accessibility\n\nvar uuid = 0;\n\nfunction parseTabList(children) {\n return toArray(children).map(function (node) {\n if ( /*#__PURE__*/React.isValidElement(node)) {\n var key = node.key !== undefined ? String(node.key) : undefined;\n return _objectSpread(_objectSpread({\n key: key\n }, node.props), {}, {\n node: node\n });\n }\n\n return null;\n }).filter(function (tab) {\n return tab;\n });\n}\n\nfunction Tabs(_ref, ref) {\n var _classNames;\n\n var id = _ref.id,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-tabs' : _ref$prefixCls,\n className = _ref.className,\n children = _ref.children,\n direction = _ref.direction,\n activeKey = _ref.activeKey,\n defaultActiveKey = _ref.defaultActiveKey,\n editable = _ref.editable,\n _ref$animated = _ref.animated,\n animated = _ref$animated === void 0 ? {\n inkBar: true,\n tabPane: false\n } : _ref$animated,\n _ref$tabPosition = _ref.tabPosition,\n tabPosition = _ref$tabPosition === void 0 ? 'top' : _ref$tabPosition,\n tabBarGutter = _ref.tabBarGutter,\n tabBarStyle = _ref.tabBarStyle,\n tabBarExtraContent = _ref.tabBarExtraContent,\n locale = _ref.locale,\n moreIcon = _ref.moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane,\n renderTabBar = _ref.renderTabBar,\n onChange = _ref.onChange,\n onTabClick = _ref.onTabClick,\n onTabScroll = _ref.onTabScroll,\n restProps = _objectWithoutProperties(_ref, _excluded);\n\n var tabs = parseTabList(children);\n var rtl = direction === 'rtl';\n var mergedAnimated;\n\n if (animated === false) {\n mergedAnimated = {\n inkBar: false,\n tabPane: false\n };\n } else if (animated === true) {\n mergedAnimated = {\n inkBar: true,\n tabPane: true\n };\n } else {\n mergedAnimated = _objectSpread({\n inkBar: true,\n tabPane: false\n }, _typeof(animated) === 'object' ? animated : {});\n } // ======================== Mobile ========================\n\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n mobile = _useState2[0],\n setMobile = _useState2[1];\n\n useEffect(function () {\n // Only update on the client side\n setMobile(isMobile());\n }, []); // ====================== Active Key ======================\n\n var _useMergedState = useMergedState(function () {\n var _tabs$;\n\n return (_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key;\n }, {\n value: activeKey,\n defaultValue: defaultActiveKey\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedActiveKey = _useMergedState2[0],\n setMergedActiveKey = _useMergedState2[1];\n\n var _useState3 = useState(function () {\n return tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n activeIndex = _useState4[0],\n setActiveIndex = _useState4[1]; // Reset active key if not exist anymore\n\n\n useEffect(function () {\n var newActiveIndex = tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n\n if (newActiveIndex === -1) {\n var _tabs$newActiveIndex;\n\n newActiveIndex = Math.max(0, Math.min(activeIndex, tabs.length - 1));\n setMergedActiveKey((_tabs$newActiveIndex = tabs[newActiveIndex]) === null || _tabs$newActiveIndex === void 0 ? void 0 : _tabs$newActiveIndex.key);\n }\n\n setActiveIndex(newActiveIndex);\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), mergedActiveKey, activeIndex]); // ===================== Accessibility ====================\n\n var _useMergedState3 = useMergedState(null, {\n value: id\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedId = _useMergedState4[0],\n setMergedId = _useMergedState4[1];\n\n var mergedTabPosition = tabPosition;\n\n if (mobile && !['left', 'right'].includes(tabPosition)) {\n mergedTabPosition = 'top';\n } // Async generate id to avoid ssr mapping failed\n\n\n useEffect(function () {\n if (!id) {\n setMergedId(\"rc-tabs-\".concat(process.env.NODE_ENV === 'test' ? 'test' : uuid));\n uuid += 1;\n }\n }, []); // ======================== Events ========================\n\n function onInternalTabClick(key, e) {\n onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(key, e);\n setMergedActiveKey(key);\n onChange === null || onChange === void 0 ? void 0 : onChange(key);\n } // ======================== Render ========================\n\n\n var sharedProps = {\n id: mergedId,\n activeKey: mergedActiveKey,\n animated: mergedAnimated,\n tabPosition: mergedTabPosition,\n rtl: rtl,\n mobile: mobile\n };\n var tabNavBar;\n\n var tabNavBarProps = _objectSpread(_objectSpread({}, sharedProps), {}, {\n editable: editable,\n locale: locale,\n moreIcon: moreIcon,\n moreTransitionName: moreTransitionName,\n tabBarGutter: tabBarGutter,\n onTabClick: onInternalTabClick,\n onTabScroll: onTabScroll,\n extra: tabBarExtraContent,\n style: tabBarStyle,\n panes: children\n });\n\n if (renderTabBar) {\n tabNavBar = renderTabBar(tabNavBarProps, TabNavList);\n } else {\n tabNavBar = /*#__PURE__*/React.createElement(TabNavList, tabNavBarProps);\n }\n\n return /*#__PURE__*/React.createElement(TabContext.Provider, {\n value: {\n tabs: tabs,\n prefixCls: prefixCls\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n id: id,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(mergedTabPosition), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-mobile\"), mobile), _defineProperty(_classNames, \"\".concat(prefixCls, \"-editable\"), editable), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), rtl), _classNames), className)\n }, restProps), tabNavBar, /*#__PURE__*/React.createElement(TabPanelList, _extends({\n destroyInactiveTabPane: destroyInactiveTabPane\n }, sharedProps, {\n animated: mergedAnimated\n }))));\n}\n\nvar ForwardTabs = /*#__PURE__*/React.forwardRef(Tabs);\nForwardTabs.TabPane = TabPane;\nexport default ForwardTabs;","import Tabs from './Tabs';\nimport TabPane from './TabPanelList/TabPane';\nexport { TabPane };\nexport default Tabs;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport RcTabs, { TabPane } from 'rc-tabs';\nimport classNames from 'classnames';\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport PlusOutlined from \"@ant-design/icons/es/icons/PlusOutlined\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport devWarning from '../_util/devWarning';\nimport { ConfigContext } from '../config-provider';\nimport SizeContext from '../config-provider/SizeContext';\n\nfunction Tabs(_a) {\n var type = _a.type,\n className = _a.className,\n propSize = _a.size,\n _onEdit = _a.onEdit,\n hideAdd = _a.hideAdd,\n centered = _a.centered,\n addIcon = _a.addIcon,\n props = __rest(_a, [\"type\", \"className\", \"size\", \"onEdit\", \"hideAdd\", \"centered\", \"addIcon\"]);\n\n var customizePrefixCls = props.prefixCls,\n _props$moreIcon = props.moreIcon,\n moreIcon = _props$moreIcon === void 0 ? /*#__PURE__*/React.createElement(EllipsisOutlined, null) : _props$moreIcon;\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n\n var prefixCls = getPrefixCls('tabs', customizePrefixCls);\n var editable;\n\n if (type === 'editable-card') {\n editable = {\n onEdit: function onEdit(editType, _ref) {\n var key = _ref.key,\n event = _ref.event;\n _onEdit === null || _onEdit === void 0 ? void 0 : _onEdit(editType === 'add' ? event : key, editType);\n },\n removeIcon: /*#__PURE__*/React.createElement(CloseOutlined, null),\n addIcon: addIcon || /*#__PURE__*/React.createElement(PlusOutlined, null),\n showAdd: hideAdd !== true\n };\n }\n\n var rootPrefixCls = getPrefixCls();\n devWarning(!('onPrevClick' in props) && !('onNextClick' in props), 'Tabs', '`onPrevClick` and `onNextClick` has been removed. Please use `onTabScroll` instead.');\n return /*#__PURE__*/React.createElement(SizeContext.Consumer, null, function (contextSize) {\n var _classNames;\n\n var size = propSize !== undefined ? propSize : contextSize;\n return /*#__PURE__*/React.createElement(RcTabs, _extends({\n direction: direction,\n moreTransitionName: \"\".concat(rootPrefixCls, \"-slide-up\")\n }, props, {\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), size), _defineProperty(_classNames, \"\".concat(prefixCls, \"-card\"), ['card', 'editable-card'].includes(type)), _defineProperty(_classNames, \"\".concat(prefixCls, \"-editable-card\"), type === 'editable-card'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-centered\"), centered), _classNames), className),\n editable: editable,\n moreIcon: moreIcon,\n prefixCls: prefixCls\n }));\n });\n}\n\nTabs.TabPane = TabPane;\nexport default Tabs;","// This icon file is generated automatically.\nvar PlusOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"defs\", \"attrs\": {}, \"children\": [{ \"tag\": \"style\", \"attrs\": {} }] }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\" } }] }, \"name\": \"plus\", \"theme\": \"outlined\" };\nexport default PlusOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport PlusOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar PlusOutlined = function PlusOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: PlusOutlinedSvg\n }));\n};\n\nPlusOutlined.displayName = 'PlusOutlined';\nexport default /*#__PURE__*/React.forwardRef(PlusOutlined);"],"sourceRoot":""}