{"version":3,"file":"tab-nav.mjs","sources":["../../../common/js/tabs/base.ts","../../../components/tabs/tab-nav.tsx"],"sourcesContent":["const getDomWidth = (dom: HTMLElement): number => dom?.offsetWidth || 0;\nconst getDomOffsetLeft = (dom: HTMLElement): number => dom?.offsetLeft || 0;\n\ntype scrollPosition = 'auto' | 'start' | 'center' | 'end';\n\nexport interface allElementDeps {\n  activeTab?: HTMLElement;\n  navsContainer?: HTMLElement;\n  navsWrap?: HTMLElement;\n  leftOperations?: HTMLElement;\n  toLeftBtn?: HTMLElement;\n  rightOperations?: HTMLElement;\n  toRightBtn?: HTMLElement;\n}\n\nexport function calculateOffset(depElement: allElementDeps, offset: number, scrollPosition: scrollPosition): number {\n  // 计算当前 activeTab 应该滚动到的位置\n  const { navsContainer, activeTab, rightOperations, leftOperations } = depElement;\n  const tabWidth = getDomWidth(activeTab);\n  const wrapWidth = getDomWidth(navsContainer);\n  const tabOffset = getDomOffsetLeft(activeTab);\n  const rightOperationsWidth = getDomWidth(rightOperations);\n  const leftOperationsWidth = getDomWidth(leftOperations);\n\n  if (scrollPosition === 'auto') {\n    if (tabOffset - leftOperationsWidth < offset) {\n      return tabOffset - leftOperationsWidth;\n    }\n    if (tabOffset + tabWidth > offset + wrapWidth - rightOperationsWidth) {\n      return tabOffset + tabWidth - wrapWidth + rightOperationsWidth;\n    }\n  } else if (scrollPosition === 'start') {\n    return tabOffset - leftOperationsWidth;\n  } else if (scrollPosition === 'center') {\n    return tabOffset + (tabWidth - wrapWidth) / 2;\n  } else if (scrollPosition === 'end') {\n    return tabOffset + tabWidth - wrapWidth + rightOperationsWidth;\n  }\n  return offset;\n}\n\n/**\n * 计算上一页或下一页偏移量\n * @param elements 计算时依赖的元素\n * @returns number\n */\nexport function calcPrevOrNextOffset(elements: allElementDeps, offset: number, action: 'next' | 'prev'): number {\n  const { navsContainer, activeTab } = elements;\n  const navsContainerWidth = getDomWidth(navsContainer);\n  const activeTabWidth = getDomWidth(activeTab);\n  /**\n   * 计算当前 activeTab 与 navsContainer 的宽度差，\n   * 注意 activeTab 的宽度可能大于 navsContainer 的宽度，\n   * 所以需要取绝对值\n   */\n  const diffWidth = Math.abs(navsContainerWidth - activeTabWidth);\n  if (action === 'next') {\n    return offset + diffWidth;\n  }\n  return offset - diffWidth;\n}\n\n/**\n * 计算最大偏移量\n * @param elements 计算时依赖的元素\n * @returns number\n */\nexport function calcMaxOffset(elements: allElementDeps): number {\n  const { navsWrap, navsContainer, rightOperations, toRightBtn } = elements;\n  const wrapWidth = getDomWidth(navsWrap);\n  const containerWidth = getDomWidth(navsContainer);\n  const rightOperationsWidth = getDomWidth(rightOperations);\n  const toRightBtnWidth = getDomWidth(toRightBtn);\n  return wrapWidth - containerWidth + rightOperationsWidth - toRightBtnWidth;\n}\n\n/**\n * 计算合法偏移量\n * @param offset 偏移值\n * @param maxOffset 最大偏移值\n * @returns number\n */\nexport function calcValidOffset(offset: number, maxOffset: number): number {\n  return Math.max(0, Math.min(offset, maxOffset));\n}\n","import { h, defineComponent, Transition, ref, computed, watch, onMounted, nextTick } from 'vue';\nimport { debounce, isFunction } from 'lodash-es';\nimport {\n  ChevronLeftIcon as TdChevronLeftIcon,\n  ChevronRightIcon as TdChevronRightIcon,\n  AddIcon as TdAddIcon,\n} from 'tdesign-icons-vue-next';\nimport { TdTabsProps } from './type';\nimport tabProps from './props';\nimport { calcMaxOffset, calcValidOffset, calculateOffset, calcPrevOrNextOffset } from '@tdesign/common-js/tabs/base';\n\n// 子组件\nimport TTabPanel from './tab-panel';\nimport TTabNavItem from './tab-nav-item';\nimport TTabNavBar from './tab-nav-bar';\n\n// hooks\nimport { useResize, useDragSort, useGlobalIcon, usePrefixClass, useCommonClassName } from '@tdesign/shared-hooks';\n\nexport default defineComponent({\n  name: 'TTabNav',\n  resizeObserver: null,\n  props: {\n    theme: tabProps.theme,\n    panels: {\n      type: Array as { new (): Array<InstanceType<typeof TTabPanel>> },\n      default: (): Array<InstanceType<typeof TTabPanel>> => [] as Array<InstanceType<typeof TTabPanel>>,\n    },\n    action: Array,\n    value: tabProps.value,\n    placement: tabProps.placement,\n    scrollPosition: tabProps.scrollPosition,\n    size: tabProps.size,\n    disabled: tabProps.disabled,\n    addable: tabProps.addable,\n    onChange: tabProps.onChange,\n    onAdd: tabProps.onAdd,\n    onRemove: tabProps.onRemove,\n    dragSort: tabProps.dragSort,\n    // 在 useDragSort 里会被调用\n    onDragSort: tabProps.onDragSort,\n  },\n  setup(props) {\n    const componentName = usePrefixClass('tabs');\n    const { ChevronLeftIcon, ChevronRightIcon, AddIcon } = useGlobalIcon({\n      ChevronLeftIcon: TdChevronLeftIcon,\n      ChevronRightIcon: TdChevronRightIcon,\n      AddIcon: TdAddIcon,\n    });\n    const classPrefix = usePrefixClass();\n\n    const { SIZE } = useCommonClassName();\n\n    const scrollLeft = ref(0);\n\n    // refs\n    const navsContainerRef = ref();\n    const navsWrapRef = ref();\n    const leftOperationsRef = ref();\n    const rightOperationsRef = ref();\n    const toRightBtnRef = ref();\n    const activeTabRef = ref();\n    const maxScrollLeft = ref(0);\n    const showAction = computed(() => {\n      return ['top', 'bottom'].includes(props?.placement?.toLowerCase());\n    });\n\n    const getRefs = () => ({\n      navsContainer: navsContainerRef.value,\n      navsWrap: navsWrapRef.value,\n      leftOperations: leftOperationsRef.value,\n      rightOperations: rightOperationsRef.value,\n      toRightBtn: toRightBtnRef.value,\n      activeTab: activeTabRef.value,\n    });\n\n    // left right位置 选项卡的位置是在左右侧垂直方向铺开的\n    const isVerticalPlacement = computed(() => ['left', 'right'].includes(props.placement.toLowerCase()));\n\n    // 展示操作按钮\n    const canToLeft = computed(() => scrollLeft.value > 1);\n    const canToRight = computed(() => scrollLeft.value < maxScrollLeft.value - 1);\n\n    // style\n    const wrapTransformStyle = computed(() => {\n      if (isVerticalPlacement.value) return {};\n      return {\n        transform: `translate3d(${-scrollLeft.value}px, 0, 0)`,\n      };\n    });\n    const navsContainerStyle = computed(() => {\n      return props.addable ? { 'min-height': '48px' } : null;\n    });\n\n    // class\n    const iconBaseClass = computed(() => {\n      return {\n        [`${componentName.value}__btn`]: true,\n        [SIZE.value.medium]: props.size === 'medium',\n        [SIZE.value.large]: props.size === 'large',\n      };\n    });\n    const leftIconClass = computed(() => {\n      return {\n        [`${componentName.value}__btn--left`]: true,\n        ...iconBaseClass.value,\n      };\n    });\n    const rightIconClass = computed(() => {\n      return {\n        [`${componentName.value}__btn--right`]: true,\n        ...iconBaseClass.value,\n      };\n    });\n    const addIconClass = computed(() => {\n      return {\n        [`${componentName.value}__add-btn`]: true,\n        ...iconBaseClass.value,\n      };\n    });\n    const navContainerClass = computed(() => {\n      return {\n        [`${componentName.value}__nav-container`]: true,\n        [`${componentName.value}__nav--card`]: props.theme === 'card',\n        [`${classPrefix.value}-is-${props.placement}`]: true,\n        [`${classPrefix.value}-is-addable`]: props.addable,\n      };\n    });\n    const navScrollContainerClass = computed(() => {\n      return {\n        [`${componentName.value}__nav-scroll`]: true,\n        [`${classPrefix.value}-is-scrollable`]: canToLeft.value || canToRight.value,\n      };\n    });\n\n    const navsWrapClass = computed(() => {\n      return [\n        `${componentName.value}__nav-wrap`,\n        `${classPrefix.value}-is-smooth`,\n        { [`${classPrefix.value}-is-vertical`]: isVerticalPlacement.value },\n      ];\n    });\n\n    const setOffset = (offset: number) => {\n      scrollLeft.value = calcValidOffset(offset, maxScrollLeft.value);\n    };\n\n    const handleScroll = (action: 'prev' | 'next') => {\n      setOffset(calcPrevOrNextOffset(getRefs(), scrollLeft.value, action));\n    };\n\n    const handleWheel = (event: WheelEvent) => {\n      if (!canToLeft.value && !canToRight.value) return;\n\n      event.preventDefault();\n      const { deltaX, deltaY } = event;\n\n      if (Math.abs(deltaX) > Math.abs(deltaY)) {\n        setOffset(scrollLeft.value + deltaX);\n      } else {\n        setOffset(scrollLeft.value + deltaY);\n      }\n    };\n\n    const handleActiveTabScroll = () => {\n      setTimeout(() => {\n        setOffset(calculateOffset(getRefs(), scrollLeft.value, props.scrollPosition));\n      }, 0);\n    };\n\n    const getMaxScrollLeft = () => {\n      nextTick(() => {\n        maxScrollLeft.value = calcMaxOffset(getRefs());\n        // fix https://github.com/Tencent/tdesign-vue-next/issues/6292\n        if (maxScrollLeft.value - scrollLeft.value <= 0) setOffset(maxScrollLeft.value);\n      });\n    };\n\n    // watch\n    watch([() => props.placement, () => props.panels], getMaxScrollLeft);\n    watch([() => props.scrollPosition], handleActiveTabScroll);\n\n    // life times\n    useResize(debounce(getMaxScrollLeft), navsContainerRef.value);\n\n    const handleAddTab = (e: MouseEvent) => {\n      props.onAdd?.({ e });\n    };\n\n    const tabClick = (event: MouseEvent, nav: Partial<InstanceType<typeof TTabPanel>>) => {\n      const { value, disabled } = nav;\n      if (disabled || props.value === value) {\n        return false;\n      }\n      props.onChange(value);\n    };\n    const onTabRemove = ({ e, value, index }: Parameters<TdTabsProps['onRemove']>[0]) => {\n      props.onRemove({ e, value, index });\n    };\n    const setActiveTab = (ref: any) => {\n      if (!ref?.$el) return;\n      if (ref?.value === props.value && activeTabRef.value !== ref.$el) {\n        activeTabRef.value = ref.$el;\n        handleActiveTabScroll();\n      }\n    };\n\n    const { setNavsWrap } = useDragSort(props);\n\n    onMounted(() => {\n      setNavsWrap(navsWrapRef.value);\n      getMaxScrollLeft();\n      handleActiveTabScroll();\n    });\n    // renders\n    const renderNavsContent = () => {\n      return props.panels.map((panel, index) => {\n        let label;\n        // @ts-ignore\n        if (panel?.children?.label) {\n          // @ts-ignore\n          label = panel.children.label();\n        } else if (isFunction(panel.label)) {\n          label = panel.label(h);\n        } else {\n          label = panel.label || `选项卡${index + 1}`;\n        }\n        let draggable = props.dragSort;\n        if (draggable && panel.draggable === false) {\n          draggable = panel.draggable;\n        }\n        return (\n          <TTabNavItem\n            ref={setActiveTab}\n            key={panel.value}\n            index={index}\n            theme={props.theme}\n            size={props.size}\n            placement={props.placement}\n            label={label}\n            active={panel.value === props.value}\n            disabled={props.disabled || panel.disabled}\n            removable={panel.removable}\n            value={panel.value}\n            onClick={(e: MouseEvent) => tabClick(e, panel)}\n            onTabRemove={onTabRemove}\n            onTabPanelRemove={panel.onRemove}\n          />\n        );\n      });\n    };\n    const renderArrows = () => {\n      return [\n        <div\n          ref={leftOperationsRef}\n          class={[`${componentName.value}__operations`, `${componentName.value}__operations--left`]}\n        >\n          <Transition name=\"fade\" mode=\"out-in\" appear>\n            {canToLeft.value ? (\n              <div class={leftIconClass.value} onClick={() => handleScroll('prev')}>\n                <ChevronLeftIcon />\n              </div>\n            ) : null}\n          </Transition>\n        </div>,\n        <div\n          ref={rightOperationsRef}\n          class={[`${componentName.value}__operations`, `${componentName.value}__operations--right`]}\n        >\n          <Transition name=\"fade\" mode=\"out-in\" appear>\n            {canToRight.value ? (\n              <div ref={toRightBtnRef} class={rightIconClass.value} onClick={() => handleScroll('next')}>\n                <ChevronRightIcon></ChevronRightIcon>\n              </div>\n            ) : null}\n          </Transition>\n          {props.addable ? (\n            <div class={addIconClass.value} onClick={handleAddTab}>\n              <AddIcon></AddIcon>\n            </div>\n          ) : null}\n          {showAction.value && props.action}\n        </div>,\n      ];\n    };\n    const renderNavs = () => {\n      const navContent = renderNavsContent();\n      return (\n        <div class={navContainerClass.value}>\n          <div class={navScrollContainerClass.value} onWheel={handleWheel}>\n            <div ref={navsWrapRef} class={navsWrapClass.value} style={wrapTransformStyle.value}>\n              {props.theme !== 'card' && (\n                <TTabNavBar placement={props.placement} value={props.value} navs={navContent} />\n              )}\n              {navContent}\n            </div>\n          </div>\n        </div>\n      );\n    };\n\n    return () => {\n      return (\n        <div ref={navsContainerRef} class={[`${componentName.value}__nav`]} style={navsContainerStyle.value}>\n          {renderArrows()}\n          {renderNavs()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["getDomWidth","dom","offsetWidth","getDomOffsetLeft","offsetLeft","calculateOffset","depElement","offset","scrollPosition","navsContainer","activeTab","rightOperations","leftOperations","tabWidth","wrapWidth","tabOffset","rightOperationsWidth","leftOperationsWidth","calcPrevOrNextOffset","elements","action","navsContainerWidth","activeTabWidth","diffWidth","Math","abs","calcMaxOffset","navsWrap","toRightBtn","containerWidth","toRightBtnWidth","calcValidOffset","maxOffset","max","min","defineComponent","name","resizeObserver","props","theme","tabProps","panels","type","Array","default","value","placement","size","disabled","addable","onChange","onAdd","onRemove","dragSort","onDragSort","setup","componentName","usePrefixClass","_useGlobalIcon","useGlobalIcon","ChevronLeftIcon","TdChevronLeftIcon","ChevronRightIcon","TdChevronRightIcon","AddIcon","TdAddIcon","classPrefix","_useCommonClassName","useCommonClassName","SIZE","scrollLeft","ref","navsContainerRef","navsWrapRef","leftOperationsRef","rightOperationsRef","toRightBtnRef","activeTabRef","maxScrollLeft","showAction","computed","_props$placement","includes","toLowerCase","getRefs","isVerticalPlacement","canToLeft","canToRight","wrapTransformStyle","transform","concat","navsContainerStyle","iconBaseClass","_defineProperty","medium","large","leftIconClass","_objectSpread","rightIconClass","addIconClass","navContainerClass","navScrollContainerClass","navsWrapClass","setOffset","handleScroll","handleWheel","event","preventDefault","deltaX","deltaY","handleActiveTabScroll","setTimeout","getMaxScrollLeft","nextTick","watch","useResize","debounce","handleAddTab","e","_props$onAdd","call","tabClick","nav","onTabRemove","_ref5","index","setActiveTab","$el","_useDragSort","useDragSort","setNavsWrap","onMounted","renderNavsContent","map","panel","_panel$children","label","children","isFunction","h","draggable","_createVNode","TTabNavItem","removable","onClick","renderArrows","Transition","_default","renderNavs","navContent","TTabNavBar"],"mappings":"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"}