{"version":3,"file":"vts-voffice-ng-vts-core-tree.mjs","sources":["../../components/core/tree/vts-tree-base-node.ts","../../components/core/tree/vts-tree-base.definitions.ts","../../components/core/tree/vts-tree-base-util.ts","../../components/core/tree/vts-tree-base.service.ts","../../components/core/tree/vts-tree-service.resolver.ts","../../components/core/tree/vts-tree-base.ts","../../components/core/tree/public-api.ts","../../components/core/tree/vts-voffice-ng-vts-core-tree.ts"],"sourcesContent":["/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nimport { VtsSafeAny } from '@vts-voffice/ng-vts/core/types';\r\nimport { VtsTreeNodeBaseComponent } from './vts-tree-base.definitions';\r\nimport { VtsTreeBaseService } from './vts-tree-base.service';\r\n\r\nexport type VtsTreeNodeKey = string | number;\r\n\r\nexport interface FlattenNode {\r\n  parent: FlattenNode | null;\r\n  children: FlattenNode[];\r\n  pos: string;\r\n  data: VtsTreeNode;\r\n  isStart: boolean[];\r\n  isEnd: boolean[];\r\n}\r\n\r\nexport interface VtsTreeNodeOptions {\r\n  title: string;\r\n  key: string;\r\n  icon?: string;\r\n  isLeaf?: boolean;\r\n  checked?: boolean;\r\n  selected?: boolean;\r\n  selectable?: boolean;\r\n  disabled?: boolean;\r\n  disableCheckbox?: boolean;\r\n  disableExpand?: boolean;\r\n  expanded?: boolean;\r\n  children?: VtsTreeNodeOptions[];\r\n\r\n  [key: string]: VtsSafeAny;\r\n}\r\n\r\nexport class VtsTreeNode {\r\n  private _title: string = '';\r\n  key!: string;\r\n  level: number = 0;\r\n  origin!: VtsTreeNodeOptions;\r\n  // Parent Node\r\n  parentNode: VtsTreeNode | null = null;\r\n  private _icon: string = '';\r\n  private _children: VtsTreeNode[] = [];\r\n  private _isLeaf: boolean = false;\r\n  private _isChecked: boolean = false;\r\n  private _isSelectable: boolean = false;\r\n  private _isDisabled: boolean = false;\r\n  private _isDisableCheckbox: boolean = false;\r\n  private _isDisableExpand: boolean = false;\r\n  private _isExpanded: boolean = false;\r\n  private _isHalfChecked: boolean = false;\r\n  private _isSelected: boolean = false;\r\n  private _isLoading: boolean = false;\r\n  canHide: boolean = false;\r\n  isMatched: boolean = false;\r\n\r\n  service: VtsTreeBaseService | null = null;\r\n  component!: VtsTreeNodeBaseComponent;\r\n\r\n  /** New added in Tree for easy data access */\r\n  isStart?: boolean[];\r\n  isEnd?: boolean[];\r\n\r\n  get treeService(): VtsTreeBaseService | null {\r\n    return this.service || (this.parentNode && this.parentNode.treeService);\r\n  }\r\n\r\n  /**\r\n   * Init vtsTreeNode\r\n   * @param option: user's input\r\n   * @param parent\r\n   * @param service: base vtsTreeService\r\n   */\r\n  constructor(\r\n    option: VtsTreeNodeOptions | VtsTreeNode,\r\n    parent: VtsTreeNode | null = null,\r\n    service: VtsTreeBaseService | null = null\r\n  ) {\r\n    if (option instanceof VtsTreeNode) {\r\n      return option;\r\n    }\r\n    this.service = service || null;\r\n    this.origin = option;\r\n    this.key = option.key;\r\n    this.parentNode = parent;\r\n    this._title = option.title || '---';\r\n    this._icon = option.icon || '';\r\n    this._isLeaf = option.isLeaf || false;\r\n    this._children = [];\r\n    // option params\r\n    this._isChecked = option.checked || false;\r\n    this._isSelectable = option.disabled || option.selectable !== false;\r\n    this._isDisabled = option.disabled || false;\r\n    this._isDisableCheckbox = option.disableCheckbox || false;\r\n    this._isDisableExpand = option.disableExpand || false;\r\n    this._isExpanded = option.isLeaf ? false : option.expanded || false;\r\n    this._isHalfChecked = false;\r\n    this._isSelected = (!option.disabled && option.selected) || false;\r\n    this._isLoading = false;\r\n    this.isMatched = false;\r\n\r\n    /**\r\n     * parent's checked status will affect children while initializing\r\n     */\r\n    if (parent) {\r\n      this.level = parent.level + 1;\r\n    } else {\r\n      this.level = 0;\r\n    }\r\n    if (typeof option.children !== 'undefined' && option.children !== null) {\r\n      option.children.forEach(nodeOptions => {\r\n        const s = this.treeService;\r\n        if (\r\n          s &&\r\n          !s.isCheckStrictly &&\r\n          option.checked &&\r\n          !option.disabled &&\r\n          !nodeOptions.disabled &&\r\n          !nodeOptions.disableCheckbox\r\n        ) {\r\n          nodeOptions.checked = option.checked;\r\n        }\r\n        this._children.push(new VtsTreeNode(nodeOptions, this));\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * auto generate\r\n   * get\r\n   * set\r\n   */\r\n  get title(): string {\r\n    return this._title;\r\n  }\r\n\r\n  set title(value: string) {\r\n    this._title = value;\r\n    this.update();\r\n  }\r\n\r\n  get icon(): string {\r\n    return this._icon;\r\n  }\r\n\r\n  set icon(value: string) {\r\n    this._icon = value;\r\n    this.update();\r\n  }\r\n\r\n  get children(): VtsTreeNode[] {\r\n    return this._children;\r\n  }\r\n\r\n  set children(value: VtsTreeNode[]) {\r\n    this._children = value;\r\n    this.update();\r\n  }\r\n\r\n  get isLeaf(): boolean {\r\n    return this._isLeaf;\r\n  }\r\n\r\n  set isLeaf(value: boolean) {\r\n    this._isLeaf = value;\r\n    this.update();\r\n  }\r\n\r\n  get isChecked(): boolean {\r\n    return this._isChecked;\r\n  }\r\n\r\n  set isChecked(value: boolean) {\r\n    this._isChecked = value;\r\n    this.origin.checked = value;\r\n    this.afterValueChange('isChecked');\r\n  }\r\n\r\n  get isHalfChecked(): boolean {\r\n    return this._isHalfChecked;\r\n  }\r\n\r\n  set isHalfChecked(value: boolean) {\r\n    this._isHalfChecked = value;\r\n    this.afterValueChange('isHalfChecked');\r\n  }\r\n\r\n  get isSelectable(): boolean {\r\n    return this._isSelectable;\r\n  }\r\n\r\n  set isSelectable(value: boolean) {\r\n    this._isSelectable = value;\r\n    this.update();\r\n  }\r\n\r\n  get isDisabled(): boolean {\r\n    return this._isDisabled;\r\n  }\r\n\r\n  set isDisabled(value: boolean) {\r\n    this._isDisabled = value;\r\n    this.update();\r\n  }\r\n\r\n  get isDisableCheckbox(): boolean {\r\n    return this._isDisableCheckbox;\r\n  }\r\n\r\n  set isDisableCheckbox(value: boolean) {\r\n    this._isDisableCheckbox = value;\r\n    this.update();\r\n  }\r\n\r\n  get isDisableExpand(): boolean {\r\n    return this._isDisableExpand;\r\n  }\r\n\r\n  set isDisableExpand(value: boolean) {\r\n    this._isDisableExpand = value;\r\n    this.update();\r\n  }\r\n\r\n  get isExpanded(): boolean {\r\n    return this._isExpanded;\r\n  }\r\n\r\n  set isExpanded(value: boolean) {\r\n    this._isExpanded = value;\r\n    this.origin.expanded = value;\r\n    this.afterValueChange('isExpanded');\r\n    this.afterValueChange('reRender');\r\n  }\r\n\r\n  get isSelected(): boolean {\r\n    return this._isSelected;\r\n  }\r\n\r\n  set isSelected(value: boolean) {\r\n    this._isSelected = value;\r\n    this.origin.selected = value;\r\n    this.afterValueChange('isSelected');\r\n  }\r\n\r\n  get isLoading(): boolean {\r\n    return this._isLoading;\r\n  }\r\n\r\n  set isLoading(value: boolean) {\r\n    this._isLoading = value;\r\n    this.update();\r\n  }\r\n\r\n  public setSyncChecked(checked: boolean = false, halfChecked: boolean = false): void {\r\n    this.setChecked(checked, halfChecked);\r\n    if (this.treeService && !this.treeService.isCheckStrictly) {\r\n      this.treeService.conduct(this);\r\n    }\r\n  }\r\n\r\n  public setChecked(checked: boolean = false, halfChecked: boolean = false): void {\r\n    this.origin.checked = checked;\r\n    this.isChecked = checked;\r\n    this.isHalfChecked = halfChecked;\r\n  }\r\n\r\n  public setExpanded(value: boolean): void {\r\n    this._isExpanded = value;\r\n    this.origin.expanded = value;\r\n    this.afterValueChange('isExpanded');\r\n  }\r\n\r\n  public getParentNode(): VtsTreeNode | null {\r\n    return this.parentNode;\r\n  }\r\n\r\n  public getChildren(): VtsTreeNode[] {\r\n    return this.children;\r\n  }\r\n\r\n  /**\r\n   * Support appending child nodes by position. Leaf node cannot be appended.\r\n   */\r\n  public addChildren(children: VtsSafeAny[], childPos: number = -1): void {\r\n    if (!this.isLeaf) {\r\n      children.forEach(node => {\r\n        const refreshLevel = (n: VtsTreeNode) => {\r\n          n.getChildren().forEach(c => {\r\n            c.level = c.getParentNode()!.level + 1;\r\n            // flush origin\r\n            c.origin.level = c.level;\r\n            refreshLevel(c);\r\n          });\r\n        };\r\n        let child = node;\r\n        if (child instanceof VtsTreeNode) {\r\n          child.parentNode = this;\r\n        } else {\r\n          child = new VtsTreeNode(node, this);\r\n        }\r\n        child.level = this.level + 1;\r\n        child.origin.level = child.level;\r\n        refreshLevel(child);\r\n        try {\r\n          childPos === -1 ? this.children.push(child) : this.children.splice(childPos, 0, child);\r\n          // flush origin\r\n        } catch (e) {}\r\n      });\r\n      this.origin.children = this.getChildren().map(v => v.origin);\r\n      // remove loading state\r\n      this.isLoading = false;\r\n    }\r\n    this.afterValueChange('addChildren');\r\n    this.afterValueChange('reRender');\r\n  }\r\n\r\n  public clearChildren(): void {\r\n    // refresh checked state\r\n    this.afterValueChange('clearChildren');\r\n    this.children = [];\r\n    this.origin.children = [];\r\n    this.afterValueChange('reRender');\r\n  }\r\n\r\n  public remove(): void {\r\n    const parentNode = this.getParentNode();\r\n    if (parentNode) {\r\n      parentNode.children = parentNode.getChildren().filter(v => v.key !== this.key);\r\n      parentNode.origin.children = parentNode.origin.children!.filter(v => v.key !== this.key);\r\n      this.afterValueChange('remove');\r\n      this.afterValueChange('reRender');\r\n    }\r\n  }\r\n\r\n  public afterValueChange(key: string): void {\r\n    if (this.treeService) {\r\n      switch (key) {\r\n        case 'isChecked':\r\n          this.treeService.setCheckedNodeList(this);\r\n          break;\r\n        case 'isHalfChecked':\r\n          this.treeService.setHalfCheckedNodeList(this);\r\n          break;\r\n        case 'isExpanded':\r\n          this.treeService.setExpandedNodeList(this);\r\n          break;\r\n        case 'isSelected':\r\n          this.treeService.setNodeActive(this);\r\n          break;\r\n        case 'clearChildren':\r\n          this.treeService.afterRemove(this.getChildren());\r\n          break;\r\n        case 'remove':\r\n          this.treeService.afterRemove([this]);\r\n          break;\r\n        case 'reRender':\r\n          this.treeService.flattenTreeData(\r\n            this.treeService.rootNodes,\r\n            this.treeService.getExpandedNodeList().map(v => v.key!)\r\n          );\r\n          break;\r\n      }\r\n    }\r\n    this.update();\r\n  }\r\n\r\n  public update(): void {\r\n    if (this.component) {\r\n      this.component.markForCheck();\r\n    }\r\n  }\r\n}\r\n","/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nimport { VtsTreeNode } from './vts-tree-base-node';\r\n\r\nexport interface VtsFormatEmitEvent {\r\n  eventName: string;\r\n  node?: VtsTreeNode | null;\r\n  event?: MouseEvent | DragEvent | null;\r\n  dragNode?: VtsTreeNode;\r\n  selectedKeys?: VtsTreeNode[];\r\n  checkedKeys?: VtsTreeNode[];\r\n  matchedKeys?: VtsTreeNode[];\r\n  nodes?: VtsTreeNode[];\r\n  keys?: string[];\r\n}\r\n\r\nexport interface VtsFormatBeforeDropEvent {\r\n  dragNode: VtsTreeNode;\r\n  node: VtsTreeNode;\r\n  pos: number;\r\n}\r\n\r\nexport interface VtsTreeNodeBaseComponent {\r\n  markForCheck(): void;\r\n}\r\n","/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nimport { VtsSafeAny } from '@vts-voffice/ng-vts/core/types';\r\nimport { FlattenNode, VtsTreeNode, VtsTreeNodeKey } from './vts-tree-base-node';\r\n\r\nexport function isCheckDisabled(node: VtsTreeNode): boolean {\r\n  const { isDisabled, isDisableCheckbox } = node;\r\n  return !!(isDisabled || isDisableCheckbox);\r\n}\r\n\r\nexport function isInArray(needle: VtsSafeAny, haystack: VtsSafeAny[]): boolean {\r\n  return haystack.length > 0 && haystack.indexOf(needle) > -1;\r\n}\r\n\r\nexport function getPosition(level: string | number, index: number): string {\r\n  return `${level}-${index}`;\r\n}\r\n\r\nexport function getKey(key: VtsTreeNodeKey, pos: string): VtsTreeNodeKey {\r\n  if (key !== null && key !== undefined) {\r\n    return key;\r\n  }\r\n  return pos;\r\n}\r\n\r\n/**\r\n * Flat nest tree data into flatten list. This is used for virtual list render.\r\n * @param treeNodeList Origin data node list\r\n * @param expandedKeys\r\n * need expanded keys, provides `true` means all expanded (used in `rc-tree-select`).\r\n */\r\nexport function flattenTreeData(\r\n  treeNodeList: VtsTreeNode[] = [],\r\n  expandedKeys: VtsTreeNodeKey[] | true = []\r\n): FlattenNode[] {\r\n  const expandedKeySet = new Set(expandedKeys === true ? [] : expandedKeys);\r\n  const flattenList: FlattenNode[] = [];\r\n\r\n  function dig(list: VtsTreeNode[], parent: FlattenNode | null = null): FlattenNode[] {\r\n    return list.map((treeNode, index) => {\r\n      const pos: string = getPosition(parent ? parent.pos : '0', index);\r\n      const mergedKey = getKey(treeNode.key, pos);\r\n      treeNode.isStart = [...(parent ? parent.isStart : []), index === 0];\r\n      treeNode.isEnd = [...(parent ? parent.isEnd : []), index === list.length - 1];\r\n      // Add FlattenDataNode into list\r\n      // TODO: only need data here.\r\n      const flattenNode: FlattenNode = {\r\n        parent,\r\n        pos,\r\n        children: [],\r\n        data: treeNode,\r\n        isStart: [...(parent ? parent.isStart : []), index === 0],\r\n        isEnd: [...(parent ? parent.isEnd : []), index === list.length - 1]\r\n      };\r\n\r\n      flattenList.push(flattenNode);\r\n\r\n      // Loop treeNode children\r\n      if (expandedKeys === true || expandedKeySet.has(mergedKey) || treeNode.isExpanded) {\r\n        flattenNode.children = dig(treeNode.children || [], flattenNode);\r\n      } else {\r\n        flattenNode.children = [];\r\n      }\r\n\r\n      return flattenNode;\r\n    });\r\n  }\r\n\r\n  dig(treeNodeList);\r\n  return flattenList;\r\n}\r\n","/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { VtsSafeAny } from '@vts-voffice/ng-vts/core/types';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { VtsTreeNode, VtsTreeNodeKey } from './vts-tree-base-node';\r\nimport { flattenTreeData, isCheckDisabled, isInArray } from './vts-tree-base-util';\r\nimport { VtsFormatEmitEvent } from './vts-tree-base.definitions';\r\n\r\n@Injectable()\r\nexport class VtsTreeBaseService {\r\n  DRAG_SIDE_RANGE = 0.25;\r\n  DRAG_MIN_GAP = 2;\r\n\r\n  isCheckStrictly: boolean = false;\r\n  isMultiple: boolean = false;\r\n  selectedNode!: VtsTreeNode;\r\n  rootNodes: VtsTreeNode[] = [];\r\n  flattenNodes$ = new BehaviorSubject<VtsTreeNode[]>([]);\r\n  selectedNodeList: VtsTreeNode[] = [];\r\n  expandedNodeList: VtsTreeNode[] = [];\r\n  checkedNodeList: VtsTreeNode[] = [];\r\n  halfCheckedNodeList: VtsTreeNode[] = [];\r\n  matchedNodeList: VtsTreeNode[] = [];\r\n\r\n  /**\r\n   * reset tree nodes will clear default node list\r\n   */\r\n  initTree(vtsNodes: VtsTreeNode[]): void {\r\n    this.rootNodes = vtsNodes;\r\n    this.expandedNodeList = [];\r\n    this.selectedNodeList = [];\r\n    this.halfCheckedNodeList = [];\r\n    this.checkedNodeList = [];\r\n    this.matchedNodeList = [];\r\n  }\r\n\r\n  flattenTreeData(vtsNodes: VtsTreeNode[], expandedKeys: VtsTreeNodeKey[] | true = []): void {\r\n    this.flattenNodes$.next(flattenTreeData(vtsNodes, expandedKeys).map(item => item.data));\r\n  }\r\n\r\n  getSelectedNode(): VtsTreeNode | null {\r\n    return this.selectedNode;\r\n  }\r\n\r\n  /**\r\n   * get some list\r\n   */\r\n  getSelectedNodeList(): VtsTreeNode[] {\r\n    return this.conductNodeState('select');\r\n  }\r\n\r\n  /**\r\n   * return checked nodes\r\n   */\r\n  getCheckedNodeList(): VtsTreeNode[] {\r\n    return this.conductNodeState('check');\r\n  }\r\n\r\n  getHalfCheckedNodeList(): VtsTreeNode[] {\r\n    return this.conductNodeState('halfCheck');\r\n  }\r\n\r\n  /**\r\n   * return expanded nodes\r\n   */\r\n  getExpandedNodeList(): VtsTreeNode[] {\r\n    return this.conductNodeState('expand');\r\n  }\r\n\r\n  /**\r\n   * return search matched nodes\r\n   */\r\n  getMatchedNodeList(): VtsTreeNode[] {\r\n    return this.conductNodeState('match');\r\n  }\r\n\r\n  isArrayOfVtsTreeNode(value: VtsSafeAny[]): boolean {\r\n    return value.every(item => item instanceof VtsTreeNode);\r\n  }\r\n\r\n  /**\r\n   * set drag node\r\n   */\r\n  setSelectedNode(node: VtsTreeNode): void {\r\n    this.selectedNode = node;\r\n  }\r\n\r\n  /**\r\n   * set node selected status\r\n   */\r\n  setNodeActive(node: VtsTreeNode): void {\r\n    if (!this.isMultiple && node.isSelected) {\r\n      this.selectedNodeList.forEach(n => {\r\n        if (node.key !== n.key) {\r\n          // reset other nodes\r\n          n.isSelected = false;\r\n        }\r\n      });\r\n      // single mode: remove pre node\r\n      this.selectedNodeList = [];\r\n    }\r\n    this.setSelectedNodeList(node, this.isMultiple);\r\n  }\r\n\r\n  /**\r\n   * add or remove node to selectedNodeList\r\n   */\r\n  setSelectedNodeList(node: VtsTreeNode, isMultiple: boolean = false): void {\r\n    const index = this.getIndexOfArray(this.selectedNodeList, node.key);\r\n    if (isMultiple) {\r\n      if (node.isSelected && index === -1) {\r\n        this.selectedNodeList.push(node);\r\n      }\r\n    } else {\r\n      if (node.isSelected && index === -1) {\r\n        this.selectedNodeList = [node];\r\n      }\r\n    }\r\n    if (!node.isSelected) {\r\n      this.selectedNodeList = this.selectedNodeList.filter(n => n.key !== node.key);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * merge checked nodes\r\n   */\r\n  setHalfCheckedNodeList(node: VtsTreeNode): void {\r\n    const index = this.getIndexOfArray(this.halfCheckedNodeList, node.key);\r\n    if (node.isHalfChecked && index === -1) {\r\n      this.halfCheckedNodeList.push(node);\r\n    } else if (!node.isHalfChecked && index > -1) {\r\n      this.halfCheckedNodeList = this.halfCheckedNodeList.filter(n => node.key !== n.key);\r\n    }\r\n  }\r\n\r\n  setCheckedNodeList(node: VtsTreeNode): void {\r\n    const index = this.getIndexOfArray(this.checkedNodeList, node.key);\r\n    if (node.isChecked && index === -1) {\r\n      this.checkedNodeList.push(node);\r\n    } else if (!node.isChecked && index > -1) {\r\n      this.checkedNodeList = this.checkedNodeList.filter(n => node.key !== n.key);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * conduct checked/selected/expanded keys\r\n   */\r\n  conductNodeState(type: string = 'check'): VtsTreeNode[] {\r\n    let resultNodesList: VtsTreeNode[] = [];\r\n    switch (type) {\r\n      case 'select':\r\n        resultNodesList = this.selectedNodeList;\r\n        break;\r\n      case 'expand':\r\n        resultNodesList = this.expandedNodeList;\r\n        break;\r\n      case 'match':\r\n        resultNodesList = this.matchedNodeList;\r\n        break;\r\n      case 'check':\r\n        resultNodesList = this.checkedNodeList;\r\n        const isIgnore = (node: VtsTreeNode, forwardAscend = false): boolean => {\r\n          if (isCheckDisabled(node)) if (!forwardAscend) return true;\r\n          const parentNode = node.getParentNode();\r\n          if (parentNode) {\r\n            if (isCheckDisabled(parentNode)) {\r\n              if (parentNode.isChecked) return isIgnore(parentNode, true);\r\n              else return false;\r\n            }\r\n            if (this.checkedNodeList.findIndex(n => n.key === parentNode.key) > -1) {\r\n              return true;\r\n            } else {\r\n              return isIgnore(parentNode);\r\n            }\r\n          }\r\n          return false;\r\n        };\r\n        // merge checked\r\n        if (!this.isCheckStrictly) {\r\n          resultNodesList = this.checkedNodeList.filter(n => !isIgnore(n));\r\n        }\r\n        break;\r\n      case 'halfCheck':\r\n        if (!this.isCheckStrictly) {\r\n          resultNodesList = this.halfCheckedNodeList;\r\n        }\r\n        break;\r\n    }\r\n    return resultNodesList;\r\n  }\r\n\r\n  /**\r\n   * set expanded nodes\r\n   */\r\n  setExpandedNodeList(node: VtsTreeNode): void {\r\n    if (node.isLeaf) {\r\n      return;\r\n    }\r\n    const index = this.getIndexOfArray(this.expandedNodeList, node.key);\r\n    if (node.isExpanded && index === -1) {\r\n      this.expandedNodeList.push(node);\r\n    } else if (!node.isExpanded && index > -1) {\r\n      this.expandedNodeList.splice(index, 1);\r\n    }\r\n  }\r\n\r\n  setMatchedNodeList(node: VtsTreeNode): void {\r\n    const index = this.getIndexOfArray(this.matchedNodeList, node.key);\r\n    if (node.isMatched && index === -1) {\r\n      this.matchedNodeList.push(node);\r\n    } else if (!node.isMatched && index > -1) {\r\n      this.matchedNodeList.splice(index, 1);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * check state\r\n   * @param isCheckStrictly\r\n   */\r\n  refreshCheckState(isCheckStrictly: boolean = false): void {\r\n    if (isCheckStrictly) {\r\n      return;\r\n    }\r\n    this.checkedNodeList.forEach(node => {\r\n      this.conduct(node, isCheckStrictly);\r\n    });\r\n  }\r\n\r\n  // reset other node checked state based current node\r\n  conduct(node: VtsTreeNode, isCheckStrictly: boolean = false): void {\r\n    const isChecked = node.isChecked;\r\n    if (node && !isCheckStrictly) {\r\n      this.conductUp(node);\r\n      this.conductDown(node, isChecked);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * 1、children half checked\r\n   * 2、children all checked, parent checked\r\n   * 3、no children checked\r\n   */\r\n  conductUp(node: VtsTreeNode): void {\r\n    const parentNode = node.getParentNode();\r\n    if (parentNode) {\r\n      // if (!isCheckDisabled(parentNode)) {\r\n      if (\r\n        parentNode.children.every(\r\n          child =>\r\n            (isCheckDisabled(child) && child.isLeaf) || (!child.isHalfChecked && child.isChecked)\r\n        )\r\n      ) {\r\n        parentNode.isChecked = true;\r\n        parentNode.isHalfChecked = false;\r\n      } else if (parentNode.children.some(child => child.isHalfChecked || child.isChecked)) {\r\n        parentNode.isChecked = false;\r\n        parentNode.isHalfChecked = true;\r\n      } else {\r\n        parentNode.isChecked = false;\r\n        parentNode.isHalfChecked = false;\r\n      }\r\n      // }\r\n      this.setCheckedNodeList(parentNode);\r\n      this.setHalfCheckedNodeList(parentNode);\r\n      this.conductUp(parentNode);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * reset child check state\r\n   */\r\n  conductDown(node: VtsTreeNode, value: boolean): void {\r\n    // if (!isCheckDisabled(node)) {\r\n    node.isChecked = value;\r\n    node.isHalfChecked = false;\r\n    this.setCheckedNodeList(node);\r\n    this.setHalfCheckedNodeList(node);\r\n    node.children.forEach(n => {\r\n      this.conductDown(n, value);\r\n    });\r\n    // } else {\r\n    //   node.children.forEach(n => {\r\n    //     this.conductDown(n, value);\r\n    //   });\r\n    // }\r\n  }\r\n\r\n  /**\r\n   * flush after delete node\r\n   */\r\n  afterRemove(nodes: VtsTreeNode[]): void {\r\n    // to reset selectedNodeList & expandedNodeList\r\n    const loopNode = (node: VtsTreeNode) => {\r\n      // remove selected node\r\n      this.selectedNodeList = this.selectedNodeList.filter(n => n.key !== node.key);\r\n      // remove expanded node\r\n      this.expandedNodeList = this.expandedNodeList.filter(n => n.key !== node.key);\r\n      // remove checked node\r\n      this.checkedNodeList = this.checkedNodeList.filter(n => n.key !== node.key);\r\n      if (node.children) {\r\n        node.children.forEach(child => {\r\n          loopNode(child);\r\n        });\r\n      }\r\n    };\r\n    nodes.forEach(n => {\r\n      loopNode(n);\r\n    });\r\n    this.refreshCheckState(this.isCheckStrictly);\r\n  }\r\n\r\n  /**\r\n   * drag event\r\n   */\r\n  refreshDragNode(node: VtsTreeNode): void {\r\n    if (node.children.length === 0) {\r\n      // until root\r\n      this.conductUp(node);\r\n    } else {\r\n      node.children.forEach(child => {\r\n        this.refreshDragNode(child);\r\n      });\r\n    }\r\n  }\r\n\r\n  // reset node level\r\n  resetNodeLevel(node: VtsTreeNode): void {\r\n    const parentNode = node.getParentNode();\r\n    if (parentNode) {\r\n      node.level = parentNode.level + 1;\r\n    } else {\r\n      node.level = 0;\r\n    }\r\n    for (const child of node.children) {\r\n      this.resetNodeLevel(child);\r\n    }\r\n  }\r\n\r\n  calcDropPosition(event: DragEvent): number {\r\n    const { clientY } = event;\r\n    // to fix firefox undefined\r\n    const { top, bottom, height } = (event.target as Element).getBoundingClientRect();\r\n    const des = Math.max(height * this.DRAG_SIDE_RANGE, this.DRAG_MIN_GAP);\r\n\r\n    if (clientY <= top + des) {\r\n      return -1;\r\n    } else if (clientY >= bottom - des) {\r\n      return 1;\r\n    }\r\n\r\n    return 0;\r\n  }\r\n\r\n  /**\r\n   * drop\r\n   * 0: inner -1: pre 1: next\r\n   */\r\n  dropAndApply(targetNode: VtsTreeNode, dragPos: number = -1): void {\r\n    if (!targetNode || dragPos > 1) {\r\n      return;\r\n    }\r\n    const treeService = targetNode.treeService;\r\n    const targetParent = targetNode.getParentNode();\r\n    const isSelectedRootNode = this.selectedNode.getParentNode();\r\n    // remove the dragNode\r\n    if (isSelectedRootNode) {\r\n      isSelectedRootNode.children = isSelectedRootNode.children.filter(\r\n        n => n.key !== this.selectedNode.key\r\n      );\r\n    } else {\r\n      this.rootNodes = this.rootNodes.filter(n => n.key !== this.selectedNode.key);\r\n    }\r\n    switch (dragPos) {\r\n      case 0:\r\n        targetNode.addChildren([this.selectedNode]);\r\n        this.resetNodeLevel(targetNode);\r\n        break;\r\n      case -1:\r\n      case 1:\r\n        const tIndex = dragPos === 1 ? 1 : 0;\r\n        if (targetParent) {\r\n          targetParent.addChildren(\r\n            [this.selectedNode],\r\n            targetParent.children.indexOf(targetNode) + tIndex\r\n          );\r\n          const parentNode = this.selectedNode.getParentNode();\r\n          if (parentNode) {\r\n            this.resetNodeLevel(parentNode);\r\n          }\r\n        } else {\r\n          const targetIndex = this.rootNodes.indexOf(targetNode) + tIndex;\r\n          // Insert root node.\r\n          this.rootNodes.splice(targetIndex, 0, this.selectedNode);\r\n          this.rootNodes[targetIndex].parentNode = null;\r\n          this.resetNodeLevel(this.rootNodes[targetIndex]);\r\n        }\r\n        break;\r\n    }\r\n    // flush all nodes\r\n    this.rootNodes.forEach(child => {\r\n      if (!child.treeService) {\r\n        child.service = treeService;\r\n      }\r\n      this.refreshDragNode(child);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * emit Structure\r\n   * eventName\r\n   * node\r\n   * event: MouseEvent / DragEvent\r\n   * dragNode\r\n   */\r\n  formatEvent(\r\n    eventName: string,\r\n    node: VtsTreeNode | null,\r\n    event: MouseEvent | DragEvent | null\r\n  ): VtsFormatEmitEvent {\r\n    const emitStructure: VtsFormatEmitEvent = {\r\n      eventName: eventName,\r\n      node: node,\r\n      event: event\r\n    };\r\n    switch (eventName) {\r\n      case 'dragstart':\r\n      case 'dragenter':\r\n      case 'dragover':\r\n      case 'dragleave':\r\n      case 'drop':\r\n      case 'dragend':\r\n        Object.assign(emitStructure, { dragNode: this.getSelectedNode() });\r\n        break;\r\n      case 'click':\r\n      case 'dblclick':\r\n        Object.assign(emitStructure, { selectedKeys: this.selectedNodeList });\r\n        Object.assign(emitStructure, { nodes: this.selectedNodeList });\r\n        Object.assign(emitStructure, {\r\n          keys: this.selectedNodeList.map(n => n.key)\r\n        });\r\n        break;\r\n      case 'check':\r\n        const checkedNodeList = this.getCheckedNodeList();\r\n        Object.assign(emitStructure, { checkedKeys: checkedNodeList });\r\n        Object.assign(emitStructure, { nodes: checkedNodeList });\r\n        Object.assign(emitStructure, { keys: checkedNodeList.map(n => n.key) });\r\n        break;\r\n      case 'search':\r\n        Object.assign(emitStructure, {\r\n          matchedKeys: this.getMatchedNodeList()\r\n        });\r\n        Object.assign(emitStructure, { nodes: this.getMatchedNodeList() });\r\n        Object.assign(emitStructure, {\r\n          keys: this.getMatchedNodeList().map(n => n.key)\r\n        });\r\n        break;\r\n      case 'expand':\r\n        Object.assign(emitStructure, { nodes: this.expandedNodeList });\r\n        Object.assign(emitStructure, {\r\n          keys: this.expandedNodeList.map(n => n.key)\r\n        });\r\n        break;\r\n    }\r\n    return emitStructure;\r\n  }\r\n\r\n  /**\r\n   * New functions for flatten nodes\r\n   */\r\n\r\n  getIndexOfArray(list: VtsTreeNode[], key: string): number {\r\n    return list.findIndex(v => v.key === key);\r\n  }\r\n\r\n  /**\r\n   * Render by vtsCheckedKeys\r\n   * When keys equals null, just render with checkStrictly\r\n   * @param keys\r\n   * @param checkStrictly\r\n   */\r\n  conductCheck(keys: VtsTreeNodeKey[] | null, checkStrictly: boolean): void {\r\n    this.checkedNodeList = [];\r\n    this.halfCheckedNodeList = [];\r\n    const calc = (nodes: VtsTreeNode[]) => {\r\n      nodes.forEach(node => {\r\n        if (keys === null) {\r\n          // render tree if no default checked keys found\r\n          node.isChecked = !!node.origin.checked;\r\n        } else {\r\n          if (isInArray(node.key, keys || [])) {\r\n            node.isChecked = true;\r\n            node.isHalfChecked = false;\r\n          } else {\r\n            node.isChecked = false;\r\n            node.isHalfChecked = false;\r\n          }\r\n        }\r\n        if (node.children.length > 0) {\r\n          calc(node.children);\r\n        }\r\n      });\r\n    };\r\n    calc(this.rootNodes);\r\n    this.refreshCheckState(checkStrictly);\r\n  }\r\n\r\n  conductExpandedKeys(keys: VtsTreeNodeKey[] | true = []): void {\r\n    const expandedKeySet = new Set(keys === true ? [] : keys);\r\n    this.expandedNodeList = [];\r\n    const calc = (nodes: VtsTreeNode[]) => {\r\n      nodes.forEach(node => {\r\n        node.setExpanded(keys === true || expandedKeySet.has(node.key) || node.isExpanded === true);\r\n        if (node.isExpanded) {\r\n          this.setExpandedNodeList(node);\r\n        }\r\n        if (node.children.length > 0) {\r\n          calc(node.children);\r\n        }\r\n      });\r\n    };\r\n    calc(this.rootNodes);\r\n  }\r\n\r\n  conductSelectedKeys(keys: VtsTreeNodeKey[], isMulti: boolean): void {\r\n    this.selectedNodeList.forEach(node => (node.isSelected = false));\r\n    this.selectedNodeList = [];\r\n    const calc = (nodes: VtsTreeNode[]): boolean => {\r\n      return nodes.every(node => {\r\n        if (isInArray(node.key, keys)) {\r\n          node.isSelected = true;\r\n          this.setSelectedNodeList(node);\r\n          if (!isMulti) {\r\n            // if not support multi select\r\n            return false;\r\n          }\r\n        } else {\r\n          node.isSelected = false;\r\n        }\r\n        if (node.children.length > 0) {\r\n          // Recursion\r\n          return calc(node.children);\r\n        }\r\n        return true;\r\n      });\r\n    };\r\n    calc(this.rootNodes);\r\n  }\r\n\r\n  /**\r\n   * Expand parent nodes by child node\r\n   * @param node\r\n   */\r\n  expandNodeAllParentBySearch(node: VtsTreeNode): void {\r\n    const calc = (n: VtsTreeNode | null): void => {\r\n      if (n) {\r\n        n.canHide = false;\r\n        n.setExpanded(true);\r\n        this.setExpandedNodeList(n);\r\n        if (n.getParentNode()) {\r\n          return calc(n.getParentNode());\r\n        }\r\n      }\r\n    };\r\n    calc(node.getParentNode());\r\n  }\r\n}\r\n","/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nimport { InjectionToken } from '@angular/core';\r\n\r\nimport { VtsTreeBaseService } from './vts-tree-base.service';\r\n\r\nexport const VtsTreeHigherOrderServiceToken = new InjectionToken<VtsTreeBaseService>(\r\n  'VtsTreeHigherOrder'\r\n);\r\n","/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nimport { VtsSafeAny } from '@vts-voffice/ng-vts/core/types';\r\nimport { VtsTreeNode } from './vts-tree-base-node';\r\nimport { VtsTreeBaseService } from './vts-tree-base.service';\r\n\r\nexport class VtsTreeBase {\r\n  constructor(public vtsTreeService: VtsTreeBaseService) {}\r\n\r\n  /**\r\n   * Coerces a value({@link any[]}) to a TreeNodes({@link VtsTreeNode[]})\r\n   */\r\n  coerceTreeNodes(value: VtsSafeAny[]): VtsTreeNode[] {\r\n    let nodes: VtsTreeNode[] = [];\r\n    if (!this.vtsTreeService.isArrayOfVtsTreeNode(value)) {\r\n      // has not been new VtsTreeNode\r\n      nodes = value.map(item => new VtsTreeNode(item, null, this.vtsTreeService));\r\n    } else {\r\n      nodes = value.map((item: VtsTreeNode) => {\r\n        item.service = this.vtsTreeService;\r\n        return item;\r\n      });\r\n    }\r\n    return nodes;\r\n  }\r\n\r\n  /**\r\n   * Get all nodes({@link VtsTreeNode})\r\n   */\r\n  getTreeNodes(): VtsTreeNode[] {\r\n    return this.vtsTreeService.rootNodes;\r\n  }\r\n\r\n  /**\r\n   * Get {@link VtsTreeNode} with key\r\n   */\r\n  getTreeNodeByKey(key: string): VtsTreeNode | null {\r\n    // flat tree nodes\r\n    const nodes: VtsTreeNode[] = [];\r\n    const getNode = (node: VtsTreeNode): void => {\r\n      nodes.push(node);\r\n      node.getChildren().forEach(n => {\r\n        getNode(n);\r\n      });\r\n    };\r\n    this.getTreeNodes().forEach(n => {\r\n      getNode(n);\r\n    });\r\n    return nodes.find(n => n.key === key) || null;\r\n  }\r\n\r\n  /**\r\n   * Get checked nodes(merged)\r\n   */\r\n  getCheckedNodeList(): VtsTreeNode[] {\r\n    return this.vtsTreeService.getCheckedNodeList();\r\n  }\r\n\r\n  /**\r\n   * Get selected nodes\r\n   */\r\n  getSelectedNodeList(): VtsTreeNode[] {\r\n    return this.vtsTreeService.getSelectedNodeList();\r\n  }\r\n\r\n  /**\r\n   * Get half checked nodes\r\n   */\r\n  getHalfCheckedNodeList(): VtsTreeNode[] {\r\n    return this.vtsTreeService.getHalfCheckedNodeList();\r\n  }\r\n\r\n  /**\r\n   * Get expanded nodes\r\n   */\r\n  getExpandedNodeList(): VtsTreeNode[] {\r\n    return this.vtsTreeService.getExpandedNodeList();\r\n  }\r\n\r\n  /**\r\n   * Get matched nodes(if vtsSearchValue is not null)\r\n   */\r\n  getMatchedNodeList(): VtsTreeNode[] {\r\n    return this.vtsTreeService.getMatchedNodeList();\r\n  }\r\n}\r\n","/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nexport * from './vts-tree-base-node';\r\nexport * from './vts-tree-base.definitions';\r\nexport * from './vts-tree-base.service';\r\nexport * from './vts-tree-service.resolver';\r\nexport * from './vts-tree-base';\r\nexport * from './vts-tree-base-util';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}