{"version":3,"file":"tab-nav.mjs","sources":["../../src/tabs/tab-nav.tsx"],"sourcesContent":["import { h, defineComponent, Transition, ref, computed, watch, onMounted } from 'vue';\nimport debounce from 'lodash/debounce';\nimport { TdTabsProps } from './type';\nimport tabProps from './props';\nimport tabBase from '../_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 } from '../hooks/useListener';\nimport { usePrefixClass, useCommonClassName } from '../hooks/useConfig';\nimport useDragSort from '../hooks/useDragSort';\nimport isFunction from 'lodash/isFunction';\n\nconst { calculateCanToLeft, calculateCanToRight, calcScrollLeft, scrollToLeft, scrollToRight, moveActiveTabIntoView } =\n  tabBase;\n\nexport default defineComponent({\n  name: 'XTabNav',\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    value: tabProps.value,\n    placement: tabProps.placement,\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    onDragSort: tabProps.onDragSort,\n  },\n  setup(props) {\n    const COMPONENT_NAME = usePrefixClass('tabs');\n    const classPrefix = usePrefixClass();\n    const { SIZE } = useCommonClassName();\n\n    const scrollLeft = ref(0);\n    const canToLeft = ref(false);\n    const canToRight = ref(false);\n\n    // refs\n    // const panels = ref(props.panels);\n    const navsContainerRef = ref();\n    const navsWrapRef = ref();\n    const leftOperationsRef = ref();\n    const toLeftBtnRef = ref();\n    const rightOperationsRef = ref();\n    const toRightBtnRef = ref();\n    const activeTabRef = ref();\n    const getRefs = () => ({\n      navsContainer: navsContainerRef.value,\n      navsWrap: navsWrapRef.value,\n      leftOperations: leftOperationsRef.value,\n      toLeftBtn: toLeftBtnRef.value,\n      rightOperations: rightOperationsRef.value,\n      toRightBtn: toRightBtnRef.value,\n    });\n\n    // style\n    const wrapTransformStyle = computed(() => {\n      if (['left', 'right'].includes(props.placement.toLowerCase())) 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        [`${COMPONENT_NAME.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        [`${COMPONENT_NAME.value}__btn--left`]: true,\n        ...iconBaseClass.value,\n      };\n    });\n    const rightIconClass = computed(() => {\n      return {\n        [`${COMPONENT_NAME.value}__btn--right`]: true,\n        ...iconBaseClass.value,\n      };\n    });\n    const addIconClass = computed(() => {\n      return {\n        [`${COMPONENT_NAME.value}__add-btn`]: true,\n        ...iconBaseClass.value,\n      };\n    });\n    const navContainerClass = computed(() => {\n      return {\n        [`${COMPONENT_NAME.value}__nav-container`]: true,\n        [`${COMPONENT_NAME.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        [`${COMPONENT_NAME.value}__nav-scroll`]: true,\n        [`${classPrefix.value}-is-scrollable`]: canToLeft.value || canToRight.value,\n      };\n    });\n\n    const navsWrapClass = computed(() => {\n      return [\n        `${COMPONENT_NAME.value}__nav-wrap`,\n        `${classPrefix.value}-is-smooth`,\n        { [`${classPrefix.value}-is-vertical`]: props.placement === 'left' || props.placement === 'right' },\n      ];\n    });\n\n    const totalAdjust = () => {\n      adjustArrowDisplay();\n      adjustScrollLeft();\n    };\n    // watch\n    watch([scrollLeft, () => props.placement, () => props.panels], totalAdjust);\n\n    // life times\n    useResize(debounce(totalAdjust), navsContainerRef.value);\n    onMounted(totalAdjust);\n\n    // methods\n    const adjustScrollLeft = () => {\n      scrollLeft.value = calcScrollLeft(getRefs(), scrollLeft.value);\n    };\n    const adjustArrowDisplay = () => {\n      canToLeft.value = calculateCanToLeft(getRefs(), scrollLeft.value, props.placement);\n      canToRight.value = calculateCanToRight(getRefs(), scrollLeft.value, props.placement);\n    };\n    const handleScroll = (direction: 'left' | 'right') => {\n      if (direction === 'left') {\n        scrollLeft.value = scrollToLeft(getRefs(), scrollLeft.value);\n      } else {\n        scrollLeft.value = scrollToRight(getRefs(), scrollLeft.value);\n      }\n    };\n    const handleAddTab = (e: MouseEvent) => {\n      props.onAdd?.({ e });\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 removeBtnClick = ({ e, value, index }: Parameters<TdTabsProps['onRemove']>[0]) => {\n      props.onRemove({ e, value, index });\n    };\n    const setActiveTab = (ref: any) => {\n      if (ref?.value === props.value && activeTabRef.value !== ref.$el) {\n        activeTabRef.value = ref.$el;\n        scrollLeft.value = moveActiveTabIntoView(\n          {\n            activeTab: activeTabRef.value,\n            ...getRefs(),\n          },\n          scrollLeft.value,\n        );\n      }\n    };\n\n    const { setNavsWrap } = useDragSort(props);\n    onMounted(() => {\n      setNavsWrap(navsWrapRef.value);\n    });\n    // renders\n    const navs = computed(() => {\n      return props.panels.map((panel, index) => {\n        let label;\n        if (panel?.children?.label) {\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            draggable={draggable}\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            onRemove={removeBtnClick}\n          />\n        );\n      });\n    });\n    const renderArrows = () => {\n      return [\n        <div\n          ref={leftOperationsRef}\n          class={[`${COMPONENT_NAME.value}__operations`, `${COMPONENT_NAME.value}__operations--left`]}\n        >\n          <Transition name=\"fade\" mode=\"out-in\" appear>\n            {canToLeft.value ? (\n              <div ref={toLeftBtnRef} class={leftIconClass.value} onClick={() => handleScroll('left')}>\n                <icon-ri-arrow-left-s-line />\n              </div>\n            ) : null}\n          </Transition>\n        </div>,\n        <div\n          ref={rightOperationsRef}\n          class={[`${COMPONENT_NAME.value}__operations`, `${COMPONENT_NAME.value}__operations--right`]}\n        >\n          <Transition name=\"fade\" mode=\"out-in\" appear>\n            {canToRight.value ? (\n              <div ref={toRightBtnRef} class={rightIconClass.value} onClick={() => handleScroll('right')}>\n                <icon-ri-arrow-right-s-line />\n              </div>\n            ) : null}\n          </Transition>\n          {props.addable ? (\n            <div class={addIconClass.value} onClick={handleAddTab}>\n              <icon-ri-add-line />\n            </div>\n          ) : null}\n        </div>,\n      ];\n    };\n    const renderNavs = () => {\n      return (\n        <div class={navContainerClass.value}>\n          <div class={navScrollContainerClass.value}>\n            <div ref={navsWrapRef} class={navsWrapClass.value} style={wrapTransformStyle.value}>\n              {props.theme !== 'card' && (\n                <TTabNavBar placement={props.placement} value={props.value} navs={navs.value} />\n              )}\n              {navs.value}\n            </div>\n          </div>\n        </div>\n      );\n    };\n\n    return () => {\n      return (\n        <div ref={navsContainerRef} class={[`${COMPONENT_NAME.value}__nav`]} style={navsContainerStyle.value}>\n          {renderArrows()}\n          {renderNavs()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["name","resizeObserver","props","panels","type","transform","adjustArrowDisplay","adjustScrollLeft","scrollLeft","canToLeft","canToRight","e","value","index","activeTabRef","onMounted","setNavsWrap","label","_createVNode","_resolveComponent"],"mappings":"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"}