{"version":3,"file":"tree.vue2.mjs","sources":["../../../../../../packages/components/tree/src/tree.vue"],"sourcesContent":["<template>\r\n  <div :class=\"bem.b('wrapper')\" v-bind=\"containerAttrs\">\r\n    <slot name=\"header\" />\r\n    <a-tree\r\n      v-bind=\"componentAttrs\"\r\n      v-model:selected-keys=\"newSelectedKeys\"\r\n      v-model:checked-keys=\"newCheckedKeys\"\r\n      :expanded-keys=\"\r\n        !expandedKeys && defaultExpandAll ? undefined : newExpandedKeys\r\n      \"\r\n      :tree-data=\"treeData\"\r\n      :class=\"[bem.b(), bem.is(height && virtual ? 'virtual' : '')]\"\r\n      :default-expand-all=\"defaultExpandAll\"\r\n      :multiple=\"multiple\"\r\n      :field-names=\"fieldNames\"\r\n      :virtual=\"virtual\"\r\n      :height=\"height\"\r\n      :check-strictly=\"checkStrictly\"\r\n      :load-data=\"enableLazyLoad ? loadData : undefined\"\r\n      :loaded-keys=\"cacheLoadedData ? loadedKeys : []\"\r\n      :show-line=\"showLine && { showLeafIcon }\"\r\n      @update:expanded-keys=\"(v) => (newExpandedKeys = v)\"\r\n      @expand=\"onExpand\"\r\n      @select=\"onSelect\"\r\n      @check=\"onCheck\"\r\n    >\r\n      <template v-for=\"item in Object.keys(filterSlots)\" #[item]=\"data\">\r\n        <slot :name=\"item\" v-bind=\"data || {}\"></slot>\r\n      </template>\r\n\r\n      <!-- 展开收起图标 -->\r\n      <template #switcherIcon=\"data\">\r\n        <slot name=\"switcherIcon\" v-bind=\"data\">\r\n          <!-- 展开状态图标 -->\r\n          <ll-icon\r\n            v-if=\"data.expanded\"\r\n            :icon-name=\"expandIcon?.iconName || 'icon-solid-arrow-down'\"\r\n            :size=\"expandIcon?.size || 12\"\r\n            :color=\"expandIcon?.color\"\r\n          />\r\n          <!-- 收起状态图标 -->\r\n          <ll-icon\r\n            v-else\r\n            :icon-name=\"collapseIcon?.iconName || 'icon-solid-arrow-right'\"\r\n            :size=\"collapseIcon?.size || 12\"\r\n            :color=\"collapseIcon?.color\"\r\n          />\r\n        </slot>\r\n      </template>\r\n\r\n      <!-- 标题title -->\r\n      <template #title=\"data\">\r\n        <slot name=\"title\" v-bind=\"data\">\r\n          <!-- 节点内容 -->\r\n          <div :class=\"bem.e('node-content')\" @click=\"nodeClick(data)\">\r\n            <!-- 图标 -->\r\n            <div\r\n              v-if=\"showIcon && data.dataRef.icon\"\r\n              :class=\"bem.e('title-icon')\"\r\n            >\r\n              <slot name=\"title-icon\" v-bind=\"data\">\r\n                <ll-icon\r\n                  :icon-name=\"data.dataRef.icon\"\r\n                  :size=\"iconSize\"\r\n                  :color=\"iconColor\"\r\n                />\r\n              </slot>\r\n            </div>\r\n\r\n            <!-- 显示文本 -->\r\n            <div\r\n              :class=\"bem.e('title-text')\"\r\n              :style=\"{\r\n                color: textColor,\r\n                fontSize: `${textSize}px`,\r\n              }\"\r\n            >\r\n              <slot name=\"title-text\" v-bind=\"data\">\r\n                {{ data.dataRef[fieldTitle] }}\r\n              </slot>\r\n            </div>\r\n\r\n            <!-- 操作区 -->\r\n            <div v-if=\"enableOperate\" :class=\"bem.e('operate')\">\r\n              <slot name=\"operate\" v-bind=\"data\" />\r\n            </div>\r\n          </div>\r\n        </slot>\r\n      </template>\r\n    </a-tree>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport { TreeProps } from 'ant-design-vue'\r\nimport { Key } from 'ant-design-vue/es/_util/type'\r\nimport { DataNode } from 'ant-design-vue/es/tree'\r\nimport { omit } from 'lodash-es'\r\nimport { computed, ref, useAttrs, useSlots } from 'vue'\r\nimport { treeEmits, treeProps } from './tree'\r\n\r\ndefineOptions({ name: 'LlTree', inheritAttrs: false })\r\n\r\nconst slots = useSlots()\r\nconst attrs = useAttrs()\r\n\r\nconst props = defineProps(treeProps)\r\nconst emits = defineEmits(treeEmits)\r\n\r\nconst bem = createNamespace('tree')\r\n\r\n// 容器样式\r\nconst containerAttrs = computed(() => ({\r\n  class: attrs.class as any,\r\n  style: attrs.style as any,\r\n}))\r\n\r\n// 组件功能相关的属性\r\nconst componentAttrs = computed(() => omit(attrs, ['class', 'style']))\r\n\r\n// 过滤自定义插槽\r\nconst filterSlots = computed(() => {\r\n  return Object.keys(slots).filter(\r\n    (name) => name !== 'switcherIcon' && name !== 'title' && name !== 'header'\r\n  )\r\n})\r\n\r\nconst fieldKey = computed(() => props.fieldNames?.['key'] || 'key')\r\nconst fieldTitle = computed(() => props.fieldNames?.['title'] || 'title')\r\nconst fieldChildren = computed(\r\n  () => props.fieldNames?.['children'] || 'children'\r\n)\r\n\r\nconst initSelectedKeys = ref([] as Key[])\r\nconst initExpandedKeys = ref([] as Key[])\r\nconst initCheckedKeys = ref([] as TreeProps['checkedKeys'])\r\n\r\n// 选中节点数组\r\nconst newSelectedKeys = computed({\r\n  get: () => props.selectedKeys || initSelectedKeys.value,\r\n  set(val: Key[]) {\r\n    initSelectedKeys.value = val\r\n    emits('update:selectedKeys', val)\r\n  },\r\n})\r\n\r\n// 展开数组\r\nconst newExpandedKeys = computed({\r\n  get: () => props.expandedKeys || initExpandedKeys.value,\r\n  set(val: Key[]) {\r\n    initExpandedKeys.value = val\r\n    emits('update:expandedKeys', val)\r\n  },\r\n})\r\n\r\n// 复选框数组\r\nconst newCheckedKeys = computed({\r\n  get: () => props.checkedKeys || initCheckedKeys.value,\r\n  set: (val: TreeProps['checkedKeys']) => {\r\n    initCheckedKeys.value = val\r\n    emits('update:checkedKeys', val)\r\n  },\r\n})\r\n\r\n// ————————————————————————————事件———————————————————————— //\r\n\r\n// 展开事件\r\nconst onExpand = (keys: Key[], e?: any) => {\r\n  emits('expand', keys, e)\r\n}\r\n// 选中事件\r\nconst onSelect = (keys: Key[], e?: any) => {\r\n  emits('select', keys, e)\r\n}\r\n// 选择事件\r\nconst onCheck = (keys: TreeProps['checkedKeys'], e?: any) => {\r\n  emits('check', keys, e)\r\n}\r\n\r\n// ———————————————————————————内部方法———————————————————————— //\r\n\r\n// 点击行\r\nconst nodeClick = (data: any) => {\r\n  if (!props.clickRowExpand) return\r\n  const state = newExpandedKeys.value.includes(data[fieldKey.value]) // 当前展开状态\r\n\r\n  const keys = state\r\n    ? newExpandedKeys.value.filter((k) => k !== data[fieldKey.value]) // 已展开\r\n    : [...newExpandedKeys.value, data[fieldKey.value]] // 未展开\r\n\r\n  newExpandedKeys.value = keys\r\n\r\n  onExpand(keys, { expanded: !state, node: data })\r\n  emits('nodeClick', data)\r\n}\r\n\r\n// ———————————————————————————导出方法———————————————————————— //\r\n\r\n// 展开所有\r\nconst expandAll = () => {\r\n  newExpandedKeys.value = getAllNodeKeys() // 使用Set去重\r\n  onExpand(newExpandedKeys.value)\r\n}\r\n\r\n// 收起所有\r\nconst collapseAll = () => {\r\n  newExpandedKeys.value = []\r\n  onExpand(newExpandedKeys.value)\r\n}\r\n\r\n// 展开指定根目录\r\nconst expandRoot = (key: Key) => {\r\n  if (!props.treeData?.length) return\r\n\r\n  const rootNode = props.treeData?.find((item) => item[fieldKey.value] === key)\r\n\r\n  if (rootNode && !newExpandedKeys.value.includes(key)) {\r\n    newExpandedKeys.value = [...newExpandedKeys.value, key]\r\n  }\r\n  onExpand(newExpandedKeys.value)\r\n}\r\n\r\n// 收起指定根目录\r\nconst collapseRoot = (key: Key) => {\r\n  if (newExpandedKeys.value.includes(key)) {\r\n    newExpandedKeys.value = newExpandedKeys.value.filter((k) => k !== key)\r\n  }\r\n  onExpand(newExpandedKeys.value)\r\n}\r\n\r\n// 展开所有根目录\r\nconst expandAllRoots = () => {\r\n  if (!props.treeData?.length) return\r\n\r\n  const rootKeys = props.treeData\r\n    .map((item) => item[fieldKey.value])\r\n    .filter(Boolean) as (string | number)[]\r\n\r\n  // 使用 Set 去重后合并\r\n  const mergedKeys = [...new Set([...newExpandedKeys.value, ...rootKeys])]\r\n  newExpandedKeys.value = mergedKeys\r\n  onExpand(newExpandedKeys.value)\r\n}\r\n\r\n// 收起所有根目录\r\nconst collapseAllRoots = () => {\r\n  if (!props.treeData?.length) {\r\n    newExpandedKeys.value = []\r\n    return\r\n  }\r\n\r\n  const rootKeys = props.treeData\r\n    .map((item) => item[fieldKey.value])\r\n    .filter(Boolean) as (string | number)[]\r\n\r\n  // 过滤掉所有根节点的 key\r\n  newExpandedKeys.value = newExpandedKeys.value.filter(\r\n    (key) => !rootKeys.includes(key)\r\n  )\r\n  onExpand(newExpandedKeys.value)\r\n}\r\n\r\n// 选中指定节点\r\nconst selection = (key: Key) => {\r\n  if (props.multiple) {\r\n    // 多选模式：如果 key 不存在则添加\r\n    if (!newSelectedKeys.value.includes(key)) {\r\n      newSelectedKeys.value = [...newSelectedKeys.value, key]\r\n    }\r\n  } else {\r\n    // 单选模式：直接替换为当前 key（覆盖旧值）\r\n    newSelectedKeys.value = [key]\r\n  }\r\n  onSelect(newSelectedKeys.value)\r\n}\r\n\r\n// 取消选中指定节点\r\nconst clearSelection = (key: Key) => {\r\n  if (newSelectedKeys.value.includes(key)) {\r\n    newSelectedKeys.value = newSelectedKeys.value.filter((k) => k !== key)\r\n  }\r\n  onSelect(newSelectedKeys.value)\r\n}\r\n\r\n// 全选\r\nconst checkedAll = () => {\r\n  if (!props.treeData?.length) return\r\n\r\n  if (props.checkStrictly) {\r\n    newCheckedKeys.value = {\r\n      checked: getAllNodeKeys(),\r\n      halfChecked: [],\r\n    }\r\n  } else {\r\n    newCheckedKeys.value = getAllNodeKeys()\r\n  }\r\n  onCheck(newCheckedKeys.value)\r\n}\r\n\r\n// 取消全选\r\nconst deselectAll = () => {\r\n  if (props.checkStrictly) {\r\n    newCheckedKeys.value = {\r\n      checked: [],\r\n      halfChecked: [],\r\n    }\r\n  } else {\r\n    newCheckedKeys.value = []\r\n  }\r\n  onCheck(newCheckedKeys.value)\r\n}\r\n\r\n// 获取所有节点的key\r\nconst getAllNodeKeys = (): Key[] => {\r\n  if (!props.treeData?.length) return []\r\n\r\n  const allKeys = [] as Key[]\r\n\r\n  const collectKeys = (nodes: any[]) => {\r\n    nodes.forEach((node) => {\r\n      if (node[fieldKey.value] != null) {\r\n        allKeys.push(node[fieldKey.value])\r\n      }\r\n      if (node[fieldChildren.value]?.length) {\r\n        collectKeys(node[fieldChildren.value])\r\n      }\r\n    })\r\n  }\r\n\r\n  collectKeys(props.treeData)\r\n  return [...new Set(allKeys)]\r\n}\r\n\r\n// 查找指定节点（辅助函数）\r\nconst findNode = (key: Key): DataNode | null => {\r\n  const find = (nodes: DataNode[]): DataNode | null => {\r\n    for (const node of nodes) {\r\n      if (node[fieldKey.value] === key) return node\r\n      if (node[fieldChildren.value]?.length) {\r\n        const found = find(node[fieldChildren.value])\r\n        if (found) return found\r\n      }\r\n    }\r\n    return null\r\n  }\r\n  return find(props.treeData || [])\r\n}\r\n\r\ndefineExpose({\r\n  expandAll, // 展开所有\r\n  collapseAll, // 收起所有\r\n  expandRoot, // 展开指定根目录\r\n  collapseRoot, // 收起指定根目录\r\n  expandAllRoots, // 展开所有根目录\r\n  collapseAllRoots, // 收起所有根目录\r\n  selection, // 选中指定节点\r\n  clearSelection, // 取消选中指定节点\r\n  checkedAll, // 全选\r\n  deselectAll, // 取消全选\r\n  getAllNodeKeys, //获取所有节点的key\r\n  findNode, // 查找指定节点（辅助函数）\r\n})\r\n</script>\r\n"],"names":["_openBlock","_createElementBlock","_mergeProps","_unref","_renderSlot","_createVNode","expandedKeys","defaultExpandAll","treeData","height","virtual","multiple","fieldNames","checkStrictly","enableLazyLoad","loadData","cacheLoadedData","loadedKeys","showLine","showLeafIcon","_withCtx","_normalizeProps","_guardReactiveProps","_createCommentVNode","_createBlock","expandIcon","_Fragment","collapseIcon","_createElementVNode","_normalizeClass","showIcon","iconSize","iconColor","_normalizeStyle","textColor","textSize","enableOperate","_renderList"],"mappings":"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"}