{"version":3,"file":"tabs.mjs","sources":["../../../../../../packages/components/tabs/src/tabs.tsx"],"sourcesContent":["import type { VNode } from 'vue'\nimport { computed, defineComponent, provide, reactive, ref, toRefs } from 'vue'\nimport { getComponentNamespace, getNamespace } from '../../../utils/global-config'\nimport { isUndefined } from '../../../utils/is'\nimport { getAllElements, isComponent } from '../../../utils/vue-utils'\nimport { tabsProps } from './props'\nimport { tabsInjectionKey } from './context'\nimport type { TabPaneData } from './types'\nimport TabNavs from './tab-navs'\n\nexport default defineComponent({\n  name: getComponentNamespace('Tabs'),\n  props: tabsProps,\n  emits: ['update:activeKey', 'change'],\n  setup(props, { slots, emit }) {\n    const ns = getNamespace('tabs')\n    const { destroyOnHide } = toRefs(props)\n\n    const _activeKey = ref()\n    const panesMap = ref<Map<number, any>>(new Map())\n\n    const renderTabsNavsData = computed(() => {\n      return Array.from(panesMap.value.values())\n    })\n\n    const panesKeys = computed(() => renderTabsNavsData.value.map((item) => item.key))\n\n    const computedActiveKey = computed(() => {\n      const activeKey = props.activeKey ?? _activeKey.value\n      if (isUndefined(activeKey)) {\n        return panesKeys.value[0]\n      }\n      return activeKey\n    })\n\n    // 每个pane创建时保存TabPaneData\n    const addPane = (uid: number, paneData: TabPaneData) => {\n      panesMap.value.set(uid, paneData)\n    }\n    const removePane = (uid: number) => {\n      panesMap.value.delete(uid)\n    }\n\n    const activeIndex = computed(() => {\n      const index = panesKeys.value.indexOf(computedActiveKey.value)\n      if (index === -1) {\n        return 0\n      }\n      return index\n    })\n\n    const renderPanes = (children: VNode[]) => {\n      return (\n        <div class={[`${ns}__panes-viewport`]} v-show={!props.hidePanes}>\n          <div\n            class={[`${ns}__panes`, props.animation && `is-animation`]}\n            style={{\n              transform: `translate(-${activeIndex.value * 100}%, 0)`\n            }}\n          >\n            {children}\n          </div>\n        </div>\n      )\n    }\n\n    const renderNav = () => {\n      const handleChangeActiveKey = (key: string | number) => {\n        if (key !== computedActiveKey.value) {\n          _activeKey.value = key\n          emit('update:activeKey', key)\n          emit('change', key)\n        }\n      }\n      if (slots.extra) {\n        return (\n          <div class={[`${ns}__extra-wrapper`]}>\n            <TabNavs\n              tabs={renderTabsNavsData.value}\n              type={props.type}\n              size={props.size}\n              activeKey={computedActiveKey.value}\n              changeActiveKey={handleChangeActiveKey}\n              animation={props.animation}\n              tabWarp={props.tabWarp}\n            />\n            {slots.extra && <div class={[`${ns}__extra`]}>{slots.extra()}</div>}\n          </div>\n        )\n      }\n\n      return (\n        <TabNavs\n          tabs={renderTabsNavsData.value}\n          type={props.type}\n          size={props.size}\n          activeKey={computedActiveKey.value}\n          changeActiveKey={handleChangeActiveKey}\n          animation={props.animation}\n          tabWarp={props.tabWarp}\n        />\n      )\n    }\n\n    provide(\n      tabsInjectionKey,\n      reactive({\n        destroyOnHide: destroyOnHide,\n        activeKey: computedActiveKey,\n        addPane,\n        removePane\n      })\n    )\n\n    return () => {\n      const paneChildren = getAllElements(slots.default?.()).filter(\n        (vn) => isComponent(vn, vn.type) && vn.type.name === 'BnTabPane'\n      )\n      return (\n        <div class={[ns]}>\n          {renderNav()}\n          {renderPanes(paneChildren)}\n        </div>\n      )\n    }\n  }\n})\n"],"names":["name","getComponentNamespace","props","tabsProps","emits","setup","slots","emit","ns","getNamespace","destroyOnHide","toRefs","_activeKey","ref","panesMap","Map","renderTabsNavsData","computed","Array","from","value","values","panesKeys","map","item","key","computedActiveKey","activeKey","isUndefined","addPane","uid","paneData","set","removePane","delete","activeIndex","index","indexOf","renderPanes","children","_withDirectives","_createVNode","animation","transform","_vShow","hidePanes","renderNav","handleChangeActiveKey","extra","TabNavs","type","size","tabWarp","provide","tabsInjectionKey","reactive","paneChildren","getAllElements","default","filter","vn","isComponent"],"mappings":"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"}