{"version":3,"file":"tab-navs.mjs","sources":["../../../../../../packages/components/tabs/src/tab-navs.tsx"],"sourcesContent":["import type { PropType, CSSProperties } from 'vue'\nimport { computed, defineComponent, ref, watch, onMounted, onUnmounted, nextTick } from 'vue'\nimport { getComponentNamespace, getNamespace } from '../../../utils/global-config'\nimport { BnIconArrowLeft, BnIconArrowRight } from '../../icon'\nimport { useResizeObserver } from '../../../hooks/use-resize-observer'\nimport { getStyle } from '../../../utils/dom'\nimport { sleep } from '../../../shared/utils'\nimport { definePropType } from '../../../utils/vue-utils'\nimport type { TabPaneData, TabsType, TabWarp } from './types'\n\nexport default defineComponent({\n  name: getComponentNamespace('TabNavsLine'),\n  props: {\n    tabs: {\n      type: Array as PropType<TabPaneData[]>,\n      default: () => []\n    },\n    type: {\n      type: String as PropType<TabsType>,\n      default: 'line'\n    },\n    size: {\n      type: String,\n      default: 'small'\n    },\n    activeKey: {\n      type: [String, Number],\n      default: undefined\n    },\n    changeActiveKey: {\n      type: Function,\n      default: () => {}\n    },\n    animation: {\n      type: Boolean\n    },\n    tabWarp: {\n      type: definePropType<TabWarp>(String),\n      default: 'nowarp'\n    }\n  },\n  setup(props) {\n    const ns = getNamespace('tabs')\n\n    const navInkStyle = ref<CSSProperties>({})\n    const arrangeStyle = ref<CSSProperties>({})\n\n    const navItemRefs = ref<Record<string, HTMLElement>>({})\n    const viewportRef = ref<HTMLElement>()\n    const arrangeRef = ref<HTMLElement>()\n\n    const translateX = ref(0)\n    const controller = ref(false)\n    const prevDisabled = computed(() => translateX.value <= 0)\n\n    const nextDisabled = computed(() => {\n      const viewportWidth = viewportRef.value!.getBoundingClientRect().width\n      const arrangeWidth = arrangeRef.value!.scrollWidth\n      return translateX.value >= arrangeWidth - viewportWidth\n    })\n\n    const updateController = async () => {\n      await nextTick()\n      const viewportWidth = viewportRef.value!.getBoundingClientRect().width\n      const arrangeWidth = arrangeRef.value!.scrollWidth\n      // 放大误差\n      controller.value = Math.floor(arrangeWidth - viewportWidth) > 1\n    }\n\n    // 边界判断\n    const boundaryProcessing = (x: number, viewportWidth: number, arrangeWidth: number) => {\n      if (x <= 0) {\n        x = 0\n      }\n      if (x >= arrangeWidth - viewportWidth) {\n        x = arrangeWidth - viewportWidth\n      }\n      return x\n    }\n\n    const updateCenterPosition = async () => {\n      await sleep(16)\n      if (!controller.value) return\n      const navEl = navItemRefs.value[props.activeKey!] as HTMLElement\n      if (!navEl) return\n      const arrangeWidth = arrangeRef.value!.scrollWidth\n      const tagWidth = navEl.getBoundingClientRect().width\n      const offsetLeft = navEl.offsetLeft\n      const viewportWidth = viewportRef.value!.getBoundingClientRect().width\n      const x = boundaryProcessing(\n        offsetLeft - viewportWidth / 2 + tagWidth / 2,\n        viewportWidth,\n        arrangeWidth\n      )\n      translateX.value = x\n    }\n    const updateNavInkPosition = async (el?: HTMLElement) => {\n      await nextTick()\n      el = el ?? navItemRefs.value[props.activeKey!]\n      if (!el) {\n        // 清空下划线\n        navInkStyle.value = {}\n        return\n      }\n      const { width } = el.getBoundingClientRect()\n      const offsetLeft = el.offsetLeft\n\n      // 暂时只考虑水平\n      navInkStyle.value.left = offsetLeft + 'px'\n      navInkStyle.value.width = width + 'px'\n      navInkStyle.value.height = '1px'\n      navInkStyle.value.bottom = 0\n    }\n\n    const handleSlide = (direction: number) => {\n      const viewportWidth = viewportRef.value!.getBoundingClientRect().width\n      const arrangeNode = arrangeRef.value!\n      const arrangeWidth = arrangeNode.scrollWidth\n      const offset = Math.ceil(viewportWidth / 2)\n      const transform = getStyle(arrangeNode, 'transform')\n      const matcher = transform.match(/translateX\\((.*?)px\\)/)\n      if (!matcher) return\n      const x = boundaryProcessing(\n        Math.abs(+matcher[1]) + direction * offset,\n        viewportWidth,\n        arrangeWidth\n      )\n      translateX.value = x\n    }\n\n    const handleNavItem = (key: string | number) => {\n      props.changeActiveKey?.(key)\n    }\n\n    const handleMouseenter = (e: Event) => {\n      e.stopPropagation()\n      if (props.type === 'line') {\n        updateNavInkPosition(e.currentTarget as HTMLElement)\n      }\n    }\n\n    const handleMouseleave = () => {\n      updateNavInkPosition(navItemRefs.value[props.activeKey!])\n    }\n\n    const showNavInk = computed(() => {\n      return ['line'].includes(props.type!)\n    })\n\n    const { createResizeObserver, destroyResizeObserver } = useResizeObserver({\n      elementRef: viewportRef,\n      onResize: () => {\n        updateController()\n        updateCenterPosition()\n      }\n    })\n\n    onMounted(() => {\n      console.log('props---', props.tabWarp)\n      createResizeObserver()\n    })\n    onUnmounted(() => {\n      destroyResizeObserver()\n    })\n\n    // translateX\n    watch(\n      () => translateX.value,\n      (x: number) => {\n        arrangeStyle.value.transform = `translateX(${-x}px)`\n      },\n      {\n        immediate: true\n      }\n    )\n\n    watch(\n      () => props.tabs,\n      () => {\n        updateController()\n        updateCenterPosition()\n        updateNavInkPosition()\n      },\n      { immediate: true }\n    )\n\n    watch(\n      () => props.activeKey,\n      () => {\n        updateCenterPosition()\n        updateNavInkPosition()\n      }\n    )\n\n    return () => {\n      return (\n        <div class={[`${ns}__navs-wrapper`, `is-${props.size}`]} onMouseleave={handleMouseleave}>\n          {props.tabWarp === 'nowarp' && controller.value && (\n            <BnIconArrowLeft\n              class={[\n                `${ns}__icon-prev`,\n                {\n                  'is-disabled': prevDisabled.value\n                }\n              ]}\n              // @ts-ignore: click\n              onClick={() => !prevDisabled.value && handleSlide(-1)}\n            />\n          )}\n          <div class={[`${ns}__navs-viewport`]} ref={viewportRef}>\n            <div\n              class={[`${ns}__navs`, `is-${props.type}`]}\n              ref={arrangeRef}\n              style={arrangeStyle.value}\n            >\n              {props.tabs.map((item) => (\n                <div\n                  class={[\n                    `${ns}__navs-item`,\n                    `is-${props.type}`,\n                    {\n                      'is-active': item.key === props.activeKey,\n                      'is-disabled': item.disabled\n                    }\n                  ]}\n                  key={`${props.type!}__${item.key}`}\n                  onClick={() => handleNavItem(item.key)}\n                  onMouseenter={(e) => handleMouseenter(e)}\n                  ref={(el: HTMLElement) => {\n                    navItemRefs.value[item.key] = el\n                  }}\n                >\n                  {item.paneSlots?.title ? item.paneSlots?.title() : item.title}\n                </div>\n              ))}\n\n              {showNavInk.value && <div class={[`${ns}__nav-ink`]} style={navInkStyle.value}></div>}\n            </div>\n          </div>\n          {props.tabWarp === 'nowarp' && controller.value && (\n            <BnIconArrowRight\n              class={[\n                `${ns}__icon-next`,\n                {\n                  'is-disabled': nextDisabled.value\n                }\n              ]}\n              // @ts-ignore: click\n              onClick={() => !nextDisabled.value && handleSlide(1)}\n            />\n          )}\n        </div>\n      )\n    }\n  }\n})\n"],"names":["name","getComponentNamespace","props","tabs","type","Array","default","String","size","activeKey","Number","undefined","changeActiveKey","Function","animation","Boolean","tabWarp","definePropType","setup","ns","getNamespace","navInkStyle","ref","arrangeStyle","navItemRefs","viewportRef","arrangeRef","translateX","controller","prevDisabled","computed","value","nextDisabled","viewportWidth","getBoundingClientRect","width","arrangeWidth","scrollWidth","updateController","nextTick","Math","floor","boundaryProcessing","x","updateCenterPosition","sleep","navEl","tagWidth","offsetLeft","updateNavInkPosition","el","left","height","bottom","handleSlide","direction","arrangeNode","offset","ceil","transform","getStyle","matcher","match","abs","handleNavItem","key","handleMouseenter","e","stopPropagation","currentTarget","handleMouseleave","showNavInk","includes","createResizeObserver","destroyResizeObserver","useResizeObserver","elementRef","onResize","onMounted","console","log","onUnmounted","watch","immediate","_createVNode","BnIconArrowLeft","onClick","map","item","disabled","paneSlots","title","BnIconArrowRight"],"mappings":"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"}