{"version":3,"file":"ng-zorro-antd-tree.mjs","sources":["../../components/tree/tree-drop-indicator.component.ts","../../components/tree/tree-indent.component.ts","../../components/tree/tree-node-checkbox.component.ts","../../components/tree/tree-node-switcher.component.ts","../../components/tree/tree-node-title.component.ts","../../components/tree/tree-node.component.ts","../../components/tree/tree.service.ts","../../components/tree/tree.component.ts","../../components/tree/tree.module.ts","../../components/tree/public-api.ts","../../components/tree/ng-zorro-antd-tree.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\nimport { NgStyleInterface } from 'ng-zorro-antd/core/types';\n\n@Component({\n  selector: 'nz-tree-drop-indicator',\n  exportAs: 'NzTreeDropIndicator',\n  template: ``,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  host: {\n    '[class.ant-tree-drop-indicator]': 'true',\n    '[style]': 'style'\n  }\n})\nexport class NzTreeDropIndicatorComponent implements OnChanges {\n  @Input() dropPosition?: number;\n  @Input() level: number = 1;\n  @Input() direction: string = 'ltr';\n  style: NgStyleInterface = {};\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  ngOnChanges(_changes: SimpleChanges): void {\n    this.renderIndicator(this.dropPosition!, this.direction);\n  }\n\n  renderIndicator(dropPosition: number, direction: string = 'ltr'): void {\n    const offset = 4;\n    const startPosition = direction === 'ltr' ? 'left' : 'right';\n    const endPosition = direction === 'ltr' ? 'right' : 'left';\n    const style: NgStyleInterface = {\n      [startPosition]: `${offset}px`,\n      [endPosition]: '0px'\n    };\n    switch (dropPosition) {\n      case -1:\n        style.top = `${-3}px`;\n        break;\n      case 1:\n        style.bottom = `${-3}px`;\n        break;\n      case 0:\n        // dropPosition === 0\n        style.bottom = `${-3}px`;\n        style[startPosition] = `${offset + 24}px`;\n        break;\n      default:\n        style.display = 'none';\n        break;\n    }\n    this.style = style;\n    this.cdr.markForCheck();\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'nz-tree-indent',\n  exportAs: 'nzTreeIndent',\n  template: `\n    <span\n      [class.ant-tree-indent-unit]=\"!nzSelectMode\"\n      [class.ant-select-tree-indent-unit]=\"nzSelectMode\"\n      [class.ant-select-tree-indent-unit-start]=\"nzSelectMode && nzIsStart[i]\"\n      [class.ant-tree-indent-unit-start]=\"!nzSelectMode && nzIsStart[i]\"\n      [class.ant-select-tree-indent-unit-end]=\"nzSelectMode && nzIsEnd[i]\"\n      [class.ant-tree-indent-unit-end]=\"!nzSelectMode && nzIsEnd[i]\"\n      *ngFor=\"let _ of listOfUnit; let i = index\"\n    ></span>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  host: {\n    '[attr.aria-hidden]': 'true',\n    '[class.ant-tree-indent]': '!nzSelectMode',\n    '[class.ant-select-tree-indent]': 'nzSelectMode'\n  }\n})\nexport class NzTreeIndentComponent implements OnChanges {\n  @Input() nzTreeLevel = 0;\n  @Input() nzIsStart: boolean[] = [];\n  @Input() nzIsEnd: boolean[] = [];\n  @Input() nzSelectMode = false;\n\n  listOfUnit: number[] = [];\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzTreeLevel } = changes;\n    if (nzTreeLevel) {\n      this.listOfUnit = [...new Array(nzTreeLevel.currentValue || 0)];\n    }\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'nz-tree-node-checkbox[builtin]',\n  template: `\n    <span [class.ant-tree-checkbox-inner]=\"!nzSelectMode\" [class.ant-select-tree-checkbox-inner]=\"nzSelectMode\"></span>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  host: {\n    '[class.ant-select-tree-checkbox]': `nzSelectMode`,\n    '[class.ant-select-tree-checkbox-checked]': `nzSelectMode && isChecked`,\n    '[class.ant-select-tree-checkbox-indeterminate]': `nzSelectMode && isHalfChecked`,\n    '[class.ant-select-tree-checkbox-disabled]': `nzSelectMode && (isDisabled || isDisableCheckbox)`,\n    '[class.ant-tree-checkbox]': `!nzSelectMode`,\n    '[class.ant-tree-checkbox-checked]': `!nzSelectMode && isChecked`,\n    '[class.ant-tree-checkbox-indeterminate]': `!nzSelectMode && isHalfChecked`,\n    '[class.ant-tree-checkbox-disabled]': `!nzSelectMode && (isDisabled || isDisableCheckbox)`\n  }\n})\nexport class NzTreeNodeBuiltinCheckboxComponent {\n  @Input() nzSelectMode = false;\n  @Input() isChecked?: boolean;\n  @Input() isHalfChecked?: boolean;\n  @Input() isDisabled?: boolean;\n  @Input() isDisableCheckbox?: boolean;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef } from '@angular/core';\n\nimport { NzTreeNode, NzTreeNodeOptions } from 'ng-zorro-antd/core/tree';\n\n@Component({\n  selector: 'nz-tree-node-switcher',\n  template: `\n    <ng-container *ngIf=\"isShowSwitchIcon\">\n      <ng-container *ngIf=\"!isLoading; else loadingTemplate\">\n        <ng-container *nzStringTemplateOutlet=\"nzExpandedIcon; context: { $implicit: context, origin: context.origin }\">\n          <i\n            nz-icon\n            nzType=\"caret-down\"\n            [class.ant-select-tree-switcher-icon]=\"nzSelectMode\"\n            [class.ant-tree-switcher-icon]=\"!nzSelectMode\"\n          ></i>\n        </ng-container>\n      </ng-container>\n    </ng-container>\n    <ng-container *ngIf=\"nzShowLine\">\n      <ng-container *ngIf=\"!isLoading; else loadingTemplate\">\n        <ng-container *nzStringTemplateOutlet=\"nzExpandedIcon; context: { $implicit: context, origin: context.origin }\">\n          <i\n            *ngIf=\"isShowLineIcon\"\n            nz-icon\n            [nzType]=\"isSwitcherOpen ? 'minus-square' : 'plus-square'\"\n            class=\"ant-tree-switcher-line-icon\"\n          ></i>\n          <i *ngIf=\"!isShowLineIcon\" nz-icon nzType=\"file\" class=\"ant-tree-switcher-line-icon\"></i>\n        </ng-container>\n      </ng-container>\n    </ng-container>\n    <ng-template #loadingTemplate>\n      <i nz-icon nzType=\"loading\" [nzSpin]=\"true\" class=\"ant-tree-switcher-loading-icon\"></i>\n    </ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  host: {\n    '[class.ant-select-tree-switcher]': 'nzSelectMode',\n    '[class.ant-select-tree-switcher-noop]': 'nzSelectMode && isLeaf',\n    '[class.ant-select-tree-switcher_open]': 'nzSelectMode && isSwitcherOpen',\n    '[class.ant-select-tree-switcher_close]': 'nzSelectMode && isSwitcherClose',\n    '[class.ant-tree-switcher]': '!nzSelectMode',\n    '[class.ant-tree-switcher-noop]': '!nzSelectMode && isLeaf',\n    '[class.ant-tree-switcher_open]': '!nzSelectMode && isSwitcherOpen',\n    '[class.ant-tree-switcher_close]': '!nzSelectMode && isSwitcherClose'\n  }\n})\nexport class NzTreeNodeSwitcherComponent {\n  @Input() nzShowExpand?: boolean;\n  @Input() nzShowLine?: boolean;\n  @Input() nzExpandedIcon?: TemplateRef<{ $implicit: NzTreeNode; origin: NzTreeNodeOptions }>;\n  @Input() nzSelectMode = false;\n  @Input() context!: NzTreeNode;\n  @Input() isLeaf?: boolean;\n  @Input() isLoading?: boolean;\n  @Input() isExpanded?: boolean;\n\n  get isShowLineIcon(): boolean {\n    return !this.isLeaf && !!this.nzShowLine;\n  }\n\n  get isShowSwitchIcon(): boolean {\n    return !this.isLeaf && !this.nzShowLine;\n  }\n\n  get isSwitcherOpen(): boolean {\n    return !!this.isExpanded && !this.isLeaf;\n  }\n\n  get isSwitcherClose(): boolean {\n    return !this.isExpanded && !this.isLeaf;\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  TemplateRef\n} from '@angular/core';\n\nimport { NzTreeNode, NzTreeNodeOptions } from 'ng-zorro-antd/core/tree';\n\n@Component({\n  selector: 'nz-tree-node-title',\n  template: `\n    <ng-template\n      [ngTemplateOutlet]=\"treeTemplate\"\n      [ngTemplateOutletContext]=\"{ $implicit: context, origin: context.origin }\"\n    ></ng-template>\n    <ng-container *ngIf=\"!treeTemplate\">\n      <span\n        *ngIf=\"icon && showIcon\"\n        [class.ant-tree-icon__open]=\"isSwitcherOpen\"\n        [class.ant-tree-icon__close]=\"isSwitcherClose\"\n        [class.ant-tree-icon_loading]=\"isLoading\"\n        [class.ant-select-tree-iconEle]=\"selectMode\"\n        [class.ant-tree-iconEle]=\"!selectMode\"\n      >\n        <span\n          [class.ant-select-tree-iconEle]=\"selectMode\"\n          [class.ant-select-tree-icon__customize]=\"selectMode\"\n          [class.ant-tree-iconEle]=\"!selectMode\"\n          [class.ant-tree-icon__customize]=\"!selectMode\"\n        >\n          <i nz-icon *ngIf=\"icon\" [nzType]=\"icon\"></i>\n        </span>\n      </span>\n      <span class=\"ant-tree-title\" [innerHTML]=\"title | nzHighlight: matchedValue:'i':'font-highlight'\"></span>\n      <nz-tree-drop-indicator\n        *ngIf=\"showIndicator\"\n        [dropPosition]=\"dragPosition\"\n        [level]=\"context.level\"\n      ></nz-tree-drop-indicator>\n    </ng-container>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  host: {\n    '[attr.title]': 'title',\n    '[attr.draggable]': 'canDraggable',\n    '[attr.aria-grabbed]': 'canDraggable',\n    '[class.draggable]': 'canDraggable',\n    '[class.ant-select-tree-node-content-wrapper]': `selectMode`,\n    '[class.ant-select-tree-node-content-wrapper-open]': `selectMode && isSwitcherOpen`,\n    '[class.ant-select-tree-node-content-wrapper-close]': `selectMode && isSwitcherClose`,\n    '[class.ant-select-tree-node-selected]': `selectMode && isSelected`,\n    '[class.ant-tree-node-content-wrapper]': `!selectMode`,\n    '[class.ant-tree-node-content-wrapper-open]': `!selectMode && isSwitcherOpen`,\n    '[class.ant-tree-node-content-wrapper-close]': `!selectMode && isSwitcherClose`,\n    '[class.ant-tree-node-selected]': `!selectMode && isSelected`\n  }\n})\nexport class NzTreeNodeTitleComponent implements OnChanges {\n  @Input() searchValue!: string;\n  @Input() treeTemplate: TemplateRef<{ $implicit: NzTreeNode; origin: NzTreeNodeOptions }> | null = null;\n  @Input() draggable!: boolean;\n  @Input() showIcon!: boolean;\n  @Input() selectMode = false;\n  @Input() context!: NzTreeNode;\n  @Input() icon!: string;\n  @Input() title!: string;\n  @Input() isLoading!: boolean;\n  @Input() isSelected!: boolean;\n  @Input() isDisabled!: boolean;\n  @Input() isMatched!: boolean;\n  @Input() isExpanded!: boolean;\n  @Input() isLeaf!: boolean;\n  // Drag indicator\n  @Input() showIndicator = true;\n  @Input() dragPosition?: number;\n\n  get canDraggable(): boolean | null {\n    return this.draggable && !this.isDisabled ? true : null;\n  }\n\n  get matchedValue(): string {\n    return this.isMatched ? this.searchValue : '';\n  }\n\n  get isSwitcherOpen(): boolean {\n    return this.isExpanded && !this.isLeaf;\n  }\n\n  get isSwitcherClose(): boolean {\n    return !this.isExpanded && !this.isLeaf;\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { showIndicator, dragPosition } = changes;\n    if (showIndicator || dragPosition) {\n      this.cdr.markForCheck();\n    }\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Host,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  Renderer2,\n  SimpleChange,\n  TemplateRef\n} from '@angular/core';\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport {\n  NzFormatBeforeDropEvent,\n  NzFormatEmitEvent,\n  NzTreeBaseService,\n  NzTreeNode,\n  NzTreeNodeOptions\n} from 'ng-zorro-antd/core/tree';\nimport { BooleanInput } from 'ng-zorro-antd/core/types';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\n\n@Component({\n  selector: 'nz-tree-node[builtin]',\n  exportAs: 'nzTreeBuiltinNode',\n  template: `\n    <nz-tree-indent\n      [nzTreeLevel]=\"nzTreeNode.level\"\n      [nzSelectMode]=\"nzSelectMode\"\n      [nzIsStart]=\"isStart\"\n      [nzIsEnd]=\"isEnd\"\n    ></nz-tree-indent>\n    <nz-tree-node-switcher\n      *ngIf=\"nzShowExpand\"\n      [nzShowExpand]=\"nzShowExpand\"\n      [nzShowLine]=\"nzShowLine\"\n      [nzExpandedIcon]=\"nzExpandedIcon\"\n      [nzSelectMode]=\"nzSelectMode\"\n      [context]=\"nzTreeNode\"\n      [isLeaf]=\"isLeaf\"\n      [isExpanded]=\"isExpanded\"\n      [isLoading]=\"isLoading\"\n      (click)=\"clickExpand($event)\"\n    ></nz-tree-node-switcher>\n    <nz-tree-node-checkbox\n      builtin\n      *ngIf=\"nzCheckable\"\n      (click)=\"clickCheckBox($event)\"\n      [nzSelectMode]=\"nzSelectMode\"\n      [isChecked]=\"isChecked\"\n      [isHalfChecked]=\"isHalfChecked\"\n      [isDisabled]=\"isDisabled\"\n      [isDisableCheckbox]=\"isDisableCheckbox\"\n    ></nz-tree-node-checkbox>\n    <nz-tree-node-title\n      [icon]=\"icon\"\n      [title]=\"title\"\n      [isLoading]=\"isLoading\"\n      [isSelected]=\"isSelected\"\n      [isDisabled]=\"isDisabled\"\n      [isMatched]=\"isMatched\"\n      [isExpanded]=\"isExpanded\"\n      [isLeaf]=\"isLeaf\"\n      [searchValue]=\"nzSearchValue\"\n      [treeTemplate]=\"nzTreeTemplate\"\n      [draggable]=\"nzDraggable\"\n      [showIcon]=\"nzShowIcon\"\n      [selectMode]=\"nzSelectMode\"\n      [context]=\"nzTreeNode\"\n      [showIndicator]=\"showIndicator\"\n      [dragPosition]=\"dragPos\"\n      (dblclick)=\"dblClick($event)\"\n      (click)=\"clickSelect($event)\"\n      (contextmenu)=\"contextMenu($event)\"\n    ></nz-tree-node-title>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  host: {\n    '[class.ant-select-tree-treenode]': `nzSelectMode`,\n    '[class.ant-select-tree-treenode-disabled]': `nzSelectMode && isDisabled`,\n    '[class.ant-select-tree-treenode-switcher-open]': `nzSelectMode && isSwitcherOpen`,\n    '[class.ant-select-tree-treenode-switcher-close]': `nzSelectMode && isSwitcherClose`,\n    '[class.ant-select-tree-treenode-checkbox-checked]': `nzSelectMode && isChecked`,\n    '[class.ant-select-tree-treenode-checkbox-indeterminate]': `nzSelectMode && isHalfChecked`,\n    '[class.ant-select-tree-treenode-selected]': `nzSelectMode && isSelected`,\n    '[class.ant-select-tree-treenode-loading]': `nzSelectMode && isLoading`,\n    '[class.ant-tree-treenode]': `!nzSelectMode`,\n    '[class.ant-tree-treenode-disabled]': `!nzSelectMode && isDisabled`,\n    '[class.ant-tree-treenode-switcher-open]': `!nzSelectMode && isSwitcherOpen`,\n    '[class.ant-tree-treenode-switcher-close]': `!nzSelectMode && isSwitcherClose`,\n    '[class.ant-tree-treenode-checkbox-checked]': `!nzSelectMode && isChecked`,\n    '[class.ant-tree-treenode-checkbox-indeterminate]': `!nzSelectMode && isHalfChecked`,\n    '[class.ant-tree-treenode-selected]': `!nzSelectMode && isSelected`,\n    '[class.ant-tree-treenode-loading]': `!nzSelectMode && isLoading`,\n    '[class.dragging]': `draggingKey === nzTreeNode.key`,\n    '[style.display]': 'displayStyle'\n  }\n})\nexport class NzTreeNodeBuiltinComponent implements OnInit, OnChanges, OnDestroy {\n  static ngAcceptInputType_nzShowLine: BooleanInput;\n  static ngAcceptInputType_nzShowExpand: BooleanInput;\n  static ngAcceptInputType_nzCheckable: BooleanInput;\n  static ngAcceptInputType_nzAsyncData: BooleanInput;\n  static ngAcceptInputType_nzHideUnMatched: BooleanInput;\n  static ngAcceptInputType_nzNoAnimation: BooleanInput;\n  static ngAcceptInputType_nzSelectMode: BooleanInput;\n  static ngAcceptInputType_nzShowIcon: BooleanInput;\n\n  /**\n   * for global property\n   */\n  @Input() icon: string = '';\n  @Input() title: string = '';\n  @Input() isLoading: boolean = false;\n  @Input() isSelected: boolean = false;\n  @Input() isDisabled: boolean = false;\n  @Input() isMatched: boolean = false;\n  @Input() isExpanded!: boolean;\n  @Input() isLeaf!: boolean;\n  @Input() isChecked?: boolean;\n  @Input() isHalfChecked?: boolean;\n  @Input() isDisableCheckbox?: boolean;\n  @Input() isSelectable?: boolean;\n  @Input() canHide?: boolean;\n  @Input() isStart: boolean[] = [];\n  @Input() isEnd: boolean[] = [];\n  @Input() nzTreeNode!: NzTreeNode;\n  @Input() @InputBoolean() nzShowLine?: boolean;\n  @Input() @InputBoolean() nzShowExpand?: boolean;\n  @Input() @InputBoolean() nzCheckable?: boolean;\n  @Input() @InputBoolean() nzAsyncData?: boolean;\n  @Input() @InputBoolean() nzHideUnMatched = false;\n  @Input() @InputBoolean() nzNoAnimation = false;\n  @Input() @InputBoolean() nzSelectMode = false;\n  @Input() @InputBoolean() nzShowIcon = false;\n  @Input() nzExpandedIcon?: TemplateRef<{ $implicit: NzTreeNode; origin: NzTreeNodeOptions }>;\n  @Input() nzTreeTemplate: TemplateRef<{ $implicit: NzTreeNode; origin: NzTreeNodeOptions }> | null = null;\n  @Input() nzBeforeDrop?: (confirm: NzFormatBeforeDropEvent) => Observable<boolean>;\n  @Input() nzSearchValue = '';\n  @Input() nzDraggable: boolean = false;\n  @Output() readonly nzClick = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzDblClick = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzContextMenu = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzCheckBoxChange = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzExpandChange = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDragStart = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDragEnter = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDragOver = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDragLeave = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDrop = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDragEnd = new EventEmitter<NzFormatEmitEvent>();\n\n  /**\n   * drag var\n   */\n  destroy$ = new Subject();\n  dragPos = 2;\n  dragPosClass: { [key: string]: string } = {\n    0: 'drag-over',\n    1: 'drag-over-gap-bottom',\n    '-1': 'drag-over-gap-top'\n  };\n  draggingKey: string | null = null;\n  showIndicator = false;\n  /**\n   * default set\n   */\n  get displayStyle(): string {\n    // to hide unmatched nodes\n    return this.nzSearchValue && this.nzHideUnMatched && !this.isMatched && !this.isExpanded && this.canHide\n      ? 'none'\n      : '';\n  }\n\n  get isSwitcherOpen(): boolean {\n    return this.isExpanded && !this.isLeaf;\n  }\n\n  get isSwitcherClose(): boolean {\n    return !this.isExpanded && !this.isLeaf;\n  }\n\n  /**\n   * collapse node\n   *\n   * @param event\n   */\n  clickExpand(event: MouseEvent): void {\n    event.preventDefault();\n    if (!this.isLoading && !this.isLeaf) {\n      // set async state\n      if (this.nzAsyncData && this.nzTreeNode.children.length === 0 && !this.isExpanded) {\n        this.nzTreeNode.isLoading = true;\n      }\n      this.nzTreeNode.setExpanded(!this.isExpanded);\n    }\n    this.nzTreeService.setExpandedNodeList(this.nzTreeNode);\n    const eventNext = this.nzTreeService.formatEvent('expand', this.nzTreeNode, event);\n    this.nzExpandChange.emit(eventNext);\n  }\n\n  clickSelect(event: MouseEvent): void {\n    event.preventDefault();\n    if (this.isSelectable && !this.isDisabled) {\n      this.nzTreeNode.isSelected = !this.nzTreeNode.isSelected;\n    }\n    this.nzTreeService.setSelectedNodeList(this.nzTreeNode);\n    const eventNext = this.nzTreeService.formatEvent('click', this.nzTreeNode, event);\n    this.nzClick.emit(eventNext);\n  }\n\n  dblClick(event: MouseEvent): void {\n    event.preventDefault();\n    const eventNext = this.nzTreeService.formatEvent('dblclick', this.nzTreeNode, event);\n    this.nzDblClick.emit(eventNext);\n  }\n\n  contextMenu(event: MouseEvent): void {\n    event.preventDefault();\n    const eventNext = this.nzTreeService.formatEvent('contextmenu', this.nzTreeNode, event);\n    this.nzContextMenu.emit(eventNext);\n  }\n\n  /**\n   * check node\n   *\n   * @param event\n   */\n  clickCheckBox(event: MouseEvent): void {\n    event.preventDefault();\n    // return if node is disabled\n    if (this.isDisabled || this.isDisableCheckbox) {\n      return;\n    }\n    this.nzTreeNode.isChecked = !this.nzTreeNode.isChecked;\n    this.nzTreeNode.isHalfChecked = false;\n    this.nzTreeService.setCheckedNodeList(this.nzTreeNode);\n    const eventNext = this.nzTreeService.formatEvent('check', this.nzTreeNode, event);\n    this.nzCheckBoxChange.emit(eventNext);\n  }\n\n  clearDragClass(): void {\n    const dragClass = ['drag-over-gap-top', 'drag-over-gap-bottom', 'drag-over', 'drop-target'];\n    dragClass.forEach(e => {\n      this.renderer.removeClass(this.elementRef.nativeElement, e);\n    });\n  }\n\n  /**\n   * drag event\n   *\n   * @param e\n   */\n  handleDragStart(e: DragEvent): void {\n    try {\n      // ie throw error\n      // firefox-need-it\n      e.dataTransfer!.setData('text/plain', this.nzTreeNode.key!);\n    } catch (error) {\n      // empty\n    }\n    this.nzTreeService.setSelectedNode(this.nzTreeNode);\n    this.draggingKey = this.nzTreeNode.key;\n    const eventNext = this.nzTreeService.formatEvent('dragstart', this.nzTreeNode, e);\n    this.nzOnDragStart.emit(eventNext);\n  }\n\n  handleDragEnter(e: DragEvent): void {\n    e.preventDefault();\n    // reset position\n    this.showIndicator = this.nzTreeNode.key !== this.nzTreeService.getSelectedNode()?.key;\n    this.renderIndicator(2);\n    this.ngZone.run(() => {\n      const eventNext = this.nzTreeService.formatEvent('dragenter', this.nzTreeNode, e);\n      this.nzOnDragEnter.emit(eventNext);\n    });\n  }\n\n  handleDragOver(e: DragEvent): void {\n    e.preventDefault();\n    const dropPosition = this.nzTreeService.calcDropPosition(e);\n    if (this.dragPos !== dropPosition) {\n      this.clearDragClass();\n      this.renderIndicator(dropPosition);\n      // leaf node will pass\n      if (!(this.dragPos === 0 && this.isLeaf)) {\n        this.renderer.addClass(this.elementRef.nativeElement, this.dragPosClass[this.dragPos]);\n        this.renderer.addClass(this.elementRef.nativeElement, 'drop-target');\n      }\n    }\n    const eventNext = this.nzTreeService.formatEvent('dragover', this.nzTreeNode, e);\n    this.nzOnDragOver.emit(eventNext);\n  }\n\n  handleDragLeave(e: DragEvent): void {\n    e.preventDefault();\n    this.renderIndicator(2);\n    this.clearDragClass();\n    const eventNext = this.nzTreeService.formatEvent('dragleave', this.nzTreeNode, e);\n    this.nzOnDragLeave.emit(eventNext);\n  }\n\n  handleDragDrop(e: DragEvent): void {\n    e.preventDefault();\n    e.stopPropagation();\n    this.ngZone.run(() => {\n      this.showIndicator = false;\n      this.clearDragClass();\n      const node = this.nzTreeService.getSelectedNode();\n      if (!node || (node && node.key === this.nzTreeNode.key) || (this.dragPos === 0 && this.isLeaf)) {\n        return;\n      }\n      // pass if node is leafNo\n      const dropEvent = this.nzTreeService.formatEvent('drop', this.nzTreeNode, e);\n      const dragEndEvent = this.nzTreeService.formatEvent('dragend', this.nzTreeNode, e);\n      if (this.nzBeforeDrop) {\n        this.nzBeforeDrop({\n          dragNode: this.nzTreeService.getSelectedNode()!,\n          node: this.nzTreeNode,\n          pos: this.dragPos\n        }).subscribe((canDrop: boolean) => {\n          if (canDrop) {\n            this.nzTreeService.dropAndApply(this.nzTreeNode, this.dragPos);\n          }\n          this.nzOnDrop.emit(dropEvent);\n          this.nzOnDragEnd.emit(dragEndEvent);\n        });\n      } else if (this.nzTreeNode) {\n        this.nzTreeService.dropAndApply(this.nzTreeNode, this.dragPos);\n        this.nzOnDrop.emit(dropEvent);\n      }\n    });\n  }\n\n  handleDragEnd(e: DragEvent): void {\n    e.preventDefault();\n    this.ngZone.run(() => {\n      // if user do not custom beforeDrop\n      if (!this.nzBeforeDrop) {\n        // clear dragging state\n        this.draggingKey = null;\n        const eventNext = this.nzTreeService.formatEvent('dragend', this.nzTreeNode, e);\n        this.nzOnDragEnd.emit(eventNext);\n      }\n    });\n  }\n\n  /**\n   * Listening to dragging events.\n   */\n  handDragEvent(): void {\n    this.ngZone.runOutsideAngular(() => {\n      if (this.nzDraggable) {\n        const nativeElement = this.elementRef.nativeElement;\n        this.destroy$ = new Subject();\n        fromEvent<DragEvent>(nativeElement, 'dragstart')\n          .pipe(takeUntil(this.destroy$))\n          .subscribe((e: DragEvent) => this.handleDragStart(e));\n        fromEvent<DragEvent>(nativeElement, 'dragenter')\n          .pipe(takeUntil(this.destroy$))\n          .subscribe((e: DragEvent) => this.handleDragEnter(e));\n        fromEvent<DragEvent>(nativeElement, 'dragover')\n          .pipe(takeUntil(this.destroy$))\n          .subscribe((e: DragEvent) => this.handleDragOver(e));\n        fromEvent<DragEvent>(nativeElement, 'dragleave')\n          .pipe(takeUntil(this.destroy$))\n          .subscribe((e: DragEvent) => this.handleDragLeave(e));\n        fromEvent<DragEvent>(nativeElement, 'drop')\n          .pipe(takeUntil(this.destroy$))\n          .subscribe((e: DragEvent) => this.handleDragDrop(e));\n        fromEvent<DragEvent>(nativeElement, 'dragend')\n          .pipe(takeUntil(this.destroy$))\n          .subscribe((e: DragEvent) => this.handleDragEnd(e));\n      } else {\n        this.destroy$.next();\n        this.destroy$.complete();\n      }\n    });\n  }\n\n  markForCheck(): void {\n    this.cdr.markForCheck();\n  }\n\n  constructor(\n    public nzTreeService: NzTreeBaseService,\n    private ngZone: NgZone,\n    private renderer: Renderer2,\n    private elementRef: ElementRef<HTMLElement>,\n    private cdr: ChangeDetectorRef,\n    @Host() @Optional() public noAnimation?: NzNoAnimationDirective\n  ) {}\n\n  ngOnInit(): void {\n    this.nzTreeNode.component = this;\n\n    this.ngZone.runOutsideAngular(() => {\n      fromEvent(this.elementRef.nativeElement, 'mousedown')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(event => {\n          if (this.nzSelectMode) {\n            event.preventDefault();\n          }\n        });\n    });\n  }\n\n  ngOnChanges(changes: { [propertyName: string]: SimpleChange }): void {\n    const { nzDraggable } = changes;\n    if (nzDraggable) {\n      this.handDragEvent();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  private renderIndicator(dropPosition: number): void {\n    this.ngZone.run(() => {\n      this.showIndicator = dropPosition !== 2;\n      if (this.nzTreeNode.key === this.nzTreeService.getSelectedNode()?.key || (dropPosition === 0 && this.isLeaf)) {\n        return;\n      }\n      this.dragPos = dropPosition;\n      this.cdr.markForCheck();\n    });\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { NzTreeBaseService } from 'ng-zorro-antd/core/tree';\n\n@Injectable()\nexport class NzTreeService extends NzTreeBaseService {\n  constructor() {\n    super();\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  EventEmitter,\n  forwardRef,\n  Host,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  SimpleChange,\n  SkipSelf,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { treeCollapseMotion } from 'ng-zorro-antd/core/animation';\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport {\n  flattenTreeData,\n  NzFormatBeforeDropEvent,\n  NzFormatEmitEvent,\n  NzTreeBase,\n  NzTreeBaseService,\n  NzTreeHigherOrderServiceToken,\n  NzTreeNode,\n  NzTreeNodeKey,\n  NzTreeNodeOptions\n} from 'ng-zorro-antd/core/tree';\nimport { BooleanInput, NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\n\nimport { NzTreeService } from './tree.service';\n\nexport function NzTreeServiceFactory(\n  higherOrderService: NzTreeBaseService,\n  treeService: NzTreeService\n): NzTreeBaseService {\n  return higherOrderService ? higherOrderService : treeService;\n}\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'tree';\n\n@Component({\n  selector: 'nz-tree',\n  exportAs: 'nzTree',\n  animations: [treeCollapseMotion],\n  template: `\n    <div>\n      <input [ngStyle]=\"HIDDEN_STYLE\" />\n    </div>\n    <div class=\"ant-tree-treenode\" [ngStyle]=\"HIDDEN_NODE_STYLE\">\n      <div class=\"ant-tree-indent\">\n        <div class=\"ant-tree-indent-unit\"></div>\n      </div>\n    </div>\n    <div class=\"ant-tree-list\" [class.ant-select-tree-list]=\"nzSelectMode\" style=\"position: relative\">\n      <cdk-virtual-scroll-viewport\n        *ngIf=\"nzVirtualHeight\"\n        [class.ant-select-tree-list-holder-inner]=\"nzSelectMode\"\n        [class.ant-tree-list-holder-inner]=\"!nzSelectMode\"\n        [itemSize]=\"nzVirtualItemSize\"\n        [minBufferPx]=\"nzVirtualMinBufferPx\"\n        [maxBufferPx]=\"nzVirtualMaxBufferPx\"\n        [style.height]=\"nzVirtualHeight\"\n      >\n        <ng-container *cdkVirtualFor=\"let node of nzFlattenNodes; trackBy: trackByFlattenNode\">\n          <ng-template [ngTemplateOutlet]=\"nodeTemplate\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n        </ng-container>\n      </cdk-virtual-scroll-viewport>\n\n      <div\n        *ngIf=\"!nzVirtualHeight\"\n        [class.ant-select-tree-list-holder-inner]=\"nzSelectMode\"\n        [class.ant-tree-list-holder-inner]=\"!nzSelectMode\"\n        [@.disabled]=\"beforeInit || noAnimation?.nzNoAnimation\"\n        [nzNoAnimation]=\"noAnimation?.nzNoAnimation\"\n        [@treeCollapseMotion]=\"nzFlattenNodes.length\"\n      >\n        <ng-container *ngFor=\"let node of nzFlattenNodes; trackBy: trackByFlattenNode\">\n          <ng-template [ngTemplateOutlet]=\"nodeTemplate\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n        </ng-container>\n      </div>\n    </div>\n    <ng-template #nodeTemplate let-treeNode>\n      <nz-tree-node\n        builtin\n        [icon]=\"treeNode.icon\"\n        [title]=\"treeNode.title\"\n        [isLoading]=\"treeNode.isLoading\"\n        [isSelected]=\"treeNode.isSelected\"\n        [isDisabled]=\"treeNode.isDisabled\"\n        [isMatched]=\"treeNode.isMatched\"\n        [isExpanded]=\"treeNode.isExpanded\"\n        [isLeaf]=\"treeNode.isLeaf\"\n        [isStart]=\"treeNode.isStart\"\n        [isEnd]=\"treeNode.isEnd\"\n        [isChecked]=\"treeNode.isChecked\"\n        [isHalfChecked]=\"treeNode.isHalfChecked\"\n        [isDisableCheckbox]=\"treeNode.isDisableCheckbox\"\n        [isSelectable]=\"treeNode.isSelectable\"\n        [canHide]=\"treeNode.canHide\"\n        [nzTreeNode]=\"treeNode\"\n        [nzSelectMode]=\"nzSelectMode\"\n        [nzShowLine]=\"nzShowLine\"\n        [nzExpandedIcon]=\"nzExpandedIcon\"\n        [nzDraggable]=\"nzDraggable\"\n        [nzCheckable]=\"nzCheckable\"\n        [nzShowExpand]=\"nzShowExpand\"\n        [nzAsyncData]=\"nzAsyncData\"\n        [nzSearchValue]=\"nzSearchValue\"\n        [nzHideUnMatched]=\"nzHideUnMatched\"\n        [nzBeforeDrop]=\"nzBeforeDrop\"\n        [nzShowIcon]=\"nzShowIcon\"\n        [nzTreeTemplate]=\"nzTreeTemplate || nzTreeTemplateChild\"\n        (nzExpandChange)=\"eventTriggerChanged($event)\"\n        (nzClick)=\"eventTriggerChanged($event)\"\n        (nzDblClick)=\"eventTriggerChanged($event)\"\n        (nzContextMenu)=\"eventTriggerChanged($event)\"\n        (nzCheckBoxChange)=\"eventTriggerChanged($event)\"\n        (nzOnDragStart)=\"eventTriggerChanged($event)\"\n        (nzOnDragEnter)=\"eventTriggerChanged($event)\"\n        (nzOnDragOver)=\"eventTriggerChanged($event)\"\n        (nzOnDragLeave)=\"eventTriggerChanged($event)\"\n        (nzOnDragEnd)=\"eventTriggerChanged($event)\"\n        (nzOnDrop)=\"eventTriggerChanged($event)\"\n      ></nz-tree-node>\n    </ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    NzTreeService,\n    {\n      provide: NzTreeBaseService,\n      useFactory: NzTreeServiceFactory,\n      deps: [[new SkipSelf(), new Optional(), NzTreeHigherOrderServiceToken], NzTreeService]\n    },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NzTreeComponent),\n      multi: true\n    }\n  ],\n  host: {\n    '[class.ant-select-tree]': `nzSelectMode`,\n    '[class.ant-select-tree-show-line]': `nzSelectMode && nzShowLine`,\n    '[class.ant-select-tree-icon-hide]': `nzSelectMode && !nzShowIcon`,\n    '[class.ant-select-tree-block-node]': `nzSelectMode && nzBlockNode`,\n    '[class.ant-tree]': `!nzSelectMode`,\n    '[class.ant-tree-rtl]': `dir === 'rtl'`,\n    '[class.ant-tree-show-line]': `!nzSelectMode && nzShowLine`,\n    '[class.ant-tree-icon-hide]': `!nzSelectMode && !nzShowIcon`,\n    '[class.ant-tree-block-node]': `!nzSelectMode && nzBlockNode`,\n    '[class.draggable-tree]': `nzDraggable`\n  }\n})\nexport class NzTreeComponent\n  extends NzTreeBase\n  implements OnInit, OnDestroy, ControlValueAccessor, OnChanges, AfterViewInit\n{\n  readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n  static ngAcceptInputType_nzShowIcon: BooleanInput;\n  static ngAcceptInputType_nzHideUnMatched: BooleanInput;\n  static ngAcceptInputType_nzBlockNode: BooleanInput;\n  static ngAcceptInputType_nzExpandAll: BooleanInput;\n  static ngAcceptInputType_nzSelectMode: BooleanInput;\n  static ngAcceptInputType_nzCheckStrictly: BooleanInput;\n  static ngAcceptInputType_nzShowExpand: BooleanInput;\n  static ngAcceptInputType_nzShowLine: BooleanInput;\n  static ngAcceptInputType_nzCheckable: BooleanInput;\n  static ngAcceptInputType_nzAsyncData: BooleanInput;\n  static ngAcceptInputType_nzDraggable: BooleanInput;\n  static ngAcceptInputType_nzMultiple: BooleanInput;\n\n  @Input() @InputBoolean() @WithConfig() nzShowIcon: boolean = false;\n  @Input() @InputBoolean() @WithConfig() nzHideUnMatched: boolean = false;\n  @Input() @InputBoolean() @WithConfig() nzBlockNode: boolean = false;\n  @Input() @InputBoolean() nzExpandAll = false;\n  @Input() @InputBoolean() nzSelectMode = false;\n  @Input() @InputBoolean() nzCheckStrictly = false;\n  @Input() @InputBoolean() nzShowExpand: boolean = true;\n  @Input() @InputBoolean() nzShowLine = false;\n  @Input() @InputBoolean() nzCheckable = false;\n  @Input() @InputBoolean() nzAsyncData = false;\n  @Input() @InputBoolean() nzDraggable: boolean = false;\n  @Input() @InputBoolean() nzMultiple = false;\n  @Input() nzExpandedIcon?: TemplateRef<{ $implicit: NzTreeNode; origin: NzTreeNodeOptions }>;\n  @Input() nzVirtualItemSize = 28;\n  @Input() nzVirtualMaxBufferPx = 500;\n  @Input() nzVirtualMinBufferPx = 28;\n  @Input() nzVirtualHeight: string | null = null;\n  @Input() nzTreeTemplate?: TemplateRef<{ $implicit: NzTreeNode; origin: NzTreeNodeOptions }>;\n  @Input() nzBeforeDrop?: (confirm: NzFormatBeforeDropEvent) => Observable<boolean>;\n  @Input() nzData: NzTreeNodeOptions[] | NzTreeNode[] = [];\n  @Input() nzExpandedKeys: NzTreeNodeKey[] = [];\n  @Input() nzSelectedKeys: NzTreeNodeKey[] = [];\n  @Input() nzCheckedKeys: NzTreeNodeKey[] = [];\n  @Input() nzSearchValue: string = '';\n  @Input() nzSearchFunc?: (node: NzTreeNodeOptions) => boolean;\n  @ContentChild('nzTreeTemplate', { static: true }) nzTreeTemplateChild!: TemplateRef<{\n    $implicit: NzTreeNode;\n    origin: NzTreeNodeOptions;\n  }>;\n  @ViewChild(CdkVirtualScrollViewport, { read: CdkVirtualScrollViewport })\n  cdkVirtualScrollViewport!: CdkVirtualScrollViewport;\n  nzFlattenNodes: NzTreeNode[] = [];\n  beforeInit = true;\n  dir: Direction = 'ltr';\n\n  @Output() readonly nzExpandedKeysChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n  @Output() readonly nzSelectedKeysChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n  @Output() readonly nzCheckedKeysChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n  @Output() readonly nzSearchValueChange = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzClick = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzDblClick = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzContextMenu = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzCheckBoxChange = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzExpandChange = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDragStart = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDragEnter = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDragOver = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDragLeave = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDrop = new EventEmitter<NzFormatEmitEvent>();\n  @Output() readonly nzOnDragEnd = new EventEmitter<NzFormatEmitEvent>();\n\n  HIDDEN_STYLE = {\n    width: 0,\n    height: 0,\n    display: 'flex',\n    overflow: 'hidden',\n    opacity: 0,\n    border: 0,\n    padding: 0,\n    margin: 0\n  };\n\n  HIDDEN_NODE_STYLE = {\n    position: 'absolute',\n    pointerEvents: 'none',\n    visibility: 'hidden',\n    height: 0,\n    overflow: 'hidden'\n  };\n\n  destroy$ = new Subject();\n\n  onChange: (value: NzTreeNode[]) => void = () => null;\n  onTouched: () => void = () => null;\n\n  writeValue(value: NzTreeNode[]): void {\n    this.handleNzData(value);\n  }\n\n  registerOnChange(fn: (_: NzTreeNode[]) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Render all properties of nzTree\n   *\n   * @param changes: all changes from @Input\n   */\n  renderTreeProperties(changes: { [propertyName: string]: SimpleChange }): void {\n    let useDefaultExpandedKeys = false;\n    let expandAll = false;\n    const {\n      nzData,\n      nzExpandedKeys,\n      nzSelectedKeys,\n      nzCheckedKeys,\n      nzCheckStrictly,\n      nzExpandAll,\n      nzMultiple,\n      nzSearchValue\n    } = changes;\n\n    if (nzExpandAll) {\n      useDefaultExpandedKeys = true;\n      expandAll = this.nzExpandAll;\n    }\n\n    if (nzMultiple) {\n      this.nzTreeService.isMultiple = this.nzMultiple;\n    }\n\n    if (nzCheckStrictly) {\n      this.nzTreeService.isCheckStrictly = this.nzCheckStrictly;\n    }\n\n    if (nzData) {\n      this.handleNzData(this.nzData);\n    }\n\n    if (nzCheckedKeys) {\n      this.handleCheckedKeys(this.nzCheckedKeys);\n    }\n\n    if (nzCheckStrictly) {\n      this.handleCheckedKeys(null);\n    }\n\n    if (nzExpandedKeys || nzExpandAll) {\n      useDefaultExpandedKeys = true;\n      this.handleExpandedKeys(expandAll || this.nzExpandedKeys);\n    }\n\n    if (nzSelectedKeys) {\n      this.handleSelectedKeys(this.nzSelectedKeys, this.nzMultiple);\n    }\n\n    if (nzSearchValue) {\n      if (!(nzSearchValue.firstChange && !this.nzSearchValue)) {\n        useDefaultExpandedKeys = false;\n        this.handleSearchValue(nzSearchValue.currentValue, this.nzSearchFunc);\n        this.nzSearchValueChange.emit(this.nzTreeService.formatEvent('search', null, null));\n      }\n    }\n\n    // flatten data\n    const currentExpandedKeys = this.getExpandedNodeList().map(v => v.key);\n    const newExpandedKeys = useDefaultExpandedKeys ? expandAll || this.nzExpandedKeys : currentExpandedKeys;\n    this.handleFlattenNodes(this.nzTreeService.rootNodes, newExpandedKeys);\n  }\n\n  trackByFlattenNode(_: number, node: NzTreeNode): string {\n    return node.key;\n  }\n  // Deal with properties\n  /**\n   * nzData\n   *\n   * @param value\n   */\n  handleNzData(value: NzSafeAny[]): void {\n    if (Array.isArray(value)) {\n      const data = this.coerceTreeNodes(value);\n      this.nzTreeService.initTree(data);\n    }\n  }\n\n  handleFlattenNodes(data: NzTreeNode[], expandKeys: NzTreeNodeKey[] | true = []): void {\n    this.nzTreeService.flattenTreeData(data, expandKeys);\n  }\n\n  handleCheckedKeys(keys: NzTreeNodeKey[] | null): void {\n    this.nzTreeService.conductCheck(keys, this.nzCheckStrictly);\n  }\n\n  handleExpandedKeys(keys: NzTreeNodeKey[] | true = []): void {\n    this.nzTreeService.conductExpandedKeys(keys);\n  }\n\n  handleSelectedKeys(keys: NzTreeNodeKey[], isMulti: boolean): void {\n    this.nzTreeService.conductSelectedKeys(keys, isMulti);\n  }\n\n  handleSearchValue(value: string, searchFunc?: (node: NzTreeNodeOptions) => boolean): void {\n    const dataList = flattenTreeData(this.nzTreeService.rootNodes, true).map(v => v.data);\n    const checkIfMatched = (node: NzTreeNode): boolean => {\n      if (searchFunc) {\n        return searchFunc(node.origin);\n      }\n      return !value || !node.title.toLowerCase().includes(value.toLowerCase()) ? false : true;\n    };\n    dataList.forEach(v => {\n      v.isMatched = checkIfMatched(v);\n      v.canHide = !v.isMatched;\n      if (!v.isMatched) {\n        v.setExpanded(false);\n        this.nzTreeService.setExpandedNodeList(v);\n      } else {\n        // expand\n        this.nzTreeService.expandNodeAllParentBySearch(v);\n      }\n      this.nzTreeService.setMatchedNodeList(v);\n    });\n  }\n\n  /**\n   * Handle emit event\n   *\n   * @param event\n   * handle each event\n   */\n  eventTriggerChanged(event: NzFormatEmitEvent): void {\n    const node = event.node!;\n    switch (event.eventName) {\n      case 'expand':\n        this.renderTree();\n        this.nzExpandChange.emit(event);\n        break;\n      case 'click':\n        this.nzClick.emit(event);\n        break;\n      case 'dblclick':\n        this.nzDblClick.emit(event);\n        break;\n      case 'contextmenu':\n        this.nzContextMenu.emit(event);\n        break;\n      case 'check':\n        // Render checked state with nodes' property `isChecked`\n        this.nzTreeService.setCheckedNodeList(node);\n        if (!this.nzCheckStrictly) {\n          this.nzTreeService.conduct(node);\n        }\n        // Cause check method will rerender list, so we need recover it and next the new event to user\n        const eventNext = this.nzTreeService.formatEvent('check', node, event.event!);\n        this.nzCheckBoxChange.emit(eventNext);\n        break;\n      case 'dragstart':\n        // if node is expanded\n        if (node.isExpanded) {\n          node.setExpanded(!node.isExpanded);\n          this.renderTree();\n        }\n        this.nzOnDragStart.emit(event);\n        break;\n      case 'dragenter':\n        const selectedNode = this.nzTreeService.getSelectedNode();\n        if (selectedNode && selectedNode.key !== node.key && !node.isExpanded && !node.isLeaf) {\n          node.setExpanded(true);\n          this.renderTree();\n        }\n        this.nzOnDragEnter.emit(event);\n        break;\n      case 'dragover':\n        this.nzOnDragOver.emit(event);\n        break;\n      case 'dragleave':\n        this.nzOnDragLeave.emit(event);\n        break;\n      case 'dragend':\n        this.nzOnDragEnd.emit(event);\n        break;\n      case 'drop':\n        this.renderTree();\n        this.nzOnDrop.emit(event);\n        break;\n    }\n  }\n\n  /**\n   * Click expand icon\n   */\n  renderTree(): void {\n    this.handleFlattenNodes(\n      this.nzTreeService.rootNodes,\n      this.getExpandedNodeList().map(v => v.key)\n    );\n    this.cdr.markForCheck();\n  }\n  // Handle emit event end\n\n  constructor(\n    nzTreeService: NzTreeBaseService,\n    public nzConfigService: NzConfigService,\n    private cdr: ChangeDetectorRef,\n    @Optional() private directionality: Directionality,\n    @Host() @Optional() public noAnimation?: NzNoAnimationDirective\n  ) {\n    super(nzTreeService);\n  }\n\n  ngOnInit(): void {\n    this.nzTreeService.flattenNodes$.pipe(takeUntil(this.destroy$)).subscribe(data => {\n      this.nzFlattenNodes = data;\n      this.cdr.markForCheck();\n    });\n\n    this.dir = this.directionality.value;\n    this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n      this.dir = direction;\n      this.cdr.detectChanges();\n    });\n  }\n\n  ngOnChanges(changes: { [propertyName: string]: SimpleChange }): void {\n    this.renderTreeProperties(changes);\n  }\n\n  ngAfterViewInit(): void {\n    this.beforeInit = false;\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzHighlightModule } from 'ng-zorro-antd/core/highlight';\nimport { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { NzTreeDropIndicatorComponent } from './tree-drop-indicator.component';\nimport { NzTreeIndentComponent } from './tree-indent.component';\nimport { NzTreeNodeBuiltinCheckboxComponent } from './tree-node-checkbox.component';\nimport { NzTreeNodeSwitcherComponent } from './tree-node-switcher.component';\nimport { NzTreeNodeTitleComponent } from './tree-node-title.component';\nimport { NzTreeNodeBuiltinComponent } from './tree-node.component';\nimport { NzTreeComponent } from './tree.component';\n\n@NgModule({\n  imports: [\n    BidiModule,\n    CommonModule,\n    NzOutletModule,\n    NzIconModule,\n    NzNoAnimationModule,\n    NzHighlightModule,\n    ScrollingModule\n  ],\n  declarations: [\n    NzTreeComponent,\n    NzTreeNodeBuiltinComponent,\n    NzTreeIndentComponent,\n    NzTreeNodeSwitcherComponent,\n    NzTreeNodeBuiltinCheckboxComponent,\n    NzTreeNodeTitleComponent,\n    NzTreeDropIndicatorComponent\n  ],\n  exports: [NzTreeComponent, NzTreeNodeBuiltinComponent, NzTreeIndentComponent]\n})\nexport class NzTreeModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './tree.module';\nexport * from './tree.component';\nexport * from './tree-node.component';\nexport * from './tree-indent.component';\nexport * from './tree.service';\nexport * from './tree-node-switcher.component';\nexport * from './tree-node-checkbox.component';\nexport * from './tree-node-title.component';\nexport { NzTreeNodeOptions, NzFormatEmitEvent, NzFormatBeforeDropEvent, NzTreeNode } from 'ng-zorro-antd/core/tree';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}