{"version":3,"file":"tabs.mjs","sources":["../../../../../../../packages/components/tabs/src/tabs.tsx"],"sourcesContent":["import {\n  computed,\n  createVNode,\n  defineComponent,\n  getCurrentInstance,\n  nextTick,\n  provide,\n  ref,\n  renderSlot,\n  watch,\n} from 'vue'\nimport { omit } from 'lodash-unified'\nimport {\n  buildProps,\n  definePropType,\n  getEventCode,\n  isNumber,\n  isString,\n  isUndefined,\n} from '@hd-front-end/utils'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@hd-front-end/constants'\nimport ElIcon from '@hd-front-end/components/icon'\nimport { Plus } from '@element-plus/icons-vue'\nimport { useNamespace, useOrderedChildren } from '@hd-front-end/hooks'\nimport { tabsRootContextKey } from './constants'\nimport TabNav from './tab-nav'\n\nimport type { ExtractPropTypes, VNode, __ExtractPublicPropTypes } from 'vue'\nimport type { Awaitable } from '@hd-front-end/utils'\nimport type { TabNavInstance } from './tab-nav'\nimport type { TabPaneName, TabsPaneContext } from './constants'\n\nexport const tabsProps = buildProps({\n  /**\n   * @description type of Tab\n   */\n  type: {\n    type: String,\n    values: ['card', 'border-card', ''],\n    default: '',\n  },\n  /**\n   * @description whether Tab is closable\n   */\n  closable: Boolean,\n  /**\n   * @description whether Tab is addable\n   */\n  addable: Boolean,\n  /**\n   * @description binding value, name of the selected tab\n   */\n  modelValue: {\n    type: [String, Number],\n  },\n  /**\n   * @description whether Tab is addable and closable\n   */\n  editable: Boolean,\n  /**\n   * @description position of tabs\n   */\n  tabPosition: {\n    type: String,\n    values: ['top', 'right', 'bottom', 'left'],\n    default: 'top',\n  },\n  /**\n   * @description hook function before switching tab. If `false` is returned or a `Promise` is returned and then is rejected, switching will be prevented\n   */\n  beforeLeave: {\n    type: definePropType<\n      (newName: TabPaneName, oldName: TabPaneName) => Awaitable<void | boolean>\n    >(Function),\n    default: () => true,\n  },\n  /**\n   * @description whether width of tab automatically fits its container\n   */\n  stretch: Boolean,\n} as const)\nexport type TabsProps = ExtractPropTypes<typeof tabsProps>\nexport type TabsPropsPublic = __ExtractPublicPropTypes<typeof tabsProps>\n\nconst isPaneName = (value: unknown): value is string | number =>\n  isString(value) || isNumber(value)\n\nexport const tabsEmits = {\n  [UPDATE_MODEL_EVENT]: (name: TabPaneName) => isPaneName(name),\n  tabClick: (pane: TabsPaneContext, ev: Event) => ev instanceof Event,\n  tabChange: (name: TabPaneName) => isPaneName(name),\n  edit: (paneName: TabPaneName | undefined, action: 'remove' | 'add') =>\n    ['remove', 'add'].includes(action),\n  tabRemove: (name: TabPaneName) => isPaneName(name),\n  tabAdd: () => true,\n}\nexport type TabsEmits = typeof tabsEmits\n\nexport type TabsPanes = Record<number, TabsPaneContext>\n\nconst Tabs = defineComponent({\n  name: 'ElTabs',\n\n  props: tabsProps,\n  emits: tabsEmits,\n\n  setup(props, { emit, slots, expose }) {\n    const ns = useNamespace('tabs')\n\n    const isVertical = computed(() =>\n      ['left', 'right'].includes(props.tabPosition)\n    )\n\n    const {\n      children: panes,\n      addChild: registerPane,\n      removeChild: unregisterPane,\n      ChildrenSorter: PanesSorter,\n    } = useOrderedChildren<TabsPaneContext>(getCurrentInstance()!, 'ElTabPane')\n\n    const nav$ = ref<TabNavInstance>()\n    const currentName = ref<TabPaneName>(props.modelValue ?? '0')\n\n    const setCurrentName = async (value?: TabPaneName, trigger = false) => {\n      // should do nothing.\n      if (currentName.value === value || isUndefined(value)) return\n\n      try {\n        let canLeave\n        if (props.beforeLeave) {\n          const result = props.beforeLeave(value, currentName.value)\n          canLeave = result instanceof Promise ? await result : result\n        } else {\n          canLeave = true\n        }\n\n        if (canLeave !== false) {\n          const isFocusInsidePane = panes.value\n            .find((item) => item.paneName === currentName.value)\n            ?.isFocusInsidePane()\n\n          currentName.value = value\n          if (trigger) {\n            emit(UPDATE_MODEL_EVENT, value)\n            emit('tabChange', value)\n          }\n\n          nav$.value?.removeFocus?.()\n          if (isFocusInsidePane) {\n            nav$.value?.focusActiveTab()\n          }\n        }\n      } catch {}\n    }\n\n    const handleTabClick = (\n      tab: TabsPaneContext,\n      tabName: TabPaneName,\n      event: Event\n    ) => {\n      if (tab.props.disabled) return\n      emit('tabClick', tab, event)\n      setCurrentName(tabName, true)\n    }\n\n    const handleTabRemove = (pane: TabsPaneContext, ev: Event) => {\n      if (pane.props.disabled || isUndefined(pane.props.name)) return\n      ev.stopPropagation()\n      emit('edit', pane.props.name, 'remove')\n      emit('tabRemove', pane.props.name)\n    }\n\n    const handleTabAdd = () => {\n      emit('edit', undefined, 'add')\n      emit('tabAdd')\n    }\n\n    const handleKeydown = (event: KeyboardEvent) => {\n      const code = getEventCode(event)\n      if ([EVENT_CODE.enter, EVENT_CODE.numpadEnter].includes(code))\n        handleTabAdd()\n    }\n\n    const swapChildren = (\n      vnode: VNode & {\n        el: HTMLDivElement\n        children: VNode<HTMLDivElement>[]\n      }\n    ) => {\n      const actualFirstChild = vnode.el.firstChild!\n      const firstChild = ['bottom', 'right'].includes(props.tabPosition)\n        ? vnode.children[0].el!\n        : vnode.children[1].el!\n\n      if (actualFirstChild !== firstChild) {\n        actualFirstChild.before(firstChild)\n      }\n    }\n\n    watch(\n      () => props.modelValue,\n      (modelValue) => setCurrentName(modelValue)\n    )\n\n    watch(currentName, async () => {\n      await nextTick()\n      nav$.value?.scrollToActiveTab()\n    })\n\n    provide(tabsRootContextKey, {\n      props,\n      currentName,\n      registerPane,\n      unregisterPane,\n      nav$,\n    })\n\n    expose({\n      currentName,\n      get tabNavRef() {\n        return omit(nav$.value, ['scheduleRender'])\n      },\n    })\n\n    return () => {\n      const addSlot = slots['add-icon']\n      const newButton =\n        props.editable || props.addable ? (\n          <div\n            class={[\n              ns.e('new-tab'),\n              isVertical.value && ns.e('new-tab-vertical'),\n            ]}\n            tabindex=\"0\"\n            onClick={handleTabAdd}\n            onKeydown={handleKeydown}\n          >\n            {addSlot ? (\n              renderSlot(slots, 'add-icon')\n            ) : (\n              <ElIcon class={ns.is('icon-plus')}>\n                <Plus />\n              </ElIcon>\n            )}\n          </div>\n        ) : null\n\n      const tabNav = () => (\n        <TabNav\n          ref={nav$}\n          currentName={currentName.value}\n          editable={props.editable}\n          type={props.type}\n          panes={panes.value}\n          stretch={props.stretch}\n          onTabClick={handleTabClick}\n          onTabRemove={handleTabRemove}\n        />\n      )\n\n      const header = (\n        <div\n          class={[\n            ns.e('header'),\n            isVertical.value && ns.e('header-vertical'),\n            ns.is(props.tabPosition),\n          ]}\n        >\n          {createVNode(PanesSorter, null, {\n            default: tabNav,\n            $stable: true,\n          })}\n          {newButton}\n        </div>\n      )\n\n      const panels = (\n        <div class={ns.e('content')}>{renderSlot(slots, 'default')}</div>\n      )\n\n      return (\n        <div\n          class={[\n            ns.b(),\n            ns.m(props.tabPosition),\n            {\n              [ns.m('card')]: props.type === 'card',\n              [ns.m('border-card')]: props.type === 'border-card',\n            },\n          ]}\n          // @ts-ignore\n          onVnodeMounted={swapChildren}\n          onVnodeUpdated={swapChildren}\n        >\n          {panels}\n          {header}\n        </div>\n      )\n    }\n  },\n})\n\nexport type TabsInstance = InstanceType<typeof Tabs> & {\n  currentName: TabPaneName\n  tabNavRef: TabNavInstance | undefined\n}\n\nexport default Tabs\n"],"names":["tabsProps","buildProps","type","String","values","default","closable","Boolean","addable","modelValue","Number","editable","tabPosition","beforeLeave","definePropType","Function","stretch","isPaneName","value","isString","isNumber","tabsEmits","UPDATE_MODEL_EVENT","name","tabClick","pane","ev","Event","tabChange","edit","paneName","action","includes","tabRemove","tabAdd","Tabs","defineComponent","props","emits","setup","emit","slots","expose","ns","useNamespace","isVertical","computed","children","panes","addChild","registerPane","removeChild","unregisterPane","ChildrenSorter","PanesSorter","useOrderedChildren","getCurrentInstance","nav$","ref","currentName","setCurrentName","trigger","_a","isUndefined","canLeave","result","Promise","isFocusInsidePane","find","item","removeFocus","focusActiveTab","handleTabClick","tab","tabName","event","disabled","handleTabRemove","stopPropagation","handleTabAdd","undefined","handleKeydown","code","getEventCode","EVENT_CODE","enter","numpadEnter","swapChildren","vnode","actualFirstChild","el","firstChild","before","watch","nextTick","scrollToActiveTab","provide","tabsRootContextKey","tabNavRef","omit","addSlot","newButton","_createVNode","e","renderSlot","ElIcon","is","Plus","tabNav","TabNav","header","createVNode","$stable","panels","b","m"],"mappings":"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"}