{"version":3,"file":"tabs.vue2.mjs","sources":["../../../../../../packages/components/tabs/src/tabs.vue"],"sourcesContent":["<template>\r\n  <a-tabs\r\n    ref=\"tabsRef\"\r\n    v-bind=\"attrs\"\r\n    :style=\"getStyle\"\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.is(type === 'button' ? 'button' : ''),\r\n      bem.is(tabWidthMode),\r\n      bem.is(tabBorderRadius ? 'set-border-radius' : ''),\r\n    ]\"\r\n    :size=\"size\"\r\n    :hide-add=\"hideAdd\"\r\n    :tab-position=\"tabPosition\"\r\n    :tab-bar-style=\"getTabBarStyle\"\r\n    :type=\"type === 'button' ? 'card' : type\"\r\n  >\r\n    <!-- 默认插槽 -->\r\n    <slot>\r\n      <a-tab-pane\r\n        v-for=\"(tab, index) in props.tabs\"\r\n        :key=\"tab.key\"\r\n        :disabled=\"tab.disabled\"\r\n        :closable=\"tab.closable\"\r\n      >\r\n        <template #tab>\r\n          <slot name=\"tab\" :tab=\"tab\">\r\n            <span>{{ tab.name }}</span>\r\n          </slot>\r\n        </template>\r\n        <slot name=\"tabPane\" :tab=\"tab\" :index=\"index\" />\r\n      </a-tab-pane>\r\n    </slot>\r\n\r\n    <!-- 自定义插槽 -->\r\n    <template v-for=\"item in filterSlots\" :key=\"item\" #[item]=\"data\">\r\n      <slot :name=\"item\" v-bind=\"data || {}\"></slot>\r\n    </template>\r\n\r\n    <!-- tab bar 上左侧额外的元素 -->\r\n    <template #leftExtra>\r\n      <div :class=\"bem.e('leftExtra')\" :style=\"getLeftExtraStyle\">\r\n        <slot name=\"leftExtra\" />\r\n      </div>\r\n    </template>\r\n\r\n    <!-- tab bar 上右侧额外的元素 -->\r\n    <template #rightExtra>\r\n      <div :class=\"bem.e('rightExtra')\" :style=\"getRightExtraStyle\">\r\n        <slot name=\"rightExtra\" />\r\n      </div>\r\n    </template>\r\n  </a-tabs>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport { computed, ref, useAttrs, useSlots } from 'vue'\r\nimport { tabsCardPaddingEnum, tabsLinePaddingEnum, tabsProps } from './tabs'\r\n\r\ndefineOptions({ name: 'LlTabs' })\r\n\r\nconst props = defineProps(tabsProps)\r\n\r\nconst bem = createNamespace('tabs')\r\nconst tabsRef = ref()\r\n\r\nconst attrs = useAttrs()\r\nconst slots = useSlots()\r\n\r\n// 过滤已声明使用的插槽\r\nconst filterSlots = computed(() => {\r\n  const allSlotNames = Object.keys(slots || {})\r\n  return allSlotNames.filter(\r\n    (name) =>\r\n      name !== 'leftExtra' && name !== 'rightExtra' && name !== 'default',\r\n  )\r\n})\r\n\r\nconst getStyle = computed(() => {\r\n  const computedStyle = {} as any\r\n\r\n  computedStyle['--tab-ink-bar-width'] = props.inkBarWidth // 下划线宽度\r\n  // 选中页签下划线颜色\r\n  computedStyle['--tab-ink-bar-color'] = props.inkBarColor\r\n    ? props.inkBarColor\r\n    : props.type === 'button'\r\n      ? '#005ce5'\r\n      : '#2e73ff'\r\n\r\n  if (props.tabWidthMode === 'fixed') {\r\n    computedStyle['--tab-fixed-width'] = props.tabFixedWidth\r\n  }\r\n\r\n  computedStyle['--tab-border-radius'] = props.tabBorderRadius // 页签边框圆角\r\n\r\n  // 页签内边距\r\n  if (props.tabPadding && Object.keys(props.tabPadding).length > 0) {\r\n    for (const key in props.tabPadding) {\r\n      computedStyle[`--tab-${key}`] = props.tabPadding[key]\r\n    }\r\n  } else {\r\n    // 线性\r\n    if (props.type === 'line') {\r\n      // top / bottom\r\n      if (props.tabPosition === 'top' || props.tabPosition === 'bottom') {\r\n        for (const key in tabsLinePaddingEnum.horizontal[props.size]) {\r\n          computedStyle[`--tab-${key}`] =\r\n            tabsLinePaddingEnum.horizontal[props.size][key]\r\n        }\r\n      }\r\n      // left / right\r\n      else {\r\n        for (const key in tabsLinePaddingEnum.vertical[props.size]) {\r\n          computedStyle[`--tab-${key}`] =\r\n            tabsLinePaddingEnum.vertical[props.size][key]\r\n        }\r\n      }\r\n    }\r\n    // 按钮/卡片/可编辑卡片\r\n    else {\r\n      for (const key in tabsCardPaddingEnum[props.size]) {\r\n        computedStyle[`--tab-${key}`] = tabsCardPaddingEnum[props.size][key]\r\n      }\r\n    }\r\n  }\r\n\r\n  return {\r\n    width: props.width,\r\n    height: props.height,\r\n    ...computedStyle,\r\n  }\r\n})\r\n\r\n// 自定义页签样式\r\nconst getTabBarStyle = computed(() => {\r\n  if (props.tabBarStyle) {\r\n    return props.tabBarStyle\r\n  }\r\n  // 组件默认样式\r\n  else {\r\n    switch (props.tabPosition) {\r\n      case 'top':\r\n        return {\r\n          marginBottom: '8px',\r\n        }\r\n      case 'bottom':\r\n        return {\r\n          marginTop: '8px',\r\n        }\r\n      case 'left':\r\n        return {\r\n          marginBottom: '8px',\r\n        }\r\n      case 'right':\r\n        return {\r\n          marginTop: '8px',\r\n        }\r\n      default:\r\n        return null\r\n    }\r\n  }\r\n})\r\n\r\n// 左侧缩进\r\nconst getLeftExtraStyle = computed(() => {\r\n  return props.tabPosition === 'top' || props.tabPosition === 'bottom'\r\n    ? { marginLeft: props.startIndent + 'px' }\r\n    : { marginTop: props.startIndent + 'px' }\r\n})\r\n\r\n// 右侧缩进\r\nconst getRightExtraStyle = computed(() => {\r\n  return props.tabPosition === 'top' || props.tabPosition === 'bottom'\r\n    ? { marginRight: props.endIndent + 'px' }\r\n    : { marginBottom: props.endIndent + 'px' }\r\n})\r\n</script>\r\n"],"names":["_openBlock","_createBlock","_mergeProps","_unref","type","tabWidthMode","tabBorderRadius","size","hideAdd","tabPosition","_createElementVNode","_normalizeClass","_renderSlot","_createElementBlock","_Fragment","_toDisplayString","_renderList","_withCtx","_normalizeProps","_guardReactiveProps"],"mappings":"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"}