{"version":3,"file":"tree.vue2.mjs","sources":["../../../../../packages/components/tree/src/tree.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n  name: 'ElTree'\n});\n</script>\n<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.is('multiple', showCheckbox),\n      { [ns.m('highlight-current')]: highlightCurrent }\n    ]\"\n    role=\"tree\"\n    :style=\"containerStyle\"\n    ref=\"treeContainer\"\n  >\n    <template v-if=\"isNotEmpty\">\n      <fixed-size-list\n        v-if=\"flattenTree.length > 240 && listHeight\"\n        :class-name=\"ns.b('virtual-list')\"\n        :data=\"flattenTree\"\n        :total=\"flattenTree.length\"\n        :height=\"listHeight\"\n        :item-size=\"itemSize\"\n        :perf-mode=\"perfMode\"\n      >\n        <template #default=\"{ data, index, style }\">\n          <el-tree-node\n            :key=\"data[index].key\"\n            :style=\"style\"\n            :node=\"data[index]\"\n            :class=\"props.itemClass\"\n            :expanded=\"isExpanded(data[index])\"\n            :show-checkbox=\"showCheckbox\"\n            :checked=\"isChecked(data[index])\"\n            :indeterminate=\"isIndeterminate(data[index])\"\n            :disabled=\"selectable ? !selectable(data[index]) : false\"\n            :current=\"isCurrent(data[index])\"\n            :hidden-expand-icon=\"isForceHiddenExpandIcon(data[index])\"\n            @click=\"handleNodeClick\"\n            @toggle=\"toggleExpand\"\n            @check=\"handleNodeCheck\"\n          ></el-tree-node>\n        </template>\n      </fixed-size-list>\n\n      <el-scrollbar style=\"height: 100%;\" v-else>\n        <el-tree-node\n          v-for=\"node of flattenTree\"\n          :key=\"node.key\"\n          :node=\"node\"\n          :class=\"props.itemClass\"\n          :expanded=\"isExpanded(node)\"\n          :show-checkbox=\"showCheckbox\"\n          :checked=\"isChecked(node)\"\n          :indeterminate=\"isIndeterminate(node)\"\n          :disabled=\"selectable ? !selectable(node) : false\"\n          :current=\"isCurrent(node)\"\n          :hidden-expand-icon=\"isForceHiddenExpandIcon(node)\"\n          @click=\"handleNodeClick\"\n          @toggle=\"toggleExpand\"\n          @check=\"handleNodeCheck\"\n        ></el-tree-node>\n      </el-scrollbar>\n    </template>\n\n    <div v-else :class=\"ns.e('empty-block')\">\n      <span :class=\"ns.e('empty-text')\">{{ emptyText }}</span>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n  computed,\n  getCurrentInstance,\n  onMounted,\n  onUnmounted,\n  provide,\n  shallowRef,\n  useAttrs,\n  useSlots\n} from 'vue'\nimport { useNamespace } from '@element-ultra/hooks'\nimport { FixedSizeList } from '@element-ultra/components/virtual-list'\nimport { ElScrollbar } from '@element-ultra/components/scrollbar'\nimport { useTree } from './composables/useTree'\nimport ElTreeNode from './tree-node.vue'\nimport { ROOT_TREE_INJECTION_KEY, treeEmits, treeProps } from './virtual-tree'\n\n\n\nconst props = defineProps(treeProps)\nconst emit = defineEmits(treeEmits)\n\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nprovide(ROOT_TREE_INJECTION_KEY, {\n  ctx: {\n    emit,\n    slots,\n    attrs\n  },\n  props,\n  instance: getCurrentInstance()!\n})\n\nconst ns = useNamespace('tree')\n\nconst containerStyle = computed(() => {\n  const { height } = props\n  return {\n    height: typeof height === 'number' ? height + 'px' : height\n  }\n})\n\nconst listHeight = shallowRef(0)\nconst treeContainer = shallowRef<HTMLDivElement>()\n\nlet observer: ResizeObserver | undefined = undefined\nonMounted(() => {\n  if (!treeContainer.value) return\n\n  observer = new ResizeObserver(entries => {\n    listHeight.value = (entries[0]?.target as any).offsetHeight\n  })\n\n  observer.observe(treeContainer.value)\n})\n\nonUnmounted(() => {\n  observer?.disconnect()\n  observer = undefined\n})\n\nconst {\n  flattenTree,\n  isNotEmpty,\n  toggleExpand,\n  isExpanded,\n  isIndeterminate,\n  isChecked,\n  isCurrent,\n  isForceHiddenExpandIcon,\n  handleNodeClick,\n  handleNodeCheck,\n  // expose\n  getCurrentNode,\n  getCurrentKey,\n  setCurrentKey,\n  getChecked,\n  getHalfChecked,\n  setChecked,\n  setCheckedKeys,\n  setCheckedAll,\n  filter,\n  setData,\n  getTreeNodes\n} = useTree(props, emit)\n\ndefineExpose({\n  getCurrentNode,\n  getCurrentKey,\n  setCurrentKey,\n  getChecked,\n  getHalfChecked,\n  setChecked,\n  setCheckedKeys,\n  setCheckedAll,\n  filter,\n  setData,\n  getTreeNodes\n})\n</script>\n"],"names":["__MACROS_defineComponent"],"mappings":";;;;;;;;;;;AAEA,MAA6B,cAAAA,eAAyB,CAAA;AAAA,EACpD,IAAM,EAAA,QAAA;AACR,CAAC,CAAA,CAAA;;;;;;;AA4FD,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AAEvB,IAAA,OAAA,CAAQ,uBAAyB,EAAA;AAAA,MAC/B,GAAK,EAAA;AAAA,QACH,IAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,OACF;AAAA,MACA,KAAA;AAAA,MACA,UAAU,kBAAmB,EAAA;AAAA,KAC9B,CAAA,CAAA;AAED,IAAM,MAAA,EAAA,GAAK,aAAa,MAAM,CAAA,CAAA;AAE9B,IAAM,MAAA,cAAA,GAAiB,SAAS,MAAM;AACpC,MAAM,MAAA,EAAE,QAAW,GAAA,KAAA,CAAA;AACnB,MAAO,OAAA;AAAA,QACL,MAAQ,EAAA,OAAO,MAAW,KAAA,QAAA,GAAW,SAAS,IAAO,GAAA,MAAA;AAAA,OACvD,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAM,MAAA,UAAA,GAAa,WAAW,CAAC,CAAA,CAAA;AAC/B,IAAA,MAAM,gBAAgB,UAA2B,EAAA,CAAA;AAEjD,IAAA,IAAI,QAAuC,GAAA,KAAA,CAAA,CAAA;AAC3C,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,CAAC,aAAc,CAAA,KAAA;AAAO,QAAA,OAAA;AAE1B,MAAW,QAAA,GAAA,IAAI,eAAe,CAAW,OAAA,KAAA;;AACvC,QAAA,UAAA,CAAW,KAAS,GAAA,CAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,CAAC,CAAA,KAAT,mBAAY,MAAe,EAAA,YAAA,CAAA;AAAA,OAChD,CAAA,CAAA;AAED,MAAS,QAAA,CAAA,OAAA,CAAQ,cAAc,KAAK,CAAA,CAAA;AAAA,KACrC,CAAA,CAAA;AAED,IAAA,WAAA,CAAY,MAAM;AAChB,MAAU,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,UAAA,EAAA,CAAA;AACV,MAAW,QAAA,GAAA,KAAA,CAAA,CAAA;AAAA,KACZ,CAAA,CAAA;AAED,IAAM,MAAA;AAAA,MACJ,WAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,eAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,uBAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA;AAAA,MAEA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,KACF,GAAI,OAAQ,CAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AAEvB,IAAa,MAAA,CAAA;AAAA,MACX,cAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}