{"ast":null,"code":"import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/* eslint-disable react-hooks/exhaustive-deps */\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport { useComposeRef } from \"rc-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, stringify } from \"../util\";\nimport AddButton from \"./AddButton\";\nimport ExtraContent from \"./ExtraContent\";\nimport OperationNode from \"./OperationNode\";\nimport TabNode from \"./TabNode\";\nvar getTabSize = function getTabSize(tab, containerRect) {\n  // tabListRef\n  var offsetWidth = tab.offsetWidth,\n    offsetHeight = tab.offsetHeight,\n    offsetTop = tab.offsetTop,\n    offsetLeft = tab.offsetLeft;\n  var _tab$getBoundingClien = tab.getBoundingClientRect(),\n    width = _tab$getBoundingClien.width,\n    height = _tab$getBoundingClien.height,\n    x = _tab$getBoundingClien.x,\n    y = _tab$getBoundingClien.y;\n\n  // Use getBoundingClientRect to avoid decimal inaccuracy\n  if (Math.abs(width - offsetWidth) < 1) {\n    return [width, height, x - containerRect.x, y - containerRect.y];\n  }\n  return [offsetWidth, offsetHeight, offsetLeft, offsetTop];\n};\nvar getSize = function getSize(refObj) {\n  var _ref = refObj.current || {},\n    _ref$offsetWidth = _ref.offsetWidth,\n    offsetWidth = _ref$offsetWidth === void 0 ? 0 : _ref$offsetWidth,\n    _ref$offsetHeight = _ref.offsetHeight,\n    offsetHeight = _ref$offsetHeight === void 0 ? 0 : _ref$offsetHeight;\n\n  // Use getBoundingClientRect to avoid decimal inaccuracy\n  if (refObj.current) {\n    var _refObj$current$getBo = refObj.current.getBoundingClientRect(),\n      width = _refObj$current$getBo.width,\n      height = _refObj$current$getBo.height;\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 */\nvar getUnitValue = function getUnitValue(size, tabPositionTopOrBottom) {\n  return size[tabPositionTopOrBottom ? 0 : 1];\n};\nvar TabNavList = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var className = props.className,\n    style = props.style,\n    id = props.id,\n    animated = props.animated,\n    activeKey = props.activeKey,\n    rtl = props.rtl,\n    extra = props.extra,\n    editable = props.editable,\n    locale = props.locale,\n    tabPosition = props.tabPosition,\n    tabBarGutter = props.tabBarGutter,\n    children = props.children,\n    onTabClick = props.onTabClick,\n    onTabScroll = props.onTabScroll,\n    indicator = props.indicator;\n  var _React$useContext = React.useContext(TabContext),\n    prefixCls = _React$useContext.prefixCls,\n    tabs = _React$useContext.tabs;\n  var containerRef = useRef(null);\n  var extraLeftRef = useRef(null);\n  var extraRightRef = useRef(null);\n  var tabsWrapperRef = useRef(null);\n  var tabListRef = useRef(null);\n  var operationsRef = useRef(null);\n  var innerAddButtonRef = useRef(null);\n  var tabPositionTopOrBottom = tabPosition === 'top' || tabPosition === 'bottom';\n  var _useSyncState = useSyncState(0, function (next, prev) {\n      if (tabPositionTopOrBottom && onTabScroll) {\n        onTabScroll({\n          direction: next > prev ? 'left' : 'right'\n        });\n      }\n    }),\n    _useSyncState2 = _slicedToArray(_useSyncState, 2),\n    transformLeft = _useSyncState2[0],\n    setTransformLeft = _useSyncState2[1];\n  var _useSyncState3 = useSyncState(0, function (next, prev) {\n      if (!tabPositionTopOrBottom && onTabScroll) {\n        onTabScroll({\n          direction: next > prev ? 'top' : 'bottom'\n        });\n      }\n    }),\n    _useSyncState4 = _slicedToArray(_useSyncState3, 2),\n    transformTop = _useSyncState4[0],\n    setTransformTop = _useSyncState4[1];\n  var _useState = useState([0, 0]),\n    _useState2 = _slicedToArray(_useState, 2),\n    containerExcludeExtraSize = _useState2[0],\n    setContainerExcludeExtraSize = _useState2[1];\n  var _useState3 = useState([0, 0]),\n    _useState4 = _slicedToArray(_useState3, 2),\n    tabContentSize = _useState4[0],\n    setTabContentSize = _useState4[1];\n  var _useState5 = useState([0, 0]),\n    _useState6 = _slicedToArray(_useState5, 2),\n    addSize = _useState6[0],\n    setAddSize = _useState6[1];\n  var _useState7 = useState([0, 0]),\n    _useState8 = _slicedToArray(_useState7, 2),\n    operationSize = _useState8[0],\n    setOperationSize = _useState8[1];\n  var _useUpdateState = useUpdateState(new Map()),\n    _useUpdateState2 = _slicedToArray(_useUpdateState, 2),\n    tabSizes = _useUpdateState2[0],\n    setTabSizes = _useUpdateState2[1];\n  var tabOffsets = useOffsets(tabs, tabSizes, tabContentSize[0]);\n\n  // ========================== Unit =========================\n  var containerExcludeExtraSizeValue = getUnitValue(containerExcludeExtraSize, tabPositionTopOrBottom);\n  var tabContentSizeValue = getUnitValue(tabContentSize, tabPositionTopOrBottom);\n  var addSizeValue = getUnitValue(addSize, tabPositionTopOrBottom);\n  var operationSizeValue = getUnitValue(operationSize, tabPositionTopOrBottom);\n  var needScroll = containerExcludeExtraSizeValue < tabContentSizeValue + addSizeValue;\n  var visibleTabContentValue = needScroll ? containerExcludeExtraSizeValue - operationSizeValue : containerExcludeExtraSizeValue - addSizeValue;\n\n  // ========================== Util =========================\n  var operationsHiddenClassName = \"\".concat(prefixCls, \"-nav-operations-hidden\");\n  var transformMin = 0;\n  var 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  var touchMovingRef = useRef(null);\n  var _useState9 = useState(),\n    _useState10 = _slicedToArray(_useState9, 2),\n    lockAnimation = _useState10[0],\n    setLockAnimation = _useState10[1];\n  function doLockAnimation() {\n    setLockAnimation(Date.now());\n  }\n  function clearTouchMoving() {\n    if (touchMovingRef.current) {\n      clearTimeout(touchMovingRef.current);\n    }\n  }\n  useTouchMove(tabsWrapperRef, function (offsetX, offsetY) {\n    function doMove(setState, offset) {\n      setState(function (value) {\n        var newValue = alignInRange(value + offset);\n        return newValue;\n      });\n    }\n\n    // 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(function () {\n    clearTouchMoving();\n    if (lockAnimation) {\n      touchMovingRef.current = setTimeout(function () {\n        setLockAnimation(0);\n      }, 100);\n    }\n    return clearTouchMoving;\n  }, [lockAnimation]);\n\n  // ===================== Visible Range =====================\n  // Render tab node & collect tab offset\n  var _useVisibleRange = useVisibleRange(tabOffsets,\n    // Container\n    visibleTabContentValue,\n    // Transform\n    tabPositionTopOrBottom ? transformLeft : transformTop,\n    // Tabs\n    tabContentSizeValue,\n    // Add\n    addSizeValue,\n    // Operation\n    operationSizeValue, _objectSpread(_objectSpread({}, props), {}, {\n      tabs: tabs\n    })),\n    _useVisibleRange2 = _slicedToArray(_useVisibleRange, 2),\n    visibleStart = _useVisibleRange2[0],\n    visibleEnd = _useVisibleRange2[1];\n\n  // ========================= Scroll ========================\n  var scrollToTab = useEvent(function () {\n    var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeKey;\n    var tabOffset = tabOffsets.get(key) || {\n      width: 0,\n      height: 0,\n      left: 0,\n      right: 0,\n      top: 0\n    };\n    if (tabPositionTopOrBottom) {\n      // ============ Align with top & bottom ============\n      var 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      var _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  // ========================== Tab ==========================\n  var tabNodeStyle = {};\n  if (tabPosition === 'top' || tabPosition === 'bottom') {\n    tabNodeStyle[rtl ? 'marginRight' : 'marginLeft'] = tabBarGutter;\n  } else {\n    tabNodeStyle.marginTop = tabBarGutter;\n  }\n  var tabNodes = tabs.map(function (tab, i) {\n    var key = tab.key;\n    return /*#__PURE__*/React.createElement(TabNode, {\n      id: id,\n      prefixCls: prefixCls,\n      key: key,\n      tab: tab\n      /* first node should not have margin left */,\n      style: i === 0 ? undefined : tabNodeStyle,\n      closable: tab.closable,\n      editable: editable,\n      active: key === activeKey,\n      renderWrapper: children,\n      removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n      onClick: function onClick(e) {\n        onTabClick(key, e);\n      },\n      onFocus: function onFocus() {\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    });\n  });\n\n  // Update buttons records\n  var updateTabSizes = function updateTabSizes() {\n    return setTabSizes(function () {\n      var _tabListRef$current;\n      var newSizes = new Map();\n      var listRect = (_tabListRef$current = tabListRef.current) === null || _tabListRef$current === void 0 ? void 0 : _tabListRef$current.getBoundingClientRect();\n      tabs.forEach(function (_ref2) {\n        var _tabListRef$current2;\n        var key = _ref2.key;\n        var btnNode = (_tabListRef$current2 = tabListRef.current) === null || _tabListRef$current2 === void 0 ? void 0 : _tabListRef$current2.querySelector(\"[data-node-key=\\\"\".concat(genDataNodeKey(key), \"\\\"]\"));\n        if (btnNode) {\n          var _getTabSize = getTabSize(btnNode, listRect),\n            _getTabSize2 = _slicedToArray(_getTabSize, 4),\n            width = _getTabSize2[0],\n            height = _getTabSize2[1],\n            left = _getTabSize2[2],\n            top = _getTabSize2[3];\n          newSizes.set(key, {\n            width: width,\n            height: height,\n            left: left,\n            top: top\n          });\n        }\n      });\n      return newSizes;\n    });\n  };\n  useEffect(function () {\n    updateTabSizes();\n  }, [tabs.map(function (tab) {\n    return tab.key;\n  }).join('_')]);\n  var onListHolderResize = useUpdate(function () {\n    // Update wrapper records\n    var containerSize = getSize(containerRef);\n    var extraLeftSize = getSize(extraLeftRef);\n    var extraRightSize = getSize(extraRightRef);\n    setContainerExcludeExtraSize([containerSize[0] - extraLeftSize[0] - extraRightSize[0], containerSize[1] - extraLeftSize[1] - extraRightSize[1]]);\n    var newAddSize = getSize(innerAddButtonRef);\n    setAddSize(newAddSize);\n    var newOperationSize = getSize(operationsRef);\n    setOperationSize(newOperationSize);\n\n    // Which includes add button size\n    var 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  var startHiddenTabs = tabs.slice(0, visibleStart);\n  var endHiddenTabs = tabs.slice(visibleEnd + 1);\n  var hiddenTabs = [].concat(_toConsumableArray(startHiddenTabs), _toConsumableArray(endHiddenTabs));\n\n  // =================== Link & Operations ===================\n  var activeTabOffset = tabOffsets.get(activeKey);\n  var _useIndicator = useIndicator({\n      activeTabOffset: activeTabOffset,\n      horizontal: tabPositionTopOrBottom,\n      indicator: indicator,\n      rtl: rtl\n    }),\n    indicatorStyle = _useIndicator.style;\n\n  // ========================= Effect ========================\n  useEffect(function () {\n    scrollToTab();\n  }, [activeKey, transformMin, transformMax, stringify(activeTabOffset), stringify(tabOffsets), tabPositionTopOrBottom]);\n\n  // Should recalculate when rtl changed\n  useEffect(function () {\n    onListHolderResize();\n    // eslint-disable-next-line\n  }, [rtl]);\n\n  // ========================= Render ========================\n  var hasDropdown = !!hiddenTabs.length;\n  var wrapPrefix = \"\".concat(prefixCls, \"-nav-wrap\");\n  var pingLeft;\n  var pingRight;\n  var pingTop;\n  var pingBottom;\n  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    className: classNames(\"\".concat(prefixCls, \"-nav\"), className),\n    style: style,\n    onKeyDown: function onKeyDown() {\n      // No need animation when use keyboard\n      doLockAnimation();\n    }\n  }, /*#__PURE__*/React.createElement(ExtraContent, {\n    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: classNames(wrapPrefix, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(wrapPrefix, \"-ping-left\"), pingLeft), \"\".concat(wrapPrefix, \"-ping-right\"), pingRight), \"\".concat(wrapPrefix, \"-ping-top\"), pingTop), \"\".concat(wrapPrefix, \"-ping-bottom\"), pingBottom)),\n    ref: tabsWrapperRef\n  }, /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onListHolderResize\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: tabListRef,\n    className: \"\".concat(prefixCls, \"-nav-list\"),\n    style: {\n      transform: \"translate(\".concat(transformLeft, \"px, \").concat(transformTop, \"px)\"),\n      transition: lockAnimation ? 'none' : undefined\n    }\n  }, tabNodes, /*#__PURE__*/React.createElement(AddButton, {\n    ref: innerAddButtonRef,\n    prefixCls: prefixCls,\n    locale: locale,\n    editable: editable,\n    style: _objectSpread(_objectSpread({}, tabNodes.length === 0 ? undefined : tabNodeStyle), {}, {\n      visibility: hasDropdown ? 'hidden' : null\n    })\n  }), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-ink-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-ink-bar-animated\"), animated.inkBar)),\n    style: indicatorStyle\n  }))))), /*#__PURE__*/React.createElement(OperationNode, _extends({}, props, {\n    removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n    ref: operationsRef,\n    prefixCls: prefixCls,\n    tabs: hiddenTabs,\n    className: !hasDropdown && operationsHiddenClassName,\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;","map":{"version":3,"names":["_extends","_defineProperty","_toConsumableArray","_objectSpread","_slicedToArray","classNames","ResizeObserver","useEvent","useComposeRef","React","useEffect","useRef","useState","TabContext","useIndicator","useOffsets","useSyncState","useTouchMove","useUpdate","useUpdateState","useVisibleRange","genDataNodeKey","stringify","AddButton","ExtraContent","OperationNode","TabNode","getTabSize","tab","containerRect","offsetWidth","offsetHeight","offsetTop","offsetLeft","_tab$getBoundingClien","getBoundingClientRect","width","height","x","y","Math","abs","getSize","refObj","_ref","current","_ref$offsetWidth","_ref$offsetHeight","_refObj$current$getBo","getUnitValue","size","tabPositionTopOrBottom","TabNavList","forwardRef","props","ref","className","style","id","animated","activeKey","rtl","extra","editable","locale","tabPosition","tabBarGutter","children","onTabClick","onTabScroll","indicator","_React$useContext","useContext","prefixCls","tabs","containerRef","extraLeftRef","extraRightRef","tabsWrapperRef","tabListRef","operationsRef","innerAddButtonRef","_useSyncState","next","prev","direction","_useSyncState2","transformLeft","setTransformLeft","_useSyncState3","_useSyncState4","transformTop","setTransformTop","_useState","_useState2","containerExcludeExtraSize","setContainerExcludeExtraSize","_useState3","_useState4","tabContentSize","setTabContentSize","_useState5","_useState6","addSize","setAddSize","_useState7","_useState8","operationSize","setOperationSize","_useUpdateState","Map","_useUpdateState2","tabSizes","setTabSizes","tabOffsets","containerExcludeExtraSizeValue","tabContentSizeValue","addSizeValue","operationSizeValue","needScroll","visibleTabContentValue","operationsHiddenClassName","concat","transformMin","transformMax","min","max","alignInRange","value","touchMovingRef","_useState9","_useState10","lockAnimation","setLockAnimation","doLockAnimation","Date","now","clearTouchMoving","clearTimeout","offsetX","offsetY","doMove","setState","offset","newValue","setTimeout","_useVisibleRange","_useVisibleRange2","visibleStart","visibleEnd","scrollToTab","key","arguments","length","undefined","tabOffset","get","left","right","top","newTransform","_newTransform","tabNodeStyle","marginTop","tabNodes","map","i","createElement","closable","active","renderWrapper","removeAriaLabel","onClick","e","onFocus","scrollLeft","scrollTop","updateTabSizes","_tabListRef$current","newSizes","listRect","forEach","_ref2","_tabListRef$current2","btnNode","querySelector","_getTabSize","_getTabSize2","set","join","onListHolderResize","containerSize","extraLeftSize","extraRightSize","newAddSize","newOperationSize","tabContentFullSize","startHiddenTabs","slice","endHiddenTabs","hiddenTabs","activeTabOffset","_useIndicator","horizontal","indicatorStyle","hasDropdown","wrapPrefix","pingLeft","pingRight","pingTop","pingBottom","onResize","role","onKeyDown","position","transform","transition","visibility","inkBar","tabMoving"],"sources":["/var/www/gavt/react-demo/node_modules/rc-tabs/es/TabNavList/index.js"],"sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/* eslint-disable react-hooks/exhaustive-deps */\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport { useComposeRef } from \"rc-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, stringify } from \"../util\";\nimport AddButton from \"./AddButton\";\nimport ExtraContent from \"./ExtraContent\";\nimport OperationNode from \"./OperationNode\";\nimport TabNode from \"./TabNode\";\nvar getTabSize = function getTabSize(tab, containerRect) {\n  // tabListRef\n  var offsetWidth = tab.offsetWidth,\n    offsetHeight = tab.offsetHeight,\n    offsetTop = tab.offsetTop,\n    offsetLeft = tab.offsetLeft;\n  var _tab$getBoundingClien = tab.getBoundingClientRect(),\n    width = _tab$getBoundingClien.width,\n    height = _tab$getBoundingClien.height,\n    x = _tab$getBoundingClien.x,\n    y = _tab$getBoundingClien.y;\n\n  // Use getBoundingClientRect to avoid decimal inaccuracy\n  if (Math.abs(width - offsetWidth) < 1) {\n    return [width, height, x - containerRect.x, y - containerRect.y];\n  }\n  return [offsetWidth, offsetHeight, offsetLeft, offsetTop];\n};\nvar getSize = function getSize(refObj) {\n  var _ref = refObj.current || {},\n    _ref$offsetWidth = _ref.offsetWidth,\n    offsetWidth = _ref$offsetWidth === void 0 ? 0 : _ref$offsetWidth,\n    _ref$offsetHeight = _ref.offsetHeight,\n    offsetHeight = _ref$offsetHeight === void 0 ? 0 : _ref$offsetHeight;\n\n  // Use getBoundingClientRect to avoid decimal inaccuracy\n  if (refObj.current) {\n    var _refObj$current$getBo = refObj.current.getBoundingClientRect(),\n      width = _refObj$current$getBo.width,\n      height = _refObj$current$getBo.height;\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 */\nvar getUnitValue = function getUnitValue(size, tabPositionTopOrBottom) {\n  return size[tabPositionTopOrBottom ? 0 : 1];\n};\nvar TabNavList = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var className = props.className,\n    style = props.style,\n    id = props.id,\n    animated = props.animated,\n    activeKey = props.activeKey,\n    rtl = props.rtl,\n    extra = props.extra,\n    editable = props.editable,\n    locale = props.locale,\n    tabPosition = props.tabPosition,\n    tabBarGutter = props.tabBarGutter,\n    children = props.children,\n    onTabClick = props.onTabClick,\n    onTabScroll = props.onTabScroll,\n    indicator = props.indicator;\n  var _React$useContext = React.useContext(TabContext),\n    prefixCls = _React$useContext.prefixCls,\n    tabs = _React$useContext.tabs;\n  var containerRef = useRef(null);\n  var extraLeftRef = useRef(null);\n  var extraRightRef = useRef(null);\n  var tabsWrapperRef = useRef(null);\n  var tabListRef = useRef(null);\n  var operationsRef = useRef(null);\n  var innerAddButtonRef = useRef(null);\n  var tabPositionTopOrBottom = tabPosition === 'top' || tabPosition === 'bottom';\n  var _useSyncState = useSyncState(0, function (next, prev) {\n      if (tabPositionTopOrBottom && onTabScroll) {\n        onTabScroll({\n          direction: next > prev ? 'left' : 'right'\n        });\n      }\n    }),\n    _useSyncState2 = _slicedToArray(_useSyncState, 2),\n    transformLeft = _useSyncState2[0],\n    setTransformLeft = _useSyncState2[1];\n  var _useSyncState3 = useSyncState(0, function (next, prev) {\n      if (!tabPositionTopOrBottom && onTabScroll) {\n        onTabScroll({\n          direction: next > prev ? 'top' : 'bottom'\n        });\n      }\n    }),\n    _useSyncState4 = _slicedToArray(_useSyncState3, 2),\n    transformTop = _useSyncState4[0],\n    setTransformTop = _useSyncState4[1];\n  var _useState = useState([0, 0]),\n    _useState2 = _slicedToArray(_useState, 2),\n    containerExcludeExtraSize = _useState2[0],\n    setContainerExcludeExtraSize = _useState2[1];\n  var _useState3 = useState([0, 0]),\n    _useState4 = _slicedToArray(_useState3, 2),\n    tabContentSize = _useState4[0],\n    setTabContentSize = _useState4[1];\n  var _useState5 = useState([0, 0]),\n    _useState6 = _slicedToArray(_useState5, 2),\n    addSize = _useState6[0],\n    setAddSize = _useState6[1];\n  var _useState7 = useState([0, 0]),\n    _useState8 = _slicedToArray(_useState7, 2),\n    operationSize = _useState8[0],\n    setOperationSize = _useState8[1];\n  var _useUpdateState = useUpdateState(new Map()),\n    _useUpdateState2 = _slicedToArray(_useUpdateState, 2),\n    tabSizes = _useUpdateState2[0],\n    setTabSizes = _useUpdateState2[1];\n  var tabOffsets = useOffsets(tabs, tabSizes, tabContentSize[0]);\n\n  // ========================== Unit =========================\n  var containerExcludeExtraSizeValue = getUnitValue(containerExcludeExtraSize, tabPositionTopOrBottom);\n  var tabContentSizeValue = getUnitValue(tabContentSize, tabPositionTopOrBottom);\n  var addSizeValue = getUnitValue(addSize, tabPositionTopOrBottom);\n  var operationSizeValue = getUnitValue(operationSize, tabPositionTopOrBottom);\n  var needScroll = containerExcludeExtraSizeValue < tabContentSizeValue + addSizeValue;\n  var visibleTabContentValue = needScroll ? containerExcludeExtraSizeValue - operationSizeValue : containerExcludeExtraSizeValue - addSizeValue;\n\n  // ========================== Util =========================\n  var operationsHiddenClassName = \"\".concat(prefixCls, \"-nav-operations-hidden\");\n  var transformMin = 0;\n  var 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  var touchMovingRef = useRef(null);\n  var _useState9 = useState(),\n    _useState10 = _slicedToArray(_useState9, 2),\n    lockAnimation = _useState10[0],\n    setLockAnimation = _useState10[1];\n  function doLockAnimation() {\n    setLockAnimation(Date.now());\n  }\n  function clearTouchMoving() {\n    if (touchMovingRef.current) {\n      clearTimeout(touchMovingRef.current);\n    }\n  }\n  useTouchMove(tabsWrapperRef, function (offsetX, offsetY) {\n    function doMove(setState, offset) {\n      setState(function (value) {\n        var newValue = alignInRange(value + offset);\n        return newValue;\n      });\n    }\n\n    // 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(function () {\n    clearTouchMoving();\n    if (lockAnimation) {\n      touchMovingRef.current = setTimeout(function () {\n        setLockAnimation(0);\n      }, 100);\n    }\n    return clearTouchMoving;\n  }, [lockAnimation]);\n\n  // ===================== Visible Range =====================\n  // Render tab node & collect tab offset\n  var _useVisibleRange = useVisibleRange(tabOffsets,\n    // Container\n    visibleTabContentValue,\n    // Transform\n    tabPositionTopOrBottom ? transformLeft : transformTop,\n    // Tabs\n    tabContentSizeValue,\n    // Add\n    addSizeValue,\n    // Operation\n    operationSizeValue, _objectSpread(_objectSpread({}, props), {}, {\n      tabs: tabs\n    })),\n    _useVisibleRange2 = _slicedToArray(_useVisibleRange, 2),\n    visibleStart = _useVisibleRange2[0],\n    visibleEnd = _useVisibleRange2[1];\n\n  // ========================= Scroll ========================\n  var scrollToTab = useEvent(function () {\n    var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeKey;\n    var tabOffset = tabOffsets.get(key) || {\n      width: 0,\n      height: 0,\n      left: 0,\n      right: 0,\n      top: 0\n    };\n    if (tabPositionTopOrBottom) {\n      // ============ Align with top & bottom ============\n      var 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      var _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  // ========================== Tab ==========================\n  var tabNodeStyle = {};\n  if (tabPosition === 'top' || tabPosition === 'bottom') {\n    tabNodeStyle[rtl ? 'marginRight' : 'marginLeft'] = tabBarGutter;\n  } else {\n    tabNodeStyle.marginTop = tabBarGutter;\n  }\n  var tabNodes = tabs.map(function (tab, i) {\n    var key = tab.key;\n    return /*#__PURE__*/React.createElement(TabNode, {\n      id: id,\n      prefixCls: prefixCls,\n      key: key,\n      tab: tab\n      /* first node should not have margin left */,\n      style: i === 0 ? undefined : tabNodeStyle,\n      closable: tab.closable,\n      editable: editable,\n      active: key === activeKey,\n      renderWrapper: children,\n      removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n      onClick: function onClick(e) {\n        onTabClick(key, e);\n      },\n      onFocus: function onFocus() {\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    });\n  });\n\n  // Update buttons records\n  var updateTabSizes = function updateTabSizes() {\n    return setTabSizes(function () {\n      var _tabListRef$current;\n      var newSizes = new Map();\n      var listRect = (_tabListRef$current = tabListRef.current) === null || _tabListRef$current === void 0 ? void 0 : _tabListRef$current.getBoundingClientRect();\n      tabs.forEach(function (_ref2) {\n        var _tabListRef$current2;\n        var key = _ref2.key;\n        var btnNode = (_tabListRef$current2 = tabListRef.current) === null || _tabListRef$current2 === void 0 ? void 0 : _tabListRef$current2.querySelector(\"[data-node-key=\\\"\".concat(genDataNodeKey(key), \"\\\"]\"));\n        if (btnNode) {\n          var _getTabSize = getTabSize(btnNode, listRect),\n            _getTabSize2 = _slicedToArray(_getTabSize, 4),\n            width = _getTabSize2[0],\n            height = _getTabSize2[1],\n            left = _getTabSize2[2],\n            top = _getTabSize2[3];\n          newSizes.set(key, {\n            width: width,\n            height: height,\n            left: left,\n            top: top\n          });\n        }\n      });\n      return newSizes;\n    });\n  };\n  useEffect(function () {\n    updateTabSizes();\n  }, [tabs.map(function (tab) {\n    return tab.key;\n  }).join('_')]);\n  var onListHolderResize = useUpdate(function () {\n    // Update wrapper records\n    var containerSize = getSize(containerRef);\n    var extraLeftSize = getSize(extraLeftRef);\n    var extraRightSize = getSize(extraRightRef);\n    setContainerExcludeExtraSize([containerSize[0] - extraLeftSize[0] - extraRightSize[0], containerSize[1] - extraLeftSize[1] - extraRightSize[1]]);\n    var newAddSize = getSize(innerAddButtonRef);\n    setAddSize(newAddSize);\n    var newOperationSize = getSize(operationsRef);\n    setOperationSize(newOperationSize);\n\n    // Which includes add button size\n    var 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  var startHiddenTabs = tabs.slice(0, visibleStart);\n  var endHiddenTabs = tabs.slice(visibleEnd + 1);\n  var hiddenTabs = [].concat(_toConsumableArray(startHiddenTabs), _toConsumableArray(endHiddenTabs));\n\n  // =================== Link & Operations ===================\n  var activeTabOffset = tabOffsets.get(activeKey);\n  var _useIndicator = useIndicator({\n      activeTabOffset: activeTabOffset,\n      horizontal: tabPositionTopOrBottom,\n      indicator: indicator,\n      rtl: rtl\n    }),\n    indicatorStyle = _useIndicator.style;\n\n  // ========================= Effect ========================\n  useEffect(function () {\n    scrollToTab();\n  }, [activeKey, transformMin, transformMax, stringify(activeTabOffset), stringify(tabOffsets), tabPositionTopOrBottom]);\n\n  // Should recalculate when rtl changed\n  useEffect(function () {\n    onListHolderResize();\n    // eslint-disable-next-line\n  }, [rtl]);\n\n  // ========================= Render ========================\n  var hasDropdown = !!hiddenTabs.length;\n  var wrapPrefix = \"\".concat(prefixCls, \"-nav-wrap\");\n  var pingLeft;\n  var pingRight;\n  var pingTop;\n  var pingBottom;\n  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    className: classNames(\"\".concat(prefixCls, \"-nav\"), className),\n    style: style,\n    onKeyDown: function onKeyDown() {\n      // No need animation when use keyboard\n      doLockAnimation();\n    }\n  }, /*#__PURE__*/React.createElement(ExtraContent, {\n    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: classNames(wrapPrefix, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(wrapPrefix, \"-ping-left\"), pingLeft), \"\".concat(wrapPrefix, \"-ping-right\"), pingRight), \"\".concat(wrapPrefix, \"-ping-top\"), pingTop), \"\".concat(wrapPrefix, \"-ping-bottom\"), pingBottom)),\n    ref: tabsWrapperRef\n  }, /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onListHolderResize\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: tabListRef,\n    className: \"\".concat(prefixCls, \"-nav-list\"),\n    style: {\n      transform: \"translate(\".concat(transformLeft, \"px, \").concat(transformTop, \"px)\"),\n      transition: lockAnimation ? 'none' : undefined\n    }\n  }, tabNodes, /*#__PURE__*/React.createElement(AddButton, {\n    ref: innerAddButtonRef,\n    prefixCls: prefixCls,\n    locale: locale,\n    editable: editable,\n    style: _objectSpread(_objectSpread({}, tabNodes.length === 0 ? undefined : tabNodeStyle), {}, {\n      visibility: hasDropdown ? 'hidden' : null\n    })\n  }), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-ink-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-ink-bar-animated\"), animated.inkBar)),\n    style: indicatorStyle\n  }))))), /*#__PURE__*/React.createElement(OperationNode, _extends({}, props, {\n    removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n    ref: operationsRef,\n    prefixCls: prefixCls,\n    tabs: hiddenTabs,\n    className: !hasDropdown && operationsHiddenClassName,\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;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}