canyonapp 0.0.2 → 0.0.3
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.
- package/dist/assets/{PlusOutlined-BKBEnSjP.js → PlusOutlined-sY_ekDgf.js} +2 -2
- package/dist/assets/{PlusOutlined-BKBEnSjP.js.map → PlusOutlined-sY_ekDgf.js.map} +1 -1
- package/dist/assets/{Primary-kRxOAMo2.js → Primary-BQrD5zmy.js} +2 -2
- package/dist/assets/{Primary-kRxOAMo2.js.map → Primary-BQrD5zmy.js.map} +1 -1
- package/dist/assets/{SearchOutlined-Gotzyolm.js → SearchOutlined-BbFgLxbH.js} +2 -2
- package/dist/assets/{SearchOutlined-Gotzyolm.js.map → SearchOutlined-BbFgLxbH.js.map} +1 -1
- package/dist/assets/{_cr_-bWnXW3i3.js → _cr_-C-b_iODB.js} +2 -2
- package/dist/assets/{_cr_-bWnXW3i3.js.map → _cr_-C-b_iODB.js.map} +1 -1
- package/dist/assets/{_repo_-wV83V_Ao.js → _repo_-67VixA7I.js} +3 -3
- package/dist/assets/{_repo_-wV83V_Ao.js.map → _repo_-67VixA7I.js.map} +1 -1
- package/dist/assets/{avatar-U3eONG6p.js → avatar-mH_YkdK6.js} +2 -2
- package/dist/assets/{avatar-U3eONG6p.js.map → avatar-mH_YkdK6.js.map} +1 -1
- package/dist/assets/{card-Dlwgxpi6.js → card-Bjmmjg43.js} +2 -2
- package/dist/assets/{card-Dlwgxpi6.js.map → card-Bjmmjg43.js.map} +1 -1
- package/dist/assets/{commits-BduDqkt0.js → commits-DYkmJ-uz.js} +2 -2
- package/dist/assets/{commits-BduDqkt0.js.map → commits-DYkmJ-uz.js.map} +1 -1
- package/dist/assets/{compare-Cw69owfd.js → compare-DoPa_nKN.js} +2 -2
- package/dist/assets/{compare-Cw69owfd.js.map → compare-DoPa_nKN.js.map} +1 -1
- package/dist/assets/{cssMode-pdWk0ODS.js → cssMode-CdL5sipT.js} +2 -2
- package/dist/assets/{cssMode-pdWk0ODS.js.map → cssMode-CdL5sipT.js.map} +1 -1
- package/dist/assets/{database-Do-CAKK7.js → database-DMgJWEa5.js} +2 -2
- package/dist/assets/{database-Do-CAKK7.js.map → database-DMgJWEa5.js.map} +1 -1
- package/dist/assets/{dropdown-BZRTBpNN.js → dropdown-CRMju3hp.js} +2 -2
- package/dist/assets/{dropdown-BZRTBpNN.js.map → dropdown-CRMju3hp.js.map} +1 -1
- package/dist/assets/{form-DIHIzAn0.js → form-agjas9M8.js} +2 -2
- package/dist/assets/{form-DIHIzAn0.js.map → form-agjas9M8.js.map} +1 -1
- package/dist/assets/{htmlMode-BJkP6ANp.js → htmlMode-DL-08zYm.js} +2 -2
- package/dist/assets/{htmlMode-BJkP6ANp.js.map → htmlMode-DL-08zYm.js.map} +1 -1
- package/dist/assets/{index-CmpgusTt.js → index-Buo2eS-Q.js} +6 -6
- package/dist/assets/{index-CmpgusTt.js.map → index-Buo2eS-Q.js.map} +1 -1
- package/dist/assets/{infra-q74EDR4f.js → infra-BiHKZ7O6.js} +2 -2
- package/dist/assets/{infra-q74EDR4f.js.map → infra-BiHKZ7O6.js.map} +1 -1
- package/dist/assets/{jsonMode-YEDssj9h.js → jsonMode-BgUWdwoZ.js} +2 -2
- package/dist/assets/{jsonMode-YEDssj9h.js.map → jsonMode-BgUWdwoZ.js.map} +1 -1
- package/dist/assets/{login--q88da0J.js → login-BIxW6k10.js} +2 -2
- package/dist/assets/{login--q88da0J.js.map → login-BIxW6k10.js.map} +1 -1
- package/dist/assets/{login-D0kwNFIZ.js → login-CeBa1WeH.js} +1 -1
- package/dist/assets/{new-DLzTRflL.js → new-urCghqqi.js} +2 -2
- package/dist/assets/{new-DLzTRflL.js.map → new-urCghqqi.js.map} +1 -1
- package/dist/assets/{popconfirm-hdbKlzM8.js → popconfirm-XB7pULHq.js} +2 -2
- package/dist/assets/{popconfirm-hdbKlzM8.js.map → popconfirm-XB7pULHq.js.map} +1 -1
- package/dist/assets/{projects-BQQMe3Sa.js → projects-DpKv9IY6.js} +2 -2
- package/dist/assets/{projects-BQQMe3Sa.js.map → projects-DpKv9IY6.js.map} +1 -1
- package/dist/assets/{request-DBcySI71.js → request-OsR-2ZDW.js} +2 -2
- package/dist/assets/{request-DBcySI71.js.map → request-OsR-2ZDW.js.map} +1 -1
- package/dist/assets/{settings-FOAFhNrB.js → settings-CTtlAnDi.js} +2 -2
- package/dist/assets/{settings-FOAFhNrB.js.map → settings-CTtlAnDi.js.map} +1 -1
- package/dist/assets/{settings-DRwbAfEP.js → settings-dgWrzHRY.js} +2 -2
- package/dist/assets/{settings-DRwbAfEP.js.map → settings-dgWrzHRY.js.map} +1 -1
- package/dist/assets/{skeleton-C7XdtHwK.js → skeleton-Cxf0Yj2M.js} +2 -2
- package/dist/assets/{skeleton-C7XdtHwK.js.map → skeleton-Cxf0Yj2M.js.map} +1 -1
- package/dist/assets/{tabs-QwRshmnh.js → tabs-DfQHMKH8.js} +2 -2
- package/dist/assets/{tabs-QwRshmnh.js.map → tabs-DfQHMKH8.js.map} +1 -1
- package/dist/assets/{tsMode-B8Haz2NH.js → tsMode-B2vhKML7.js} +2 -2
- package/dist/assets/{tsMode-B8Haz2NH.js.map → tsMode-B2vhKML7.js.map} +1 -1
- package/dist/index.html +6 -6
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-QwRshmnh.js","names":["raf","DEFAULT_SIZE","_extends","Menu","MenuItem","Dropdown","_extends","TabContext","ResizeObserver","OperationNode","TabPane","_extends","TabContext","CSSMotion","TabPane","useAnimateConfig","Tabs","useAnimateConfig","isMobile","TabContext","Tabs","mergeToken","useStyle","CloseOutlined","PlusOutlined","RcTabs","EllipsisOutlined"],"sources":["../../node_modules/.pnpm/is-mobile@5.0.0/node_modules/is-mobile/index.js","../../node_modules/.pnpm/@rc-component+util@1.10.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/util/es/isMobile.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabContext.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useIndicator.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useOffsets.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useSyncState.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useTouchMove.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useUpdate.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useVisibleRange.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/util.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/AddButton.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/ExtraContent.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/OperationNode.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/TabNode.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/index.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/Wrapper.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabPanelList/TabPane.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabPanelList/index.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useAnimateConfig.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/Tabs.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/index.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/hooks/useAnimateConfig.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/hooks/useLegacyItems.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/style/motion.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/style/index.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/TabPane.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/index.js"],"sourcesContent":["'use strict'\n\nmodule.exports = isMobile\nmodule.exports.isMobile = isMobile\nmodule.exports.default = isMobile\n\nconst mobileRE = /(android|bb\\d+|meego).+mobile|armv7l|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|redmi|series[46]0|samsungbrowser.*mobile|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i\nconst notMobileRE = /CrOS/\n\nconst tabletRE = /android|ipad|playbook|silk/i\n\nfunction isMobile (opts) {\n if (!opts) opts = {}\n let ua = opts.ua\n if (!ua && typeof navigator !== 'undefined') ua = navigator.userAgent\n if (ua && ua.headers && typeof ua.headers['user-agent'] === 'string') {\n ua = ua.headers['user-agent']\n }\n if (typeof ua !== 'string') return false\n\n let result =\n (mobileRE.test(ua) && !notMobileRE.test(ua)) ||\n (!!opts.tablet && tabletRE.test(ua))\n\n if (\n !result &&\n opts.tablet &&\n opts.featureDetect &&\n navigator &&\n navigator.maxTouchPoints > 1 &&\n ua.indexOf('Macintosh') !== -1 &&\n ua.indexOf('Safari') !== -1\n ) {\n result = true\n }\n\n return result\n}\n","import isMobile from 'is-mobile';\nlet cached;\nconst getIsMobile = () => {\n if (typeof cached === 'undefined') {\n cached = isMobile();\n }\n return cached;\n};\nexport default getIsMobile;","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import raf from \"@rc-component/util/es/raf\";\nimport React, { useEffect, useRef, useState } from 'react';\nconst useIndicator = options => {\n const {\n activeTabOffset,\n horizontal,\n rtl,\n indicator = {}\n } = options;\n const {\n size,\n align = 'center'\n } = indicator;\n const [inkStyle, setInkStyle] = useState();\n const inkBarRafRef = useRef();\n const getLength = React.useCallback(origin => {\n if (typeof size === 'function') {\n return size(origin);\n }\n if (typeof size === 'number') {\n return size;\n }\n return origin;\n }, [size]);\n\n // Delay set ink style to avoid remove tab blink\n function cleanInkBarRaf() {\n raf.cancel(inkBarRafRef.current);\n }\n useEffect(() => {\n const newInkStyle = {};\n if (activeTabOffset) {\n if (horizontal) {\n newInkStyle.width = getLength(activeTabOffset.width);\n const key = rtl ? 'right' : 'left';\n if (align === 'start') {\n newInkStyle[key] = activeTabOffset[key];\n }\n if (align === 'center') {\n newInkStyle[key] = activeTabOffset[key] + activeTabOffset.width / 2;\n newInkStyle.transform = rtl ? 'translateX(50%)' : 'translateX(-50%)';\n }\n if (align === 'end') {\n newInkStyle[key] = activeTabOffset[key] + activeTabOffset.width;\n newInkStyle.transform = 'translateX(-100%)';\n }\n } else {\n newInkStyle.height = getLength(activeTabOffset.height);\n if (align === 'start') {\n newInkStyle.top = activeTabOffset.top;\n }\n if (align === 'center') {\n newInkStyle.top = activeTabOffset.top + activeTabOffset.height / 2;\n newInkStyle.transform = 'translateY(-50%)';\n }\n if (align === 'end') {\n newInkStyle.top = activeTabOffset.top + activeTabOffset.height;\n newInkStyle.transform = 'translateY(-100%)';\n }\n }\n }\n cleanInkBarRaf();\n inkBarRafRef.current = raf(() => {\n // Avoid jitter caused by tiny numerical differences\n // fix https://github.com/ant-design/ant-design/issues/53378\n const isEqual = inkStyle && newInkStyle && Object.keys(newInkStyle).every(key => {\n const newValue = newInkStyle[key];\n const oldValue = inkStyle[key];\n return typeof newValue === 'number' && typeof oldValue === 'number' ? Math.round(newValue) === Math.round(oldValue) : newValue === oldValue;\n });\n if (!isEqual) {\n setInkStyle(newInkStyle);\n }\n });\n return cleanInkBarRaf;\n }, [JSON.stringify(activeTabOffset), horizontal, rtl, align, getLength]);\n return {\n style: inkStyle\n };\n};\nexport default useIndicator;","import { useMemo } from 'react';\nconst 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(() => {\n const map = new Map();\n const lastOffset = tabSizes.get(tabs[0]?.key) || DEFAULT_SIZE;\n const rightOffset = lastOffset.left + lastOffset.width;\n for (let i = 0; i < tabs.length; i += 1) {\n const {\n key\n } = tabs[i];\n let data = tabSizes.get(key);\n\n // Reuse last one when not exist yet\n if (!data) {\n data = tabSizes.get(tabs[i - 1]?.key) || DEFAULT_SIZE;\n }\n const entity = map.get(key) || {\n ...data\n };\n\n // Right\n entity.right = rightOffset - entity.left - entity.width;\n\n // Update entity\n map.set(key, entity);\n }\n return map;\n }, [tabs.map(tab => tab.key).join('_'), tabSizes, holderScrollWidth]);\n}","import * as React from 'react';\nexport default function useSyncState(defaultState, onChange) {\n const stateRef = React.useRef(defaultState);\n const [, forceUpdate] = React.useState({});\n function setState(updater) {\n const newValue = typeof updater === 'function' ? updater(stateRef.current) : updater;\n if (newValue !== stateRef.current) {\n onChange(newValue, stateRef.current);\n }\n stateRef.current = newValue;\n forceUpdate({});\n }\n return [stateRef.current, setState];\n}","import * as React from 'react';\nimport { useRef, useState } from 'react';\nconst MIN_SWIPE_DISTANCE = 0.1;\nconst STOP_SWIPE_DISTANCE = 0.01;\nconst REFRESH_INTERVAL = 20;\nconst SPEED_OFF_MULTIPLE = 0.995 ** REFRESH_INTERVAL;\n\n// ================================= Hook =================================\nexport default function useTouchMove(ref, onOffset) {\n const [touchPosition, setTouchPosition] = useState();\n const [lastTimestamp, setLastTimestamp] = useState(0);\n const [lastTimeDiff, setLastTimeDiff] = useState(0);\n const [lastOffset, setLastOffset] = useState();\n const motionRef = useRef();\n\n // ========================= Events =========================\n // >>> Touch events\n function onTouchStart(e) {\n const {\n screenX,\n screenY\n } = e.touches[0];\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n window.clearInterval(motionRef.current);\n }\n function onTouchMove(e) {\n if (!touchPosition) return;\n\n // e.preventDefault();\n const {\n screenX,\n screenY\n } = e.touches[0];\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n const offsetX = screenX - touchPosition.x;\n const offsetY = screenY - touchPosition.y;\n onOffset(offsetX, offsetY);\n const now = Date.now();\n setLastTimestamp(now);\n setLastTimeDiff(now - lastTimestamp);\n setLastOffset({\n x: offsetX,\n y: offsetY\n });\n }\n function onTouchEnd() {\n if (!touchPosition) return;\n setTouchPosition(null);\n setLastOffset(null);\n\n // Swipe if needed\n if (lastOffset) {\n const distanceX = lastOffset.x / lastTimeDiff;\n const distanceY = lastOffset.y / lastTimeDiff;\n const absX = Math.abs(distanceX);\n const absY = Math.abs(distanceY);\n\n // Skip swipe if low distance\n if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) return;\n let currentX = distanceX;\n let currentY = distanceY;\n motionRef.current = window.setInterval(() => {\n if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) {\n window.clearInterval(motionRef.current);\n return;\n }\n currentX *= SPEED_OFF_MULTIPLE;\n currentY *= SPEED_OFF_MULTIPLE;\n onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL);\n }, REFRESH_INTERVAL);\n }\n }\n\n // >>> Wheel event\n const lastWheelDirectionRef = useRef();\n function onWheel(e) {\n const {\n deltaX,\n deltaY\n } = e;\n\n // Convert both to x & y since wheel only happened on PC\n let mixed = 0;\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\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 if (onOffset(-mixed, -mixed)) {\n e.preventDefault();\n }\n }\n\n // ========================= Effect =========================\n const touchEventsRef = useRef(null);\n touchEventsRef.current = {\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n onWheel\n };\n React.useEffect(() => {\n function onProxyTouchStart(e) {\n touchEventsRef.current.onTouchStart(e);\n }\n function onProxyTouchMove(e) {\n touchEventsRef.current.onTouchMove(e);\n }\n function onProxyTouchEnd(e) {\n touchEventsRef.current.onTouchEnd(e);\n }\n function onProxyWheel(e) {\n touchEventsRef.current.onWheel(e);\n }\n document.addEventListener('touchmove', onProxyTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', onProxyTouchEnd, {\n passive: true\n });\n\n // No need to clean up since element removed\n ref.current.addEventListener('touchstart', onProxyTouchStart, {\n passive: true\n });\n ref.current.addEventListener('wheel', onProxyWheel, {\n passive: false\n });\n return () => {\n document.removeEventListener('touchmove', onProxyTouchMove);\n document.removeEventListener('touchend', onProxyTouchEnd);\n };\n }, []);\n}","import { useLayoutUpdateEffect } from \"@rc-component/util/es/hooks/useLayoutEffect\";\nimport { useRef, useState } from 'react';\n\n/**\n * Help to merge callback with `useLayoutEffect`.\n * One time will only trigger once.\n */\nexport default function useUpdate(callback) {\n const [count, setCount] = useState(0);\n const effectRef = useRef(0);\n const callbackRef = useRef();\n callbackRef.current = callback;\n\n // Trigger on `useLayoutEffect`\n useLayoutUpdateEffect(() => {\n callbackRef.current?.();\n }, [count]);\n\n // Trigger to update count\n return () => {\n if (effectRef.current !== count) {\n return;\n }\n effectRef.current += 1;\n setCount(effectRef.current);\n };\n}\nexport function useUpdateState(defaultState) {\n const batchRef = useRef([]);\n const [, forceUpdate] = useState({});\n const state = useRef(typeof defaultState === 'function' ? defaultState() : defaultState);\n const flushUpdate = useUpdate(() => {\n let current = state.current;\n batchRef.current.forEach(callback => {\n current = callback(current);\n });\n batchRef.current = [];\n state.current = current;\n forceUpdate({});\n });\n function updater(callback) {\n batchRef.current.push(callback);\n flushUpdate();\n }\n return [state.current, updater];\n}","import { useMemo } from 'react';\nconst DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0\n};\nexport default function useVisibleRange(tabOffsets, visibleTabContentValue, transform, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, {\n tabs,\n tabPosition,\n rtl\n}) {\n let charUnit;\n let position;\n let transformSize;\n if (['top', 'bottom'].includes(tabPosition)) {\n charUnit = 'width';\n position = rtl ? 'right' : 'left';\n transformSize = Math.abs(transform);\n } else {\n charUnit = 'height';\n position = 'top';\n transformSize = -transform;\n }\n return useMemo(() => {\n if (!tabs.length) {\n return [0, 0];\n }\n const len = tabs.length;\n let endIndex = len;\n for (let i = 0; i < len; i += 1) {\n const offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;\n if (Math.floor(offset[position] + offset[charUnit]) > Math.floor(transformSize + visibleTabContentValue)) {\n endIndex = i - 1;\n break;\n }\n }\n let startIndex = 0;\n for (let i = len - 1; i >= 0; i -= 1) {\n const offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;\n if (offset[position] < transformSize) {\n startIndex = i + 1;\n break;\n }\n }\n return startIndex > endIndex ? [0, -1] : [startIndex, endIndex];\n }, [tabOffsets, visibleTabContentValue, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, transformSize, tabPosition, tabs.map(tab => tab.key).join('_'), rtl]);\n}","/**\n * We trade Map as deps which may change with same value but different ref object.\n * We should make it as hash for deps\n * */\nexport function stringify(obj) {\n let tgt;\n if (obj instanceof Map) {\n tgt = {};\n obj.forEach((v, k) => {\n tgt[k] = v;\n });\n } else {\n tgt = obj;\n }\n return JSON.stringify(tgt);\n}\nconst RC_TABS_DOUBLE_QUOTE = 'TABS_DQ';\nexport function genDataNodeKey(key) {\n return String(key).replace(/\"/g, RC_TABS_DOUBLE_QUOTE);\n}\nexport function getRemovable(closable, closeIcon, editable, disabled) {\n if (\n // Only editable tabs can be removed\n !editable ||\n // Tabs cannot be removed when disabled\n disabled ||\n // closable is false\n closable === false ||\n // If closable is undefined, the remove button should be hidden when closeIcon is null or false\n closable === undefined && (closeIcon === false || closeIcon === null)) {\n return false;\n }\n return true;\n}","import * as React from 'react';\nconst AddButton = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n prefixCls,\n editable,\n locale,\n style\n } = props;\n if (!editable || editable.showAdd === false) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"button\", {\n ref: ref,\n type: \"button\",\n className: `${prefixCls}-nav-add`,\n style: style,\n \"aria-label\": locale?.addAriaLabel || 'Add tab',\n onClick: event => {\n editable.onEdit('add', {\n event\n });\n }\n }, editable.addIcon || '+');\n});\nexport default AddButton;","import * as React from 'react';\nconst ExtraContent = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n position,\n prefixCls,\n extra\n } = props;\n if (!extra) {\n return null;\n }\n let content;\n\n // Parse extra\n let assertExtra = {};\n if (typeof extra === 'object' && ! /*#__PURE__*/React.isValidElement(extra)) {\n assertExtra = extra;\n } else {\n assertExtra.right = extra;\n }\n if (position === 'right') {\n content = assertExtra.right;\n }\n if (position === 'left') {\n content = assertExtra.left;\n }\n return content ? /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-extra-content`,\n ref: ref\n }, content) : null;\n});\nif (process.env.NODE_ENV !== 'production') {\n ExtraContent.displayName = 'ExtraContent';\n}\nexport default ExtraContent;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport { clsx } from 'clsx';\nimport Dropdown from '@rc-component/dropdown';\nimport Menu, { MenuItem } from '@rc-component/menu';\nimport KeyCode from \"@rc-component/util/es/KeyCode\";\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { getRemovable } from \"../util\";\nimport AddButton from \"./AddButton\";\nconst OperationNode = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n prefixCls,\n id,\n tabs,\n locale,\n mobile,\n more: moreProps = {},\n style,\n className,\n editable,\n tabBarGutter,\n rtl,\n removeAriaLabel,\n onTabClick,\n getPopupContainer,\n popupClassName,\n popupStyle\n } = props;\n // ======================== Dropdown ========================\n const [open, setOpen] = useState(false);\n const [selectedKey, setSelectedKey] = useState(null);\n const {\n icon: moreIcon = 'More'\n } = moreProps;\n const popupId = `${id}-more-popup`;\n const dropdownPrefix = `${prefixCls}-dropdown`;\n const selectedItemId = selectedKey !== null ? `${popupId}-${selectedKey}` : null;\n const dropdownAriaLabel = locale?.dropdownAriaLabel;\n function onRemoveTab(event, key) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key,\n event\n });\n }\n const menu = /*#__PURE__*/React.createElement(Menu, {\n onClick: ({\n key,\n domEvent\n }) => {\n onTabClick(key, domEvent);\n setOpen(false);\n },\n prefixCls: `${dropdownPrefix}-menu`,\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(tab => {\n const {\n closable,\n disabled,\n closeIcon,\n key,\n label\n } = tab;\n const removable = getRemovable(closable, closeIcon, editable, disabled);\n return /*#__PURE__*/React.createElement(MenuItem, {\n key: key,\n id: `${popupId}-${key}`,\n role: \"option\",\n \"aria-controls\": id && `${id}-panel-${key}`,\n disabled: disabled\n }, /*#__PURE__*/React.createElement(\"span\", null, label), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: `${dropdownPrefix}-menu-item-remove`,\n onClick: e => {\n e.stopPropagation();\n onRemoveTab(e, key);\n }\n }, closeIcon || editable.removeIcon || '×'));\n }));\n function selectOffset(offset) {\n const enabledTabs = tabs.filter(tab => !tab.disabled);\n let selectedIndex = enabledTabs.findIndex(tab => tab.key === selectedKey) || 0;\n const len = enabledTabs.length;\n for (let i = 0; i < len; i += 1) {\n selectedIndex = (selectedIndex + offset + len) % len;\n const tab = enabledTabs[selectedIndex];\n if (!tab.disabled) {\n setSelectedKey(tab.key);\n return;\n }\n }\n }\n function onKeyDown(e) {\n const {\n which\n } = e;\n if (!open) {\n if ([KeyCode.DOWN, KeyCode.SPACE, KeyCode.ENTER].includes(which)) {\n setOpen(true);\n e.preventDefault();\n }\n return;\n }\n switch (which) {\n case KeyCode.UP:\n selectOffset(-1);\n e.preventDefault();\n break;\n case KeyCode.DOWN:\n selectOffset(1);\n e.preventDefault();\n break;\n case KeyCode.ESC:\n setOpen(false);\n break;\n case KeyCode.SPACE:\n case KeyCode.ENTER:\n if (selectedKey !== null) {\n onTabClick(selectedKey, e);\n }\n break;\n }\n }\n\n // ========================= Effect =========================\n useEffect(() => {\n // We use query element here to avoid React strict warning\n const ele = document.getElementById(selectedItemId);\n if (ele?.scrollIntoView) {\n ele.scrollIntoView(false);\n }\n }, [selectedItemId, selectedKey]);\n useEffect(() => {\n if (!open) {\n setSelectedKey(null);\n }\n }, [open]);\n\n // ========================= Render =========================\n const moreStyle = {\n marginInlineStart: tabBarGutter\n };\n if (!tabs.length) {\n moreStyle.visibility = 'hidden';\n moreStyle.order = 1;\n }\n const overlayClassName = clsx(popupClassName, {\n [`${dropdownPrefix}-rtl`]: rtl\n });\n const moreNode = mobile ? null : /*#__PURE__*/React.createElement(Dropdown, _extends({\n prefixCls: dropdownPrefix,\n overlay: menu,\n visible: tabs.length ? open : false,\n onVisibleChange: setOpen,\n overlayClassName: overlayClassName,\n overlayStyle: popupStyle,\n mouseEnterDelay: 0.1,\n mouseLeaveDelay: 0.1,\n getPopupContainer: getPopupContainer\n }, moreProps), /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: `${prefixCls}-nav-more`,\n style: moreStyle,\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": popupId,\n id: `${id}-more`,\n \"aria-expanded\": open,\n onKeyDown: onKeyDown\n }, moreIcon));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${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});\nexport default /*#__PURE__*/React.memo(OperationNode, (_, next) =>\n// https://github.com/ant-design/ant-design/issues/32544\n// We'd better remove syntactic sugar in `rc-menu` since this has perf issue\nnext.tabMoving);","import { clsx } from 'clsx';\nimport * as React from 'react';\nimport { genDataNodeKey, getRemovable } from \"../util\";\nconst TabNode = props => {\n const {\n prefixCls,\n id,\n active,\n focus,\n tab: {\n key,\n label,\n disabled,\n closeIcon,\n icon\n },\n closable,\n renderWrapper,\n removeAriaLabel,\n editable,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n onMouseDown,\n onMouseUp,\n style,\n className,\n tabCount,\n currentPosition\n } = props;\n const tabPrefix = `${prefixCls}-tab`;\n const removable = getRemovable(closable, closeIcon, editable, disabled);\n function onInternalClick(e) {\n if (disabled) {\n return;\n }\n onClick(e);\n }\n function onRemoveTab(event) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key,\n event\n });\n }\n const labelNode = React.useMemo(() => icon && typeof label === 'string' ? /*#__PURE__*/React.createElement(\"span\", null, label) : label, [label, icon]);\n const btnRef = React.useRef(null);\n React.useEffect(() => {\n if (focus && btnRef.current) {\n btnRef.current.focus();\n }\n }, [focus]);\n const node = /*#__PURE__*/React.createElement(\"div\", {\n key: key,\n \"data-node-key\": genDataNodeKey(key),\n className: clsx(tabPrefix, className, {\n [`${tabPrefix}-with-remove`]: removable,\n [`${tabPrefix}-active`]: active,\n [`${tabPrefix}-disabled`]: disabled,\n [`${tabPrefix}-focus`]: focus\n }),\n style: style,\n onClick: onInternalClick\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: btnRef,\n role: \"tab\",\n \"aria-selected\": active,\n id: id && `${id}-tab-${key}`,\n className: `${tabPrefix}-btn`,\n \"aria-controls\": id && `${id}-panel-${key}`,\n \"aria-disabled\": disabled,\n tabIndex: disabled ? null : active ? 0 : -1,\n onClick: e => {\n e.stopPropagation();\n onInternalClick(e);\n },\n onKeyDown: onKeyDown,\n onMouseDown: onMouseDown,\n onMouseUp: onMouseUp,\n onFocus: onFocus,\n onBlur: onBlur\n }, focus && /*#__PURE__*/React.createElement(\"div\", {\n \"aria-live\": \"polite\",\n style: {\n width: 0,\n height: 0,\n position: 'absolute',\n overflow: 'hidden',\n opacity: 0\n }\n }, `Tab ${currentPosition} of ${tabCount}`), icon && /*#__PURE__*/React.createElement(\"span\", {\n className: `${tabPrefix}-icon`\n }, icon), label && labelNode), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: active ? 0 : -1,\n className: `${tabPrefix}-remove`,\n onClick: e => {\n e.stopPropagation();\n onRemoveTab(e);\n }\n }, closeIcon || editable.removeIcon || '×'));\n return renderWrapper ? renderWrapper(node) : node;\n};\nexport default TabNode;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport { clsx } from 'clsx';\nimport ResizeObserver from '@rc-component/resize-observer';\nimport useEvent from \"@rc-component/util/es/hooks/useEvent\";\nimport { useComposeRef } from \"@rc-component/util/es/ref\";\nimport * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport TabContext from \"../TabContext\";\nimport useIndicator from \"../hooks/useIndicator\";\nimport useOffsets from \"../hooks/useOffsets\";\nimport useSyncState from \"../hooks/useSyncState\";\nimport useTouchMove from \"../hooks/useTouchMove\";\nimport useUpdate, { useUpdateState } from \"../hooks/useUpdate\";\nimport useVisibleRange from \"../hooks/useVisibleRange\";\nimport { genDataNodeKey, getRemovable, stringify } from \"../util\";\nimport AddButton from \"./AddButton\";\nimport ExtraContent from \"./ExtraContent\";\nimport OperationNode from \"./OperationNode\";\nimport TabNode from \"./TabNode\";\nconst getTabSize = (tab, containerRect) => {\n // tabListRef\n const {\n offsetWidth,\n offsetHeight,\n offsetTop,\n offsetLeft\n } = tab;\n const {\n width,\n height,\n left,\n top\n } = tab.getBoundingClientRect();\n\n // Use getBoundingClientRect to avoid decimal inaccuracy\n if (Math.abs(width - offsetWidth) < 1) {\n return [width, height, left - containerRect.left, top - containerRect.top];\n }\n return [offsetWidth, offsetHeight, offsetLeft, offsetTop];\n};\nconst getSize = refObj => {\n const {\n offsetWidth = 0,\n offsetHeight = 0\n } = refObj.current || {};\n\n // Use getBoundingClientRect to avoid decimal inaccuracy\n if (refObj.current) {\n const {\n width,\n height\n } = refObj.current.getBoundingClientRect();\n if (Math.abs(width - offsetWidth) < 1) {\n return [width, height];\n }\n }\n return [offsetWidth, offsetHeight];\n};\n\n/**\n * Convert `SizeInfo` to unit value. Such as [123, 456] with `top` position get `123`\n */\nconst getUnitValue = (size, tabPositionTopOrBottom) => {\n return size[tabPositionTopOrBottom ? 0 : 1];\n};\nconst TabNavList = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n className,\n style,\n id,\n animated,\n activeKey,\n rtl,\n extra,\n editable,\n locale,\n tabPosition,\n tabBarGutter,\n children,\n onTabClick,\n onTabScroll,\n indicator,\n classNames: tabsClassNames,\n styles\n } = props;\n const {\n prefixCls,\n tabs\n } = React.useContext(TabContext);\n const containerRef = useRef(null);\n const extraLeftRef = useRef(null);\n const extraRightRef = useRef(null);\n const tabsWrapperRef = useRef(null);\n const tabListRef = useRef(null);\n const operationsRef = useRef(null);\n const innerAddButtonRef = useRef(null);\n const tabPositionTopOrBottom = tabPosition === 'top' || tabPosition === 'bottom';\n const [transformLeft, setTransformLeft] = useSyncState(0, (next, prev) => {\n if (tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'left' : 'right'\n });\n }\n });\n const [transformTop, setTransformTop] = useSyncState(0, (next, prev) => {\n if (!tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'top' : 'bottom'\n });\n }\n });\n const [containerExcludeExtraSize, setContainerExcludeExtraSize] = useState([0, 0]);\n const [tabContentSize, setTabContentSize] = useState([0, 0]);\n const [addSize, setAddSize] = useState([0, 0]);\n const [operationSize, setOperationSize] = useState([0, 0]);\n const [tabSizes, setTabSizes] = useUpdateState(new Map());\n const tabOffsets = useOffsets(tabs, tabSizes, tabContentSize[0]);\n\n // ========================== Unit =========================\n const containerExcludeExtraSizeValue = getUnitValue(containerExcludeExtraSize, tabPositionTopOrBottom);\n const tabContentSizeValue = getUnitValue(tabContentSize, tabPositionTopOrBottom);\n const addSizeValue = getUnitValue(addSize, tabPositionTopOrBottom);\n const operationSizeValue = getUnitValue(operationSize, tabPositionTopOrBottom);\n const needScroll = Math.floor(containerExcludeExtraSizeValue) < Math.floor(tabContentSizeValue + addSizeValue);\n const visibleTabContentValue = needScroll ? containerExcludeExtraSizeValue - operationSizeValue : containerExcludeExtraSizeValue - addSizeValue;\n\n // ========================== Util =========================\n const operationsHiddenClassName = `${prefixCls}-nav-operations-hidden`;\n let transformMin = 0;\n let transformMax = 0;\n if (!tabPositionTopOrBottom) {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n } else if (rtl) {\n transformMin = 0;\n transformMax = Math.max(0, tabContentSizeValue - visibleTabContentValue);\n } else {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n }\n function alignInRange(value) {\n if (value < transformMin) {\n return transformMin;\n }\n if (value > transformMax) {\n return transformMax;\n }\n return value;\n }\n\n // ========================= Mobile ========================\n const touchMovingRef = useRef(null);\n const [lockAnimation, setLockAnimation] = useState();\n function doLockAnimation() {\n setLockAnimation(Date.now());\n }\n function clearTouchMoving() {\n if (touchMovingRef.current) {\n clearTimeout(touchMovingRef.current);\n }\n }\n useTouchMove(tabsWrapperRef, (offsetX, offsetY) => {\n function doMove(setState, offset) {\n setState(value => {\n const newValue = alignInRange(value + offset);\n return newValue;\n });\n }\n\n // Skip scroll if place is enough\n if (!needScroll) {\n return false;\n }\n if (tabPositionTopOrBottom) {\n doMove(setTransformLeft, offsetX);\n } else {\n doMove(setTransformTop, offsetY);\n }\n clearTouchMoving();\n doLockAnimation();\n return true;\n });\n useEffect(() => {\n clearTouchMoving();\n if (lockAnimation) {\n touchMovingRef.current = setTimeout(() => {\n setLockAnimation(0);\n }, 100);\n }\n return clearTouchMoving;\n }, [lockAnimation]);\n\n // ===================== Visible Range =====================\n // Render tab node & collect tab offset\n const [visibleStart, visibleEnd] = useVisibleRange(tabOffsets,\n // Container\n visibleTabContentValue,\n // Transform\n tabPositionTopOrBottom ? transformLeft : transformTop,\n // Tabs\n tabContentSizeValue,\n // Add\n addSizeValue,\n // Operation\n operationSizeValue, {\n ...props,\n tabs\n });\n\n // ========================= Scroll ========================\n const scrollToTab = useEvent((key = activeKey) => {\n const tabOffset = tabOffsets.get(key) || {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0\n };\n if (tabPositionTopOrBottom) {\n // ============ Align with top & bottom ============\n let newTransform = transformLeft;\n\n // RTL\n if (rtl) {\n if (tabOffset.right < transformLeft) {\n newTransform = tabOffset.right;\n } else if (tabOffset.right + tabOffset.width > transformLeft + visibleTabContentValue) {\n newTransform = tabOffset.right + tabOffset.width - visibleTabContentValue;\n }\n }\n // LTR\n else if (tabOffset.left < -transformLeft) {\n newTransform = -tabOffset.left;\n } else if (tabOffset.left + tabOffset.width > -transformLeft + visibleTabContentValue) {\n newTransform = -(tabOffset.left + tabOffset.width - visibleTabContentValue);\n }\n setTransformTop(0);\n setTransformLeft(alignInRange(newTransform));\n } else {\n // ============ Align with left & right ============\n let newTransform = transformTop;\n if (tabOffset.top < -transformTop) {\n newTransform = -tabOffset.top;\n } else if (tabOffset.top + tabOffset.height > -transformTop + visibleTabContentValue) {\n newTransform = -(tabOffset.top + tabOffset.height - visibleTabContentValue);\n }\n setTransformLeft(0);\n setTransformTop(alignInRange(newTransform));\n }\n });\n\n // ========================= Focus =========================\n const [focusKey, setFocusKey] = useState();\n const [isMouse, setIsMouse] = useState(false);\n const enabledTabs = tabs.filter(tab => !tab.disabled).map(tab => tab.key);\n const onOffset = offset => {\n const currentIndex = enabledTabs.indexOf(focusKey || activeKey);\n const len = enabledTabs.length;\n const nextIndex = (currentIndex + offset + len) % len;\n const newKey = enabledTabs[nextIndex];\n setFocusKey(newKey);\n };\n const handleRemoveTab = (removalTabKey, e) => {\n const removeIndex = enabledTabs.indexOf(removalTabKey);\n const removeTab = tabs.find(tab => tab.key === removalTabKey);\n const removable = getRemovable(removeTab?.closable, removeTab?.closeIcon, editable, removeTab?.disabled);\n if (removable) {\n e.preventDefault();\n e.stopPropagation();\n editable.onEdit('remove', {\n key: removalTabKey,\n event: e\n });\n\n // when remove last tab, focus previous tab\n if (removeIndex === enabledTabs.length - 1) {\n onOffset(-1);\n } else {\n onOffset(1);\n }\n }\n };\n const handleMouseDown = (key, e) => {\n setIsMouse(true);\n // Middle mouse button\n if (e.button === 1) {\n handleRemoveTab(key, e);\n }\n };\n const handleKeyDown = e => {\n const {\n code\n } = e;\n const isRTL = rtl && tabPositionTopOrBottom;\n const firstEnabledTab = enabledTabs[0];\n const lastEnabledTab = enabledTabs[enabledTabs.length - 1];\n switch (code) {\n // LEFT\n case 'ArrowLeft':\n {\n if (tabPositionTopOrBottom) {\n onOffset(isRTL ? 1 : -1);\n }\n break;\n }\n\n // RIGHT\n case 'ArrowRight':\n {\n if (tabPositionTopOrBottom) {\n onOffset(isRTL ? -1 : 1);\n }\n break;\n }\n\n // UP\n case 'ArrowUp':\n {\n e.preventDefault();\n if (!tabPositionTopOrBottom) {\n onOffset(-1);\n }\n break;\n }\n\n // DOWN\n case 'ArrowDown':\n {\n e.preventDefault();\n if (!tabPositionTopOrBottom) {\n onOffset(1);\n }\n break;\n }\n\n // HOME\n case 'Home':\n {\n e.preventDefault();\n setFocusKey(firstEnabledTab);\n break;\n }\n\n // END\n case 'End':\n {\n e.preventDefault();\n setFocusKey(lastEnabledTab);\n break;\n }\n\n // Enter & Space\n case 'Enter':\n case 'Space':\n {\n e.preventDefault();\n onTabClick(focusKey ?? activeKey, e);\n break;\n }\n // Backspace\n case 'Backspace':\n case 'Delete':\n {\n handleRemoveTab(focusKey, e);\n break;\n }\n }\n };\n\n // ========================== Tab ==========================\n const tabNodeStyle = {};\n if (tabPositionTopOrBottom) {\n tabNodeStyle.marginInlineStart = tabBarGutter;\n } else {\n tabNodeStyle.marginTop = tabBarGutter;\n }\n const tabNodes = tabs.map((tab, i) => {\n const {\n key\n } = tab;\n return /*#__PURE__*/React.createElement(TabNode, {\n id: id,\n prefixCls: prefixCls,\n key: key,\n tab: tab,\n className: tabsClassNames?.item\n /* first node should not have margin left */,\n style: i === 0 ? styles?.item : {\n ...tabNodeStyle,\n ...styles?.item\n },\n closable: tab.closable,\n editable: editable,\n active: key === activeKey,\n focus: key === focusKey,\n renderWrapper: children,\n removeAriaLabel: locale?.removeAriaLabel,\n tabCount: enabledTabs.length,\n currentPosition: i + 1,\n onClick: e => {\n onTabClick(key, e);\n },\n onKeyDown: handleKeyDown,\n onFocus: () => {\n if (!isMouse) {\n setFocusKey(key);\n }\n scrollToTab(key);\n doLockAnimation();\n if (!tabsWrapperRef.current) {\n return;\n }\n // Focus element will make scrollLeft change which we should reset back\n if (!rtl) {\n tabsWrapperRef.current.scrollLeft = 0;\n }\n tabsWrapperRef.current.scrollTop = 0;\n },\n onBlur: () => {\n setFocusKey(undefined);\n },\n onMouseDown: e => handleMouseDown(key, e),\n onMouseUp: () => {\n setIsMouse(false);\n }\n });\n });\n\n // Update buttons records\n const updateTabSizes = () => setTabSizes(() => {\n const newSizes = new Map();\n const listRect = tabListRef.current?.getBoundingClientRect();\n tabs.forEach(({\n key\n }) => {\n const btnNode = tabListRef.current?.querySelector(`[data-node-key=\"${genDataNodeKey(key)}\"]`);\n if (btnNode) {\n const [width, height, left, top] = getTabSize(btnNode, listRect);\n newSizes.set(key, {\n width,\n height,\n left,\n top\n });\n }\n });\n return newSizes;\n });\n useEffect(() => {\n updateTabSizes();\n }, [tabs.map(tab => tab.key).join('_')]);\n const onListHolderResize = useUpdate(() => {\n // Update wrapper records\n const containerSize = getSize(containerRef);\n const extraLeftSize = getSize(extraLeftRef);\n const extraRightSize = getSize(extraRightRef);\n setContainerExcludeExtraSize([containerSize[0] - extraLeftSize[0] - extraRightSize[0], containerSize[1] - extraLeftSize[1] - extraRightSize[1]]);\n const newAddSize = getSize(innerAddButtonRef);\n setAddSize(newAddSize);\n const newOperationSize = getSize(operationsRef);\n setOperationSize(newOperationSize);\n\n // Which includes add button size\n const tabContentFullSize = getSize(tabListRef);\n setTabContentSize([tabContentFullSize[0] - newAddSize[0], tabContentFullSize[1] - newAddSize[1]]);\n\n // Update buttons records\n updateTabSizes();\n });\n\n // ======================== Dropdown =======================\n const startHiddenTabs = tabs.slice(0, visibleStart);\n const endHiddenTabs = tabs.slice(visibleEnd + 1);\n const hiddenTabs = [...startHiddenTabs, ...endHiddenTabs];\n\n // =================== Link & Operations ===================\n const activeTabOffset = tabOffsets.get(activeKey);\n const {\n style: indicatorStyle\n } = useIndicator({\n activeTabOffset,\n horizontal: tabPositionTopOrBottom,\n indicator,\n rtl\n });\n\n // ========================= Effect ========================\n useEffect(() => {\n scrollToTab();\n }, [activeKey, transformMin, transformMax, stringify(activeTabOffset), stringify(tabOffsets), tabPositionTopOrBottom]);\n\n // Should recalculate when rtl changed\n useEffect(() => {\n onListHolderResize();\n // eslint-disable-next-line\n }, [rtl]);\n\n // ========================= Render ========================\n const hasDropdown = !!hiddenTabs.length;\n const wrapPrefix = `${prefixCls}-nav-wrap`;\n let pingLeft;\n let pingRight;\n let pingTop;\n let pingBottom;\n if (tabPositionTopOrBottom) {\n if (rtl) {\n pingRight = transformLeft > 0;\n pingLeft = transformLeft !== transformMax;\n } else {\n pingLeft = transformLeft < 0;\n pingRight = transformLeft !== transformMin;\n }\n } else {\n pingTop = transformTop < 0;\n pingBottom = transformTop !== transformMin;\n }\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: useComposeRef(ref, containerRef),\n role: \"tablist\",\n \"aria-orientation\": tabPositionTopOrBottom ? 'horizontal' : 'vertical',\n className: clsx(`${prefixCls}-nav`, className, tabsClassNames?.header),\n style: {\n ...styles?.header,\n ...style\n },\n onKeyDown: () => {\n // No need animation when use keyboard\n doLockAnimation();\n }\n }, /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraLeftRef,\n position: \"left\",\n extra: extra,\n prefixCls: prefixCls\n }), /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(wrapPrefix, {\n [`${wrapPrefix}-ping-left`]: pingLeft,\n [`${wrapPrefix}-ping-right`]: pingRight,\n [`${wrapPrefix}-ping-top`]: pingTop,\n [`${wrapPrefix}-ping-bottom`]: pingBottom\n }),\n ref: tabsWrapperRef\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: tabListRef,\n className: `${prefixCls}-nav-list`,\n style: {\n transform: `translate(${transformLeft}px, ${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: {\n ...(tabNodes.length === 0 ? undefined : tabNodeStyle),\n visibility: hasDropdown ? 'hidden' : null\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-ink-bar`, tabsClassNames?.indicator, {\n [`${prefixCls}-ink-bar-animated`]: animated.inkBar\n }),\n style: {\n ...indicatorStyle,\n ...styles?.indicator\n }\n }))))), /*#__PURE__*/React.createElement(OperationNode, _extends({}, props, {\n removeAriaLabel: locale?.removeAriaLabel,\n ref: operationsRef,\n prefixCls: prefixCls,\n tabs: hiddenTabs,\n className: !hasDropdown && operationsHiddenClassName,\n popupStyle: styles?.popup,\n tabMoving: !!lockAnimation\n })), /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraRightRef,\n position: \"right\",\n extra: extra,\n prefixCls: prefixCls\n })));\n /* eslint-enable */\n});\nexport default TabNavList;","// zombieJ: To compatible with `renderTabBar` usage.\n\nimport * as React from 'react';\nimport TabNavList from '.';\n// We have to create a TabNavList components.\nconst TabNavListWrapper = ({\n renderTabBar,\n ...restProps\n}) => {\n if (renderTabBar) {\n return renderTabBar(restProps, TabNavList);\n }\n return /*#__PURE__*/React.createElement(TabNavList, restProps);\n};\nif (process.env.NODE_ENV !== 'production') {\n TabNavListWrapper.displayName = 'TabNavListWrapper';\n}\nexport default TabNavListWrapper;","import { clsx } from 'clsx';\nimport * as React from 'react';\nconst TabPane = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n prefixCls,\n className,\n style,\n id,\n active,\n tabKey,\n children\n } = props;\n const hasContent = React.Children.count(children) > 0;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id && `${id}-panel-${tabKey}`,\n role: \"tabpanel\",\n tabIndex: active && hasContent ? 0 : -1,\n \"aria-labelledby\": id && `${id}-tab-${tabKey}`,\n \"aria-hidden\": !active,\n style: style,\n className: clsx(prefixCls, active && `${prefixCls}-active`, className),\n ref: ref\n }, children);\n});\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'TabPane';\n}\nexport default TabPane;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport { clsx } from 'clsx';\nimport CSSMotion from '@rc-component/motion';\nimport * as React from 'react';\nimport TabContext from \"../TabContext\";\nimport TabPane from \"./TabPane\";\nconst TabPanelList = props => {\n const {\n id,\n activeKey,\n animated,\n tabPosition,\n destroyOnHidden,\n contentStyle,\n contentClassName\n } = props;\n const {\n prefixCls,\n tabs\n } = React.useContext(TabContext);\n const tabPaneAnimated = animated.tabPane;\n const tabPanePrefixCls = `${prefixCls}-tabpane`;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-content-holder`)\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-content`, `${prefixCls}-content-${tabPosition}`, {\n [`${prefixCls}-content-animated`]: tabPaneAnimated\n })\n }, tabs.map(item => {\n const {\n key,\n forceRender,\n style: paneStyle,\n className: paneClassName,\n destroyOnHidden: itemDestroyOnHidden,\n ...restTabProps\n } = item;\n const active = key === activeKey;\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: key,\n visible: active,\n forceRender: forceRender,\n removeOnLeave: !!(destroyOnHidden ?? itemDestroyOnHidden),\n leavedClassName: `${tabPanePrefixCls}-hidden`\n }, animated.tabPaneMotion), ({\n style: motionStyle,\n className: motionClassName\n }, ref) => /*#__PURE__*/React.createElement(TabPane, _extends({}, restTabProps, {\n prefixCls: tabPanePrefixCls,\n id: id,\n tabKey: key,\n animated: tabPaneAnimated,\n active: active,\n style: {\n ...contentStyle,\n ...paneStyle,\n ...motionStyle\n },\n className: clsx(contentClassName, paneClassName, motionClassName),\n ref: ref\n })));\n })));\n};\nexport default TabPanelList;","import warning from \"@rc-component/util/es/warning\";\nexport default function useAnimateConfig(animated = {\n inkBar: true,\n tabPane: false\n}) {\n let mergedAnimated;\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: false\n };\n } else {\n mergedAnimated = {\n inkBar: true,\n ...(typeof animated === 'object' ? animated : {})\n };\n }\n\n // Enable tabPane animation if provide motion\n if (mergedAnimated.tabPaneMotion && mergedAnimated.tabPane === undefined) {\n mergedAnimated.tabPane = true;\n }\n if (!mergedAnimated.tabPaneMotion && mergedAnimated.tabPane) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`animated.tabPane` is true but `animated.tabPaneMotion` is not provided. Motion will not work.');\n }\n mergedAnimated.tabPane = false;\n }\n return mergedAnimated;\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// Accessibility https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role\nimport { clsx } from 'clsx';\nimport useControlledState from \"@rc-component/util/es/hooks/useControlledState\";\nimport isMobile from \"@rc-component/util/es/isMobile\";\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport TabContext from \"./TabContext\";\nimport TabNavListWrapper from \"./TabNavList/Wrapper\";\nimport TabPanelList from \"./TabPanelList\";\nimport useAnimateConfig from \"./hooks/useAnimateConfig\";\n/**\n * Should added antd:\n * - type\n *\n * Removed:\n * - onNextClick\n * - onPrevClick\n * - keyboard\n */\n\n// Used for accessibility\nlet uuid = 0;\nconst Tabs = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n id,\n prefixCls = 'rc-tabs',\n className,\n items,\n direction,\n activeKey,\n defaultActiveKey,\n editable,\n animated,\n tabPosition = 'top',\n tabBarGutter,\n tabBarStyle,\n tabBarExtraContent,\n locale,\n more,\n destroyOnHidden,\n renderTabBar,\n onChange,\n onTabClick,\n onTabScroll,\n getPopupContainer,\n popupClassName,\n indicator,\n classNames: tabsClassNames,\n styles,\n ...restProps\n } = props;\n const tabs = React.useMemo(() => (items || []).filter(item => item && typeof item === 'object' && 'key' in item), [items]);\n const rtl = direction === 'rtl';\n const mergedAnimated = useAnimateConfig(animated);\n\n // ======================== Mobile ========================\n const [mobile, setMobile] = useState(false);\n useEffect(() => {\n // Only update on the client side\n setMobile(isMobile());\n }, []);\n\n // ====================== Active Key ======================\n const [mergedActiveKey, setMergedActiveKey] = useControlledState(defaultActiveKey ?? tabs[0]?.key, activeKey);\n const [activeIndex, setActiveIndex] = useState(() => tabs.findIndex(tab => tab.key === mergedActiveKey));\n\n // Reset active key if not exist anymore\n useEffect(() => {\n let newActiveIndex = tabs.findIndex(tab => tab.key === mergedActiveKey);\n if (newActiveIndex === -1) {\n newActiveIndex = Math.max(0, Math.min(activeIndex, tabs.length - 1));\n setMergedActiveKey(tabs[newActiveIndex]?.key);\n }\n setActiveIndex(newActiveIndex);\n }, [tabs.map(tab => tab.key).join('_'), mergedActiveKey, activeIndex]);\n\n // ===================== Accessibility ====================\n const [mergedId, setMergedId] = useControlledState(null, id);\n\n // Async generate id to avoid ssr mapping failed\n useEffect(() => {\n if (!id) {\n setMergedId(`rc-tabs-${process.env.NODE_ENV === 'test' ? 'test' : uuid}`);\n uuid += 1;\n }\n }, []);\n\n // ======================== Events ========================\n function onInternalTabClick(key, e) {\n onTabClick?.(key, e);\n const isActiveChanged = key !== mergedActiveKey;\n setMergedActiveKey(key);\n if (isActiveChanged) {\n onChange?.(key);\n }\n }\n\n // ======================== Render ========================\n const sharedProps = {\n id: mergedId,\n activeKey: mergedActiveKey,\n animated: mergedAnimated,\n tabPosition,\n rtl,\n mobile\n };\n const tabNavBarProps = {\n ...sharedProps,\n editable,\n locale,\n more,\n tabBarGutter,\n onTabClick: onInternalTabClick,\n onTabScroll,\n extra: tabBarExtraContent,\n style: tabBarStyle,\n getPopupContainer,\n popupClassName: clsx(popupClassName, tabsClassNames?.popup),\n indicator,\n styles,\n classNames: tabsClassNames\n };\n const memoizedValue = React.useMemo(() => {\n return {\n tabs,\n prefixCls\n };\n }, [tabs, prefixCls]);\n return /*#__PURE__*/React.createElement(TabContext.Provider, {\n value: memoizedValue\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n id: id,\n className: clsx(prefixCls, `${prefixCls}-${tabPosition}`, {\n [`${prefixCls}-mobile`]: mobile,\n [`${prefixCls}-editable`]: editable,\n [`${prefixCls}-rtl`]: rtl\n }, className)\n }, restProps), /*#__PURE__*/React.createElement(TabNavListWrapper, _extends({}, tabNavBarProps, {\n renderTabBar: renderTabBar\n })), /*#__PURE__*/React.createElement(TabPanelList, _extends({\n destroyOnHidden: destroyOnHidden\n }, sharedProps, {\n contentStyle: styles?.content,\n contentClassName: tabsClassNames?.content,\n animated: mergedAnimated\n }))));\n});\nif (process.env.NODE_ENV !== 'production') {\n Tabs.displayName = 'Tabs';\n}\nexport default Tabs;","import Tabs from \"./Tabs\";\nexport default Tabs;","import { getTransitionName } from '../../_util/motion';\nconst motion = {\n motionAppear: false,\n motionEnter: true,\n motionLeave: true\n};\nexport default function useAnimateConfig(prefixCls, animated = {\n inkBar: true,\n tabPane: false\n}) {\n let mergedAnimated;\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 = {\n inkBar: true,\n ...(typeof animated === 'object' ? animated : {})\n };\n }\n if (mergedAnimated.tabPane) {\n mergedAnimated.tabPaneMotion = {\n ...motion,\n motionName: getTransitionName(prefixCls, 'switch')\n };\n }\n return mergedAnimated;\n}","import * as React from 'react';\nimport { toArray } from '@rc-component/util';\nimport { devUseWarning } from '../../_util/warning';\nfunction filter(items) {\n return items.filter(item => item);\n}\nfunction useLegacyItems(items, children) {\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Tabs');\n warning.deprecated(!children, 'Tabs.TabPane', 'items');\n }\n if (items) {\n return items.map(item => ({\n ...item,\n destroyOnHidden: item.destroyOnHidden ?? item.destroyInactiveTabPane\n }));\n }\n const childrenItems = toArray(children).map(node => {\n if (/*#__PURE__*/React.isValidElement(node)) {\n const {\n key,\n props\n } = node;\n const {\n tab,\n ...restProps\n } = props || {};\n const item = {\n key: String(key),\n ...restProps,\n label: tab\n };\n return item;\n }\n return null;\n });\n return filter(childrenItems);\n}\nexport default useLegacyItems;","import { initSlideMotion } from '../../style/motion';\nconst genMotionStyle = token => {\n const {\n componentCls,\n motionDurationSlow\n } = token;\n return [{\n [componentCls]: {\n [`${componentCls}-switch`]: {\n '&-appear, &-enter': {\n transition: 'none',\n '&-start': {\n opacity: 0\n },\n '&-active': {\n opacity: 1,\n transition: `opacity ${motionDurationSlow}`\n }\n },\n '&-leave': {\n position: 'absolute',\n transition: 'none',\n inset: 0,\n '&-start': {\n opacity: 1\n },\n '&-active': {\n opacity: 0,\n transition: `opacity ${motionDurationSlow}`\n }\n }\n }\n }\n },\n // Follow code may reuse in other components\n [initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down')]];\n};\nexport default genMotionStyle;","import { unit } from '@ant-design/cssinjs';\nimport { genFocusOutline, genFocusStyle, resetComponent, textEllipsis } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genMotionStyle from './motion';\nconst genCardStyle = token => {\n const {\n componentCls,\n tabsCardPadding,\n cardBg,\n cardGutter,\n colorBorderSecondary,\n itemSelectedColor\n } = token;\n return {\n [`${componentCls}-card`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n margin: 0,\n padding: tabsCardPadding,\n background: cardBg,\n border: `${unit(token.lineWidth)} ${token.lineType} ${colorBorderSecondary}`,\n transition: `all ${token.motionDurationSlow} ${token.motionEaseInOut}`\n },\n [`${componentCls}-tab-active`]: {\n color: itemSelectedColor,\n background: token.colorBgContainer\n },\n [`${componentCls}-tab-focus:has(${componentCls}-tab-btn:focus-visible)`]: genFocusOutline(token, -3),\n [`& ${componentCls}-tab${componentCls}-tab-focus ${componentCls}-tab-btn:focus-visible`]: {\n outline: 'none'\n },\n [`${componentCls}-ink-bar`]: {\n visibility: 'hidden'\n }\n },\n // ========================== Top & Bottom ==========================\n [`&${componentCls}-top, &${componentCls}-bottom`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab + ${componentCls}-tab`]: {\n marginLeft: {\n _skip_check_: true,\n value: unit(cardGutter)\n }\n }\n }\n },\n [`&${componentCls}-top`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n borderRadius: `${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)} 0 0`\n },\n [`${componentCls}-tab-active`]: {\n borderBottomColor: token.colorBgContainer\n }\n }\n },\n [`&${componentCls}-bottom`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n borderRadius: `0 0 ${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)}`\n },\n [`${componentCls}-tab-active`]: {\n borderTopColor: token.colorBgContainer\n }\n }\n },\n // ========================== Left & Right ==========================\n [`&${componentCls}-left, &${componentCls}-right`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab + ${componentCls}-tab`]: {\n marginTop: unit(cardGutter)\n }\n }\n },\n [`&${componentCls}-left`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n borderRadius: {\n _skip_check_: true,\n value: `${unit(token.borderRadiusLG)} 0 0 ${unit(token.borderRadiusLG)}`\n }\n },\n [`${componentCls}-tab-active`]: {\n borderRightColor: {\n _skip_check_: true,\n value: token.colorBgContainer\n }\n }\n }\n },\n [`&${componentCls}-right`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n borderRadius: {\n _skip_check_: true,\n value: `0 ${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)} 0`\n }\n },\n [`${componentCls}-tab-active`]: {\n borderLeftColor: {\n _skip_check_: true,\n value: token.colorBgContainer\n }\n }\n }\n }\n }\n };\n};\nconst genDropdownStyle = token => {\n const {\n componentCls,\n itemHoverColor,\n dropdownEdgeChildVerticalPadding\n } = token;\n return {\n [`${componentCls}-dropdown`]: {\n ...resetComponent(token),\n position: 'absolute',\n top: -9999,\n left: {\n _skip_check_: true,\n value: -9999\n },\n zIndex: token.zIndexPopup,\n display: 'block',\n '&-hidden': {\n display: 'none'\n },\n [`${componentCls}-dropdown-menu`]: {\n maxHeight: token.tabsDropdownHeight,\n margin: 0,\n padding: `${unit(dropdownEdgeChildVerticalPadding)} 0`,\n overflowX: 'hidden',\n overflowY: 'auto',\n textAlign: {\n _skip_check_: true,\n value: 'left'\n },\n listStyleType: 'none',\n backgroundColor: token.colorBgContainer,\n backgroundClip: 'padding-box',\n borderRadius: token.borderRadiusLG,\n outline: 'none',\n boxShadow: token.boxShadowSecondary,\n '&-item': {\n ...textEllipsis,\n display: 'flex',\n alignItems: 'center',\n minWidth: token.tabsDropdownWidth,\n margin: 0,\n padding: `${unit(token.paddingXXS)} ${unit(token.paddingSM)}`,\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n cursor: 'pointer',\n transition: `all ${token.motionDurationSlow}`,\n '> span': {\n flex: 1,\n whiteSpace: 'nowrap'\n },\n '&-remove': {\n flex: 'none',\n marginLeft: {\n _skip_check_: true,\n value: token.marginSM\n },\n color: token.colorIcon,\n fontSize: token.fontSizeSM,\n background: 'transparent',\n border: 0,\n cursor: 'pointer',\n '&:hover': {\n color: itemHoverColor\n }\n },\n '&:hover': {\n background: token.controlItemBgHover\n },\n '&-disabled': {\n '&, &:hover': {\n color: token.colorTextDisabled,\n background: 'transparent',\n cursor: 'not-allowed'\n }\n }\n }\n }\n }\n };\n};\nconst genPositionStyle = token => {\n const {\n componentCls,\n margin,\n colorBorderSecondary,\n horizontalMargin,\n verticalItemPadding,\n verticalItemMargin,\n calc\n } = token;\n return {\n // ========================== Top & Bottom ==========================\n [`${componentCls}-top, ${componentCls}-bottom`]: {\n flexDirection: 'column',\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n margin: horizontalMargin,\n '&::before': {\n position: 'absolute',\n right: {\n _skip_check_: true,\n value: 0\n },\n left: {\n _skip_check_: true,\n value: 0\n },\n borderBottom: `${unit(token.lineWidth)} ${token.lineType} ${colorBorderSecondary}`,\n content: \"''\"\n },\n [`${componentCls}-ink-bar`]: {\n height: token.lineWidthBold,\n '&-animated': {\n transition: `width ${token.motionDurationSlow}, left ${token.motionDurationSlow},\n right ${token.motionDurationSlow}`\n }\n },\n [`${componentCls}-nav-wrap`]: {\n '&::before, &::after': {\n top: 0,\n bottom: 0,\n width: token.controlHeight\n },\n '&::before': {\n left: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowTabsOverflowLeft\n },\n '&::after': {\n right: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowTabsOverflowRight\n },\n [`&${componentCls}-nav-wrap-ping-left::before`]: {\n opacity: 1\n },\n [`&${componentCls}-nav-wrap-ping-right::after`]: {\n opacity: 1\n }\n }\n }\n },\n [`${componentCls}-top`]: {\n [`> ${componentCls}-nav,\n > div > ${componentCls}-nav`]: {\n '&::before': {\n bottom: 0\n },\n [`${componentCls}-ink-bar`]: {\n bottom: 0\n }\n }\n },\n [`${componentCls}-bottom`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n order: 1,\n marginTop: margin,\n marginBottom: 0,\n '&::before': {\n top: 0\n },\n [`${componentCls}-ink-bar`]: {\n top: 0\n }\n },\n [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n order: 0\n }\n },\n // ========================== Left & Right ==========================\n [`${componentCls}-left, ${componentCls}-right`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n flexDirection: 'column',\n minWidth: calc(token.controlHeight).mul(1.25).equal(),\n // >>>>>>>>>>> Tab\n [`${componentCls}-tab`]: {\n padding: verticalItemPadding,\n textAlign: 'center'\n },\n [`${componentCls}-tab + ${componentCls}-tab`]: {\n margin: verticalItemMargin\n },\n // >>>>>>>>>>> Nav\n [`${componentCls}-nav-wrap`]: {\n flexDirection: 'column',\n '&::before, &::after': {\n right: {\n _skip_check_: true,\n value: 0\n },\n left: {\n _skip_check_: true,\n value: 0\n },\n height: token.controlHeight\n },\n '&::before': {\n top: 0,\n boxShadow: token.boxShadowTabsOverflowTop\n },\n '&::after': {\n bottom: 0,\n boxShadow: token.boxShadowTabsOverflowBottom\n },\n [`&${componentCls}-nav-wrap-ping-top::before`]: {\n opacity: 1\n },\n [`&${componentCls}-nav-wrap-ping-bottom::after`]: {\n opacity: 1\n }\n },\n // >>>>>>>>>>> Ink Bar\n [`${componentCls}-ink-bar`]: {\n width: token.lineWidthBold,\n '&-animated': {\n transition: `height ${token.motionDurationSlow}, top ${token.motionDurationSlow}`\n }\n },\n [`${componentCls}-nav-list, ${componentCls}-nav-operations`]: {\n flex: '1 0 auto',\n // fix safari scroll problem\n flexDirection: 'column'\n }\n }\n },\n [`${componentCls}-left`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-ink-bar`]: {\n right: {\n _skip_check_: true,\n value: 0\n }\n }\n },\n [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n marginLeft: {\n _skip_check_: true,\n value: unit(calc(token.lineWidth).mul(-1).equal())\n },\n borderLeft: {\n _skip_check_: true,\n value: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n },\n [`> ${componentCls}-content > ${componentCls}-tabpane`]: {\n paddingLeft: {\n _skip_check_: true,\n value: token.paddingLG\n }\n }\n }\n },\n [`${componentCls}-right`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n order: 1,\n [`${componentCls}-ink-bar`]: {\n left: {\n _skip_check_: true,\n value: 0\n }\n }\n },\n [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n order: 0,\n marginRight: {\n _skip_check_: true,\n value: calc(token.lineWidth).mul(-1).equal()\n },\n borderRight: {\n _skip_check_: true,\n value: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n },\n [`> ${componentCls}-content > ${componentCls}-tabpane`]: {\n paddingRight: {\n _skip_check_: true,\n value: token.paddingLG\n }\n }\n }\n }\n };\n};\nconst genSizeStyle = token => {\n const {\n componentCls,\n cardPaddingSM,\n cardPaddingLG,\n cardHeightSM,\n cardHeightLG,\n horizontalItemPaddingSM,\n horizontalItemPaddingLG\n } = token;\n return {\n // >>>>> shared\n [componentCls]: {\n '&-small': {\n [`> ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n padding: horizontalItemPaddingSM,\n fontSize: token.titleFontSizeSM\n }\n }\n },\n '&-large': {\n [`> ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n padding: horizontalItemPaddingLG,\n fontSize: token.titleFontSizeLG,\n lineHeight: token.lineHeightLG\n }\n }\n }\n },\n // >>>>> card\n [`${componentCls}-card`]: {\n // Small\n [`&${componentCls}-small`]: {\n [`> ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n padding: cardPaddingSM\n },\n [`${componentCls}-nav-add`]: {\n minWidth: cardHeightSM,\n minHeight: cardHeightSM\n }\n },\n [`&${componentCls}-bottom`]: {\n [`> ${componentCls}-nav ${componentCls}-tab`]: {\n borderRadius: `0 0 ${unit(token.borderRadius)} ${unit(token.borderRadius)}`\n }\n },\n [`&${componentCls}-top`]: {\n [`> ${componentCls}-nav ${componentCls}-tab`]: {\n borderRadius: `${unit(token.borderRadius)} ${unit(token.borderRadius)} 0 0`\n }\n },\n [`&${componentCls}-right`]: {\n [`> ${componentCls}-nav ${componentCls}-tab`]: {\n borderRadius: {\n _skip_check_: true,\n value: `0 ${unit(token.borderRadius)} ${unit(token.borderRadius)} 0`\n }\n }\n },\n [`&${componentCls}-left`]: {\n [`> ${componentCls}-nav ${componentCls}-tab`]: {\n borderRadius: {\n _skip_check_: true,\n value: `${unit(token.borderRadius)} 0 0 ${unit(token.borderRadius)}`\n }\n }\n }\n },\n // Large\n [`&${componentCls}-large`]: {\n [`> ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n padding: cardPaddingLG\n },\n [`${componentCls}-nav-add`]: {\n minWidth: cardHeightLG,\n minHeight: cardHeightLG\n }\n }\n }\n }\n };\n};\nconst genTabStyle = token => {\n const {\n componentCls,\n itemActiveColor,\n itemHoverColor,\n iconCls,\n tabsHorizontalItemMargin,\n horizontalItemPadding,\n itemSelectedColor,\n itemColor\n } = token;\n const tabCls = `${componentCls}-tab`;\n return {\n [tabCls]: {\n position: 'relative',\n WebkitTouchCallout: 'none',\n WebkitTapHighlightColor: 'transparent',\n display: 'inline-flex',\n alignItems: 'center',\n padding: horizontalItemPadding,\n fontSize: token.titleFontSize,\n background: 'transparent',\n border: 0,\n outline: 'none',\n cursor: 'pointer',\n color: itemColor,\n '&-btn, &-remove': {\n '&:focus:not(:focus-visible), &:active': {\n color: itemActiveColor\n }\n },\n '&-btn': {\n outline: 'none',\n transition: `all ${token.motionDurationSlow}`,\n [`${tabCls}-icon:not(:last-child)`]: {\n marginInlineEnd: token.marginSM\n }\n },\n '&-remove': {\n flex: 'none',\n lineHeight: 1,\n marginRight: {\n _skip_check_: true,\n value: token.calc(token.marginXXS).mul(-1).equal()\n },\n marginLeft: {\n _skip_check_: true,\n value: token.marginXS\n },\n color: token.colorIcon,\n fontSize: token.fontSizeSM,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n cursor: 'pointer',\n transition: `all ${token.motionDurationSlow}`,\n '&:hover': {\n color: token.colorTextHeading\n },\n ...genFocusStyle(token)\n },\n '&:hover': {\n color: itemHoverColor\n },\n [`&${tabCls}-active ${tabCls}-btn`]: {\n color: itemSelectedColor\n },\n [`&${tabCls}-focus ${tabCls}-btn:focus-visible`]: genFocusOutline(token),\n [`&${tabCls}-disabled`]: {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n },\n [`&${tabCls}-disabled ${tabCls}-btn, &${tabCls}-disabled ${componentCls}-remove`]: {\n '&:focus, &:active': {\n color: token.colorTextDisabled\n }\n },\n [`& ${tabCls}-remove ${iconCls}`]: {\n margin: 0,\n verticalAlign: 'middle'\n },\n [`${iconCls}:not(:last-child)`]: {\n marginRight: {\n _skip_check_: true,\n value: token.marginSM\n }\n }\n },\n [`${tabCls} + ${tabCls}`]: {\n margin: {\n _skip_check_: true,\n value: tabsHorizontalItemMargin\n }\n }\n };\n};\nconst genRtlStyle = token => {\n const {\n componentCls,\n tabsHorizontalItemMarginRTL,\n iconCls,\n cardGutter,\n calc\n } = token;\n const rtlCls = `${componentCls}-rtl`;\n return {\n [rtlCls]: {\n direction: 'rtl',\n [`${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n margin: {\n _skip_check_: true,\n value: tabsHorizontalItemMarginRTL\n },\n [`${componentCls}-tab:last-of-type`]: {\n marginLeft: {\n _skip_check_: true,\n value: 0\n }\n },\n [iconCls]: {\n marginRight: {\n _skip_check_: true,\n value: 0\n },\n marginLeft: {\n _skip_check_: true,\n value: unit(token.marginSM)\n }\n },\n [`${componentCls}-tab-remove`]: {\n marginRight: {\n _skip_check_: true,\n value: unit(token.marginXS)\n },\n marginLeft: {\n _skip_check_: true,\n value: unit(calc(token.marginXXS).mul(-1).equal())\n },\n [iconCls]: {\n margin: 0\n }\n }\n }\n },\n [`&${componentCls}-left`]: {\n [`> ${componentCls}-nav`]: {\n order: 1\n },\n [`> ${componentCls}-content-holder`]: {\n order: 0\n }\n },\n [`&${componentCls}-right`]: {\n [`> ${componentCls}-nav`]: {\n order: 0\n },\n [`> ${componentCls}-content-holder`]: {\n order: 1\n }\n },\n // ====================== Card ======================\n [`&${componentCls}-card${componentCls}-top, &${componentCls}-card${componentCls}-bottom`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab + ${componentCls}-tab`]: {\n marginRight: {\n _skip_check_: true,\n value: cardGutter\n },\n marginLeft: {\n _skip_check_: true,\n value: 0\n }\n }\n }\n }\n },\n [`${componentCls}-dropdown-rtl`]: {\n direction: 'rtl'\n },\n [`${componentCls}-menu-item`]: {\n [`${componentCls}-dropdown-rtl`]: {\n textAlign: {\n _skip_check_: true,\n value: 'right'\n }\n }\n }\n };\n};\nconst genTabsStyle = token => {\n const {\n componentCls,\n tabsCardPadding,\n cardHeight,\n cardGutter,\n itemHoverColor,\n itemActiveColor,\n colorBorderSecondary\n } = token;\n return {\n [componentCls]: {\n ...resetComponent(token),\n display: 'flex',\n // ========================== Navigation ==========================\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n position: 'relative',\n display: 'flex',\n flex: 'none',\n alignItems: 'center',\n [`${componentCls}-nav-wrap`]: {\n position: 'relative',\n display: 'flex',\n flex: 'auto',\n alignSelf: 'stretch',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n transform: 'translate(0)',\n // Fix chrome render bug\n // >>>>> Ping shadow\n '&::before, &::after': {\n position: 'absolute',\n zIndex: 1,\n opacity: 0,\n transition: `opacity ${token.motionDurationSlow}`,\n content: \"''\",\n pointerEvents: 'none'\n }\n },\n [`${componentCls}-nav-list`]: {\n position: 'relative',\n display: 'flex',\n transition: `opacity ${token.motionDurationSlow}`\n },\n // >>>>>>>> Operations\n [`${componentCls}-nav-operations`]: {\n display: 'flex',\n alignSelf: 'stretch'\n },\n [`${componentCls}-nav-operations-hidden`]: {\n position: 'absolute',\n visibility: 'hidden',\n pointerEvents: 'none'\n },\n [`${componentCls}-nav-more`]: {\n position: 'relative',\n padding: tabsCardPadding,\n background: 'transparent',\n border: 0,\n color: token.colorText,\n '&::after': {\n position: 'absolute',\n right: {\n _skip_check_: true,\n value: 0\n },\n bottom: 0,\n left: {\n _skip_check_: true,\n value: 0\n },\n height: token.calc(token.controlHeightLG).div(8).equal(),\n transform: 'translateY(100%)',\n content: \"''\"\n }\n },\n [`${componentCls}-nav-add`]: {\n minWidth: cardHeight,\n minHeight: cardHeight,\n marginLeft: {\n _skip_check_: true,\n value: cardGutter\n },\n background: 'transparent',\n border: `${unit(token.lineWidth)} ${token.lineType} ${colorBorderSecondary}`,\n borderRadius: `${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)} 0 0`,\n outline: 'none',\n cursor: 'pointer',\n color: token.colorText,\n transition: `all ${token.motionDurationSlow} ${token.motionEaseInOut}`,\n '&:hover': {\n color: itemHoverColor\n },\n '&:active, &:focus:not(:focus-visible)': {\n color: itemActiveColor\n },\n ...genFocusStyle(token, -3)\n }\n },\n [`${componentCls}-extra-content`]: {\n flex: 'none'\n },\n // ============================ InkBar ============================\n [`${componentCls}-ink-bar`]: {\n position: 'absolute',\n background: token.inkBarColor,\n pointerEvents: 'none'\n },\n // ============================= Tabs =============================\n ...genTabStyle(token),\n // =========================== TabPanes ===========================\n [`${componentCls}-content`]: {\n position: 'relative',\n width: '100%'\n },\n [`${componentCls}-content-holder`]: {\n flex: 'auto',\n minWidth: 0,\n minHeight: 0\n },\n [`${componentCls}-tabpane`]: {\n ...genFocusStyle(token),\n '&-hidden': {\n display: 'none'\n }\n }\n },\n [`${componentCls}-centered`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-nav-wrap`]: {\n [`&:not([class*='${componentCls}-nav-wrap-ping']) > ${componentCls}-nav-list`]: {\n margin: 'auto'\n }\n }\n }\n }\n };\n};\nexport const prepareComponentToken = token => {\n const {\n cardHeight,\n cardHeightSM,\n cardHeightLG,\n controlHeight,\n controlHeightLG\n } = token;\n const mergedCardHeight = cardHeight || controlHeightLG;\n const mergedCardHeightSM = cardHeightSM || controlHeight;\n // `controlHeight` missing XL variable, so we directly write it here:\n const mergedCardHeightLG = cardHeightLG || controlHeightLG + 8;\n return {\n zIndexPopup: token.zIndexPopupBase + 50,\n cardBg: token.colorFillAlter,\n // We can not pass this as valid value,\n // Since `cardHeight` will lock nav add button height.\n cardHeight: mergedCardHeight,\n cardHeightSM: mergedCardHeightSM,\n cardHeightLG: mergedCardHeightLG,\n // Initialize with empty string, because cardPadding will be calculated with cardHeight by default.\n cardPadding: `${(mergedCardHeight - token.fontHeight) / 2 - token.lineWidth}px ${token.padding}px`,\n cardPaddingSM: `${(mergedCardHeightSM - token.fontHeight) / 2 - token.lineWidth}px ${token.paddingXS}px`,\n cardPaddingLG: `${(mergedCardHeightLG - token.fontHeightLG) / 2 - token.lineWidth}px ${token.padding}px`,\n titleFontSize: token.fontSize,\n titleFontSizeLG: token.fontSizeLG,\n titleFontSizeSM: token.fontSize,\n inkBarColor: token.colorPrimary,\n horizontalMargin: `0 0 ${token.margin}px 0`,\n horizontalItemGutter: 32,\n // Fixed Value\n // Initialize with empty string, because horizontalItemMargin will be calculated with horizontalItemGutter by default.\n horizontalItemMargin: ``,\n horizontalItemMarginRTL: ``,\n horizontalItemPadding: `${token.paddingSM}px 0`,\n horizontalItemPaddingSM: `${token.paddingXS}px 0`,\n horizontalItemPaddingLG: `${token.padding}px 0`,\n verticalItemPadding: `${token.paddingXS}px ${token.paddingLG}px`,\n verticalItemMargin: `${token.margin}px 0 0 0`,\n itemColor: token.colorText,\n itemSelectedColor: token.colorPrimary,\n itemHoverColor: token.colorPrimaryHover,\n itemActiveColor: token.colorPrimaryActive,\n cardGutter: token.marginXXS / 2\n };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Tabs', token => {\n const tabsToken = mergeToken(token, {\n // `cardPadding` is empty by default, so we could calculate with dynamic `cardHeight`\n tabsCardPadding: token.cardPadding,\n dropdownEdgeChildVerticalPadding: token.paddingXXS,\n tabsDropdownHeight: 200,\n tabsDropdownWidth: 120,\n tabsHorizontalItemMargin: `0 0 0 ${unit(token.horizontalItemGutter)}`,\n tabsHorizontalItemMarginRTL: `0 0 0 ${unit(token.horizontalItemGutter)}`\n });\n return [genSizeStyle(tabsToken), genRtlStyle(tabsToken), genPositionStyle(tabsToken), genDropdownStyle(tabsToken), genCardStyle(tabsToken), genTabsStyle(tabsToken), genMotionStyle(tabsToken)];\n}, prepareComponentToken);","const TabPane = () => null;\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'DeprecatedTabPane';\n}\nexport default TabPane;","\"use client\";\n\nimport * as React from 'react';\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport PlusOutlined from \"@ant-design/icons/es/icons/PlusOutlined\";\nimport RcTabs from '@rc-component/tabs';\nimport { clsx } from 'clsx';\nimport { useMergeSemantic } from '../_util/hooks';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { useComponentConfig } from '../config-provider/context';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport useAnimateConfig from './hooks/useAnimateConfig';\nimport useLegacyItems from './hooks/useLegacyItems';\nimport useStyle from './style';\nimport TabPane from './TabPane';\nconst InternalTabs = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n type,\n className,\n rootClassName,\n size: customSize,\n onEdit,\n hideAdd,\n centered,\n addIcon,\n removeIcon,\n moreIcon,\n more,\n popupClassName,\n children,\n items,\n animated,\n style,\n indicatorSize,\n indicator,\n classNames,\n styles,\n destroyInactiveTabPane,\n destroyOnHidden,\n tabPlacement,\n tabPosition,\n ...restProps\n } = props;\n const {\n prefixCls: customizePrefixCls\n } = restProps;\n const {\n getPrefixCls,\n direction,\n getPopupContainer,\n className: contextClassName,\n style: contextStyle,\n classNames: contextClassNames,\n styles: contextStyles\n } = useComponentConfig('tabs');\n const {\n tabs\n } = React.useContext(ConfigContext);\n const prefixCls = getPrefixCls('tabs', customizePrefixCls);\n const rootCls = useCSSVarCls(prefixCls);\n const [hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n const tabsRef = React.useRef(null);\n React.useImperativeHandle(ref, () => ({\n nativeElement: tabsRef.current\n }));\n let editable;\n if (type === 'editable-card') {\n editable = {\n onEdit: (editType, {\n key,\n event\n }) => {\n onEdit?.(editType === 'add' ? event : key, editType);\n },\n removeIcon: removeIcon ?? tabs?.removeIcon ?? /*#__PURE__*/React.createElement(CloseOutlined, null),\n addIcon: (addIcon ?? tabs?.addIcon) || /*#__PURE__*/React.createElement(PlusOutlined, null),\n showAdd: hideAdd !== true\n };\n }\n const rootPrefixCls = getPrefixCls();\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Tabs');\n [['popupClassName', 'classNames.popup'], ['tabPosition', 'tabPlacement']].forEach(([deprecatedName, newName]) => {\n warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n });\n process.env.NODE_ENV !== \"production\" ? warning(!('onPrevClick' in props) && !('onNextClick' in props), 'breaking', '`onPrevClick` and `onNextClick` has been removed. Please use `onTabScroll` instead.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(indicatorSize || tabs?.indicatorSize), 'deprecated', '`indicatorSize` has been deprecated. Please use `indicator={{ size: ... }}` instead.') : void 0;\n warning.deprecated(!('destroyInactiveTabPane' in props || items?.some(item => 'destroyInactiveTabPane' in item)), 'destroyInactiveTabPane', 'destroyOnHidden');\n }\n const size = useSize(customSize);\n const mergedItems = useLegacyItems(items, children);\n const mergedAnimated = useAnimateConfig(prefixCls, animated);\n const mergedIndicator = {\n align: indicator?.align ?? tabs?.indicator?.align,\n size: indicator?.size ?? indicatorSize ?? tabs?.indicator?.size ?? tabs?.indicatorSize\n };\n const mergedPlacement = React.useMemo(() => {\n const placement = tabPlacement ?? tabPosition ?? undefined;\n const isRTL = direction === 'rtl';\n switch (placement) {\n case 'start':\n return isRTL ? 'right' : 'left';\n case 'end':\n return isRTL ? 'left' : 'right';\n default:\n return placement;\n }\n }, [tabPlacement, tabPosition, direction]);\n // =========== Merged Props for Semantic ===========\n const mergedProps = {\n ...props,\n size,\n tabPlacement: mergedPlacement,\n items: mergedItems\n };\n // ========================= Style ==========================\n const [mergedClassNames, mergedStyles] = useMergeSemantic([contextClassNames, classNames], [contextStyles, styles], {\n props: mergedProps\n }, {\n popup: {\n _default: 'root'\n }\n });\n return /*#__PURE__*/React.createElement(RcTabs, {\n ref: tabsRef,\n direction: direction,\n getPopupContainer: getPopupContainer,\n ...restProps,\n items: mergedItems,\n className: clsx({\n [`${prefixCls}-${size}`]: size,\n [`${prefixCls}-card`]: ['card', 'editable-card'].includes(type),\n [`${prefixCls}-editable-card`]: type === 'editable-card',\n [`${prefixCls}-centered`]: centered\n }, contextClassName, className, rootClassName, mergedClassNames.root, hashId, cssVarCls, rootCls),\n classNames: {\n ...mergedClassNames,\n popup: clsx(popupClassName, hashId, cssVarCls, rootCls, mergedClassNames.popup?.root)\n },\n styles: mergedStyles,\n style: {\n ...mergedStyles.root,\n ...contextStyle,\n ...style\n },\n editable: editable,\n more: {\n icon: tabs?.more?.icon ?? tabs?.moreIcon ?? moreIcon ?? /*#__PURE__*/React.createElement(EllipsisOutlined, null),\n transitionName: `${rootPrefixCls}-slide-up`,\n ...more\n },\n prefixCls: prefixCls,\n animated: mergedAnimated,\n indicator: mergedIndicator,\n destroyOnHidden: destroyOnHidden ?? destroyInactiveTabPane,\n tabPosition: mergedPlacement\n });\n});\nconst Tabs = InternalTabs;\nTabs.TabPane = TabPane;\nif (process.env.NODE_ENV !== 'production') {\n Tabs.displayName = 'Tabs';\n}\nexport default Tabs;"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabs-DfQHMKH8.js","names":["raf","DEFAULT_SIZE","_extends","Menu","MenuItem","Dropdown","_extends","TabContext","ResizeObserver","OperationNode","TabPane","_extends","TabContext","CSSMotion","TabPane","useAnimateConfig","Tabs","useAnimateConfig","isMobile","TabContext","Tabs","mergeToken","useStyle","CloseOutlined","PlusOutlined","RcTabs","EllipsisOutlined"],"sources":["../../node_modules/.pnpm/is-mobile@5.0.0/node_modules/is-mobile/index.js","../../node_modules/.pnpm/@rc-component+util@1.10.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/util/es/isMobile.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabContext.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useIndicator.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useOffsets.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useSyncState.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useTouchMove.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useUpdate.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useVisibleRange.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/util.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/AddButton.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/ExtraContent.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/OperationNode.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/TabNode.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/index.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabNavList/Wrapper.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabPanelList/TabPane.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/TabPanelList/index.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/hooks/useAnimateConfig.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/Tabs.js","../../node_modules/.pnpm/@rc-component+tabs@1.7.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/tabs/es/index.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/hooks/useAnimateConfig.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/hooks/useLegacyItems.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/style/motion.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/style/index.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/TabPane.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/tabs/index.js"],"sourcesContent":["'use strict'\n\nmodule.exports = isMobile\nmodule.exports.isMobile = isMobile\nmodule.exports.default = isMobile\n\nconst mobileRE = /(android|bb\\d+|meego).+mobile|armv7l|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|redmi|series[46]0|samsungbrowser.*mobile|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i\nconst notMobileRE = /CrOS/\n\nconst tabletRE = /android|ipad|playbook|silk/i\n\nfunction isMobile (opts) {\n if (!opts) opts = {}\n let ua = opts.ua\n if (!ua && typeof navigator !== 'undefined') ua = navigator.userAgent\n if (ua && ua.headers && typeof ua.headers['user-agent'] === 'string') {\n ua = ua.headers['user-agent']\n }\n if (typeof ua !== 'string') return false\n\n let result =\n (mobileRE.test(ua) && !notMobileRE.test(ua)) ||\n (!!opts.tablet && tabletRE.test(ua))\n\n if (\n !result &&\n opts.tablet &&\n opts.featureDetect &&\n navigator &&\n navigator.maxTouchPoints > 1 &&\n ua.indexOf('Macintosh') !== -1 &&\n ua.indexOf('Safari') !== -1\n ) {\n result = true\n }\n\n return result\n}\n","import isMobile from 'is-mobile';\nlet cached;\nconst getIsMobile = () => {\n if (typeof cached === 'undefined') {\n cached = isMobile();\n }\n return cached;\n};\nexport default getIsMobile;","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import raf from \"@rc-component/util/es/raf\";\nimport React, { useEffect, useRef, useState } from 'react';\nconst useIndicator = options => {\n const {\n activeTabOffset,\n horizontal,\n rtl,\n indicator = {}\n } = options;\n const {\n size,\n align = 'center'\n } = indicator;\n const [inkStyle, setInkStyle] = useState();\n const inkBarRafRef = useRef();\n const getLength = React.useCallback(origin => {\n if (typeof size === 'function') {\n return size(origin);\n }\n if (typeof size === 'number') {\n return size;\n }\n return origin;\n }, [size]);\n\n // Delay set ink style to avoid remove tab blink\n function cleanInkBarRaf() {\n raf.cancel(inkBarRafRef.current);\n }\n useEffect(() => {\n const newInkStyle = {};\n if (activeTabOffset) {\n if (horizontal) {\n newInkStyle.width = getLength(activeTabOffset.width);\n const key = rtl ? 'right' : 'left';\n if (align === 'start') {\n newInkStyle[key] = activeTabOffset[key];\n }\n if (align === 'center') {\n newInkStyle[key] = activeTabOffset[key] + activeTabOffset.width / 2;\n newInkStyle.transform = rtl ? 'translateX(50%)' : 'translateX(-50%)';\n }\n if (align === 'end') {\n newInkStyle[key] = activeTabOffset[key] + activeTabOffset.width;\n newInkStyle.transform = 'translateX(-100%)';\n }\n } else {\n newInkStyle.height = getLength(activeTabOffset.height);\n if (align === 'start') {\n newInkStyle.top = activeTabOffset.top;\n }\n if (align === 'center') {\n newInkStyle.top = activeTabOffset.top + activeTabOffset.height / 2;\n newInkStyle.transform = 'translateY(-50%)';\n }\n if (align === 'end') {\n newInkStyle.top = activeTabOffset.top + activeTabOffset.height;\n newInkStyle.transform = 'translateY(-100%)';\n }\n }\n }\n cleanInkBarRaf();\n inkBarRafRef.current = raf(() => {\n // Avoid jitter caused by tiny numerical differences\n // fix https://github.com/ant-design/ant-design/issues/53378\n const isEqual = inkStyle && newInkStyle && Object.keys(newInkStyle).every(key => {\n const newValue = newInkStyle[key];\n const oldValue = inkStyle[key];\n return typeof newValue === 'number' && typeof oldValue === 'number' ? Math.round(newValue) === Math.round(oldValue) : newValue === oldValue;\n });\n if (!isEqual) {\n setInkStyle(newInkStyle);\n }\n });\n return cleanInkBarRaf;\n }, [JSON.stringify(activeTabOffset), horizontal, rtl, align, getLength]);\n return {\n style: inkStyle\n };\n};\nexport default useIndicator;","import { useMemo } from 'react';\nconst 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(() => {\n const map = new Map();\n const lastOffset = tabSizes.get(tabs[0]?.key) || DEFAULT_SIZE;\n const rightOffset = lastOffset.left + lastOffset.width;\n for (let i = 0; i < tabs.length; i += 1) {\n const {\n key\n } = tabs[i];\n let data = tabSizes.get(key);\n\n // Reuse last one when not exist yet\n if (!data) {\n data = tabSizes.get(tabs[i - 1]?.key) || DEFAULT_SIZE;\n }\n const entity = map.get(key) || {\n ...data\n };\n\n // Right\n entity.right = rightOffset - entity.left - entity.width;\n\n // Update entity\n map.set(key, entity);\n }\n return map;\n }, [tabs.map(tab => tab.key).join('_'), tabSizes, holderScrollWidth]);\n}","import * as React from 'react';\nexport default function useSyncState(defaultState, onChange) {\n const stateRef = React.useRef(defaultState);\n const [, forceUpdate] = React.useState({});\n function setState(updater) {\n const newValue = typeof updater === 'function' ? updater(stateRef.current) : updater;\n if (newValue !== stateRef.current) {\n onChange(newValue, stateRef.current);\n }\n stateRef.current = newValue;\n forceUpdate({});\n }\n return [stateRef.current, setState];\n}","import * as React from 'react';\nimport { useRef, useState } from 'react';\nconst MIN_SWIPE_DISTANCE = 0.1;\nconst STOP_SWIPE_DISTANCE = 0.01;\nconst REFRESH_INTERVAL = 20;\nconst SPEED_OFF_MULTIPLE = 0.995 ** REFRESH_INTERVAL;\n\n// ================================= Hook =================================\nexport default function useTouchMove(ref, onOffset) {\n const [touchPosition, setTouchPosition] = useState();\n const [lastTimestamp, setLastTimestamp] = useState(0);\n const [lastTimeDiff, setLastTimeDiff] = useState(0);\n const [lastOffset, setLastOffset] = useState();\n const motionRef = useRef();\n\n // ========================= Events =========================\n // >>> Touch events\n function onTouchStart(e) {\n const {\n screenX,\n screenY\n } = e.touches[0];\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n window.clearInterval(motionRef.current);\n }\n function onTouchMove(e) {\n if (!touchPosition) return;\n\n // e.preventDefault();\n const {\n screenX,\n screenY\n } = e.touches[0];\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n const offsetX = screenX - touchPosition.x;\n const offsetY = screenY - touchPosition.y;\n onOffset(offsetX, offsetY);\n const now = Date.now();\n setLastTimestamp(now);\n setLastTimeDiff(now - lastTimestamp);\n setLastOffset({\n x: offsetX,\n y: offsetY\n });\n }\n function onTouchEnd() {\n if (!touchPosition) return;\n setTouchPosition(null);\n setLastOffset(null);\n\n // Swipe if needed\n if (lastOffset) {\n const distanceX = lastOffset.x / lastTimeDiff;\n const distanceY = lastOffset.y / lastTimeDiff;\n const absX = Math.abs(distanceX);\n const absY = Math.abs(distanceY);\n\n // Skip swipe if low distance\n if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) return;\n let currentX = distanceX;\n let currentY = distanceY;\n motionRef.current = window.setInterval(() => {\n if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) {\n window.clearInterval(motionRef.current);\n return;\n }\n currentX *= SPEED_OFF_MULTIPLE;\n currentY *= SPEED_OFF_MULTIPLE;\n onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL);\n }, REFRESH_INTERVAL);\n }\n }\n\n // >>> Wheel event\n const lastWheelDirectionRef = useRef();\n function onWheel(e) {\n const {\n deltaX,\n deltaY\n } = e;\n\n // Convert both to x & y since wheel only happened on PC\n let mixed = 0;\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\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 if (onOffset(-mixed, -mixed)) {\n e.preventDefault();\n }\n }\n\n // ========================= Effect =========================\n const touchEventsRef = useRef(null);\n touchEventsRef.current = {\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n onWheel\n };\n React.useEffect(() => {\n function onProxyTouchStart(e) {\n touchEventsRef.current.onTouchStart(e);\n }\n function onProxyTouchMove(e) {\n touchEventsRef.current.onTouchMove(e);\n }\n function onProxyTouchEnd(e) {\n touchEventsRef.current.onTouchEnd(e);\n }\n function onProxyWheel(e) {\n touchEventsRef.current.onWheel(e);\n }\n document.addEventListener('touchmove', onProxyTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', onProxyTouchEnd, {\n passive: true\n });\n\n // No need to clean up since element removed\n ref.current.addEventListener('touchstart', onProxyTouchStart, {\n passive: true\n });\n ref.current.addEventListener('wheel', onProxyWheel, {\n passive: false\n });\n return () => {\n document.removeEventListener('touchmove', onProxyTouchMove);\n document.removeEventListener('touchend', onProxyTouchEnd);\n };\n }, []);\n}","import { useLayoutUpdateEffect } from \"@rc-component/util/es/hooks/useLayoutEffect\";\nimport { useRef, useState } from 'react';\n\n/**\n * Help to merge callback with `useLayoutEffect`.\n * One time will only trigger once.\n */\nexport default function useUpdate(callback) {\n const [count, setCount] = useState(0);\n const effectRef = useRef(0);\n const callbackRef = useRef();\n callbackRef.current = callback;\n\n // Trigger on `useLayoutEffect`\n useLayoutUpdateEffect(() => {\n callbackRef.current?.();\n }, [count]);\n\n // Trigger to update count\n return () => {\n if (effectRef.current !== count) {\n return;\n }\n effectRef.current += 1;\n setCount(effectRef.current);\n };\n}\nexport function useUpdateState(defaultState) {\n const batchRef = useRef([]);\n const [, forceUpdate] = useState({});\n const state = useRef(typeof defaultState === 'function' ? defaultState() : defaultState);\n const flushUpdate = useUpdate(() => {\n let current = state.current;\n batchRef.current.forEach(callback => {\n current = callback(current);\n });\n batchRef.current = [];\n state.current = current;\n forceUpdate({});\n });\n function updater(callback) {\n batchRef.current.push(callback);\n flushUpdate();\n }\n return [state.current, updater];\n}","import { useMemo } from 'react';\nconst DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0\n};\nexport default function useVisibleRange(tabOffsets, visibleTabContentValue, transform, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, {\n tabs,\n tabPosition,\n rtl\n}) {\n let charUnit;\n let position;\n let transformSize;\n if (['top', 'bottom'].includes(tabPosition)) {\n charUnit = 'width';\n position = rtl ? 'right' : 'left';\n transformSize = Math.abs(transform);\n } else {\n charUnit = 'height';\n position = 'top';\n transformSize = -transform;\n }\n return useMemo(() => {\n if (!tabs.length) {\n return [0, 0];\n }\n const len = tabs.length;\n let endIndex = len;\n for (let i = 0; i < len; i += 1) {\n const offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;\n if (Math.floor(offset[position] + offset[charUnit]) > Math.floor(transformSize + visibleTabContentValue)) {\n endIndex = i - 1;\n break;\n }\n }\n let startIndex = 0;\n for (let i = len - 1; i >= 0; i -= 1) {\n const offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;\n if (offset[position] < transformSize) {\n startIndex = i + 1;\n break;\n }\n }\n return startIndex > endIndex ? [0, -1] : [startIndex, endIndex];\n }, [tabOffsets, visibleTabContentValue, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, transformSize, tabPosition, tabs.map(tab => tab.key).join('_'), rtl]);\n}","/**\n * We trade Map as deps which may change with same value but different ref object.\n * We should make it as hash for deps\n * */\nexport function stringify(obj) {\n let tgt;\n if (obj instanceof Map) {\n tgt = {};\n obj.forEach((v, k) => {\n tgt[k] = v;\n });\n } else {\n tgt = obj;\n }\n return JSON.stringify(tgt);\n}\nconst RC_TABS_DOUBLE_QUOTE = 'TABS_DQ';\nexport function genDataNodeKey(key) {\n return String(key).replace(/\"/g, RC_TABS_DOUBLE_QUOTE);\n}\nexport function getRemovable(closable, closeIcon, editable, disabled) {\n if (\n // Only editable tabs can be removed\n !editable ||\n // Tabs cannot be removed when disabled\n disabled ||\n // closable is false\n closable === false ||\n // If closable is undefined, the remove button should be hidden when closeIcon is null or false\n closable === undefined && (closeIcon === false || closeIcon === null)) {\n return false;\n }\n return true;\n}","import * as React from 'react';\nconst AddButton = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n prefixCls,\n editable,\n locale,\n style\n } = props;\n if (!editable || editable.showAdd === false) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"button\", {\n ref: ref,\n type: \"button\",\n className: `${prefixCls}-nav-add`,\n style: style,\n \"aria-label\": locale?.addAriaLabel || 'Add tab',\n onClick: event => {\n editable.onEdit('add', {\n event\n });\n }\n }, editable.addIcon || '+');\n});\nexport default AddButton;","import * as React from 'react';\nconst ExtraContent = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n position,\n prefixCls,\n extra\n } = props;\n if (!extra) {\n return null;\n }\n let content;\n\n // Parse extra\n let assertExtra = {};\n if (typeof extra === 'object' && ! /*#__PURE__*/React.isValidElement(extra)) {\n assertExtra = extra;\n } else {\n assertExtra.right = extra;\n }\n if (position === 'right') {\n content = assertExtra.right;\n }\n if (position === 'left') {\n content = assertExtra.left;\n }\n return content ? /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-extra-content`,\n ref: ref\n }, content) : null;\n});\nif (process.env.NODE_ENV !== 'production') {\n ExtraContent.displayName = 'ExtraContent';\n}\nexport default ExtraContent;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport { clsx } from 'clsx';\nimport Dropdown from '@rc-component/dropdown';\nimport Menu, { MenuItem } from '@rc-component/menu';\nimport KeyCode from \"@rc-component/util/es/KeyCode\";\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { getRemovable } from \"../util\";\nimport AddButton from \"./AddButton\";\nconst OperationNode = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n prefixCls,\n id,\n tabs,\n locale,\n mobile,\n more: moreProps = {},\n style,\n className,\n editable,\n tabBarGutter,\n rtl,\n removeAriaLabel,\n onTabClick,\n getPopupContainer,\n popupClassName,\n popupStyle\n } = props;\n // ======================== Dropdown ========================\n const [open, setOpen] = useState(false);\n const [selectedKey, setSelectedKey] = useState(null);\n const {\n icon: moreIcon = 'More'\n } = moreProps;\n const popupId = `${id}-more-popup`;\n const dropdownPrefix = `${prefixCls}-dropdown`;\n const selectedItemId = selectedKey !== null ? `${popupId}-${selectedKey}` : null;\n const dropdownAriaLabel = locale?.dropdownAriaLabel;\n function onRemoveTab(event, key) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key,\n event\n });\n }\n const menu = /*#__PURE__*/React.createElement(Menu, {\n onClick: ({\n key,\n domEvent\n }) => {\n onTabClick(key, domEvent);\n setOpen(false);\n },\n prefixCls: `${dropdownPrefix}-menu`,\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(tab => {\n const {\n closable,\n disabled,\n closeIcon,\n key,\n label\n } = tab;\n const removable = getRemovable(closable, closeIcon, editable, disabled);\n return /*#__PURE__*/React.createElement(MenuItem, {\n key: key,\n id: `${popupId}-${key}`,\n role: \"option\",\n \"aria-controls\": id && `${id}-panel-${key}`,\n disabled: disabled\n }, /*#__PURE__*/React.createElement(\"span\", null, label), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: `${dropdownPrefix}-menu-item-remove`,\n onClick: e => {\n e.stopPropagation();\n onRemoveTab(e, key);\n }\n }, closeIcon || editable.removeIcon || '×'));\n }));\n function selectOffset(offset) {\n const enabledTabs = tabs.filter(tab => !tab.disabled);\n let selectedIndex = enabledTabs.findIndex(tab => tab.key === selectedKey) || 0;\n const len = enabledTabs.length;\n for (let i = 0; i < len; i += 1) {\n selectedIndex = (selectedIndex + offset + len) % len;\n const tab = enabledTabs[selectedIndex];\n if (!tab.disabled) {\n setSelectedKey(tab.key);\n return;\n }\n }\n }\n function onKeyDown(e) {\n const {\n which\n } = e;\n if (!open) {\n if ([KeyCode.DOWN, KeyCode.SPACE, KeyCode.ENTER].includes(which)) {\n setOpen(true);\n e.preventDefault();\n }\n return;\n }\n switch (which) {\n case KeyCode.UP:\n selectOffset(-1);\n e.preventDefault();\n break;\n case KeyCode.DOWN:\n selectOffset(1);\n e.preventDefault();\n break;\n case KeyCode.ESC:\n setOpen(false);\n break;\n case KeyCode.SPACE:\n case KeyCode.ENTER:\n if (selectedKey !== null) {\n onTabClick(selectedKey, e);\n }\n break;\n }\n }\n\n // ========================= Effect =========================\n useEffect(() => {\n // We use query element here to avoid React strict warning\n const ele = document.getElementById(selectedItemId);\n if (ele?.scrollIntoView) {\n ele.scrollIntoView(false);\n }\n }, [selectedItemId, selectedKey]);\n useEffect(() => {\n if (!open) {\n setSelectedKey(null);\n }\n }, [open]);\n\n // ========================= Render =========================\n const moreStyle = {\n marginInlineStart: tabBarGutter\n };\n if (!tabs.length) {\n moreStyle.visibility = 'hidden';\n moreStyle.order = 1;\n }\n const overlayClassName = clsx(popupClassName, {\n [`${dropdownPrefix}-rtl`]: rtl\n });\n const moreNode = mobile ? null : /*#__PURE__*/React.createElement(Dropdown, _extends({\n prefixCls: dropdownPrefix,\n overlay: menu,\n visible: tabs.length ? open : false,\n onVisibleChange: setOpen,\n overlayClassName: overlayClassName,\n overlayStyle: popupStyle,\n mouseEnterDelay: 0.1,\n mouseLeaveDelay: 0.1,\n getPopupContainer: getPopupContainer\n }, moreProps), /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: `${prefixCls}-nav-more`,\n style: moreStyle,\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": popupId,\n id: `${id}-more`,\n \"aria-expanded\": open,\n onKeyDown: onKeyDown\n }, moreIcon));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${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});\nexport default /*#__PURE__*/React.memo(OperationNode, (_, next) =>\n// https://github.com/ant-design/ant-design/issues/32544\n// We'd better remove syntactic sugar in `rc-menu` since this has perf issue\nnext.tabMoving);","import { clsx } from 'clsx';\nimport * as React from 'react';\nimport { genDataNodeKey, getRemovable } from \"../util\";\nconst TabNode = props => {\n const {\n prefixCls,\n id,\n active,\n focus,\n tab: {\n key,\n label,\n disabled,\n closeIcon,\n icon\n },\n closable,\n renderWrapper,\n removeAriaLabel,\n editable,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n onMouseDown,\n onMouseUp,\n style,\n className,\n tabCount,\n currentPosition\n } = props;\n const tabPrefix = `${prefixCls}-tab`;\n const removable = getRemovable(closable, closeIcon, editable, disabled);\n function onInternalClick(e) {\n if (disabled) {\n return;\n }\n onClick(e);\n }\n function onRemoveTab(event) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key,\n event\n });\n }\n const labelNode = React.useMemo(() => icon && typeof label === 'string' ? /*#__PURE__*/React.createElement(\"span\", null, label) : label, [label, icon]);\n const btnRef = React.useRef(null);\n React.useEffect(() => {\n if (focus && btnRef.current) {\n btnRef.current.focus();\n }\n }, [focus]);\n const node = /*#__PURE__*/React.createElement(\"div\", {\n key: key,\n \"data-node-key\": genDataNodeKey(key),\n className: clsx(tabPrefix, className, {\n [`${tabPrefix}-with-remove`]: removable,\n [`${tabPrefix}-active`]: active,\n [`${tabPrefix}-disabled`]: disabled,\n [`${tabPrefix}-focus`]: focus\n }),\n style: style,\n onClick: onInternalClick\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: btnRef,\n role: \"tab\",\n \"aria-selected\": active,\n id: id && `${id}-tab-${key}`,\n className: `${tabPrefix}-btn`,\n \"aria-controls\": id && `${id}-panel-${key}`,\n \"aria-disabled\": disabled,\n tabIndex: disabled ? null : active ? 0 : -1,\n onClick: e => {\n e.stopPropagation();\n onInternalClick(e);\n },\n onKeyDown: onKeyDown,\n onMouseDown: onMouseDown,\n onMouseUp: onMouseUp,\n onFocus: onFocus,\n onBlur: onBlur\n }, focus && /*#__PURE__*/React.createElement(\"div\", {\n \"aria-live\": \"polite\",\n style: {\n width: 0,\n height: 0,\n position: 'absolute',\n overflow: 'hidden',\n opacity: 0\n }\n }, `Tab ${currentPosition} of ${tabCount}`), icon && /*#__PURE__*/React.createElement(\"span\", {\n className: `${tabPrefix}-icon`\n }, icon), label && labelNode), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: active ? 0 : -1,\n className: `${tabPrefix}-remove`,\n onClick: e => {\n e.stopPropagation();\n onRemoveTab(e);\n }\n }, closeIcon || editable.removeIcon || '×'));\n return renderWrapper ? renderWrapper(node) : node;\n};\nexport default TabNode;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport { clsx } from 'clsx';\nimport ResizeObserver from '@rc-component/resize-observer';\nimport useEvent from \"@rc-component/util/es/hooks/useEvent\";\nimport { useComposeRef } from \"@rc-component/util/es/ref\";\nimport * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport TabContext from \"../TabContext\";\nimport useIndicator from \"../hooks/useIndicator\";\nimport useOffsets from \"../hooks/useOffsets\";\nimport useSyncState from \"../hooks/useSyncState\";\nimport useTouchMove from \"../hooks/useTouchMove\";\nimport useUpdate, { useUpdateState } from \"../hooks/useUpdate\";\nimport useVisibleRange from \"../hooks/useVisibleRange\";\nimport { genDataNodeKey, getRemovable, stringify } from \"../util\";\nimport AddButton from \"./AddButton\";\nimport ExtraContent from \"./ExtraContent\";\nimport OperationNode from \"./OperationNode\";\nimport TabNode from \"./TabNode\";\nconst getTabSize = (tab, containerRect) => {\n // tabListRef\n const {\n offsetWidth,\n offsetHeight,\n offsetTop,\n offsetLeft\n } = tab;\n const {\n width,\n height,\n left,\n top\n } = tab.getBoundingClientRect();\n\n // Use getBoundingClientRect to avoid decimal inaccuracy\n if (Math.abs(width - offsetWidth) < 1) {\n return [width, height, left - containerRect.left, top - containerRect.top];\n }\n return [offsetWidth, offsetHeight, offsetLeft, offsetTop];\n};\nconst getSize = refObj => {\n const {\n offsetWidth = 0,\n offsetHeight = 0\n } = refObj.current || {};\n\n // Use getBoundingClientRect to avoid decimal inaccuracy\n if (refObj.current) {\n const {\n width,\n height\n } = refObj.current.getBoundingClientRect();\n if (Math.abs(width - offsetWidth) < 1) {\n return [width, height];\n }\n }\n return [offsetWidth, offsetHeight];\n};\n\n/**\n * Convert `SizeInfo` to unit value. Such as [123, 456] with `top` position get `123`\n */\nconst getUnitValue = (size, tabPositionTopOrBottom) => {\n return size[tabPositionTopOrBottom ? 0 : 1];\n};\nconst TabNavList = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n className,\n style,\n id,\n animated,\n activeKey,\n rtl,\n extra,\n editable,\n locale,\n tabPosition,\n tabBarGutter,\n children,\n onTabClick,\n onTabScroll,\n indicator,\n classNames: tabsClassNames,\n styles\n } = props;\n const {\n prefixCls,\n tabs\n } = React.useContext(TabContext);\n const containerRef = useRef(null);\n const extraLeftRef = useRef(null);\n const extraRightRef = useRef(null);\n const tabsWrapperRef = useRef(null);\n const tabListRef = useRef(null);\n const operationsRef = useRef(null);\n const innerAddButtonRef = useRef(null);\n const tabPositionTopOrBottom = tabPosition === 'top' || tabPosition === 'bottom';\n const [transformLeft, setTransformLeft] = useSyncState(0, (next, prev) => {\n if (tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'left' : 'right'\n });\n }\n });\n const [transformTop, setTransformTop] = useSyncState(0, (next, prev) => {\n if (!tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'top' : 'bottom'\n });\n }\n });\n const [containerExcludeExtraSize, setContainerExcludeExtraSize] = useState([0, 0]);\n const [tabContentSize, setTabContentSize] = useState([0, 0]);\n const [addSize, setAddSize] = useState([0, 0]);\n const [operationSize, setOperationSize] = useState([0, 0]);\n const [tabSizes, setTabSizes] = useUpdateState(new Map());\n const tabOffsets = useOffsets(tabs, tabSizes, tabContentSize[0]);\n\n // ========================== Unit =========================\n const containerExcludeExtraSizeValue = getUnitValue(containerExcludeExtraSize, tabPositionTopOrBottom);\n const tabContentSizeValue = getUnitValue(tabContentSize, tabPositionTopOrBottom);\n const addSizeValue = getUnitValue(addSize, tabPositionTopOrBottom);\n const operationSizeValue = getUnitValue(operationSize, tabPositionTopOrBottom);\n const needScroll = Math.floor(containerExcludeExtraSizeValue) < Math.floor(tabContentSizeValue + addSizeValue);\n const visibleTabContentValue = needScroll ? containerExcludeExtraSizeValue - operationSizeValue : containerExcludeExtraSizeValue - addSizeValue;\n\n // ========================== Util =========================\n const operationsHiddenClassName = `${prefixCls}-nav-operations-hidden`;\n let transformMin = 0;\n let transformMax = 0;\n if (!tabPositionTopOrBottom) {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n } else if (rtl) {\n transformMin = 0;\n transformMax = Math.max(0, tabContentSizeValue - visibleTabContentValue);\n } else {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n }\n function alignInRange(value) {\n if (value < transformMin) {\n return transformMin;\n }\n if (value > transformMax) {\n return transformMax;\n }\n return value;\n }\n\n // ========================= Mobile ========================\n const touchMovingRef = useRef(null);\n const [lockAnimation, setLockAnimation] = useState();\n function doLockAnimation() {\n setLockAnimation(Date.now());\n }\n function clearTouchMoving() {\n if (touchMovingRef.current) {\n clearTimeout(touchMovingRef.current);\n }\n }\n useTouchMove(tabsWrapperRef, (offsetX, offsetY) => {\n function doMove(setState, offset) {\n setState(value => {\n const newValue = alignInRange(value + offset);\n return newValue;\n });\n }\n\n // Skip scroll if place is enough\n if (!needScroll) {\n return false;\n }\n if (tabPositionTopOrBottom) {\n doMove(setTransformLeft, offsetX);\n } else {\n doMove(setTransformTop, offsetY);\n }\n clearTouchMoving();\n doLockAnimation();\n return true;\n });\n useEffect(() => {\n clearTouchMoving();\n if (lockAnimation) {\n touchMovingRef.current = setTimeout(() => {\n setLockAnimation(0);\n }, 100);\n }\n return clearTouchMoving;\n }, [lockAnimation]);\n\n // ===================== Visible Range =====================\n // Render tab node & collect tab offset\n const [visibleStart, visibleEnd] = useVisibleRange(tabOffsets,\n // Container\n visibleTabContentValue,\n // Transform\n tabPositionTopOrBottom ? transformLeft : transformTop,\n // Tabs\n tabContentSizeValue,\n // Add\n addSizeValue,\n // Operation\n operationSizeValue, {\n ...props,\n tabs\n });\n\n // ========================= Scroll ========================\n const scrollToTab = useEvent((key = activeKey) => {\n const tabOffset = tabOffsets.get(key) || {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0\n };\n if (tabPositionTopOrBottom) {\n // ============ Align with top & bottom ============\n let newTransform = transformLeft;\n\n // RTL\n if (rtl) {\n if (tabOffset.right < transformLeft) {\n newTransform = tabOffset.right;\n } else if (tabOffset.right + tabOffset.width > transformLeft + visibleTabContentValue) {\n newTransform = tabOffset.right + tabOffset.width - visibleTabContentValue;\n }\n }\n // LTR\n else if (tabOffset.left < -transformLeft) {\n newTransform = -tabOffset.left;\n } else if (tabOffset.left + tabOffset.width > -transformLeft + visibleTabContentValue) {\n newTransform = -(tabOffset.left + tabOffset.width - visibleTabContentValue);\n }\n setTransformTop(0);\n setTransformLeft(alignInRange(newTransform));\n } else {\n // ============ Align with left & right ============\n let newTransform = transformTop;\n if (tabOffset.top < -transformTop) {\n newTransform = -tabOffset.top;\n } else if (tabOffset.top + tabOffset.height > -transformTop + visibleTabContentValue) {\n newTransform = -(tabOffset.top + tabOffset.height - visibleTabContentValue);\n }\n setTransformLeft(0);\n setTransformTop(alignInRange(newTransform));\n }\n });\n\n // ========================= Focus =========================\n const [focusKey, setFocusKey] = useState();\n const [isMouse, setIsMouse] = useState(false);\n const enabledTabs = tabs.filter(tab => !tab.disabled).map(tab => tab.key);\n const onOffset = offset => {\n const currentIndex = enabledTabs.indexOf(focusKey || activeKey);\n const len = enabledTabs.length;\n const nextIndex = (currentIndex + offset + len) % len;\n const newKey = enabledTabs[nextIndex];\n setFocusKey(newKey);\n };\n const handleRemoveTab = (removalTabKey, e) => {\n const removeIndex = enabledTabs.indexOf(removalTabKey);\n const removeTab = tabs.find(tab => tab.key === removalTabKey);\n const removable = getRemovable(removeTab?.closable, removeTab?.closeIcon, editable, removeTab?.disabled);\n if (removable) {\n e.preventDefault();\n e.stopPropagation();\n editable.onEdit('remove', {\n key: removalTabKey,\n event: e\n });\n\n // when remove last tab, focus previous tab\n if (removeIndex === enabledTabs.length - 1) {\n onOffset(-1);\n } else {\n onOffset(1);\n }\n }\n };\n const handleMouseDown = (key, e) => {\n setIsMouse(true);\n // Middle mouse button\n if (e.button === 1) {\n handleRemoveTab(key, e);\n }\n };\n const handleKeyDown = e => {\n const {\n code\n } = e;\n const isRTL = rtl && tabPositionTopOrBottom;\n const firstEnabledTab = enabledTabs[0];\n const lastEnabledTab = enabledTabs[enabledTabs.length - 1];\n switch (code) {\n // LEFT\n case 'ArrowLeft':\n {\n if (tabPositionTopOrBottom) {\n onOffset(isRTL ? 1 : -1);\n }\n break;\n }\n\n // RIGHT\n case 'ArrowRight':\n {\n if (tabPositionTopOrBottom) {\n onOffset(isRTL ? -1 : 1);\n }\n break;\n }\n\n // UP\n case 'ArrowUp':\n {\n e.preventDefault();\n if (!tabPositionTopOrBottom) {\n onOffset(-1);\n }\n break;\n }\n\n // DOWN\n case 'ArrowDown':\n {\n e.preventDefault();\n if (!tabPositionTopOrBottom) {\n onOffset(1);\n }\n break;\n }\n\n // HOME\n case 'Home':\n {\n e.preventDefault();\n setFocusKey(firstEnabledTab);\n break;\n }\n\n // END\n case 'End':\n {\n e.preventDefault();\n setFocusKey(lastEnabledTab);\n break;\n }\n\n // Enter & Space\n case 'Enter':\n case 'Space':\n {\n e.preventDefault();\n onTabClick(focusKey ?? activeKey, e);\n break;\n }\n // Backspace\n case 'Backspace':\n case 'Delete':\n {\n handleRemoveTab(focusKey, e);\n break;\n }\n }\n };\n\n // ========================== Tab ==========================\n const tabNodeStyle = {};\n if (tabPositionTopOrBottom) {\n tabNodeStyle.marginInlineStart = tabBarGutter;\n } else {\n tabNodeStyle.marginTop = tabBarGutter;\n }\n const tabNodes = tabs.map((tab, i) => {\n const {\n key\n } = tab;\n return /*#__PURE__*/React.createElement(TabNode, {\n id: id,\n prefixCls: prefixCls,\n key: key,\n tab: tab,\n className: tabsClassNames?.item\n /* first node should not have margin left */,\n style: i === 0 ? styles?.item : {\n ...tabNodeStyle,\n ...styles?.item\n },\n closable: tab.closable,\n editable: editable,\n active: key === activeKey,\n focus: key === focusKey,\n renderWrapper: children,\n removeAriaLabel: locale?.removeAriaLabel,\n tabCount: enabledTabs.length,\n currentPosition: i + 1,\n onClick: e => {\n onTabClick(key, e);\n },\n onKeyDown: handleKeyDown,\n onFocus: () => {\n if (!isMouse) {\n setFocusKey(key);\n }\n scrollToTab(key);\n doLockAnimation();\n if (!tabsWrapperRef.current) {\n return;\n }\n // Focus element will make scrollLeft change which we should reset back\n if (!rtl) {\n tabsWrapperRef.current.scrollLeft = 0;\n }\n tabsWrapperRef.current.scrollTop = 0;\n },\n onBlur: () => {\n setFocusKey(undefined);\n },\n onMouseDown: e => handleMouseDown(key, e),\n onMouseUp: () => {\n setIsMouse(false);\n }\n });\n });\n\n // Update buttons records\n const updateTabSizes = () => setTabSizes(() => {\n const newSizes = new Map();\n const listRect = tabListRef.current?.getBoundingClientRect();\n tabs.forEach(({\n key\n }) => {\n const btnNode = tabListRef.current?.querySelector(`[data-node-key=\"${genDataNodeKey(key)}\"]`);\n if (btnNode) {\n const [width, height, left, top] = getTabSize(btnNode, listRect);\n newSizes.set(key, {\n width,\n height,\n left,\n top\n });\n }\n });\n return newSizes;\n });\n useEffect(() => {\n updateTabSizes();\n }, [tabs.map(tab => tab.key).join('_')]);\n const onListHolderResize = useUpdate(() => {\n // Update wrapper records\n const containerSize = getSize(containerRef);\n const extraLeftSize = getSize(extraLeftRef);\n const extraRightSize = getSize(extraRightRef);\n setContainerExcludeExtraSize([containerSize[0] - extraLeftSize[0] - extraRightSize[0], containerSize[1] - extraLeftSize[1] - extraRightSize[1]]);\n const newAddSize = getSize(innerAddButtonRef);\n setAddSize(newAddSize);\n const newOperationSize = getSize(operationsRef);\n setOperationSize(newOperationSize);\n\n // Which includes add button size\n const tabContentFullSize = getSize(tabListRef);\n setTabContentSize([tabContentFullSize[0] - newAddSize[0], tabContentFullSize[1] - newAddSize[1]]);\n\n // Update buttons records\n updateTabSizes();\n });\n\n // ======================== Dropdown =======================\n const startHiddenTabs = tabs.slice(0, visibleStart);\n const endHiddenTabs = tabs.slice(visibleEnd + 1);\n const hiddenTabs = [...startHiddenTabs, ...endHiddenTabs];\n\n // =================== Link & Operations ===================\n const activeTabOffset = tabOffsets.get(activeKey);\n const {\n style: indicatorStyle\n } = useIndicator({\n activeTabOffset,\n horizontal: tabPositionTopOrBottom,\n indicator,\n rtl\n });\n\n // ========================= Effect ========================\n useEffect(() => {\n scrollToTab();\n }, [activeKey, transformMin, transformMax, stringify(activeTabOffset), stringify(tabOffsets), tabPositionTopOrBottom]);\n\n // Should recalculate when rtl changed\n useEffect(() => {\n onListHolderResize();\n // eslint-disable-next-line\n }, [rtl]);\n\n // ========================= Render ========================\n const hasDropdown = !!hiddenTabs.length;\n const wrapPrefix = `${prefixCls}-nav-wrap`;\n let pingLeft;\n let pingRight;\n let pingTop;\n let pingBottom;\n if (tabPositionTopOrBottom) {\n if (rtl) {\n pingRight = transformLeft > 0;\n pingLeft = transformLeft !== transformMax;\n } else {\n pingLeft = transformLeft < 0;\n pingRight = transformLeft !== transformMin;\n }\n } else {\n pingTop = transformTop < 0;\n pingBottom = transformTop !== transformMin;\n }\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: useComposeRef(ref, containerRef),\n role: \"tablist\",\n \"aria-orientation\": tabPositionTopOrBottom ? 'horizontal' : 'vertical',\n className: clsx(`${prefixCls}-nav`, className, tabsClassNames?.header),\n style: {\n ...styles?.header,\n ...style\n },\n onKeyDown: () => {\n // No need animation when use keyboard\n doLockAnimation();\n }\n }, /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraLeftRef,\n position: \"left\",\n extra: extra,\n prefixCls: prefixCls\n }), /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(wrapPrefix, {\n [`${wrapPrefix}-ping-left`]: pingLeft,\n [`${wrapPrefix}-ping-right`]: pingRight,\n [`${wrapPrefix}-ping-top`]: pingTop,\n [`${wrapPrefix}-ping-bottom`]: pingBottom\n }),\n ref: tabsWrapperRef\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: tabListRef,\n className: `${prefixCls}-nav-list`,\n style: {\n transform: `translate(${transformLeft}px, ${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: {\n ...(tabNodes.length === 0 ? undefined : tabNodeStyle),\n visibility: hasDropdown ? 'hidden' : null\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-ink-bar`, tabsClassNames?.indicator, {\n [`${prefixCls}-ink-bar-animated`]: animated.inkBar\n }),\n style: {\n ...indicatorStyle,\n ...styles?.indicator\n }\n }))))), /*#__PURE__*/React.createElement(OperationNode, _extends({}, props, {\n removeAriaLabel: locale?.removeAriaLabel,\n ref: operationsRef,\n prefixCls: prefixCls,\n tabs: hiddenTabs,\n className: !hasDropdown && operationsHiddenClassName,\n popupStyle: styles?.popup,\n tabMoving: !!lockAnimation\n })), /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraRightRef,\n position: \"right\",\n extra: extra,\n prefixCls: prefixCls\n })));\n /* eslint-enable */\n});\nexport default TabNavList;","// zombieJ: To compatible with `renderTabBar` usage.\n\nimport * as React from 'react';\nimport TabNavList from '.';\n// We have to create a TabNavList components.\nconst TabNavListWrapper = ({\n renderTabBar,\n ...restProps\n}) => {\n if (renderTabBar) {\n return renderTabBar(restProps, TabNavList);\n }\n return /*#__PURE__*/React.createElement(TabNavList, restProps);\n};\nif (process.env.NODE_ENV !== 'production') {\n TabNavListWrapper.displayName = 'TabNavListWrapper';\n}\nexport default TabNavListWrapper;","import { clsx } from 'clsx';\nimport * as React from 'react';\nconst TabPane = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n prefixCls,\n className,\n style,\n id,\n active,\n tabKey,\n children\n } = props;\n const hasContent = React.Children.count(children) > 0;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id && `${id}-panel-${tabKey}`,\n role: \"tabpanel\",\n tabIndex: active && hasContent ? 0 : -1,\n \"aria-labelledby\": id && `${id}-tab-${tabKey}`,\n \"aria-hidden\": !active,\n style: style,\n className: clsx(prefixCls, active && `${prefixCls}-active`, className),\n ref: ref\n }, children);\n});\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'TabPane';\n}\nexport default TabPane;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport { clsx } from 'clsx';\nimport CSSMotion from '@rc-component/motion';\nimport * as React from 'react';\nimport TabContext from \"../TabContext\";\nimport TabPane from \"./TabPane\";\nconst TabPanelList = props => {\n const {\n id,\n activeKey,\n animated,\n tabPosition,\n destroyOnHidden,\n contentStyle,\n contentClassName\n } = props;\n const {\n prefixCls,\n tabs\n } = React.useContext(TabContext);\n const tabPaneAnimated = animated.tabPane;\n const tabPanePrefixCls = `${prefixCls}-tabpane`;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-content-holder`)\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-content`, `${prefixCls}-content-${tabPosition}`, {\n [`${prefixCls}-content-animated`]: tabPaneAnimated\n })\n }, tabs.map(item => {\n const {\n key,\n forceRender,\n style: paneStyle,\n className: paneClassName,\n destroyOnHidden: itemDestroyOnHidden,\n ...restTabProps\n } = item;\n const active = key === activeKey;\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: key,\n visible: active,\n forceRender: forceRender,\n removeOnLeave: !!(destroyOnHidden ?? itemDestroyOnHidden),\n leavedClassName: `${tabPanePrefixCls}-hidden`\n }, animated.tabPaneMotion), ({\n style: motionStyle,\n className: motionClassName\n }, ref) => /*#__PURE__*/React.createElement(TabPane, _extends({}, restTabProps, {\n prefixCls: tabPanePrefixCls,\n id: id,\n tabKey: key,\n animated: tabPaneAnimated,\n active: active,\n style: {\n ...contentStyle,\n ...paneStyle,\n ...motionStyle\n },\n className: clsx(contentClassName, paneClassName, motionClassName),\n ref: ref\n })));\n })));\n};\nexport default TabPanelList;","import warning from \"@rc-component/util/es/warning\";\nexport default function useAnimateConfig(animated = {\n inkBar: true,\n tabPane: false\n}) {\n let mergedAnimated;\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: false\n };\n } else {\n mergedAnimated = {\n inkBar: true,\n ...(typeof animated === 'object' ? animated : {})\n };\n }\n\n // Enable tabPane animation if provide motion\n if (mergedAnimated.tabPaneMotion && mergedAnimated.tabPane === undefined) {\n mergedAnimated.tabPane = true;\n }\n if (!mergedAnimated.tabPaneMotion && mergedAnimated.tabPane) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`animated.tabPane` is true but `animated.tabPaneMotion` is not provided. Motion will not work.');\n }\n mergedAnimated.tabPane = false;\n }\n return mergedAnimated;\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// Accessibility https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role\nimport { clsx } from 'clsx';\nimport useControlledState from \"@rc-component/util/es/hooks/useControlledState\";\nimport isMobile from \"@rc-component/util/es/isMobile\";\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport TabContext from \"./TabContext\";\nimport TabNavListWrapper from \"./TabNavList/Wrapper\";\nimport TabPanelList from \"./TabPanelList\";\nimport useAnimateConfig from \"./hooks/useAnimateConfig\";\n/**\n * Should added antd:\n * - type\n *\n * Removed:\n * - onNextClick\n * - onPrevClick\n * - keyboard\n */\n\n// Used for accessibility\nlet uuid = 0;\nconst Tabs = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n id,\n prefixCls = 'rc-tabs',\n className,\n items,\n direction,\n activeKey,\n defaultActiveKey,\n editable,\n animated,\n tabPosition = 'top',\n tabBarGutter,\n tabBarStyle,\n tabBarExtraContent,\n locale,\n more,\n destroyOnHidden,\n renderTabBar,\n onChange,\n onTabClick,\n onTabScroll,\n getPopupContainer,\n popupClassName,\n indicator,\n classNames: tabsClassNames,\n styles,\n ...restProps\n } = props;\n const tabs = React.useMemo(() => (items || []).filter(item => item && typeof item === 'object' && 'key' in item), [items]);\n const rtl = direction === 'rtl';\n const mergedAnimated = useAnimateConfig(animated);\n\n // ======================== Mobile ========================\n const [mobile, setMobile] = useState(false);\n useEffect(() => {\n // Only update on the client side\n setMobile(isMobile());\n }, []);\n\n // ====================== Active Key ======================\n const [mergedActiveKey, setMergedActiveKey] = useControlledState(defaultActiveKey ?? tabs[0]?.key, activeKey);\n const [activeIndex, setActiveIndex] = useState(() => tabs.findIndex(tab => tab.key === mergedActiveKey));\n\n // Reset active key if not exist anymore\n useEffect(() => {\n let newActiveIndex = tabs.findIndex(tab => tab.key === mergedActiveKey);\n if (newActiveIndex === -1) {\n newActiveIndex = Math.max(0, Math.min(activeIndex, tabs.length - 1));\n setMergedActiveKey(tabs[newActiveIndex]?.key);\n }\n setActiveIndex(newActiveIndex);\n }, [tabs.map(tab => tab.key).join('_'), mergedActiveKey, activeIndex]);\n\n // ===================== Accessibility ====================\n const [mergedId, setMergedId] = useControlledState(null, id);\n\n // Async generate id to avoid ssr mapping failed\n useEffect(() => {\n if (!id) {\n setMergedId(`rc-tabs-${process.env.NODE_ENV === 'test' ? 'test' : uuid}`);\n uuid += 1;\n }\n }, []);\n\n // ======================== Events ========================\n function onInternalTabClick(key, e) {\n onTabClick?.(key, e);\n const isActiveChanged = key !== mergedActiveKey;\n setMergedActiveKey(key);\n if (isActiveChanged) {\n onChange?.(key);\n }\n }\n\n // ======================== Render ========================\n const sharedProps = {\n id: mergedId,\n activeKey: mergedActiveKey,\n animated: mergedAnimated,\n tabPosition,\n rtl,\n mobile\n };\n const tabNavBarProps = {\n ...sharedProps,\n editable,\n locale,\n more,\n tabBarGutter,\n onTabClick: onInternalTabClick,\n onTabScroll,\n extra: tabBarExtraContent,\n style: tabBarStyle,\n getPopupContainer,\n popupClassName: clsx(popupClassName, tabsClassNames?.popup),\n indicator,\n styles,\n classNames: tabsClassNames\n };\n const memoizedValue = React.useMemo(() => {\n return {\n tabs,\n prefixCls\n };\n }, [tabs, prefixCls]);\n return /*#__PURE__*/React.createElement(TabContext.Provider, {\n value: memoizedValue\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n id: id,\n className: clsx(prefixCls, `${prefixCls}-${tabPosition}`, {\n [`${prefixCls}-mobile`]: mobile,\n [`${prefixCls}-editable`]: editable,\n [`${prefixCls}-rtl`]: rtl\n }, className)\n }, restProps), /*#__PURE__*/React.createElement(TabNavListWrapper, _extends({}, tabNavBarProps, {\n renderTabBar: renderTabBar\n })), /*#__PURE__*/React.createElement(TabPanelList, _extends({\n destroyOnHidden: destroyOnHidden\n }, sharedProps, {\n contentStyle: styles?.content,\n contentClassName: tabsClassNames?.content,\n animated: mergedAnimated\n }))));\n});\nif (process.env.NODE_ENV !== 'production') {\n Tabs.displayName = 'Tabs';\n}\nexport default Tabs;","import Tabs from \"./Tabs\";\nexport default Tabs;","import { getTransitionName } from '../../_util/motion';\nconst motion = {\n motionAppear: false,\n motionEnter: true,\n motionLeave: true\n};\nexport default function useAnimateConfig(prefixCls, animated = {\n inkBar: true,\n tabPane: false\n}) {\n let mergedAnimated;\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 = {\n inkBar: true,\n ...(typeof animated === 'object' ? animated : {})\n };\n }\n if (mergedAnimated.tabPane) {\n mergedAnimated.tabPaneMotion = {\n ...motion,\n motionName: getTransitionName(prefixCls, 'switch')\n };\n }\n return mergedAnimated;\n}","import * as React from 'react';\nimport { toArray } from '@rc-component/util';\nimport { devUseWarning } from '../../_util/warning';\nfunction filter(items) {\n return items.filter(item => item);\n}\nfunction useLegacyItems(items, children) {\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Tabs');\n warning.deprecated(!children, 'Tabs.TabPane', 'items');\n }\n if (items) {\n return items.map(item => ({\n ...item,\n destroyOnHidden: item.destroyOnHidden ?? item.destroyInactiveTabPane\n }));\n }\n const childrenItems = toArray(children).map(node => {\n if (/*#__PURE__*/React.isValidElement(node)) {\n const {\n key,\n props\n } = node;\n const {\n tab,\n ...restProps\n } = props || {};\n const item = {\n key: String(key),\n ...restProps,\n label: tab\n };\n return item;\n }\n return null;\n });\n return filter(childrenItems);\n}\nexport default useLegacyItems;","import { initSlideMotion } from '../../style/motion';\nconst genMotionStyle = token => {\n const {\n componentCls,\n motionDurationSlow\n } = token;\n return [{\n [componentCls]: {\n [`${componentCls}-switch`]: {\n '&-appear, &-enter': {\n transition: 'none',\n '&-start': {\n opacity: 0\n },\n '&-active': {\n opacity: 1,\n transition: `opacity ${motionDurationSlow}`\n }\n },\n '&-leave': {\n position: 'absolute',\n transition: 'none',\n inset: 0,\n '&-start': {\n opacity: 1\n },\n '&-active': {\n opacity: 0,\n transition: `opacity ${motionDurationSlow}`\n }\n }\n }\n }\n },\n // Follow code may reuse in other components\n [initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down')]];\n};\nexport default genMotionStyle;","import { unit } from '@ant-design/cssinjs';\nimport { genFocusOutline, genFocusStyle, resetComponent, textEllipsis } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genMotionStyle from './motion';\nconst genCardStyle = token => {\n const {\n componentCls,\n tabsCardPadding,\n cardBg,\n cardGutter,\n colorBorderSecondary,\n itemSelectedColor\n } = token;\n return {\n [`${componentCls}-card`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n margin: 0,\n padding: tabsCardPadding,\n background: cardBg,\n border: `${unit(token.lineWidth)} ${token.lineType} ${colorBorderSecondary}`,\n transition: `all ${token.motionDurationSlow} ${token.motionEaseInOut}`\n },\n [`${componentCls}-tab-active`]: {\n color: itemSelectedColor,\n background: token.colorBgContainer\n },\n [`${componentCls}-tab-focus:has(${componentCls}-tab-btn:focus-visible)`]: genFocusOutline(token, -3),\n [`& ${componentCls}-tab${componentCls}-tab-focus ${componentCls}-tab-btn:focus-visible`]: {\n outline: 'none'\n },\n [`${componentCls}-ink-bar`]: {\n visibility: 'hidden'\n }\n },\n // ========================== Top & Bottom ==========================\n [`&${componentCls}-top, &${componentCls}-bottom`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab + ${componentCls}-tab`]: {\n marginLeft: {\n _skip_check_: true,\n value: unit(cardGutter)\n }\n }\n }\n },\n [`&${componentCls}-top`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n borderRadius: `${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)} 0 0`\n },\n [`${componentCls}-tab-active`]: {\n borderBottomColor: token.colorBgContainer\n }\n }\n },\n [`&${componentCls}-bottom`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n borderRadius: `0 0 ${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)}`\n },\n [`${componentCls}-tab-active`]: {\n borderTopColor: token.colorBgContainer\n }\n }\n },\n // ========================== Left & Right ==========================\n [`&${componentCls}-left, &${componentCls}-right`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab + ${componentCls}-tab`]: {\n marginTop: unit(cardGutter)\n }\n }\n },\n [`&${componentCls}-left`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n borderRadius: {\n _skip_check_: true,\n value: `${unit(token.borderRadiusLG)} 0 0 ${unit(token.borderRadiusLG)}`\n }\n },\n [`${componentCls}-tab-active`]: {\n borderRightColor: {\n _skip_check_: true,\n value: token.colorBgContainer\n }\n }\n }\n },\n [`&${componentCls}-right`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n borderRadius: {\n _skip_check_: true,\n value: `0 ${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)} 0`\n }\n },\n [`${componentCls}-tab-active`]: {\n borderLeftColor: {\n _skip_check_: true,\n value: token.colorBgContainer\n }\n }\n }\n }\n }\n };\n};\nconst genDropdownStyle = token => {\n const {\n componentCls,\n itemHoverColor,\n dropdownEdgeChildVerticalPadding\n } = token;\n return {\n [`${componentCls}-dropdown`]: {\n ...resetComponent(token),\n position: 'absolute',\n top: -9999,\n left: {\n _skip_check_: true,\n value: -9999\n },\n zIndex: token.zIndexPopup,\n display: 'block',\n '&-hidden': {\n display: 'none'\n },\n [`${componentCls}-dropdown-menu`]: {\n maxHeight: token.tabsDropdownHeight,\n margin: 0,\n padding: `${unit(dropdownEdgeChildVerticalPadding)} 0`,\n overflowX: 'hidden',\n overflowY: 'auto',\n textAlign: {\n _skip_check_: true,\n value: 'left'\n },\n listStyleType: 'none',\n backgroundColor: token.colorBgContainer,\n backgroundClip: 'padding-box',\n borderRadius: token.borderRadiusLG,\n outline: 'none',\n boxShadow: token.boxShadowSecondary,\n '&-item': {\n ...textEllipsis,\n display: 'flex',\n alignItems: 'center',\n minWidth: token.tabsDropdownWidth,\n margin: 0,\n padding: `${unit(token.paddingXXS)} ${unit(token.paddingSM)}`,\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n cursor: 'pointer',\n transition: `all ${token.motionDurationSlow}`,\n '> span': {\n flex: 1,\n whiteSpace: 'nowrap'\n },\n '&-remove': {\n flex: 'none',\n marginLeft: {\n _skip_check_: true,\n value: token.marginSM\n },\n color: token.colorIcon,\n fontSize: token.fontSizeSM,\n background: 'transparent',\n border: 0,\n cursor: 'pointer',\n '&:hover': {\n color: itemHoverColor\n }\n },\n '&:hover': {\n background: token.controlItemBgHover\n },\n '&-disabled': {\n '&, &:hover': {\n color: token.colorTextDisabled,\n background: 'transparent',\n cursor: 'not-allowed'\n }\n }\n }\n }\n }\n };\n};\nconst genPositionStyle = token => {\n const {\n componentCls,\n margin,\n colorBorderSecondary,\n horizontalMargin,\n verticalItemPadding,\n verticalItemMargin,\n calc\n } = token;\n return {\n // ========================== Top & Bottom ==========================\n [`${componentCls}-top, ${componentCls}-bottom`]: {\n flexDirection: 'column',\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n margin: horizontalMargin,\n '&::before': {\n position: 'absolute',\n right: {\n _skip_check_: true,\n value: 0\n },\n left: {\n _skip_check_: true,\n value: 0\n },\n borderBottom: `${unit(token.lineWidth)} ${token.lineType} ${colorBorderSecondary}`,\n content: \"''\"\n },\n [`${componentCls}-ink-bar`]: {\n height: token.lineWidthBold,\n '&-animated': {\n transition: `width ${token.motionDurationSlow}, left ${token.motionDurationSlow},\n right ${token.motionDurationSlow}`\n }\n },\n [`${componentCls}-nav-wrap`]: {\n '&::before, &::after': {\n top: 0,\n bottom: 0,\n width: token.controlHeight\n },\n '&::before': {\n left: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowTabsOverflowLeft\n },\n '&::after': {\n right: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowTabsOverflowRight\n },\n [`&${componentCls}-nav-wrap-ping-left::before`]: {\n opacity: 1\n },\n [`&${componentCls}-nav-wrap-ping-right::after`]: {\n opacity: 1\n }\n }\n }\n },\n [`${componentCls}-top`]: {\n [`> ${componentCls}-nav,\n > div > ${componentCls}-nav`]: {\n '&::before': {\n bottom: 0\n },\n [`${componentCls}-ink-bar`]: {\n bottom: 0\n }\n }\n },\n [`${componentCls}-bottom`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n order: 1,\n marginTop: margin,\n marginBottom: 0,\n '&::before': {\n top: 0\n },\n [`${componentCls}-ink-bar`]: {\n top: 0\n }\n },\n [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n order: 0\n }\n },\n // ========================== Left & Right ==========================\n [`${componentCls}-left, ${componentCls}-right`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n flexDirection: 'column',\n minWidth: calc(token.controlHeight).mul(1.25).equal(),\n // >>>>>>>>>>> Tab\n [`${componentCls}-tab`]: {\n padding: verticalItemPadding,\n textAlign: 'center'\n },\n [`${componentCls}-tab + ${componentCls}-tab`]: {\n margin: verticalItemMargin\n },\n // >>>>>>>>>>> Nav\n [`${componentCls}-nav-wrap`]: {\n flexDirection: 'column',\n '&::before, &::after': {\n right: {\n _skip_check_: true,\n value: 0\n },\n left: {\n _skip_check_: true,\n value: 0\n },\n height: token.controlHeight\n },\n '&::before': {\n top: 0,\n boxShadow: token.boxShadowTabsOverflowTop\n },\n '&::after': {\n bottom: 0,\n boxShadow: token.boxShadowTabsOverflowBottom\n },\n [`&${componentCls}-nav-wrap-ping-top::before`]: {\n opacity: 1\n },\n [`&${componentCls}-nav-wrap-ping-bottom::after`]: {\n opacity: 1\n }\n },\n // >>>>>>>>>>> Ink Bar\n [`${componentCls}-ink-bar`]: {\n width: token.lineWidthBold,\n '&-animated': {\n transition: `height ${token.motionDurationSlow}, top ${token.motionDurationSlow}`\n }\n },\n [`${componentCls}-nav-list, ${componentCls}-nav-operations`]: {\n flex: '1 0 auto',\n // fix safari scroll problem\n flexDirection: 'column'\n }\n }\n },\n [`${componentCls}-left`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-ink-bar`]: {\n right: {\n _skip_check_: true,\n value: 0\n }\n }\n },\n [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n marginLeft: {\n _skip_check_: true,\n value: unit(calc(token.lineWidth).mul(-1).equal())\n },\n borderLeft: {\n _skip_check_: true,\n value: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n },\n [`> ${componentCls}-content > ${componentCls}-tabpane`]: {\n paddingLeft: {\n _skip_check_: true,\n value: token.paddingLG\n }\n }\n }\n },\n [`${componentCls}-right`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n order: 1,\n [`${componentCls}-ink-bar`]: {\n left: {\n _skip_check_: true,\n value: 0\n }\n }\n },\n [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {\n order: 0,\n marginRight: {\n _skip_check_: true,\n value: calc(token.lineWidth).mul(-1).equal()\n },\n borderRight: {\n _skip_check_: true,\n value: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n },\n [`> ${componentCls}-content > ${componentCls}-tabpane`]: {\n paddingRight: {\n _skip_check_: true,\n value: token.paddingLG\n }\n }\n }\n }\n };\n};\nconst genSizeStyle = token => {\n const {\n componentCls,\n cardPaddingSM,\n cardPaddingLG,\n cardHeightSM,\n cardHeightLG,\n horizontalItemPaddingSM,\n horizontalItemPaddingLG\n } = token;\n return {\n // >>>>> shared\n [componentCls]: {\n '&-small': {\n [`> ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n padding: horizontalItemPaddingSM,\n fontSize: token.titleFontSizeSM\n }\n }\n },\n '&-large': {\n [`> ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n padding: horizontalItemPaddingLG,\n fontSize: token.titleFontSizeLG,\n lineHeight: token.lineHeightLG\n }\n }\n }\n },\n // >>>>> card\n [`${componentCls}-card`]: {\n // Small\n [`&${componentCls}-small`]: {\n [`> ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n padding: cardPaddingSM\n },\n [`${componentCls}-nav-add`]: {\n minWidth: cardHeightSM,\n minHeight: cardHeightSM\n }\n },\n [`&${componentCls}-bottom`]: {\n [`> ${componentCls}-nav ${componentCls}-tab`]: {\n borderRadius: `0 0 ${unit(token.borderRadius)} ${unit(token.borderRadius)}`\n }\n },\n [`&${componentCls}-top`]: {\n [`> ${componentCls}-nav ${componentCls}-tab`]: {\n borderRadius: `${unit(token.borderRadius)} ${unit(token.borderRadius)} 0 0`\n }\n },\n [`&${componentCls}-right`]: {\n [`> ${componentCls}-nav ${componentCls}-tab`]: {\n borderRadius: {\n _skip_check_: true,\n value: `0 ${unit(token.borderRadius)} ${unit(token.borderRadius)} 0`\n }\n }\n },\n [`&${componentCls}-left`]: {\n [`> ${componentCls}-nav ${componentCls}-tab`]: {\n borderRadius: {\n _skip_check_: true,\n value: `${unit(token.borderRadius)} 0 0 ${unit(token.borderRadius)}`\n }\n }\n }\n },\n // Large\n [`&${componentCls}-large`]: {\n [`> ${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n padding: cardPaddingLG\n },\n [`${componentCls}-nav-add`]: {\n minWidth: cardHeightLG,\n minHeight: cardHeightLG\n }\n }\n }\n }\n };\n};\nconst genTabStyle = token => {\n const {\n componentCls,\n itemActiveColor,\n itemHoverColor,\n iconCls,\n tabsHorizontalItemMargin,\n horizontalItemPadding,\n itemSelectedColor,\n itemColor\n } = token;\n const tabCls = `${componentCls}-tab`;\n return {\n [tabCls]: {\n position: 'relative',\n WebkitTouchCallout: 'none',\n WebkitTapHighlightColor: 'transparent',\n display: 'inline-flex',\n alignItems: 'center',\n padding: horizontalItemPadding,\n fontSize: token.titleFontSize,\n background: 'transparent',\n border: 0,\n outline: 'none',\n cursor: 'pointer',\n color: itemColor,\n '&-btn, &-remove': {\n '&:focus:not(:focus-visible), &:active': {\n color: itemActiveColor\n }\n },\n '&-btn': {\n outline: 'none',\n transition: `all ${token.motionDurationSlow}`,\n [`${tabCls}-icon:not(:last-child)`]: {\n marginInlineEnd: token.marginSM\n }\n },\n '&-remove': {\n flex: 'none',\n lineHeight: 1,\n marginRight: {\n _skip_check_: true,\n value: token.calc(token.marginXXS).mul(-1).equal()\n },\n marginLeft: {\n _skip_check_: true,\n value: token.marginXS\n },\n color: token.colorIcon,\n fontSize: token.fontSizeSM,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n cursor: 'pointer',\n transition: `all ${token.motionDurationSlow}`,\n '&:hover': {\n color: token.colorTextHeading\n },\n ...genFocusStyle(token)\n },\n '&:hover': {\n color: itemHoverColor\n },\n [`&${tabCls}-active ${tabCls}-btn`]: {\n color: itemSelectedColor\n },\n [`&${tabCls}-focus ${tabCls}-btn:focus-visible`]: genFocusOutline(token),\n [`&${tabCls}-disabled`]: {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n },\n [`&${tabCls}-disabled ${tabCls}-btn, &${tabCls}-disabled ${componentCls}-remove`]: {\n '&:focus, &:active': {\n color: token.colorTextDisabled\n }\n },\n [`& ${tabCls}-remove ${iconCls}`]: {\n margin: 0,\n verticalAlign: 'middle'\n },\n [`${iconCls}:not(:last-child)`]: {\n marginRight: {\n _skip_check_: true,\n value: token.marginSM\n }\n }\n },\n [`${tabCls} + ${tabCls}`]: {\n margin: {\n _skip_check_: true,\n value: tabsHorizontalItemMargin\n }\n }\n };\n};\nconst genRtlStyle = token => {\n const {\n componentCls,\n tabsHorizontalItemMarginRTL,\n iconCls,\n cardGutter,\n calc\n } = token;\n const rtlCls = `${componentCls}-rtl`;\n return {\n [rtlCls]: {\n direction: 'rtl',\n [`${componentCls}-nav`]: {\n [`${componentCls}-tab`]: {\n margin: {\n _skip_check_: true,\n value: tabsHorizontalItemMarginRTL\n },\n [`${componentCls}-tab:last-of-type`]: {\n marginLeft: {\n _skip_check_: true,\n value: 0\n }\n },\n [iconCls]: {\n marginRight: {\n _skip_check_: true,\n value: 0\n },\n marginLeft: {\n _skip_check_: true,\n value: unit(token.marginSM)\n }\n },\n [`${componentCls}-tab-remove`]: {\n marginRight: {\n _skip_check_: true,\n value: unit(token.marginXS)\n },\n marginLeft: {\n _skip_check_: true,\n value: unit(calc(token.marginXXS).mul(-1).equal())\n },\n [iconCls]: {\n margin: 0\n }\n }\n }\n },\n [`&${componentCls}-left`]: {\n [`> ${componentCls}-nav`]: {\n order: 1\n },\n [`> ${componentCls}-content-holder`]: {\n order: 0\n }\n },\n [`&${componentCls}-right`]: {\n [`> ${componentCls}-nav`]: {\n order: 0\n },\n [`> ${componentCls}-content-holder`]: {\n order: 1\n }\n },\n // ====================== Card ======================\n [`&${componentCls}-card${componentCls}-top, &${componentCls}-card${componentCls}-bottom`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-tab + ${componentCls}-tab`]: {\n marginRight: {\n _skip_check_: true,\n value: cardGutter\n },\n marginLeft: {\n _skip_check_: true,\n value: 0\n }\n }\n }\n }\n },\n [`${componentCls}-dropdown-rtl`]: {\n direction: 'rtl'\n },\n [`${componentCls}-menu-item`]: {\n [`${componentCls}-dropdown-rtl`]: {\n textAlign: {\n _skip_check_: true,\n value: 'right'\n }\n }\n }\n };\n};\nconst genTabsStyle = token => {\n const {\n componentCls,\n tabsCardPadding,\n cardHeight,\n cardGutter,\n itemHoverColor,\n itemActiveColor,\n colorBorderSecondary\n } = token;\n return {\n [componentCls]: {\n ...resetComponent(token),\n display: 'flex',\n // ========================== Navigation ==========================\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n position: 'relative',\n display: 'flex',\n flex: 'none',\n alignItems: 'center',\n [`${componentCls}-nav-wrap`]: {\n position: 'relative',\n display: 'flex',\n flex: 'auto',\n alignSelf: 'stretch',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n transform: 'translate(0)',\n // Fix chrome render bug\n // >>>>> Ping shadow\n '&::before, &::after': {\n position: 'absolute',\n zIndex: 1,\n opacity: 0,\n transition: `opacity ${token.motionDurationSlow}`,\n content: \"''\",\n pointerEvents: 'none'\n }\n },\n [`${componentCls}-nav-list`]: {\n position: 'relative',\n display: 'flex',\n transition: `opacity ${token.motionDurationSlow}`\n },\n // >>>>>>>> Operations\n [`${componentCls}-nav-operations`]: {\n display: 'flex',\n alignSelf: 'stretch'\n },\n [`${componentCls}-nav-operations-hidden`]: {\n position: 'absolute',\n visibility: 'hidden',\n pointerEvents: 'none'\n },\n [`${componentCls}-nav-more`]: {\n position: 'relative',\n padding: tabsCardPadding,\n background: 'transparent',\n border: 0,\n color: token.colorText,\n '&::after': {\n position: 'absolute',\n right: {\n _skip_check_: true,\n value: 0\n },\n bottom: 0,\n left: {\n _skip_check_: true,\n value: 0\n },\n height: token.calc(token.controlHeightLG).div(8).equal(),\n transform: 'translateY(100%)',\n content: \"''\"\n }\n },\n [`${componentCls}-nav-add`]: {\n minWidth: cardHeight,\n minHeight: cardHeight,\n marginLeft: {\n _skip_check_: true,\n value: cardGutter\n },\n background: 'transparent',\n border: `${unit(token.lineWidth)} ${token.lineType} ${colorBorderSecondary}`,\n borderRadius: `${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)} 0 0`,\n outline: 'none',\n cursor: 'pointer',\n color: token.colorText,\n transition: `all ${token.motionDurationSlow} ${token.motionEaseInOut}`,\n '&:hover': {\n color: itemHoverColor\n },\n '&:active, &:focus:not(:focus-visible)': {\n color: itemActiveColor\n },\n ...genFocusStyle(token, -3)\n }\n },\n [`${componentCls}-extra-content`]: {\n flex: 'none'\n },\n // ============================ InkBar ============================\n [`${componentCls}-ink-bar`]: {\n position: 'absolute',\n background: token.inkBarColor,\n pointerEvents: 'none'\n },\n // ============================= Tabs =============================\n ...genTabStyle(token),\n // =========================== TabPanes ===========================\n [`${componentCls}-content`]: {\n position: 'relative',\n width: '100%'\n },\n [`${componentCls}-content-holder`]: {\n flex: 'auto',\n minWidth: 0,\n minHeight: 0\n },\n [`${componentCls}-tabpane`]: {\n ...genFocusStyle(token),\n '&-hidden': {\n display: 'none'\n }\n }\n },\n [`${componentCls}-centered`]: {\n [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: {\n [`${componentCls}-nav-wrap`]: {\n [`&:not([class*='${componentCls}-nav-wrap-ping']) > ${componentCls}-nav-list`]: {\n margin: 'auto'\n }\n }\n }\n }\n };\n};\nexport const prepareComponentToken = token => {\n const {\n cardHeight,\n cardHeightSM,\n cardHeightLG,\n controlHeight,\n controlHeightLG\n } = token;\n const mergedCardHeight = cardHeight || controlHeightLG;\n const mergedCardHeightSM = cardHeightSM || controlHeight;\n // `controlHeight` missing XL variable, so we directly write it here:\n const mergedCardHeightLG = cardHeightLG || controlHeightLG + 8;\n return {\n zIndexPopup: token.zIndexPopupBase + 50,\n cardBg: token.colorFillAlter,\n // We can not pass this as valid value,\n // Since `cardHeight` will lock nav add button height.\n cardHeight: mergedCardHeight,\n cardHeightSM: mergedCardHeightSM,\n cardHeightLG: mergedCardHeightLG,\n // Initialize with empty string, because cardPadding will be calculated with cardHeight by default.\n cardPadding: `${(mergedCardHeight - token.fontHeight) / 2 - token.lineWidth}px ${token.padding}px`,\n cardPaddingSM: `${(mergedCardHeightSM - token.fontHeight) / 2 - token.lineWidth}px ${token.paddingXS}px`,\n cardPaddingLG: `${(mergedCardHeightLG - token.fontHeightLG) / 2 - token.lineWidth}px ${token.padding}px`,\n titleFontSize: token.fontSize,\n titleFontSizeLG: token.fontSizeLG,\n titleFontSizeSM: token.fontSize,\n inkBarColor: token.colorPrimary,\n horizontalMargin: `0 0 ${token.margin}px 0`,\n horizontalItemGutter: 32,\n // Fixed Value\n // Initialize with empty string, because horizontalItemMargin will be calculated with horizontalItemGutter by default.\n horizontalItemMargin: ``,\n horizontalItemMarginRTL: ``,\n horizontalItemPadding: `${token.paddingSM}px 0`,\n horizontalItemPaddingSM: `${token.paddingXS}px 0`,\n horizontalItemPaddingLG: `${token.padding}px 0`,\n verticalItemPadding: `${token.paddingXS}px ${token.paddingLG}px`,\n verticalItemMargin: `${token.margin}px 0 0 0`,\n itemColor: token.colorText,\n itemSelectedColor: token.colorPrimary,\n itemHoverColor: token.colorPrimaryHover,\n itemActiveColor: token.colorPrimaryActive,\n cardGutter: token.marginXXS / 2\n };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Tabs', token => {\n const tabsToken = mergeToken(token, {\n // `cardPadding` is empty by default, so we could calculate with dynamic `cardHeight`\n tabsCardPadding: token.cardPadding,\n dropdownEdgeChildVerticalPadding: token.paddingXXS,\n tabsDropdownHeight: 200,\n tabsDropdownWidth: 120,\n tabsHorizontalItemMargin: `0 0 0 ${unit(token.horizontalItemGutter)}`,\n tabsHorizontalItemMarginRTL: `0 0 0 ${unit(token.horizontalItemGutter)}`\n });\n return [genSizeStyle(tabsToken), genRtlStyle(tabsToken), genPositionStyle(tabsToken), genDropdownStyle(tabsToken), genCardStyle(tabsToken), genTabsStyle(tabsToken), genMotionStyle(tabsToken)];\n}, prepareComponentToken);","const TabPane = () => null;\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'DeprecatedTabPane';\n}\nexport default TabPane;","\"use client\";\n\nimport * as React from 'react';\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport PlusOutlined from \"@ant-design/icons/es/icons/PlusOutlined\";\nimport RcTabs from '@rc-component/tabs';\nimport { clsx } from 'clsx';\nimport { useMergeSemantic } from '../_util/hooks';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { useComponentConfig } from '../config-provider/context';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport useAnimateConfig from './hooks/useAnimateConfig';\nimport useLegacyItems from './hooks/useLegacyItems';\nimport useStyle from './style';\nimport TabPane from './TabPane';\nconst InternalTabs = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n type,\n className,\n rootClassName,\n size: customSize,\n onEdit,\n hideAdd,\n centered,\n addIcon,\n removeIcon,\n moreIcon,\n more,\n popupClassName,\n children,\n items,\n animated,\n style,\n indicatorSize,\n indicator,\n classNames,\n styles,\n destroyInactiveTabPane,\n destroyOnHidden,\n tabPlacement,\n tabPosition,\n ...restProps\n } = props;\n const {\n prefixCls: customizePrefixCls\n } = restProps;\n const {\n getPrefixCls,\n direction,\n getPopupContainer,\n className: contextClassName,\n style: contextStyle,\n classNames: contextClassNames,\n styles: contextStyles\n } = useComponentConfig('tabs');\n const {\n tabs\n } = React.useContext(ConfigContext);\n const prefixCls = getPrefixCls('tabs', customizePrefixCls);\n const rootCls = useCSSVarCls(prefixCls);\n const [hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n const tabsRef = React.useRef(null);\n React.useImperativeHandle(ref, () => ({\n nativeElement: tabsRef.current\n }));\n let editable;\n if (type === 'editable-card') {\n editable = {\n onEdit: (editType, {\n key,\n event\n }) => {\n onEdit?.(editType === 'add' ? event : key, editType);\n },\n removeIcon: removeIcon ?? tabs?.removeIcon ?? /*#__PURE__*/React.createElement(CloseOutlined, null),\n addIcon: (addIcon ?? tabs?.addIcon) || /*#__PURE__*/React.createElement(PlusOutlined, null),\n showAdd: hideAdd !== true\n };\n }\n const rootPrefixCls = getPrefixCls();\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Tabs');\n [['popupClassName', 'classNames.popup'], ['tabPosition', 'tabPlacement']].forEach(([deprecatedName, newName]) => {\n warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n });\n process.env.NODE_ENV !== \"production\" ? warning(!('onPrevClick' in props) && !('onNextClick' in props), 'breaking', '`onPrevClick` and `onNextClick` has been removed. Please use `onTabScroll` instead.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(indicatorSize || tabs?.indicatorSize), 'deprecated', '`indicatorSize` has been deprecated. Please use `indicator={{ size: ... }}` instead.') : void 0;\n warning.deprecated(!('destroyInactiveTabPane' in props || items?.some(item => 'destroyInactiveTabPane' in item)), 'destroyInactiveTabPane', 'destroyOnHidden');\n }\n const size = useSize(customSize);\n const mergedItems = useLegacyItems(items, children);\n const mergedAnimated = useAnimateConfig(prefixCls, animated);\n const mergedIndicator = {\n align: indicator?.align ?? tabs?.indicator?.align,\n size: indicator?.size ?? indicatorSize ?? tabs?.indicator?.size ?? tabs?.indicatorSize\n };\n const mergedPlacement = React.useMemo(() => {\n const placement = tabPlacement ?? tabPosition ?? undefined;\n const isRTL = direction === 'rtl';\n switch (placement) {\n case 'start':\n return isRTL ? 'right' : 'left';\n case 'end':\n return isRTL ? 'left' : 'right';\n default:\n return placement;\n }\n }, [tabPlacement, tabPosition, direction]);\n // =========== Merged Props for Semantic ===========\n const mergedProps = {\n ...props,\n size,\n tabPlacement: mergedPlacement,\n items: mergedItems\n };\n // ========================= Style ==========================\n const [mergedClassNames, mergedStyles] = useMergeSemantic([contextClassNames, classNames], [contextStyles, styles], {\n props: mergedProps\n }, {\n popup: {\n _default: 'root'\n }\n });\n return /*#__PURE__*/React.createElement(RcTabs, {\n ref: tabsRef,\n direction: direction,\n getPopupContainer: getPopupContainer,\n ...restProps,\n items: mergedItems,\n className: clsx({\n [`${prefixCls}-${size}`]: size,\n [`${prefixCls}-card`]: ['card', 'editable-card'].includes(type),\n [`${prefixCls}-editable-card`]: type === 'editable-card',\n [`${prefixCls}-centered`]: centered\n }, contextClassName, className, rootClassName, mergedClassNames.root, hashId, cssVarCls, rootCls),\n classNames: {\n ...mergedClassNames,\n popup: clsx(popupClassName, hashId, cssVarCls, rootCls, mergedClassNames.popup?.root)\n },\n styles: mergedStyles,\n style: {\n ...mergedStyles.root,\n ...contextStyle,\n ...style\n },\n editable: editable,\n more: {\n icon: tabs?.more?.icon ?? tabs?.moreIcon ?? moreIcon ?? /*#__PURE__*/React.createElement(EllipsisOutlined, null),\n transitionName: `${rootPrefixCls}-slide-up`,\n ...more\n },\n prefixCls: prefixCls,\n animated: mergedAnimated,\n indicator: mergedIndicator,\n destroyOnHidden: destroyOnHidden ?? destroyInactiveTabPane,\n tabPosition: mergedPlacement\n });\n});\nconst Tabs = InternalTabs;\nTabs.TabPane = TabPane;\nif (process.env.NODE_ENV !== 'production') {\n Tabs.displayName = 'Tabs';\n}\nexport default Tabs;"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"mappings":"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"}
|