{"version":3,"file":"ng-nest-ui-tree.mjs","sources":["../../../../lib/ng-nest/ui/tree/tree.property.ts","../../../../lib/ng-nest/ui/tree/tree.service.ts","../../../../lib/ng-nest/ui/tree/tree.token.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.html","../../../../lib/ng-nest/ui/tree/tree.component.ts","../../../../lib/ng-nest/ui/tree/tree.component.html","../../../../lib/ng-nest/ui/tree/tree.module.ts","../../../../lib/ng-nest/ui/tree/ng-nest-ui-tree.ts"],"sourcesContent":["import { XProperty, XPropertyFunction, XToBoolean, XToNumber, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, output, model } from '@angular/core';\r\nimport { CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\r\nimport type { XData, XParentIdentityProperty, XNumber, XBoolean, XIdentityProperty, XAlign } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Tree\r\n * @selector x-tree\r\n * @decorator component\r\n */\r\nexport const XTreePrefix = 'x-tree';\r\nconst X_TREE_CONFIG_NAME = 'tree';\r\n\r\n/**\r\n * @zh_CN Tree 节点排序默认值\r\n * @en_US Tree node order default value\r\n */\r\nexport const X_TREE_ORDER_DEFAULT: XTreeOrder[] = [\r\n  { property: 'sort', order: 'asc' },\r\n  { property: 'label', order: 'asc' }\r\n];\r\n\r\n/**\r\n * Tree Property\r\n */\r\n@Component({ selector: `${XTreePrefix}-property`, template: '' })\r\nexport class XTreeProperty extends XPropertyFunction(X_TREE_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 节点数据\r\n   * @en_US Node data\r\n   */\r\n  readonly data = input<XData<XTreeNode>>([]);\r\n  /**\r\n   * @zh_CN 显示多选框\r\n   * @en_US Show checkbox\r\n   */\r\n  readonly checkbox = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 开启懒加载节点，data 必须设置成函数类型\r\n   * @en_US Open lazy loading node, data must be set to function type\r\n   */\r\n  readonly lazy = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 当前激活的节点 Id, 当 multiple 为 true 时，值为数组（默认是 Id 数组，objectArray 为 true，对象数组）\r\n   * @en_US Currently active node Id. When Multiple is true, the value is the Id array\r\n   */\r\n  readonly activatedId = model<any>(null);\r\n  /**\r\n   * @zh_CN 展开的节点\r\n   * @en_US Expanded node\r\n   */\r\n  readonly expanded = model<any[]>([]);\r\n  /**\r\n   * @zh_CN checkbox 选中的节点\r\n   * @en_US Checkbox selected node\r\n   */\r\n  readonly checked = model<any[]>([]);\r\n  /**\r\n   * @zh_CN 展开所有节点\r\n   * @en_US Expand all nodes\r\n   */\r\n  readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 默认展开的层级\r\n   * @en_US Default expanded level\r\n   */\r\n  readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 点击节点就触发展开/收起的操作，请确保节点上没有其它操作（checkbox、自定义的操作按钮）\r\n   * @en_US Click the node to trigger the expand/collapse operation, please make sure that there are no other operations on the node (checkbox, custom operation button)\r\n   */\r\n  readonly nodeOpen = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 单位间距，这个与层级的乘积算出节点的左边距\r\n   * @en_US Unit spacing, the product of this and the level calculates the left margin of the node\r\n   */\r\n  readonly spacing = input<string, XNumber>(this.config?.spacing ?? '1.5rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 标签自定义模板\r\n   * @en_US Label custom template\r\n   */\r\n  readonly labelTpl = input<TemplateRef<void>>();\r\n  /**\r\n   * @zh_CN 节点的高度, 默认是自适应高度\r\n   * @en_US The height of the node\r\n   */\r\n  readonly nodeHeight = input<string, XNumber>(this.config?.nodeHeight ?? '', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 是否允许多次点击一个节点触发多次事件\r\n   * @en_US Whether to allow multiple clicks on a node to trigger multiple events\r\n   */\r\n  readonly allowManyActivated = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 拖动节点\r\n   * @en_US Drag node\r\n   */\r\n  readonly drag = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 当前点击选中的节点变化的事件\r\n   * @en_US The event of the currently clicked node change\r\n   */\r\n  readonly activatedChange = output<XTreeNode>();\r\n  /**\r\n   * @zh_CN 使用 checkedbox 选中变化的事件\r\n   * @en_US Use checkedbox to select changed events\r\n   */\r\n  readonly checkboxChange = output<XTreeNode>();\r\n  /**\r\n   * @zh_CN 如果 data 是函数类型，可以通过此参数控制请求，用于弹框中的表格，弹出后再请求\r\n   * @en_US If data is a function type, you can use this parameter to control the request, which is often used in the form in the pop-up box, and then request it after it pops up\r\n   */\r\n  readonly manual = model<boolean>(true);\r\n  /**\r\n   * @zh_CN checkbox 状态改变触发层级检查\r\n   * @en_US Checkbox status changes trigger level checks\r\n   */\r\n  readonly levelCheck = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 节点内容不换行显示省略号\r\n   * @en_US Show ellipsis without wrapping\r\n   */\r\n  readonly nodeNowrap = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 节点垂直对齐方式\r\n   * @en_US Show ellipsis without wrapping\r\n   */\r\n  readonly nodeAlignItems = input<XAlign>(this.config?.nodeAlignItems ?? 'center');\r\n  /**\r\n   * @zh_CN 树节点操作按钮\r\n   * @en_US Tree node operation buttons\r\n   */\r\n  readonly actions = input<XTreeAction[]>([]);\r\n  /**\r\n   * @zh_CN 滚动区域元素\r\n   * @en_US Rolling area element\r\n   */\r\n  readonly scrollElement = input<HTMLElement>();\r\n  /**\r\n   * @zh_CN 开启虚拟滚动\r\n   * @en_US Turn on virtual scrolling\r\n   */\r\n  readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 滚动区域高度，开启虚拟滚动的时候生效\r\n   * @en_US Rolling area height\r\n   */\r\n  readonly virtualScrollHeight = input<string, XNumber>(this.config?.virtualScrollHeight ?? '400px', {\r\n    transform: XToCssPixelValue\r\n  });\r\n  /**\r\n   * @zh_CN 虚拟滚动高度自适应指定元素\r\n   * @en_US virtual rolling height follows the specified object\r\n   */\r\n  readonly heightAdaption = input<HTMLElement>();\r\n  /**\r\n   * @zh_CN itemSize，对应 cdk scroll 中的参数，开启虚拟滚动才生效\r\n   * @en_US itemSize，corresponding to the parameters in cdk scroll\r\n   */\r\n  readonly itemSize = input<number, XNumber>(this.config?.itemSize ?? 34, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 超出可视窗口缓冲区的最小值，对应 cdk scroll 中的参数，开启虚拟滚动才生效\r\n   * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n   */\r\n  readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 渲染新数据缓冲区的像素，对应 cdk scroll 中的参数，开启虚拟滚动才生效\r\n   * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n   */\r\n  readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 多选功能，当前激活的节点可以是多个\r\n   * @en_US Multiple choice\r\n   */\r\n  readonly multiple = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 当开启多选的时候，activatedId 的值为对象数组\r\n   * @en_US When multiple selection is enabled, the value of activatedId is an array of objects\r\n   */\r\n  readonly objectArray = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 当开启多选的时候，点击父节点，包含子节点\r\n   * @en_US When selecting multiple options, click on the parent node to include the child nodes\r\n   */\r\n  readonly includeChildren = input<boolean, XBoolean>(this.config?.includeChildren ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 关键字高亮，针对下拉树搜索\r\n   * @en_US Keyword highlighting\r\n   */\r\n  readonly keywordText = input<string | string[]>();\r\n  /**\r\n   * @zh_CN 匹配关键字区分大小写，针对下拉树搜索\r\n   * @en_US Case-sensitive\r\n   */\r\n  readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 只能选择叶子节点\r\n   * @en_US Only leaf nodes can be selected\r\n   */\r\n  readonly onlyLeaf = input<boolean, XBoolean>(this.config?.onlyLeaf ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 展开收起的图标自定义模版\r\n   * @en_US Expand the folded icon custom template\r\n   */\r\n  readonly expandedIcon = input<TemplateRef<void>>();\r\n  /**\r\n   * @zh_CN 显示连接线\r\n   * @en_US Show line\r\n   */\r\n  readonly showLine = input<boolean, XBoolean>(this.config?.showLine ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 排序属性\r\n   * @en_US Order property\r\n   */\r\n  readonly order = input<XTreeOrder[]>(this.config?.order ?? X_TREE_ORDER_DEFAULT);\r\n  /**\r\n   * @zh_CN 节点点击事件\r\n   * @en_US Node click event\r\n   */\r\n  readonly nodeClick = output<XTreeNode>();\r\n  /**\r\n   * @zh_CN 节点开始拖动事件\r\n   * @en_US Node drag started\r\n   */\r\n  readonly nodeDragStarted = output<XTreeNodeDragEvent>();\r\n  /**\r\n   * @zh_CN 节点结束拖动事件\r\n   * @en_US Node drag ended\r\n   */\r\n  readonly nodeDragEnded = output<XTreeNodeDragEvent>();\r\n  /**\r\n   * @zh_CN 节点正在拖动事件\r\n   * @en_US Node drag moved\r\n   */\r\n  readonly nodeDragMoved = output<XTreeNodeDragEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 数据对象\r\n * @en_US Tree data object\r\n */\r\nexport interface XTreeNode extends XParentIdentityProperty<XTreeNode> {\r\n  /**\r\n   * @zh_CN 激活的\r\n   * @en_US active\r\n   */\r\n  activated?: boolean;\r\n  /**\r\n   * @zh_CN 检查更新\r\n   * @en_US Check for updates\r\n   */\r\n  change?: Function;\r\n  /**\r\n   * @zh_CN checkbox 是否选中\r\n   * @en_US whether checkbox is selected\r\n   */\r\n  checked?: boolean;\r\n  /**\r\n   * @zh_CN 禁用checkbox\r\n   * @en_US Disable checkbox\r\n   */\r\n  disabled?: boolean;\r\n  /**\r\n   * @zh_CN checkbox 子节点是否有选中的状态\r\n   * @en_US Whether the child node of checkbox is selected\r\n   */\r\n  indeterminate?: boolean;\r\n  /**\r\n   * @zh_CN 节点高度，优先级高于 tree 参数\r\n   * @en_US Node height, highest priority\r\n   */\r\n  height?: string;\r\n  /**\r\n   * @zh_CN 节点内容不换行显示省略号，优先级高于 tree 参数\r\n   * @en_US Show ellipsis without wrapping, highest priority\r\n   */\r\n  nowrap?: boolean;\r\n  /**\r\n   * @zh_CN 节点垂直对齐方式，优先级高于 tree 参数\r\n   * @en_US Show ellipsis without wrapping, highest priority\r\n   */\r\n  alignItems?: XAlign;\r\n  /**\r\n   * @zh_CN 节点懒加载中\r\n   * @en_US Node lazy loading\r\n   */\r\n  loading?: boolean;\r\n  /**\r\n   * @zh_CN 显示拖动指示器\r\n   * @en_US Show drag indicator\r\n   */\r\n  showDragIndicator?: boolean;\r\n  /**\r\n   * @zh_CN 自定义属性\r\n   * @en_US Custom attributes\r\n   */\r\n  [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点操作\r\n * @en_US Tree node operation\r\n */\r\nexport interface XTreeAction extends XIdentityProperty {\r\n  /**\r\n   * @zh_CN 操作\r\n   * @en_US Operating\r\n   */\r\n  handler?: Function;\r\n  /**\r\n   * @zh_CN 图标\r\n   * @en_US Icon\r\n   */\r\n  icon?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点拖动事件\r\n * @en_US Tree node drag event\r\n */\r\nexport interface XTreeNodeDragEvent {\r\n  /**\r\n   * @zh_CN 对应 cdk 中的事件\r\n   * @en_US drag cdk event\r\n   */\r\n  event?: CdkDragStart | CdkDragEnd | CdkDragMove<XTreeNode>;\r\n  /**\r\n   * @zh_CN 拖动的节点\r\n   * @en_US drag node\r\n   */\r\n  from?: XTreeNode;\r\n  /**\r\n   * @zh_CN 要拖动到的位置对应的节点\r\n   * @en_US Node corresponding to the position to drag\r\n   */\r\n  to?: XTreeNode;\r\n  /**\r\n   * @zh_CN 对应节点的前面还是后面\r\n   * @en_US The front or back of the corresponding node\r\n   */\r\n  position?: -1 | 0 | 1;\r\n}\r\n\r\n/**\r\n * TreeNode\r\n * @selector x-tree-node\r\n * @decorator directive\r\n */\r\nexport const XTreeNodePrefix = 'x-tree-node';\r\n\r\n/**\r\n * TreeNode Property\r\n */\r\n@Component({ selector: `${XTreeNodePrefix}-property`, template: '' })\r\nexport class XTreeNodeProperty extends XProperty {\r\n  /**\r\n   * @zh_CN 节点数据\r\n   * @en_US Node data\r\n   */\r\n  readonly node = input<XTreeNode>({});\r\n  /**\r\n   * @zh_CN 层级\r\n   * @en_US Level\r\n   */\r\n  readonly level = model<number | undefined>(0);\r\n  /**\r\n   * @zh_CN 节点的高度\r\n   * @en_US The height of the node\r\n   */\r\n  readonly nodeHeight = model<string>('');\r\n  /**\r\n   * @zh_CN 节点内容不换行显示省略号\r\n   * @en_US Show ellipsis without wrapping\r\n   */\r\n  readonly nodeNowrap = model<boolean>(false);\r\n  /**\r\n   * @zh_CN 节点垂直对齐方式\r\n   * @en_US Show ellipsis without wrapping\r\n   */\r\n  readonly nodeAlignItems = model<XAlign>('center');\r\n  /**\r\n   * @zh_CN 标记为虚拟滚动的节点\r\n   * @en_US Mark as a node of virtual rolling\r\n   */\r\n  readonly virtualScroll = model<boolean | undefined>(false);\r\n  /**\r\n   * @zh_CN 禁用\r\n   * @en_US Disabled\r\n   */\r\n  readonly disabled = model<boolean | undefined>(false);\r\n  /**\r\n   * @zh_CN id\r\n   * @en_US Id\r\n   */\r\n  readonly id = model<any>();\r\n  /**\r\n   * @zh_CN pid\r\n   * @en_US pId\r\n   */\r\n  readonly pid = model<any>();\r\n  /**\r\n   * @zh_CN 叶子节点\r\n   * @en_US A leaf node\r\n   */\r\n  readonly leaf = model<boolean | undefined>(false);\r\n  /**\r\n   * @zh_CN 节点的高度\r\n   * @en_US The height of the node\r\n   */\r\n  readonly height = model<string>('');\r\n  /**\r\n   * @zh_CN 节点垂直对齐方式\r\n   * @en_US Show ellipsis without wrapping\r\n   */\r\n  readonly alignItems = model<XAlign>();\r\n  /**\r\n   * @zh_CN 节点垂直对齐方式\r\n   * @en_US Show ellipsis without wrapping\r\n   */\r\n  readonly loading = model<boolean | undefined>(false);\r\n  /**\r\n   * @zh_CN 展开\r\n   * @en_US open\r\n   */\r\n  readonly open = model<boolean | undefined>(false);\r\n  /**\r\n   * @zh_CN checkbox 是否选中\r\n   * @en_US whether checkbox is selected\r\n   */\r\n  readonly checked = model<boolean | undefined>(false);\r\n  /**\r\n   * @zh_CN checkbox 子节点是否有选中的状态\r\n   * @en_US Whether the child node of checkbox is selected\r\n   */\r\n  readonly indeterminate = model<boolean | undefined>(false);\r\n  /**\r\n   * @zh_CN 节点名称\r\n   * @en_US The name of the node\r\n   */\r\n  readonly label = model<string | undefined>('');\r\n  /**\r\n   * @zh_CN 节点内容不换行显示省略号，优先级高于 tree 参数\r\n   * @en_US Show ellipsis without wrapping, highest priority\r\n   */\r\n  readonly nowrap = model<boolean | undefined>(false);\r\n  /**\r\n   * @zh_CN 节点展开收起事件\r\n   * @en_US Node expansion pack up\r\n   */\r\n  readonly toggle = output<XTreeNode>();\r\n  /**\r\n   * @zh_CN 树节点操作按钮\r\n   * @en_US Tree node operation buttons\r\n   */\r\n  readonly actions = input<XTreeAction[]>([]);\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点排序属性\r\n * @en_US Tree node order property\r\n */\r\nexport interface XTreeOrder {\r\n  /**\r\n   * @zh_CN treenode 排序属性\r\n   * @en_US treenode order property\r\n   */\r\n  property: string;\r\n  /**\r\n   * @zh_CN 排序方式\r\n   * @en_US order type\r\n   */\r\n  order: XTreeOrderType;\r\n}\r\n\r\nexport type XTreeOrderType = 'asc' | 'desc';\r\n","import { Injectable } from '@angular/core';\r\nimport { XIsEmpty, XRemove } from '@ng-nest/ui/core';\r\nimport { XTreeNode } from './tree.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XTreeService {\r\n  getChildren(data: XTreeNode[], node: XTreeNode) {\r\n    const res: XTreeNode[] = [];\r\n    const gChildren = (nd: XTreeNode) => {\r\n      const children = data.filter((x) => x.pid === nd.id);\r\n      if (XIsEmpty(children)) return;\r\n      for (let child of children) {\r\n        res.push(child);\r\n        gChildren(child);\r\n      }\r\n    };\r\n    gChildren(node);\r\n\r\n    return res;\r\n  }\r\n\r\n  getParents(data: XTreeNode[], node: XTreeNode) {\r\n    const res: XTreeNode[] = [];\r\n    const gParent = (nd: XTreeNode) => {\r\n      if (!nd.pid) return;\r\n      const parent = data.find((x) => x.id === nd.pid);\r\n      if (!parent) return;\r\n      res.push(parent);\r\n      gParent(parent);\r\n    };\r\n    gParent(node);\r\n\r\n    return res;\r\n  }\r\n\r\n  getOpenChildren(data: XTreeNode[], node: XTreeNode) {\r\n    const res: XTreeNode[] = [];\r\n    const gChildren = (nd: XTreeNode) => {\r\n      if (!nd.open) return;\r\n      const children = data.filter((x) => x.pid === nd.id);\r\n      if (XIsEmpty(children)) return;\r\n      for (let child of children) {\r\n        res.push(child);\r\n        gChildren(child);\r\n      }\r\n    };\r\n    gChildren(node);\r\n\r\n    return res;\r\n  }\r\n\r\n  moveNode(data: XTreeNode[], from: XTreeNode, to: XTreeNode, pos: -1 | 0 | 1) {\r\n    if (XIsEmpty(data)) return;\r\n    const isAddChildNode = pos === 0;\r\n    const formIndex = data.findIndex((x) => x.id === from.id);\r\n    const toIndex = data.findIndex((x) => x.id === to.id);\r\n    XRemove(data, (x) => x.id === from.id);\r\n    if (from.pid === to.pid) {\r\n      let diffLevel = 0;\r\n      if (isAddChildNode) {\r\n        from.pid = to.id;\r\n        diffLevel = to.level! + 1 - from.level!;\r\n        from.level = to.level! + 1;\r\n        to.open = true;\r\n      } else {\r\n        diffLevel = to.level! - from.level!;\r\n      }\r\n      const fromChildren = this.getChildren(data, from);\r\n      fromChildren.forEach((x) => {\r\n        x.level = x.level! + diffLevel;\r\n      });\r\n      const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n      data.splice(pos === -1 ? index : index + 1, 0, from);\r\n    } else if (from.pid !== to.pid) {\r\n      let diffLevel = 0;\r\n      if (isAddChildNode) {\r\n        from.pid = to.id;\r\n        diffLevel = to.level! + 1 - from.level!;\r\n        from.level = to.level! + 1;\r\n        to.open = true;\r\n      } else {\r\n        from.pid = to.pid;\r\n        diffLevel = to.level! - from.level!;\r\n        from.level = to.level;\r\n      }\r\n      const fromChildren = this.getChildren(data, from);\r\n      fromChildren.forEach((x) => {\r\n        x.level = x.level! + diffLevel;\r\n      });\r\n      const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n      data.splice(pos === -1 ? index : index + 1, 0, from);\r\n    }\r\n  }\r\n}\r\n","import {\r\n  InjectionToken,\r\n  InputSignal,\r\n  InputSignalWithTransform,\r\n  ModelSignal,\r\n  OutputEmitterRef,\r\n  TemplateRef,\r\n  WritableSignal\r\n} from '@angular/core';\r\nimport type { XTreeNode } from './tree.property';\r\nimport type { XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\nexport interface XTreeContext {\r\n  nodes: WritableSignal<XTreeNode[]>;\r\n  dragging: WritableSignal<boolean>;\r\n  hoverTreeNode: WritableSignal<XTreeNode | null>;\r\n  spacing: InputSignalWithTransform<string, XNumber>;\r\n  dragPosition: WritableSignal<-1 | 0 | 1>;\r\n  activatedId: ModelSignal<any>;\r\n  multiple: InputSignalWithTransform<boolean, XBoolean>;\r\n  objectArray: InputSignalWithTransform<boolean, XBoolean>;\r\n  levelCheck: InputSignalWithTransform<boolean, XBoolean>;\r\n  activatedNode: WritableSignal<XTreeNode | null>;\r\n  nodeOpen: InputSignalWithTransform<boolean, XBoolean>;\r\n  onlyLeaf: InputSignalWithTransform<boolean, XBoolean>;\r\n  includeChildren: InputSignalWithTransform<boolean, XBoolean>;\r\n  activatedChange: OutputEmitterRef<XTreeNode>;\r\n  nodeClick: OutputEmitterRef<XTreeNode>;\r\n  checkboxChange: OutputEmitterRef<XTreeNode>;\r\n  allowManyActivated: InputSignalWithTransform<boolean, XBoolean>;\r\n  showLine: InputSignalWithTransform<boolean, XBoolean>;\r\n  expandedIcon: InputSignal<TemplateRef<void> | undefined>;\r\n  checkbox: InputSignalWithTransform<boolean, XBoolean>;\r\n  labelTpl: InputSignal<TemplateRef<void> | undefined>;\r\n  keywordText: InputSignal<string | string[] | undefined>;\r\n  caseSensitive: InputSignalWithTransform<boolean, XBoolean>;\r\n}\r\n\r\nexport const X_TREE_CONTEXT = new InjectionToken<XTreeContext>('X_TREE_CONTEXT');\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ElementRef,\r\n  ChangeDetectorRef,\r\n  ChangeDetectionStrategy,\r\n  HostBinding,\r\n  HostListener,\r\n  inject,\r\n  computed,\r\n  signal,\r\n  output\r\n} from '@angular/core';\r\nimport { XTreeNodePrefix, XTreeNode, XTreeNodeProperty, XTreeAction } from './tree.property';\r\nimport { XIsEmpty, XBoolean, XComputedStyle, XToCssPx, XIsObjectArray, XIsArray } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { XTreeService } from './tree.service';\r\nimport { DOCUMENT, NgStyle } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XKeywordDirective } from '@ng-nest/ui/keyword';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { X_TREE_CONTEXT } from './tree.token';\r\n\r\n@Component({\r\n  selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`,\r\n  imports: [\r\n    NgStyle,\r\n    FormsModule,\r\n    XIconComponent,\r\n    XCheckboxComponent,\r\n    XOutletDirective,\r\n    XLinkComponent,\r\n    XKeywordDirective\r\n  ],\r\n  templateUrl: './tree-node.component.html',\r\n  styleUrls: ['./tree-node.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeNodeComponent extends XTreeNodeProperty {\r\n  tree = inject(X_TREE_CONTEXT, { optional: true })!;\r\n  nodeMouseenter = output<{ event: MouseEvent; node: XTreeNode; ele: ElementRef }>();\r\n  @HostBinding('class.x-tree-node') rootClass = true;\r\n  private document = inject(DOCUMENT);\r\n  fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n  private unSubject = new Subject<void>();\r\n\r\n  @HostListener('mouseenter', ['$event']) onMouseenter(event: MouseEvent) {\r\n    this.nodeMouseenter.emit({ event: event, node: this.node(), ele: this.elementRef });\r\n  }\r\n\r\n  @HostListener('mouseleave', ['$event']) onMouseleave(_event: MouseEvent) {\r\n    if (!this.tree.dragging()) return;\r\n    const hoverTreeNode = this.tree.hoverTreeNode();\r\n    hoverTreeNode && hoverTreeNode.change && hoverTreeNode.change();\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  showDragIndicator = computed(() => {\r\n    return this.tree.dragging() && this.tree.hoverTreeNode()?.id === this.id();\r\n  });\r\n\r\n  isChildrenLast = computed(() => {\r\n    let parent = this.tree.nodes().find((x: XTreeNode) => x.id === this.pid());\r\n    if (!parent || !parent.children) return false;\r\n    const index = parent.children.indexOf(this.node());\r\n    return index + 1 === parent.children.length;\r\n  });\r\n\r\n  isParentLast = computed(() => {\r\n    let parents = this.treeService.getParents(this.tree.nodes(), this.node());\r\n    if (parents.length <= 1) return [];\r\n    const res: boolean[] = [];\r\n    parents.reduce((pre: XTreeNode, curr: XTreeNode) => {\r\n      if (pre === null) return curr;\r\n      const index = curr.children?.indexOf(pre)!;\r\n      res.push(index + 1 === curr.children?.length!);\r\n      return curr;\r\n    });\r\n\r\n    return res.reverse();\r\n  });\r\n\r\n  verticalLevel = computed(() => {\r\n    if (this.level()! > 0) {\r\n      return Array.from({ length: this.level()! }).map((_x, index) => index + 1);\r\n    } else {\r\n      return [];\r\n    }\r\n  });\r\n\r\n  verticalWidth = computed(() => {\r\n    return XToCssPx(this.tree.spacing(), this.fontSize()) / 2;\r\n  });\r\n\r\n  paddingLeft = computed(() => (this.level()! ? this.level()! : 0) * XToCssPx(this.tree.spacing(), this.fontSize()));\r\n\r\n  indicatorWidth = computed(() => {\r\n    if (this.tree.dragPosition() === 0) {\r\n      return `calc(100% - ${this.paddingLeft() + XToCssPx(this.tree.spacing(), this.fontSize()) + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n    }\r\n    return `calc(100% - ${this.paddingLeft() + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n  });\r\n\r\n  indicatorStyle = computed(() => {\r\n    if (this.tree.dragPosition() === 1) {\r\n      return { bottom: `-${0.0625 * this.fontSize()}px` };\r\n    } else if (this.tree.dragPosition() === -1) {\r\n      return { top: `-${0.0625 * this.fontSize()}px` };\r\n    } else if (this.tree.dragPosition() === 0) {\r\n      return {\r\n        bottom: `-${0.0625 * this.fontSize()}px`\r\n      };\r\n    }\r\n    return {};\r\n  });\r\n\r\n  changed = signal(false);\r\n\r\n  activated = computed(() => {\r\n    this.changed();\r\n    const activatedId = this.tree.activatedId();\r\n    if (this.tree.multiple()) {\r\n      if (this.tree.objectArray()) {\r\n        return XIsObjectArray<XTreeNode[]>(activatedId) && activatedId.map((x: XTreeNode) => x.id).includes(this.id());\r\n      } else {\r\n        return XIsArray<any[]>(activatedId) && activatedId.includes(this.id());\r\n      }\r\n    } else {\r\n      return activatedId === this.id();\r\n    }\r\n  });\r\n\r\n  private cdr = inject(ChangeDetectorRef);\r\n  private treeService = inject(XTreeService);\r\n  elementRef = inject(ElementRef);\r\n\r\n  ngOnInit() {\r\n    const node = this.node();\r\n    node.change = (check: boolean) => {\r\n      if (check) this.setCheckbox();\r\n      this.cdr.detectChanges();\r\n    };\r\n    if (!this.tree.levelCheck()) return;\r\n    if (this.checked()) this.setCheckbox();\r\n    this.setIndeterminate(this.node());\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.unSubject.next();\r\n    this.unSubject.complete();\r\n  }\r\n\r\n  onActivate(event: Event, node: XTreeNode) {\r\n    const change: Function = this.tree.activatedNode()?.change as Function;\r\n    this.tree.nodeOpen() && !this.leaf() && this.onToggle(event, node);\r\n    const onChange = () => {\r\n      change && change();\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n      this.cdr.detectChanges();\r\n    };\r\n    if (this.tree.onlyLeaf() && !this.leaf()) {\r\n      onChange();\r\n      return;\r\n    }\r\n    if (this.tree.multiple()) {\r\n      if (!this.tree.activatedId()) this.tree.activatedId.set([]);\r\n      const nodes = [node];\r\n      if (this.tree.includeChildren()) {\r\n        nodes.push(...this.getChildren());\r\n      }\r\n      if (this.tree.objectArray()) {\r\n        const ids = this.tree.activatedId().map((x: XTreeNode) => x.id);\r\n        if (ids.includes(node.id)) {\r\n          this.tree.activatedId.update((x) => {\r\n            for (let it of nodes) {\r\n              x.splice(ids.indexOf(it.id), 1);\r\n            }\r\n            return [...x];\r\n          });\r\n        } else {\r\n          this.tree.activatedId.update((x) => {\r\n            for (let it of nodes) {\r\n              if (!x.includes(it)) {\r\n                x.push(it);\r\n              }\r\n            }\r\n            return [...x];\r\n          });\r\n        }\r\n      } else {\r\n        if (this.tree.activatedId().includes(node.id)) {\r\n          this.tree.activatedId.update((x) => {\r\n            for (let it of nodes) {\r\n              x.splice(this.tree.activatedId().indexOf(it.id), 1);\r\n            }\r\n            return [...x];\r\n          });\r\n        } else {\r\n          this.tree.activatedId.update((x) => {\r\n            for (let it of nodes) {\r\n              if (!x.includes(it.id)) {\r\n                x.push(it.id);\r\n              }\r\n            }\r\n            return [...x];\r\n          });\r\n        }\r\n      }\r\n    } else {\r\n      this.tree.activatedId.set(node.id);\r\n    }\r\n    if (this.tree.activatedNode()) {\r\n      if (this.tree.activatedNode()?.id === node.id && !this.tree.allowManyActivated()) return;\r\n    }\r\n    this.tree.activatedNode.set(node);\r\n    this.changed.update((x) => !x);\r\n    this.tree.activatedChange.emit(node);\r\n    this.tree.nodeClick.emit(node);\r\n    onChange();\r\n  }\r\n\r\n  onCheckboxChange() {\r\n    this.setCheckbox();\r\n    this.tree.checkboxChange?.emit(this.node());\r\n  }\r\n\r\n  getVerticalLeft(i: number) {\r\n    const spacing = XToCssPx(this.tree.spacing(), this.fontSize());\r\n    return (i - 1) * spacing + spacing / 2;\r\n  }\r\n\r\n  setCheckbox() {\r\n    if (!this.tree.levelCheck()) return;\r\n    this.node().indeterminate = this.checked();\r\n    this.node().children && this.setChildrenCheckbox(this.checked()!);\r\n    const setParent = (node: XTreeNode) => {\r\n      let parent = this.tree.nodes().find((x: XTreeNode) => x.id === node.pid);\r\n      if (!parent || XIsEmpty(parent.children)) return;\r\n      let checkedList = parent.children?.filter((y: XTreeNode) => y.checked);\r\n      let indeterminateList = parent.children?.filter((y: XTreeNode) => y.indeterminate);\r\n      parent.checked = checkedList?.length === parent.children?.length;\r\n      parent.indeterminate = (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n      parent.change && parent.change();\r\n      setParent(parent);\r\n    };\r\n    setParent(this.node());\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  getChildren() {\r\n    const res: XTreeNode[] = [];\r\n    const getChildren = (children: XTreeNode[]) => {\r\n      if (XIsEmpty(children)) return;\r\n      for (let x of children) {\r\n        if (x.disabled) continue;\r\n        res.push(x);\r\n        getChildren(x.children as XTreeNode[]);\r\n      }\r\n    };\r\n    getChildren(this.node().children as XTreeNode[]);\r\n\r\n    return res;\r\n  }\r\n\r\n  setChildrenCheckbox(checked: boolean) {\r\n    const setChildren = (children: XTreeNode[], isChecked: boolean) => {\r\n      if (XIsEmpty(children)) return;\r\n      for (let x of children) {\r\n        if (x.disabled) continue;\r\n        x.checked = isChecked;\r\n        x.indeterminate = isChecked;\r\n        x.change && x.change();\r\n        setChildren(x.children as XTreeNode[], isChecked);\r\n      }\r\n    };\r\n    setChildren(this.node().children as XTreeNode[], checked);\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  setParentCheckbox() {\r\n    if (XIsEmpty(this.node().children)) return;\r\n    let checkedList = this.node().children?.filter((x) => x.checked);\r\n    let indeterminateList = this.node().children?.filter((x) => x.indeterminate);\r\n    this.node().checked = checkedList?.length === this.node().children?.length;\r\n    this.node().indeterminate =\r\n      (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  setIndeterminate(node: XTreeNode) {\r\n    const getChildren = (children: XTreeNode[]) => {\r\n      if (XIsEmpty(children)) return;\r\n      children.forEach((x) => {\r\n        if (x.indeterminate || x.checked) {\r\n          node.indeterminate = true;\r\n          return;\r\n        }\r\n        getChildren(x.children as XTreeNode[]);\r\n      });\r\n    };\r\n    getChildren(node.children as XTreeNode[]);\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  getNodeDisabled(disabled?: boolean) {\r\n    return disabled as XBoolean;\r\n  }\r\n\r\n  onAction(event: Event, action: XTreeAction, node: XTreeNode) {\r\n    action.handler && action.handler(node);\r\n    event.stopPropagation();\r\n  }\r\n\r\n  onToggle(event: Event, node: XTreeNode) {\r\n    this.toggle.emit(node);\r\n    event?.preventDefault();\r\n    event?.stopPropagation();\r\n  }\r\n\r\n  trackByItem(_index: number, item: XTreeNode) {\r\n    return `${item.id}-${item.level}`;\r\n  }\r\n\r\n  trackByAction(_index: number, item: XTreeAction) {\r\n    return item.id;\r\n  }\r\n}\r\n","<div\r\n  class=\"x-tree-node-content\"\r\n  [class.x-activated]=\"activated()\"\r\n  [class.x-disabled]=\"disabled()\"\r\n  [class.x-tree-node-sub]=\"!leaf()\"\r\n  [class.x-tree-node-last]=\"isChildrenLast()\"\r\n  [style.padding-left.px]=\"paddingLeft() + fontSize() / 2\"\r\n  [style.height]=\"height() ? height() : nodeHeight() ? nodeHeight() : ''\"\r\n  [style.align-items]=\"alignItems() ? alignItems() : nodeAlignItems()\"\r\n  (click)=\"!disabled() && onActivate($event, node())\"\r\n>\r\n  @if (tree.showLine() && level()! > 0) {\r\n    <div class=\"x-tree-node-line\" [style.width.px]=\"paddingLeft()\">\r\n      @for (i of verticalLevel(); track i) {\r\n        <div\r\n          class=\"x-tree-node-line-vertical\"\r\n          [hidden]=\"isParentLast()[i - 1]\"\r\n          [class.is-last]=\"i === verticalLevel().length\"\r\n          [style.left.px]=\"getVerticalLeft(i)\"\r\n        ></div>\r\n      }\r\n      <div\r\n        class=\"x-tree-node-line-horizontal\"\r\n        [style.width.px]=\"verticalWidth()\"\r\n        [style.left.px]=\"getVerticalLeft(verticalLevel().length)\"\r\n      ></div>\r\n    </div>\r\n  }\r\n  @if (showDragIndicator()) {\r\n    <div class=\"x-tree-node-drag-indicator\" [style.width]=\"indicatorWidth()\" [ngStyle]=\"indicatorStyle()\"></div>\r\n  }\r\n  @if (loading()) {\r\n    <x-icon class=\"x-tree-node-loading\" type=\"fto-loader\" [spin]=\"loading()!\"></x-icon>\r\n  } @else {\r\n    <div\r\n      class=\"x-tree-node-right\"\r\n      [class.is-leaf]=\"leaf()\"\r\n      [class.is-open]=\"open()\"\r\n      [class.is-template]=\"tree.expandedIcon()\"\r\n      [style.width.px]=\"verticalWidth() * 2\"\r\n      (click)=\"!tree.nodeOpen() && onToggle($event, node())\"\r\n    >\r\n      @if (!leaf()) {\r\n        @if (tree.expandedIcon()) {\r\n          <ng-container *xOutlet=\"tree.expandedIcon(); context: { $node: node() }\"></ng-container>\r\n        } @else {\r\n          <x-icon class=\"x-tree-node-icon\" type=\"fto-chevron-right\"></x-icon>\r\n        }\r\n      }\r\n    </div>\r\n  }\r\n  @if (tree.checkbox()) {\r\n    <x-checkbox\r\n      class=\"x-tree-node-checkbox\"\r\n      [data]=\"[{ label: '', id: id() }]\"\r\n      [(ngModel)]=\"checked\"\r\n      (ngModelChange)=\"onCheckboxChange()\"\r\n      [indeterminate]=\"indeterminate()!\"\r\n      [disabled]=\"disabled()!\"\r\n      (click)=\"$event.stopPropagation()\"\r\n      single\r\n    ></x-checkbox>\r\n  }\r\n  @if (!tree.labelTpl()) {\r\n    <span\r\n      class=\"x-tree-node-label\"\r\n      [class.nowrap]=\"nowrap() === false || nowrap() === true ? nowrap() : nodeNowrap()\"\r\n      [title]=\"label()\"\r\n      x-keyword\r\n      [text]=\"tree.keywordText()\"\r\n      [caseSensitive]=\"tree.caseSensitive()\"\r\n      >{{ label() }}</span\r\n    >\r\n  } @else {\r\n    <ng-container *xOutlet=\"tree.labelTpl(); context: { $node: node() }\"></ng-container>\r\n  }\r\n  <span class=\"x-tree-node-operations\">\r\n    @for (action of actions(); track action.id) {\r\n      <x-link [icon]=\"action.icon\" [title]=\"action.label\" (click)=\"onAction($event, action, node())\">{{\r\n        action.label\r\n      }}</x-link>\r\n    }\r\n  </span>\r\n  @if (tree.multiple() && activated()) {\r\n    <x-icon class=\"x-tree-node-checked\" type=\"fto-check\"></x-icon>\r\n  }\r\n</div>\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  Renderer2,\r\n  ElementRef,\r\n  ChangeDetectorRef,\r\n  ChangeDetectionStrategy,\r\n  SimpleChanges,\r\n  OnChanges,\r\n  viewChild,\r\n  viewChildren,\r\n  signal,\r\n  computed,\r\n  inject,\r\n  effect\r\n} from '@angular/core';\r\nimport { XTreePrefix, XTreeNode, XTreeProperty } from './tree.property';\r\nimport {\r\n  XIsEmpty,\r\n  XIsFunction,\r\n  XIsUndefined,\r\n  XIsChange,\r\n  XSetData,\r\n  XResize,\r\n  XRemove,\r\n  XResizeObserver,\r\n  XComputedStyle,\r\n  XToCssPx,\r\n  XOrderBy\r\n} from '@ng-nest/ui/core';\r\nimport { debounceTime, map, Observable, Subject } from 'rxjs';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\nimport { CdkDrag, CdkDragEnd, CdkDragMove, CdkDragStart, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { XTreeService } from './tree.service';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { X_TREE_CONTEXT, XTreeContext } from './tree.token';\r\n\r\n@Component({\r\n  selector: `${XTreePrefix}`,\r\n  imports: [DragDropModule, ScrollingModule, XTreeNodeComponent, XIconComponent],\r\n  templateUrl: './tree.component.html',\r\n  styleUrls: ['./tree.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: X_TREE_CONTEXT,\r\n      useExisting: XTreeComponent\r\n    }\r\n  ]\r\n})\r\nexport class XTreeComponent extends XTreeProperty implements OnChanges, XTreeContext {\r\n  tree = viewChild('tree', { read: ElementRef<HTMLElement> });\r\n  virtualBody = viewChild('virtualBody', { read: CdkVirtualScrollViewport });\r\n  dropList = viewChild('dropList', { read: CdkDropList<HTMLElement> });\r\n  nodeComponents = viewChildren(XTreeNodeComponent);\r\n  private document = inject(DOCUMENT);\r\n  private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n  nodes = signal<XTreeNode[]>([]);\r\n\r\n  virtualNodes = signal<XTreeNode[]>([]);\r\n  activatedNode = signal<XTreeNode | null>(null);\r\n  dataIsFunc = signal(false);\r\n  getting = signal(false);\r\n  treeData = signal<XTreeNode[]>([]);\r\n\r\n  dragging = signal(false);\r\n  dragPosition = signal<-1 | 0 | 1>(-1);\r\n  hoverTreeNode = signal<XTreeNode | null>(null);\r\n  hoverTreeEle!: ElementRef;\r\n  draggingTreeNode = signal<XTreeNode | null>(null);\r\n\r\n  isEmpty = computed(() => XIsEmpty(this.nodes()));\r\n\r\n  private unSubject = new Subject<void>();\r\n  private resizeObserver!: XResizeObserver;\r\n  constructor(\r\n    public renderer: Renderer2,\r\n    public elementRef: ElementRef<HTMLElement>,\r\n    public cdr: ChangeDetectorRef,\r\n    public treeService: XTreeService\r\n  ) {\r\n    super();\r\n\r\n    effect(() => {\r\n      const virtualBody = this.virtualBody();\r\n      if (virtualBody) {\r\n        virtualBody['_scrollStrategy']['_minBufferPx'] = this.minBufferPxSignal();\r\n        virtualBody['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPxSignal();\r\n      }\r\n    });\r\n  }\r\n\r\n  heightAdaptionSignal = signal<number>(0);\r\n\r\n  isVirtualScrollAdaption = computed(() => {\r\n    return !!(this.virtualScroll() && this.heightAdaption());\r\n  });\r\n\r\n  virtualScrollHeightSignal = computed(() => {\r\n    if (this.isVirtualScrollAdaption()) {\r\n      return this.heightAdaptionSignal();\r\n    } else {\r\n      return XToCssPx(this.virtualScrollHeight(), this.fontSize());\r\n    }\r\n  });\r\n\r\n  minBufferPxSignal = computed(() => {\r\n    if (this.isVirtualScrollAdaption()) {\r\n      return this.virtualScrollHeightSignal();\r\n    } else {\r\n      return this.minBufferPx();\r\n    }\r\n  });\r\n\r\n  maxBufferPxSignal = computed(() => {\r\n    if (this.isVirtualScrollAdaption()) {\r\n      return this.virtualScrollHeightSignal() * 1.2;\r\n    } else {\r\n      return this.maxBufferPx();\r\n    }\r\n  });\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { expandedAll, data, checked, manual, expanded } = changes;\r\n    XIsChange(data) && this.setData();\r\n    XIsChange(expandedAll) && this.setExpandedAll();\r\n    XIsChange(expanded) && this.setChangeExpanded();\r\n    XIsChange(checked) && this.setCheckedKeys(this.checked());\r\n    XIsChange(manual) && this.setManual();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this.isVirtualScrollAdaption()) {\r\n      this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n      XResize(this.heightAdaption()!)\r\n        .pipe(\r\n          debounceTime(30),\r\n          map(({ resizeObserver }) => {\r\n            this.resizeObserver = resizeObserver;\r\n            this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n          })\r\n        )\r\n        .subscribe();\r\n    }\r\n    this.setActivatedNode(this.treeData());\r\n    this.setScrollTop();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.unSubject.next();\r\n    this.unSubject.complete();\r\n    this.resizeObserver?.disconnect();\r\n  }\r\n\r\n  setData() {\r\n    if (typeof this.data() === 'undefined') return;\r\n    this.dataIsFunc.set(false);\r\n    if (XIsFunction(this.data())) {\r\n      this.dataIsFunc.set(true);\r\n      this.getDataByFunc();\r\n    } else {\r\n      XSetData<XTreeNode>(this.data(), this.unSubject).subscribe((x) => {\r\n        this.setDataChange(x);\r\n      });\r\n    }\r\n  }\r\n\r\n  cdkDragStarted(event: CdkDragStart) {\r\n    this.dragging.set(true);\r\n    this.draggingTreeNode.set(event.source.data);\r\n    if (event.source.data.open) {\r\n      this.onToggle(event.event, event.source.data);\r\n    }\r\n    this.nodeDragStarted.emit({ event, from: this.draggingTreeNode()! });\r\n  }\r\n\r\n  cdkDragEnded(event: CdkDragEnd) {\r\n    this.dragging.set(false);\r\n    const hoverTreeNode = this.hoverTreeNode();\r\n    if (hoverTreeNode) {\r\n      if (hoverTreeNode.id !== event.source.data.id) {\r\n        this.insertNode(event.source.data, hoverTreeNode, this.dragPosition());\r\n      }\r\n      hoverTreeNode.change && hoverTreeNode.change();\r\n      this.nodeDragEnded.emit({\r\n        event,\r\n        from: event.source.data,\r\n        to: hoverTreeNode,\r\n        position: this.dragPosition()\r\n      });\r\n    }\r\n  }\r\n\r\n  insertNode(dragNode: XTreeNode, hoverNode: XTreeNode, dragPosition: -1 | 0 | 1) {\r\n    let parent = this.nodes().find((x) => x.id === dragNode.pid);\r\n    this.treeService.moveNode(this.treeData(), dragNode, hoverNode, dragPosition);\r\n    this.setDataChange(this.treeData(), true, false, true, parent);\r\n  }\r\n\r\n  cdkDragMoved(event: CdkDragMove<XTreeNode>) {\r\n    const hoverTreeNode = this.hoverTreeNode();\r\n    if (!this.dragging() || !hoverTreeNode) return;\r\n    const y = event.pointerPosition.y;\r\n    if (event.source.data.id === hoverTreeNode.id) return;\r\n    const target = this.hoverTreeEle.nativeElement as HTMLElement;\r\n    const { top, height } = target.getBoundingClientRect();\r\n    const des = Math.max(height * 0.5, 2);\r\n    if (y > top && y < top + des - 2) {\r\n      this.dragPosition.set(-1);\r\n    } else if (y > top + des + 2 && y < top + height) {\r\n      this.dragPosition.set(1);\r\n    } else if (y >= top + des - 2 && y <= top + des + 2) {\r\n      this.dragPosition.set(0);\r\n    }\r\n    hoverTreeNode.change && hoverTreeNode.change();\r\n    this.nodeDragMoved.emit({\r\n      event,\r\n      from: this.draggingTreeNode()!,\r\n      to: hoverTreeNode,\r\n      position: this.dragPosition()\r\n    });\r\n  }\r\n\r\n  predicate(_drag: CdkDrag<XTreeNode>, _drop: CdkDropList<XTreeNode>) {\r\n    return true;\r\n  }\r\n\r\n  private setManual() {\r\n    if (this.dataIsFunc()) this.getDataByFunc();\r\n  }\r\n\r\n  private getDataByFunc() {\r\n    if (!this.manual()) return;\r\n    XSetData<XTreeNode>((this.data() as Function)(), this.unSubject).subscribe((x) => {\r\n      this.setDataChange(x);\r\n    });\r\n  }\r\n\r\n  private setDataChange(\r\n    value: XTreeNode[],\r\n    regetChildren = false,\r\n    init = true,\r\n    parentOpen = true,\r\n    lazyParant?: XTreeNode,\r\n    out = false\r\n  ) {\r\n    if (XIsEmpty(this.checked())) this.checked.set([]);\r\n    const getChildren = (node: XTreeNode, level: number) => {\r\n      if (init) {\r\n        const open = this.expandedAll() || level <= this.expandedLevel() || this.expanded().includes(node.id);\r\n        node.level = level;\r\n        node.open = out ? open : open || node.open;\r\n        node.checked = this.checked().includes(node.id) || node.checked;\r\n        node.childrenLoaded = node.open;\r\n      }\r\n      if (XIsUndefined(node.children) || regetChildren) {\r\n        node.children = XOrderBy(\r\n          value.filter((y) => y.pid === node.id),\r\n          this.order().map((x) => x.property),\r\n          this.order().map((x) => x.order)\r\n        );\r\n        if (this.levelCheck() && node.children && node.checked) {\r\n          for (let nd of node.children) {\r\n            nd.checked = true;\r\n            this.checked.update((x) => {\r\n              x.push(nd.id);\r\n              return [...x];\r\n            });\r\n          }\r\n        }\r\n      }\r\n      if ((!this.lazy() && (XIsUndefined(node.leaf) || regetChildren)) || node.id === lazyParant?.id) {\r\n        node.leaf = (node.children?.length as number) === 0;\r\n      }\r\n      if (!node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n      return node;\r\n    };\r\n    this.treeData.set(value);\r\n    this.nodes.set(\r\n      XOrderBy(\r\n        value.filter((x) => XIsEmpty(x.pid)),\r\n        this.order().map((x) => x.property),\r\n        this.order().map((x) => x.order)\r\n      ).map((x) => getChildren(x, 0))\r\n    );\r\n    if (parentOpen) {\r\n      for (let item of value) {\r\n        if (!item.leaf && item.open) {\r\n          this.setParentOpen(value, item);\r\n        }\r\n      }\r\n    }\r\n    this.setExpanded();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  nodeMouseenter($event: { event: MouseEvent; node: XTreeNode; ele: ElementRef }) {\r\n    const { node, ele } = $event;\r\n    if (!this.dragging()) return;\r\n    let before = this.hoverTreeNode();\r\n    this.hoverTreeNode.set(node);\r\n    this.hoverTreeEle = ele;\r\n    const hoverTreeNode = this.hoverTreeNode();\r\n    if (hoverTreeNode) {\r\n      hoverTreeNode.change && hoverTreeNode.change();\r\n    }\r\n    if (before) {\r\n      before.change && before.change();\r\n    }\r\n\r\n    if (!node.leaf && !node.open) {\r\n      let from = this.nodes().indexOf(this.draggingTreeNode()!);\r\n      let to = this.nodes().indexOf(node);\r\n      if (to - from !== -1) {\r\n        this.onToggle(null!, node);\r\n      }\r\n    }\r\n  }\r\n\r\n  setScrollTop() {\r\n    const scrollElement = this.scrollElement();\r\n    if (!scrollElement || !this.activatedNode()) return;\r\n    const inx = this.nodes().indexOf(this.activatedNode()!);\r\n    let com = this.nodeComponents().find((_, index) => index === inx);\r\n    if (!com) return;\r\n    let ele = com.elementRef.nativeElement as HTMLElement;\r\n    let scrollEle = scrollElement;\r\n    let min = scrollEle.scrollTop;\r\n    let max = scrollEle.scrollTop + scrollEle.clientHeight;\r\n    if (ele.offsetTop + ele.clientHeight > max) {\r\n      let scrollTop = ele.offsetTop + ele.clientHeight - scrollEle.clientHeight;\r\n      scrollEle.scrollTop = scrollTop;\r\n    }\r\n    if (ele.offsetTop < min) {\r\n      scrollEle.scrollTop = ele.offsetTop;\r\n    }\r\n  }\r\n\r\n  getCheckedNodes(): XTreeNode[] {\r\n    let result: XTreeNode[] = [];\r\n    const getChildren = (nodes: XTreeNode[]) => {\r\n      if (XIsEmpty(nodes)) return;\r\n      nodes.forEach((x) => {\r\n        if (x.checked && !result.includes(x)) {\r\n          result = [...result, x];\r\n        }\r\n        getChildren(x.children as XTreeNode[]);\r\n      });\r\n    };\r\n    getChildren(this.nodes());\r\n    return result;\r\n  }\r\n\r\n  getCheckedKeys() {\r\n    return this.getCheckedNodes().map((x) => x.id);\r\n  }\r\n\r\n  setCheckedKeys(keys: any[] = []) {\r\n    // if (!XIsEmpty(keys)) this.hasChecked.set(true);\r\n    const setChildren = (nodes: XTreeNode[], clear = false) => {\r\n      if (XIsEmpty(nodes)) return;\r\n      nodes.forEach((x) => {\r\n        x.checked = !clear && keys.includes(x.id);\r\n        x.change && x.change(true);\r\n        setChildren(x.children as XTreeNode[], clear);\r\n      });\r\n    };\r\n    setChildren(this.nodes(), XIsEmpty(keys));\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  setExpandedAll() {\r\n    if (this.expandedAll() && this.treeData().length === this.nodes().length) return;\r\n\r\n    const updateNodeStates = (nodes: XTreeNode[]) => {\r\n      nodes.forEach((node) => {\r\n        node.open = this.expandedAll();\r\n        node.change && node.change();\r\n        if (node.children) {\r\n          updateNodeStates(node.children);\r\n        }\r\n      });\r\n    };\r\n    updateNodeStates(this.treeData());\r\n\r\n    if (this.expandedAll() === false) {\r\n      this.nodes.set(\r\n        XOrderBy(\r\n          this.treeData().filter((x) => XIsEmpty(x.pid)),\r\n          this.order().map((x) => x.property),\r\n          this.order().map((x) => x.order)\r\n        )\r\n      );\r\n    } else {\r\n      const allExpandedNodes: XTreeNode[] = [];\r\n      const traverse = (nodes: XTreeNode[]) => {\r\n        for (const node of nodes) {\r\n          allExpandedNodes.push(node);\r\n          if (node.children && node.children.length > 0) {\r\n            traverse(node.children);\r\n          }\r\n        }\r\n      };\r\n\r\n      const rootNodes = XOrderBy(\r\n        this.treeData().filter((x) => XIsEmpty(x.pid)),\r\n        this.order().map((x) => x.property),\r\n        this.order().map((x) => x.order)\r\n      );\r\n\r\n      traverse(rootNodes);\r\n      this.nodes.set(allExpandedNodes);\r\n      this.virtualNodes.set([...allExpandedNodes]);\r\n    }\r\n\r\n    this.virtualBody()?.checkViewportSize();\r\n  }\r\n\r\n  setExpanded() {\r\n    for (let i = 0; i < this.nodes().length; i++) {\r\n      let item = this.nodes()[i];\r\n      if (item.open && item.children && item.children.length > 0) {\r\n        let index = this.nodes().indexOf(item);\r\n        this.nodes.update((x) => {\r\n          x.splice(index + 1, 0, ...(item.children as XTreeNode[]));\r\n          return [...x];\r\n        });\r\n      }\r\n      item.change && item.change();\r\n    }\r\n  }\r\n\r\n  setChangeExpanded() {\r\n    this.setDataChange(this.treeData(), true, true, false, undefined, true);\r\n  }\r\n\r\n  setVirtualExpandedAll(item: XTreeNode, expandedAll: boolean) {\r\n    let index = this.nodes().indexOf(item);\r\n    if (expandedAll) {\r\n      let addNodes: XTreeNode[] = [];\r\n      const getNodes = (nd: XTreeNode) => {\r\n        for (let child of nd.children!) {\r\n          addNodes.push(child);\r\n          getNodes(child);\r\n        }\r\n      };\r\n      getNodes(item);\r\n      this.nodes.update((x) => {\r\n        x.splice(index + 1, 0, ...addNodes);\r\n        return [...x];\r\n      });\r\n    }\r\n  }\r\n\r\n  virtualToggle(node: XTreeNode) {\r\n    let index = this.nodes().indexOf(node);\r\n    if (node.open) {\r\n      let addNodes: XTreeNode[] = [];\r\n      const getNodes = (nd: XTreeNode) => {\r\n        if (XIsEmpty(nd.children)) return;\r\n        for (let child of nd.children!) {\r\n          addNodes.push(child);\r\n          child.open && getNodes(child);\r\n        }\r\n      };\r\n      getNodes(node);\r\n      this.nodes.update((x) => {\r\n        x.splice(index + 1, 0, ...addNodes);\r\n        return [...x];\r\n      });\r\n    } else {\r\n      let delCount = 0;\r\n      const getCount = (nd: XTreeNode) => {\r\n        if (XIsEmpty(nd.children)) return;\r\n        delCount += nd.children!.length;\r\n        for (let child of nd.children!) {\r\n          child.open && getCount(child);\r\n        }\r\n      };\r\n      getCount(node);\r\n      this.nodes.update((x) => {\r\n        x.splice(index + 1, delCount);\r\n        return [...x];\r\n      });\r\n    }\r\n\r\n    this.addOrRemoveExpanded(node);\r\n    this.virtualBody()?.checkViewportSize();\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  addOrRemoveExpanded(node: XTreeNode) {\r\n    if (node.open) {\r\n      if (!this.expanded().includes(node.id)) {\r\n        this.expanded.update((x) => {\r\n          x.push(node.id);\r\n          return [...x];\r\n        });\r\n      }\r\n    } else {\r\n      if (this.expanded().includes(node.id)) {\r\n        this.expanded.update((x) => {\r\n          x.splice(x.indexOf(node.id), 1);\r\n          return [...x];\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  setActivatedNode(nodes: XTreeNode[], parentOpen = true, dataChange = true) {\r\n    if (XIsEmpty(this.activatedId()) && this.multiple()) {\r\n      this.activatedId.set([]);\r\n    }\r\n    let before = this.activatedNode();\r\n    if (this.multiple()) {\r\n      if (this.activatedId().length > 0) {\r\n        let ids = this.objectArray() ? this.activatedId().map((x: XTreeNode) => x.id) : this.activatedId();\r\n        for (let i = 0; i < ids.length; i++) {\r\n          let node = nodes.find((x) => x.id === ids[i]) as XTreeNode;\r\n          if (node) {\r\n            parentOpen && this.setParentOpen(nodes, node);\r\n            if (i === ids.length - 1) {\r\n              this.activatedNode.set(node);\r\n              this.activatedChange.emit(this.activatedNode()!);\r\n            }\r\n          }\r\n        }\r\n      }\r\n    } else {\r\n      let activatedId = this.activatedId();\r\n      this.activatedNode.set(nodes.find((x) => x.id === activatedId) as XTreeNode);\r\n      if (this.activatedNode()) {\r\n        parentOpen && this.setParentOpen(nodes, this.activatedNode()!);\r\n        this.activatedChange.emit(this.activatedNode()!);\r\n      }\r\n    }\r\n    if (before) {\r\n      before.change && before.change();\r\n    }\r\n    if (!XIsEmpty(nodes) && dataChange) {\r\n      this.setDataChange(nodes, false, true, parentOpen);\r\n    }\r\n  }\r\n\r\n  setParentOpen(nodes: XTreeNode[], node: XTreeNode) {\r\n    const getParent = (child: XTreeNode) => {\r\n      if (XIsEmpty(child.pid)) return;\r\n      const parent = nodes.find((x) => x.id === child.pid) as XTreeNode;\r\n      if (!XIsEmpty(parent)) {\r\n        if (!this.expanded().includes(parent.id)) {\r\n          this.expanded.update((x) => [...x, parent.id]);\r\n        }\r\n        parent.open = true;\r\n        parent.change && parent.change();\r\n        getParent(parent);\r\n      }\r\n    };\r\n    getParent(node);\r\n  }\r\n\r\n  onToggle(event: Event | null, node: XTreeNode) {\r\n    node.open = !node.open;\r\n    if (this.lazy() && !node.childrenLoaded) {\r\n      this.getLazyData(node, () => this.virtualToggle(node));\r\n    } else {\r\n      this.virtualToggle(node);\r\n    }\r\n    event?.preventDefault();\r\n    event?.stopPropagation();\r\n  }\r\n\r\n  getLazyData(node: XTreeNode, callBack?: () => void) {\r\n    node.loading = true;\r\n    node.change && node.change();\r\n    (this.data() as (pid?: any) => Observable<XTreeNode[]>)(node.id)\r\n      .pipe(\r\n        map((x) =>\r\n          x.map((y) => {\r\n            y.level = (node.level as number) + 1;\r\n            y.checked = node.checked;\r\n            return y;\r\n          })\r\n        )\r\n      )\r\n      .subscribe((x) => {\r\n        node.children = x;\r\n        node.childrenLoaded = true;\r\n        node.loading = false;\r\n        this.treeData.set([...this.treeData(), ...x]);\r\n        if (callBack) callBack();\r\n        node.change && node.change();\r\n        this.cdr.markForCheck();\r\n      });\r\n  }\r\n\r\n  addNode(node: XTreeNode) {\r\n    let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n    const _addNode = () => {\r\n      if (parent) {\r\n        node.level = parent.level! + 1;\r\n        node.pid = parent.id;\r\n        node.leaf = true;\r\n        parent.leaf = false;\r\n        parent.open = true;\r\n        this.treeData.set([...this.treeData(), node]);\r\n        this.setParentOpen(this.treeData(), node);\r\n        this.setDataChange(this.treeData(), true, false, false);\r\n        this.setActivatedId(node);\r\n        this.setActivatedNode(this.nodes(), true, false);\r\n        node.change && node.change();\r\n      } else if (XIsEmpty(node.pid)) {\r\n        node.level = 0;\r\n        node.leaf = true;\r\n        this.treeData.set([...this.treeData(), node]);\r\n        this.setParentOpen(this.treeData(), node);\r\n        this.setDataChange(this.treeData(), true, false, false);\r\n        this.setActivatedId(node);\r\n        this.setActivatedNode(this.nodes(), true, false);\r\n        node.change && node.change();\r\n      }\r\n    };\r\n    if (this.lazy() && parent && !parent.childrenLoaded) {\r\n      this.getLazyData(parent, () => {\r\n        _addNode();\r\n      });\r\n    } else {\r\n      _addNode();\r\n    }\r\n  }\r\n\r\n  setActivatedId(node: XTreeNode) {\r\n    if (this.multiple()) {\r\n      if (this.objectArray()) {\r\n        this.activatedId.set([node]);\r\n      } else {\r\n        this.activatedId.set([node.id]);\r\n      }\r\n    } else {\r\n      this.activatedId.set(node.id);\r\n    }\r\n  }\r\n\r\n  removeNode(node: XTreeNode) {\r\n    let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n    const removeChildren = (nd: XTreeNode) => {\r\n      XRemove(this.treeData(), (x) => x.id === nd.id);\r\n      if (nd.children) {\r\n        for (let item of nd.children) {\r\n          removeChildren(item);\r\n        }\r\n      }\r\n    };\r\n    removeChildren(node);\r\n\r\n    if (parent) {\r\n      if (!parent.children) parent.children = [];\r\n      const childIndex = parent.children.findIndex((x) => x.id === node.id);\r\n      if (childIndex > -1) {\r\n        parent.children.splice(childIndex, 1);\r\n      }\r\n      parent.leaf = parent.children.length === 0;\r\n    }\r\n    this.setDataChange(this.treeData(), true, false, false);\r\n  }\r\n\r\n  updateNode(node: XTreeNode, nowNode: XTreeNode) {\r\n    Object.assign(node, nowNode);\r\n    this.setDataChange(this.treeData(), true, false, false);\r\n    this.setActivatedId(node);\r\n    this.setActivatedNode(this.nodes(), true, false);\r\n\r\n    node.change && node.change();\r\n  }\r\n\r\n  trackByItem(_index: number, item: XTreeNode) {\r\n    return item;\r\n  }\r\n}\r\n","<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf()\">\r\n  @if (virtualScroll()) {\r\n    <cdk-virtual-scroll-viewport\r\n      #virtualBody\r\n      [itemSize]=\"itemSize()\"\r\n      [minBufferPx]=\"minBufferPxSignal()\"\r\n      [maxBufferPx]=\"maxBufferPxSignal()\"\r\n      [style.height.px]=\"virtualScrollHeightSignal()\"\r\n    >\r\n      <div\r\n        class=\"x-tree-content\"\r\n        #dropList\r\n        cdkDropList\r\n        [cdkDropListDisabled]=\"!drag()\"\r\n        [cdkDropListSortingDisabled]=\"true\"\r\n        [hidden]=\"isEmpty()\"\r\n        [cdkDropListData]=\"nodes()\"\r\n        [cdkDropListEnterPredicate]=\"predicate\"\r\n      >\r\n        <x-tree-node\r\n          *cdkVirtualFor=\"let node of nodes(); templateCacheSize: 0; trackBy: trackByItem\"\r\n          cdkDrag\r\n          [cdkDragDisabled]=\"node.disabled\"\r\n          (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n          (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n          (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n          [cdkDragData]=\"node\"\r\n          (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n          [node]=\"node\"\r\n          [nodeHeight]=\"nodeHeight()\"\r\n          [nodeNowrap]=\"nodeNowrap()\"\r\n          [nodeAlignItems]=\"nodeAlignItems()\"\r\n          [actions]=\"actions()\"\r\n          [(disabled)]=\"node.disabled!\"\r\n          [(id)]=\"node.id\"\r\n          [(pid)]=\"node.pid\"\r\n          [(leaf)]=\"node.leaf!\"\r\n          [(height)]=\"node.height!\"\r\n          [(alignItems)]=\"node.alignItems!\"\r\n          [(loading)]=\"node.loading!\"\r\n          [(level)]=\"node.level!\"\r\n          [(open)]=\"node.open\"\r\n          [(checked)]=\"node.checked!\"\r\n          [(indeterminate)]=\"node.indeterminate!\"\r\n          [(label)]=\"node.label!\"\r\n          [(nowrap)]=\"node.nowrap!\"\r\n          (toggle)=\"onToggle(null, $event)\"\r\n        ></x-tree-node>\r\n      </div>\r\n    </cdk-virtual-scroll-viewport>\r\n  } @else {\r\n    <div\r\n      class=\"x-tree-content\"\r\n      #dropList\r\n      cdkDropList\r\n      [cdkDropListDisabled]=\"!drag()\"\r\n      [cdkDropListSortingDisabled]=\"true\"\r\n      [hidden]=\"isEmpty()\"\r\n      [cdkDropListData]=\"nodes()\"\r\n      [cdkDropListEnterPredicate]=\"predicate\"\r\n    >\r\n      @for (node of nodes(); track node.id + '' + $index) {\r\n        <x-tree-node\r\n          cdkDrag\r\n          [cdkDragDisabled]=\"node.disabled\"\r\n          (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n          (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n          (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n          [cdkDragData]=\"node\"\r\n          (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n          [node]=\"node\"\r\n          [nodeHeight]=\"nodeHeight()\"\r\n          [nodeNowrap]=\"nodeNowrap()\"\r\n          [nodeAlignItems]=\"nodeAlignItems()\"\r\n          [actions]=\"actions()\"\r\n          [(disabled)]=\"node.disabled\"\r\n          [(id)]=\"node.id\"\r\n          [(pid)]=\"node.pid\"\r\n          [(leaf)]=\"node.leaf\"\r\n          [(height)]=\"node.height!\"\r\n          [(alignItems)]=\"node.alignItems\"\r\n          [(loading)]=\"node.loading\"\r\n          [(level)]=\"node.level\"\r\n          [(open)]=\"node.open\"\r\n          [(checked)]=\"node.checked\"\r\n          [(indeterminate)]=\"node.indeterminate\"\r\n          [(label)]=\"node.label\"\r\n          [(nowrap)]=\"node.nowrap\"\r\n          (toggle)=\"onToggle(null, $event)\"\r\n        ></x-tree-node>\r\n      }\r\n    </div>\r\n  }\r\n</div>\r\n\r\n<!-- 提前加载loading的图标-->\r\n@if (lazy()) {\r\n  <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XTreeComponent } from './tree.component';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\n\r\n@NgModule({\r\n  exports: [XTreeComponent, XTreeNodeComponent],\r\n  imports: [XTreeComponent, XTreeNodeComponent]\r\n})\r\nexport class XTreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XTreeService"],"mappings":"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"}