{"version":3,"file":"useRenderLine.mjs","sources":["../../../../components/tree/hooks/useRenderLine.tsx"],"sourcesContent":["import { usePrefixClass, TypeCreateElement, TreeNode, TypeVNode } from '../utils/adapt';\nimport { TypeTreeItemState } from '../types';\nimport { getTNode } from '../utils';\n\n// 渲染节点连线\nexport default function useRenderLine(state: TypeTreeItemState) {\n  const componentName = usePrefixClass('tree').value;\n\n  const renderLine = (h: TypeCreateElement): TypeVNode => {\n    const { node, treeScope } = state;\n    const { scopedSlots } = treeScope;\n    const treeProps = treeScope?.treeProps || {};\n    const { line } = treeProps;\n    const iconVisible = !!treeProps.icon;\n\n    let lineNode = null;\n    if (line === true) {\n      if (scopedSlots?.line) {\n        lineNode = scopedSlots.line({\n          node: node?.getModel(),\n        });\n      } else if (node.parent && node.tree) {\n        const { vmIsLeaf, vmIsFirst, level } = node;\n\n        const lineClasses = [];\n\n        // 每个节点绘制抵达上一层级的折线\n        lineClasses.push(`${componentName}__line`);\n\n        // 叶子节点，折线宽度延长，因为没有 icon 呈现\n        // 任意节点，icon 不呈现时也是要延长折线宽度\n        if (vmIsLeaf || !iconVisible) {\n          lineClasses.push(`${componentName}__line--leaf`);\n        }\n\n        // 分支首节点，到上一节点的折线高度要缩短，让位给 icon 呈现\n        // 如果 icon 隐藏了，则不必缩短折线高度\n        if (vmIsFirst && iconVisible) {\n          lineClasses.push(`${componentName}__line--first`);\n        }\n\n        // 如果节点的父节点，不是最后的节点\n        // 则需要绘制节点延长线\n        const shadowStyles: string[] = [];\n        const parents = node.getParents();\n        parents.pop();\n        parents.forEach((pnode: TreeNode, index: number) => {\n          if (!pnode.vmIsLast) {\n            shadowStyles.push(`calc(-${index + 1} * var(--space)) 0 var(--color)`);\n          }\n        });\n\n        const styles = {\n          '--level': level ? String(level) : undefined,\n          'box-shadow': shadowStyles.join(','),\n        };\n\n        lineNode = <span class={lineClasses} style={styles}></span>;\n      }\n    } else {\n      lineNode = getTNode(line, {\n        createElement: h,\n        node,\n      });\n    }\n    return lineNode as TypeVNode;\n  };\n\n  return {\n    renderLine,\n  };\n}\n"],"names":["useRenderLine","state","componentName","usePrefixClass","value","renderLine","h","node","treeScope","scopedSlots","treeProps","line","iconVisible","icon","lineNode","getModel","parent","tree","vmIsLeaf","vmIsFirst","level","lineClasses","push","concat","shadowStyles","parents","getParents","pop","forEach","pnode","index","vmIsLast","styles","String","join","_createVNode","getTNode","createElement"],"mappings":"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"}