{"version":3,"file":"tab-panel.vue2.mjs","sources":["../../../components/tabs/tab-panel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, onBeforeUnmount, reactive, ref, toRef, watch } from 'vue'\n\nimport { emitEvent, useNameHelper, useProps } from '@vexip-ui/config'\nimport { tabPanelProps } from './props'\nimport { TABS_STATE } from './symbol'\n\nimport type { ItemState } from './symbol'\n\ndefineOptions({ name: 'TabPanel' })\n\nconst _props = defineProps(tabPanelProps)\nconst props = useProps('tabPanel', _props, {\n  lazy: null,\n  lazyLoad: null,\n})\n\nconst slots = defineSlots<{\n  default?: () => any,\n  label?: (params: { label: string | number }) => any,\n}>()\n\nconst tabsState = inject(TABS_STATE, null)\n\nconst nh = useNameHelper('tabs')\nconst active = ref(false)\nconst currentLabel = ref(props.label)\nconst loaded = ref(false)\n\nconst lazy = computed(() => props.lazy ?? tabsState?.lazy ?? false)\nconst lazyLoad = computed(() => props.lazyLoad ?? tabsState?.lazyLoad ?? false)\nconst className = computed(() => {\n  const baseClass = nh.be('panel')\n\n  return {\n    [baseClass]: true,\n    [`${baseClass}--disabled`]: props.disabled,\n    [`${baseClass}--lazy`]: lazy.value,\n    [`${baseClass}--active`]: !props.disabled && active.value,\n  }\n})\n\nwatch(\n  () => props.label,\n  value => {\n    currentLabel.value = value\n    tabsState?.refreshLabels()\n  },\n)\nwatch(active, value => {\n  emitEvent(props.onToggle!, value)\n})\n\nif (tabsState) {\n  const state = reactive({\n    label: currentLabel,\n    name: toRef(props, 'name'),\n    icon: toRef(props, 'icon'),\n    disabled: toRef(props, 'disabled'),\n    closable: toRef(props, 'closable'),\n    labelRenderer: null,\n  }) as ItemState\n\n  watch(\n    () => slots.label,\n    value => {\n      state.labelRenderer = value ? data => value(data) : null\n    },\n    { immediate: true },\n  )\n  watch(currentLabel, () => {\n    active.value = currentLabel.value === tabsState.currentActive\n  })\n  watch(\n    () => tabsState.currentActive,\n    value => {\n      active.value = currentLabel.value === value\n\n      if (!loaded.value && active.value) {\n        loaded.value = true\n      }\n    },\n    { immediate: true },\n  )\n\n  tabsState.increaseItem(state)\n\n  onBeforeUnmount(() => {\n    tabsState.decreaseItem(state)\n  })\n}\n</script>\n\n<template>\n  <div\n    v-if=\"!(lazy || (lazyLoad && !loaded)) || active\"\n    :class=\"className\"\n    role=\"tabpanel\"\n    :aria-hidden=\"!active\"\n  >\n    <slot></slot>\n  </div>\n</template>\n"],"names":["props","useProps","__props","slots","_useSlots","tabsState","inject","TABS_STATE","nh","useNameHelper","active","ref","currentLabel","loaded","lazy","computed","lazyLoad","className","baseClass","watch","value","emitEvent","state","reactive","toRef","data","onBeforeUnmount","_createElementBlock","_renderSlot","_ctx"],"mappings":";;;;;;;;;AAYM,UAAAA,IAAQC,EAAS,YADRC,GAC4B;AAAA,MACzC,MAAM;AAAA,MACN,UAAU;AAAA,IAAA,CACX,GAEKC,IAAQC,EAAA,GAKRC,IAAYC,EAAOC,GAAY,IAAI,GAEnCC,IAAKC,EAAc,MAAM,GACzBC,IAASC,EAAI,EAAK,GAClBC,IAAeD,EAAIX,EAAM,KAAK,GAC9Ba,IAASF,EAAI,EAAK,GAElBG,IAAOC,EAAS,MAAMf,EAAM,SAAQK,KAAA,gBAAAA,EAAW,SAAQ,EAAK,GAC5DW,IAAWD,EAAS,MAAMf,EAAM,aAAYK,KAAA,gBAAAA,EAAW,aAAY,EAAK,GACxEY,IAAYF,EAAS,MAAM;AACzB,YAAAG,IAAYV,EAAG,GAAG,OAAO;AAExB,aAAA;AAAA,QACL,CAACU,CAAS,GAAG;AAAA,QACb,CAAC,GAAGA,CAAS,YAAY,GAAGlB,EAAM;AAAA,QAClC,CAAC,GAAGkB,CAAS,QAAQ,GAAGJ,EAAK;AAAA,QAC7B,CAAC,GAAGI,CAAS,UAAU,GAAG,CAAClB,EAAM,YAAYU,EAAO;AAAA,MACtD;AAAA,IAAA,CACD;AAaD,QAXAS;AAAA,MACE,MAAMnB,EAAM;AAAA,MACZ,CAASoB,MAAA;AACP,QAAAR,EAAa,QAAQQ,GACrBf,KAAA,QAAAA,EAAW;AAAA,MAAc;AAAA,IAE7B,GACAc,EAAMT,GAAQ,CAASU,MAAA;AACX,MAAAC,EAAArB,EAAM,UAAWoB,CAAK;AAAA,IAAA,CACjC,GAEGf,GAAW;AACb,YAAMiB,IAAQC,EAAS;AAAA,QACrB,OAAOX;AAAA,QACP,MAAMY,EAAMxB,GAAO,MAAM;AAAA,QACzB,MAAMwB,EAAMxB,GAAO,MAAM;AAAA,QACzB,UAAUwB,EAAMxB,GAAO,UAAU;AAAA,QACjC,UAAUwB,EAAMxB,GAAO,UAAU;AAAA,QACjC,eAAe;AAAA,MAAA,CAChB;AAED,MAAAmB;AAAA,QACE,MAAMhB,EAAM;AAAA,QACZ,CAASiB,MAAA;AACP,UAAAE,EAAM,gBAAgBF,IAAQ,CAAQK,MAAAL,EAAMK,CAAI,IAAI;AAAA,QACtD;AAAA,QACA,EAAE,WAAW,GAAK;AAAA,MACpB,GACAN,EAAMP,GAAc,MAAM;AACjB,QAAAF,EAAA,QAAQE,EAAa,UAAUP,EAAU;AAAA,MAAA,CACjD,GACDc;AAAA,QACE,MAAMd,EAAU;AAAA,QAChB,CAASe,MAAA;AACA,UAAAV,EAAA,QAAQE,EAAa,UAAUQ,GAElC,CAACP,EAAO,SAASH,EAAO,UAC1BG,EAAO,QAAQ;AAAA,QAEnB;AAAA,QACA,EAAE,WAAW,GAAK;AAAA,MACpB,GAEAR,EAAU,aAAaiB,CAAK,GAE5BI,EAAgB,MAAM;AACpB,QAAArB,EAAU,aAAaiB,CAAK;AAAA,MAAA,CAC7B;AAAA,IAAA;qBAMS,EAAAR,EAAA,SAASE,EAAA,SAAa,CAAAH,EAAA,UAAYH,EAAM,cADlDiB,EAOM,OAAA;AAAA;MALH,SAAOV,EAAS,KAAA;AAAA,MACjB,MAAK;AAAA,MACJ,gBAAcP,EAAM;AAAA,IAAA;MAErBkB,EAAaC,EAAA,QAAA,SAAA;AAAA;;;"}