{"version":3,"file":"tabs.mjs","sources":["../../../../../packages/components/tabs/src/tabs.ts"],"sourcesContent":["import {\n  defineComponent,\n  Fragment,\n  getCurrentInstance,\n  h,\n  nextTick,\n  onMounted,\n  onUpdated,\n  provide,\n  ref,\n  renderSlot,\n  watch,\n  type ExtractPropTypes,\n  type PropType\n} from 'vue'\nimport { isPromise, NOOP } from '@vue/shared'\nimport {\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT\n} from '@element-ultra/shared'\nimport ElIcon from '@element-ultra/components/icon'\nimport { Plus } from 'icon-ultra'\nimport { tabsRootContextKey } from '@element-ultra/tokens'\nimport TabNav from './tab-nav'\nimport type { TabsPaneContext } from '@element-ultra/tokens'\n\nimport type { Component, ComponentInternalInstance, VNode, Ref } from 'vue'\n\nconst getPaneInstanceFromSlot = (\n  vnode: VNode,\n  paneInstanceList: ComponentInternalInstance[] = []\n) => {\n  const children = (vnode.children || []) as ArrayLike<VNode>\n  Array.from(children).forEach(node => {\n    let type = node.type\n    type = (type as Component).name || type\n    if (type === 'ElTabPane' && node.component) {\n      paneInstanceList.push(node.component)\n    } else if (type === Fragment || type === 'template') {\n      getPaneInstanceFromSlot(node, paneInstanceList)\n    }\n  })\n  return paneInstanceList\n}\n\nconst tabsProps = {\n  type: {\n    type: String as PropType<'card' | 'border-card' | ''>,\n    default: ''\n  },\n  hideContent: Boolean,\n  activeName: {\n    type: String,\n    default: ''\n  },\n  closable: Boolean,\n  addable: Boolean,\n  modelValue: {\n    type: [String, Number],\n    default: ''\n  },\n  bars: Array as PropType<string[]>,\n  editable: Boolean,\n  tabPosition: {\n    type: String as PropType<'top' | 'right' | 'bottom' | 'left'>,\n    default: 'top'\n  },\n  beforeLeave: {\n    type: Function as PropType<\n      (\n        newTabName: string | number,\n        oldTabName: string | number\n      ) => void | boolean | Promise<void | boolean>\n    >,\n    default: () => true\n  },\n  stretch: Boolean\n}\n\nexport type TabsProps = ExtractPropTypes<typeof tabsProps>\n\nexport default defineComponent({\n  name: 'ElTabs',\n\n  props: tabsProps,\n  emits: {\n    [UPDATE_MODEL_EVENT]: (tabName: string | number) =>\n      typeof tabName === 'string' || typeof tabName === 'number',\n    [INPUT_EVENT]: (tabName: string | number) =>\n      typeof tabName === 'string' || typeof tabName === 'number',\n    'tab-click': (pane: TabsPaneContext, ev: Event) => ev instanceof Event,\n    edit: (paneName: string | number | null, action: 'remove' | 'add') =>\n      action === 'remove' || action === 'add',\n    'tab-remove': (paneName: string | number) =>\n      typeof paneName === 'string' || typeof paneName === 'number',\n    'tab-add': () => true\n  },\n\n  setup(props, { emit, slots, expose }) {\n    const instance = getCurrentInstance()!\n    const nav$ = ref<InstanceType<typeof TabNav>>()\n\n    const panes: Ref<TabsPaneContext[]> = ref([])\n    const currentName = ref(props.modelValue || props.activeName || '0')\n\n    const paneStatesMap: Record<number, TabsPaneContext> = {}\n\n    const updatePaneInstances = (isForceUpdate = false) => {\n      if (slots.default) {\n        const children = instance.subTree.children as ArrayLike<VNode>\n        const content = Array.from(children).find(\n          ({ props }) => props?.class === 'el-tabs__content'\n        )\n        if (!content) return\n\n        const paneInstanceList: TabsPaneContext[] = getPaneInstanceFromSlot(\n          content\n        ).map(paneComponent => paneStatesMap[paneComponent.uid])\n\n        const panesChanged = !(\n          paneInstanceList.length === panes.value.length &&\n          paneInstanceList.every(\n            (pane, index) => pane.uid === panes.value[index].uid\n          )\n        )\n\n        if (isForceUpdate || panesChanged) {\n          panes.value = paneInstanceList\n        }\n      } else if (panes.value.length !== 0) {\n        panes.value = []\n      }\n    }\n\n    const changeCurrentName = (value: string | number) => {\n      currentName.value = value\n      emit(INPUT_EVENT, value)\n      emit(UPDATE_MODEL_EVENT, value)\n    }\n\n    const setCurrentName = (value: string | number) => {\n      // should do nothing.\n      if (currentName.value === value) return\n\n      const canLeave = props.beforeLeave?.(value, currentName.value)\n      if (isPromise(canLeave)) {\n        canLeave.then(\n          () => {\n            changeCurrentName(value)\n\n            // call exposed function, Vue doesn't support expose in typescript yet.\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-expect-error\n            nav$.value?.removeFocus?.()\n          },\n          // ignore promise rejection in `before-leave` hook\n          NOOP\n        )\n      } else if (canLeave !== false) {\n        changeCurrentName(value)\n      }\n    }\n\n    const handleTabClick = (\n      tab: TabsPaneContext,\n      tabName: string | number,\n      event: Event\n    ) => {\n      if (tab.props.disabled) return\n      setCurrentName(tabName)\n      emit('tab-click', tab, event)\n    }\n\n    const handleTabRemove = (pane: TabsPaneContext, ev: Event) => {\n      if (pane.props.disabled) return\n      ev.stopPropagation()\n      emit('edit', pane.props.name, 'remove')\n      emit('tab-remove', pane.props.name)\n    }\n\n    const handleTabAdd = () => {\n      emit('edit', null, 'add')\n      emit('tab-add')\n    }\n\n    onUpdated(() => updatePaneInstances())\n    onMounted(() => updatePaneInstances())\n\n    watch(\n      () => props.activeName,\n      modelValue => setCurrentName(modelValue)\n    )\n\n    watch(\n      () => props.modelValue,\n      modelValue => setCurrentName(modelValue)\n    )\n\n    watch(currentName, async () => {\n      updatePaneInstances(true)\n      await nextTick()\n      await nav$.value?.$nextTick()\n\n      // call exposed function, Vue doesn't support expose in typescript yet.\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-expect-error\n      nav$.value?.scrollToActiveTab()\n    })\n\n    provide(tabsRootContextKey, {\n      props,\n      currentName,\n      updatePaneState: pane => (paneStatesMap[pane.uid] = pane)\n    })\n\n    expose({\n      currentName\n    })\n\n    return () => {\n      const { hideContent } = props\n\n      const newButton =\n        props.editable || props.addable\n          ? h(\n              'span',\n              {\n                class: 'el-tabs__new-tab',\n                tabindex: '0',\n                onClick: handleTabAdd,\n                onKeydown: (ev: KeyboardEvent) => {\n                  if (ev.code === EVENT_CODE.enter) handleTabAdd()\n                }\n              },\n              [h(ElIcon, { class: 'is-icon-plus' }, { default: () => h(Plus) })]\n            )\n          : null\n\n      const header = h(\n        'div',\n        { class: ['el-tabs__header', `is-${props.tabPosition}`] },\n        [\n          newButton,\n          h(TabNav, {\n            currentName: currentName.value,\n            editable: props.editable,\n            type: props.type,\n            panes: panes.value,\n            stretch: props.stretch,\n            ref: nav$,\n            onTabClick: handleTabClick,\n            onTabRemove: handleTabRemove\n          })\n        ]\n      )\n\n      const panels = h(\n        'div',\n        {\n          class: 'el-tabs__content'\n        },\n        [renderSlot(slots, 'default')]\n      )\n      if (hideContent) {\n        nextTick(() => {\n          panels.el?.parentNode?.removeChild(panels.el)\n        })\n      }\n      return h(\n        'div',\n        {\n          class: {\n            'el-tabs': true,\n            'el-tabs--card': props.type === 'card',\n            [`el-tabs--${props.tabPosition}`]: true,\n            'el-tabs--border-card': props.type === 'border-card'\n          }\n        },\n        props.tabPosition !== 'bottom' ? [header, panels] : [panels, header]\n      )\n    }\n  }\n})\n"],"names":["props","_a"],"mappings":"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"}