{"version":3,"file":"ng-zorro-antd-cascader.mjs","sources":["../../components/cascader/typings.ts","../../components/cascader/utils.ts","../../components/cascader/cascader-option.component.ts","../../components/cascader/cascader-tree.service.ts","../../components/cascader/cascader.service.ts","../../components/cascader/cascader.component.ts","../../components/cascader/cascader.module.ts","../../components/cascader/public-api.ts","../../components/cascader/ng-zorro-antd-cascader.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 { Observable } from 'rxjs';\n\nimport { NzTreeNode } from 'ng-zorro-antd/core/tree';\nimport { NzSafeAny, NzSizeLDSType } from 'ng-zorro-antd/core/types';\n\nimport { NzCascaderTreeService } from './cascader-tree.service';\n\nexport type NzCascaderExpandTrigger = 'click' | 'hover';\nexport type NzCascaderTriggerType = 'click' | 'hover';\nexport type NzCascaderSize = NzSizeLDSType;\n\nexport type NzCascaderFilter = (searchValue: string, path: NzCascaderOption[]) => boolean;\nexport type NzCascaderSorter = (a: NzCascaderOption[], b: NzCascaderOption[], inputValue: string) => number;\nexport type NzCascaderPlacement = 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';\n\nexport interface NzCascaderOption {\n  value?: NzSafeAny;\n  label?: string;\n  title?: string;\n  disabled?: boolean;\n  loading?: boolean;\n  isLeaf?: boolean;\n  children?: NzCascaderOption[];\n  disableCheckbox?: boolean;\n\n  [key: string]: NzSafeAny;\n}\n\nexport interface NzShowSearchOptions {\n  filter?: NzCascaderFilter;\n  sorter?: NzCascaderSorter;\n}\n\nexport function isShowSearchObject(options: NzShowSearchOptions | boolean): options is NzShowSearchOptions {\n  return typeof options !== 'boolean';\n}\n\n/**\n * To avoid circular dependency, provide an interface of `NzCascaderComponent`\n * for `NzCascaderService`.\n */\nexport interface NzCascaderComponentAsSource {\n  inputValue: string;\n  nzShowSearch: NzShowSearchOptions | boolean;\n  nzLabelProperty: string;\n  nzValueProperty: string;\n  nzChangeOnSelect: boolean;\n  selectedNodes: NzTreeNode[];\n\n  get treeService(): NzCascaderTreeService;\n\n  coerceTreeNodes(value: NzSafeAny[]): NzTreeNode[];\n\n  updateSelectedNodes(): void;\n\n  nzChangeOn?(option: NzCascaderOption, level: number): boolean;\n\n  nzLoadData?(node: NzCascaderOption, index: number): PromiseLike<NzSafeAny> | Observable<NzSafeAny>;\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 { NzTreeNode } from 'ng-zorro-antd/core/tree';\n\nexport function isChildNode(node: NzTreeNode): boolean {\n  return node.isLeaf || !node.children || !node.children.length;\n}\n\nexport function isParentNode(node: NzTreeNode): boolean {\n  return !!node.children && !!node.children.length && !node.isLeaf;\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 } from '@angular/cdk/bidi';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewEncapsulation,\n  booleanAttribute,\n  inject,\n  numberAttribute,\n  ChangeDetectorRef\n} from '@angular/core';\n\nimport { NzHighlightPipe } from 'ng-zorro-antd/core/highlight';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzTreeNode } from 'ng-zorro-antd/core/tree';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { NzCascaderOption } from './typings';\n\n@Component({\n  selector: '[nz-cascader-option]',\n  exportAs: 'nzCascaderOption',\n  imports: [NgTemplateOutlet, NzHighlightPipe, NzIconModule, NzOutletModule],\n  template: `\n    @if (checkable) {\n      <span\n        class=\"ant-cascader-checkbox\"\n        [class.ant-cascader-checkbox-checked]=\"checked\"\n        [class.ant-cascader-checkbox-indeterminate]=\"halfChecked\"\n        [class.ant-cascader-checkbox-disabled]=\"disabled\"\n        (click)=\"onCheckboxClick($event)\"\n      >\n        <span class=\"ant-cascader-checkbox-inner\"></span>\n      </span>\n    }\n\n    @if (optionTemplate) {\n      <ng-template\n        [ngTemplateOutlet]=\"optionTemplate\"\n        [ngTemplateOutletContext]=\"{ $implicit: node.origin, index: columnIndex }\"\n      />\n    } @else {\n      <div\n        class=\"ant-cascader-menu-item-content\"\n        [innerHTML]=\"node.title | nzHighlight: highlightText : 'g' : 'ant-cascader-menu-item-keyword'\"\n      ></div>\n    }\n\n    @if (!node.isLeaf || node.children?.length || node.isLoading) {\n      <div class=\"ant-cascader-menu-item-expand-icon\">\n        @if (node.isLoading) {\n          <nz-icon nzType=\"loading\" />\n        } @else {\n          <ng-container *nzStringTemplateOutlet=\"expandIcon\">\n            <nz-icon [nzType]=\"$any(expandIcon)\" />\n          </ng-container>\n        }\n      </div>\n    }\n  `,\n  host: {\n    class: 'ant-cascader-menu-item ant-cascader-menu-item-expanded',\n    '[attr.title]': 'node.title',\n    '[class.ant-cascader-menu-item-active]': 'activated',\n    '[class.ant-cascader-menu-item-expand]': '!node.isLeaf',\n    '[class.ant-cascader-menu-item-disabled]': 'node.isDisabled'\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\nexport class NzCascaderOptionComponent implements OnInit {\n  private cdr = inject(ChangeDetectorRef);\n\n  @Input() optionTemplate: TemplateRef<NzCascaderOption> | null = null;\n  @Input() node!: NzTreeNode;\n  @Input() activated = false;\n  @Input() highlightText!: string;\n  @Input() nzLabelProperty = 'label';\n  @Input({ transform: numberAttribute }) columnIndex!: number;\n  @Input() expandIcon: string | TemplateRef<void> = '';\n  @Input() dir: Direction = 'ltr';\n  @Input({ transform: booleanAttribute }) checkable?: boolean = false;\n\n  @Output() readonly check = new EventEmitter<void>();\n\n  public readonly nativeElement: HTMLElement = inject(ElementRef).nativeElement;\n\n  ngOnInit(): void {\n    if (this.expandIcon === '' && this.dir === 'rtl') {\n      this.expandIcon = 'left';\n    } else if (this.expandIcon === '') {\n      this.expandIcon = 'right';\n    }\n  }\n\n  get checked(): boolean {\n    return this.node.isChecked;\n  }\n\n  get halfChecked(): boolean {\n    return this.node.isHalfChecked;\n  }\n\n  get disabled(): boolean {\n    return this.node.isDisabled || this.node.isDisableCheckbox;\n  }\n\n  markForCheck(): void {\n    this.cdr.markForCheck();\n  }\n\n  onCheckboxClick(event: MouseEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n    if (!this.checkable) {\n      return;\n    }\n    this.check.emit();\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, NzTreeNode, NzTreeNodeKey } from 'ng-zorro-antd/core/tree';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { arraysEqual, isNotNil } from 'ng-zorro-antd/core/util';\n\nimport { NzCascaderOption } from './typings';\n\ninterface InternalFieldNames {\n  label: string;\n  value: string;\n}\n\n@Injectable()\nexport class NzCascaderTreeService extends NzTreeBaseService {\n  fieldNames: InternalFieldNames = {\n    label: 'label',\n    value: 'value'\n  };\n\n  override treeNodePostProcessor = (node: NzTreeNode): void => {\n    node.key = this.getOptionValue(node);\n    node.title = this.getOptionLabel(node);\n  };\n\n  getOptionValue(node: NzTreeNode): NzSafeAny {\n    return node.origin[this.fieldNames.value || 'value'];\n  }\n\n  getOptionLabel(node: NzTreeNode): string {\n    return node.origin[this.fieldNames.label || 'label'];\n  }\n\n  get children(): NzTreeNode[] {\n    return this.rootNodes;\n  }\n\n  set children(value: Array<NzTreeNode | NzSafeAny>) {\n    this.rootNodes = value.map(v => (v instanceof NzTreeNode ? v : new NzTreeNode(v, null)));\n  }\n\n  /**\n   * Map list of nodes to list of option\n   */\n  toOptions(nodes: NzTreeNode[]): NzCascaderOption[] {\n    return nodes.map(node => node.origin);\n  }\n\n  getAncestorNodeList(node: NzTreeNode | null): NzTreeNode[] {\n    if (!node) {\n      return [];\n    }\n    if (node.parentNode) {\n      return [...this.getAncestorNodeList(node.parentNode), node];\n    }\n    return [node];\n  }\n\n  /**\n   * Render by nzCheckedKeys\n   * When keys equals null, just render with checkStrictly\n   *\n   * @param paths\n   * @param checkStrictly\n   */\n  conductCheckPaths(paths: NzTreeNodeKey[][] | null, checkStrictly: boolean): void {\n    this.checkedNodeList = [];\n    this.halfCheckedNodeList = [];\n    const existsPathList: NzTreeNodeKey[][] = [];\n    const calc = (nodes: NzTreeNode[]): void => {\n      nodes.forEach(node => {\n        if (paths === null) {\n          // render tree if no default checked keys found\n          node.isChecked = !!node.origin.checked;\n        } else {\n          // if node is in checked path\n          const nodePath = this.getAncestorNodeList(node).map(n => this.getOptionValue(n));\n          if (paths.some(keys => arraysEqual(nodePath, keys))) {\n            node.isChecked = true;\n            node.isHalfChecked = false;\n            existsPathList.push(nodePath);\n          } else {\n            node.isChecked = false;\n            node.isHalfChecked = false;\n          }\n        }\n        if (node.children.length > 0) {\n          calc(node.children);\n        }\n      });\n    };\n    calc(this.rootNodes);\n    this.refreshCheckState(checkStrictly);\n    // handle missing node\n    this.handleMissingNodeList(paths, existsPathList);\n  }\n\n  conductSelectedPaths(paths: NzTreeNodeKey[][]): void {\n    this.selectedNodeList.forEach(node => (node.isSelected = false));\n    this.selectedNodeList = [];\n    const existsPathList: NzTreeNodeKey[][] = [];\n    const calc = (nodes: NzTreeNode[]): boolean =>\n      nodes.every(node => {\n        // if node is in selected path\n        const nodePath = this.getAncestorNodeList(node).map(n => this.getOptionValue(n));\n        if (paths.some(keys => arraysEqual(nodePath, keys))) {\n          node.isSelected = true;\n          this.setSelectedNodeList(node);\n          existsPathList.push(nodePath);\n          return false;\n        } else {\n          node.isSelected = false;\n        }\n        if (node.children.length > 0) {\n          return calc(node.children);\n        }\n        return true;\n      });\n    calc(this.rootNodes);\n    this.handleMissingNodeList(paths, existsPathList);\n  }\n\n  private handleMissingNodeList(paths: NzTreeNodeKey[][] | null, existsPathList: NzTreeNodeKey[][]): void {\n    const missingNodeList = this.getMissingNodeList(paths, existsPathList);\n    missingNodeList.forEach(node => {\n      this.setSelectedNodeList(node);\n    });\n  }\n\n  private getMissingNodeList(paths: NzTreeNodeKey[][] | null, existsPathList: NzTreeNodeKey[][]): NzTreeNode[] {\n    if (!paths) {\n      return [];\n    }\n    return paths\n      .filter(path => !existsPathList.some(keys => arraysEqual(path, keys)))\n      .map(path => this.createMissingNode(path))\n      .filter(isNotNil);\n  }\n\n  private createMissingNode(path: NzTreeNodeKey[]): NzTreeNode | null {\n    if (!path?.length) {\n      return null;\n    }\n\n    const createOption = (key: NzTreeNodeKey): NzSafeAny => {\n      return {\n        [this.fieldNames.value || 'value']: key,\n        [this.fieldNames.label || 'label']: key\n      };\n    };\n\n    let node = new NzTreeNode(createOption(path[0]), null, this);\n\n    for (let i = 1; i < path.length; i++) {\n      const childNode = new NzTreeNode(createOption(path[i]));\n      node.addChildren([childNode]);\n      node = childNode;\n    }\n\n    if (this.isMultiple) {\n      node.isChecked = true;\n      node.isHalfChecked = false;\n    } else {\n      node.isSelected = true;\n    }\n    return node;\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 { DestroyRef, inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\nimport { NzTreeNode, NzTreeNodeOptions } from 'ng-zorro-antd/core/tree';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { isNotNil, wrapIntoObservable } from 'ng-zorro-antd/core/util';\n\nimport { isShowSearchObject, NzCascaderComponentAsSource, NzCascaderFilter, NzCascaderOption } from './typings';\nimport { isChildNode, isParentNode } from './utils';\n\n/**\n * All data is stored and parsed in NzCascaderService.\n */\n@Injectable()\nexport class NzCascaderService {\n  private destroyRef = inject(DestroyRef);\n  /** Activated options in each column. */\n  activatedNodes: NzTreeNode[] = [];\n\n  /** An array to store cascader items arranged in different layers. */\n  columns: NzTreeNode[][] = [];\n\n  /** If user has entered searching mode. */\n  inSearchingMode = false;\n\n  values: NzSafeAny[] = [];\n\n  /**\n   * Emit an event when loading state changes.\n   * Emit true if nzOptions is loading by `nzLoadData`.\n   */\n  readonly $loading = new BehaviorSubject<boolean>(false);\n\n  /**\n   * Emit an event to notify cascader it needs to redraw because activated or\n   * selected options are changed.\n   */\n  readonly $redraw = new Subject<void>();\n\n  /**\n   * Emit an event when an option gets selected.\n   * Emit true if a leaf options is selected.\n   */\n  readonly $nodeSelected = new Subject<NzTreeNode | null>();\n\n  /**\n   * Emit an event to notify cascader it needs to quit searching mode.\n   * Only emit when user do select a searching option.\n   */\n  readonly $quitSearching = new Subject<void>();\n\n  /** To hold columns before entering searching mode. */\n  private columnSnapshot: NzTreeNode[][] = [[]];\n\n  private cascaderComponent!: NzCascaderComponentAsSource;\n\n  private searchOptionPathMap = new Map<NzTreeNode, NzCascaderOption[]>();\n\n  constructor() {\n    this.destroyRef.onDestroy(() => {\n      this.$redraw.complete();\n      this.$quitSearching.complete();\n      this.$nodeSelected.complete();\n      this.$loading.complete();\n      this.searchOptionPathMap.clear();\n    });\n  }\n\n  /** Return cascader options in the first layer. */\n  get nzOptions(): NzCascaderOption[] {\n    return this.cascaderComponent.treeService.toOptions(this.columns[0] || []);\n  }\n\n  /**\n   * Bind cascader component so this service could use inputs.\n   */\n  withComponent(cascaderComponent: NzCascaderComponentAsSource): void {\n    this.cascaderComponent = cascaderComponent;\n  }\n\n  /**\n   * Try to set an option as activated.\n   *\n   * @param node Cascader option node\n   * @param columnIndex Of which column this option is in\n   * @param performSelect Select\n   * @param multiple Multiple mode\n   * @param loadingChildren Try to load children asynchronously.\n   */\n  setNodeActivated(\n    node: NzTreeNode,\n    columnIndex: number,\n    performSelect: boolean = false,\n    multiple: boolean = false,\n    loadingChildren: boolean = true\n  ): void {\n    if (node.isDisabled) {\n      return;\n    }\n\n    this.activatedNodes[columnIndex] = node;\n    this.trackAncestorActivatedNodes(columnIndex);\n    this.dropBehindActivatedNodes(columnIndex);\n\n    if (isParentNode(node)) {\n      // Parent option that has children.\n      this.setColumnData(node.children!, columnIndex + 1);\n    } else if (!node.isLeaf && loadingChildren) {\n      // Parent option that should try to load children asynchronously.\n      this.loadChildren(node, columnIndex);\n    } else if (node.isLeaf) {\n      // Leaf option.\n      this.dropBehindColumns(columnIndex);\n    }\n\n    // Actually perform selection to make an options not only activated but also selected.\n    if (performSelect && node.isSelectable) {\n      this.setNodeSelected(node, columnIndex, multiple);\n    }\n\n    this.$redraw.next();\n  }\n\n  /**\n   * Set an option as selected.\n   * @param node\n   * @param index\n   * @param multiple\n   */\n  setNodeSelected(node: NzTreeNode, index: number, multiple: boolean = false): void {\n    const changeOn = this.cascaderComponent.nzChangeOn;\n    const shouldPerformSelection = (o: NzCascaderOption, i: number): boolean =>\n      typeof changeOn === 'function' ? changeOn(o, i) : false;\n\n    if (\n      multiple ||\n      node.isLeaf ||\n      this.cascaderComponent.nzChangeOnSelect ||\n      shouldPerformSelection(node.origin, index)\n    ) {\n      node.isSelected = true;\n      this.cascaderComponent.treeService.setSelectedNodeList(node, multiple);\n      this.cascaderComponent.updateSelectedNodes();\n      this.$redraw.next();\n      this.$nodeSelected.next(node);\n    }\n  }\n\n  setNodeDeactivatedSinceColumn(column: number): void {\n    this.dropBehindActivatedNodes(column - 1);\n    this.dropBehindColumns(column);\n    this.$redraw.next();\n  }\n\n  /**\n   * Set a searching option as selected, finishing up things.\n   *\n   * @param node\n   * @param multiple\n   */\n  setSearchOptionSelected(node: NzTreeNode, multiple = false): void {\n    this.setNodeSelected(node, node.level, multiple);\n\n    setTimeout(() => {\n      // Reset data and tell UI only to remove input and reset dropdown width style.\n      this.$quitSearching.next();\n      this.$redraw.next();\n    }, 200);\n  }\n\n  /**\n   * Reset node's `title` and `disabled` status and clear `searchOptionPathMap`.\n   */\n  private clearSearchOptions(): void {\n    for (const node of this.searchOptionPathMap.keys()) {\n      node.isDisabled = node.origin.disabled || false;\n      node.title = this.getOptionLabel(node.origin);\n    }\n    this.searchOptionPathMap.clear();\n  }\n\n  /**\n   * Filter cascader options to reset `columns`.\n   *\n   * @param searchValue The string user wants to search.\n   */\n  prepareSearchOptions(searchValue: string): void {\n    const results: NzTreeNode[] = []; // Search results only have one layer.\n    const path: NzTreeNode[] = [];\n    const defaultFilter: NzCascaderFilter = (i, p) =>\n      p.some(o => {\n        const label = this.getOptionLabel(o);\n        return !!label && label.indexOf(i) !== -1;\n      });\n    const showSearch = this.cascaderComponent.nzShowSearch;\n    const filter = isShowSearchObject(showSearch) && showSearch.filter ? showSearch.filter : defaultFilter;\n    const sorter = isShowSearchObject(showSearch) && showSearch.sorter ? showSearch.sorter : null;\n    const loopChild = (node: NzTreeNode, forceDisabled = false): void => {\n      path.push(node);\n      const cPath = this.cascaderComponent.treeService.toOptions(path);\n      if (filter(searchValue, cPath)) {\n        this.searchOptionPathMap.set(node, cPath);\n        node.isDisabled = forceDisabled || node.isDisabled;\n        node.title = cPath.map(p => this.getOptionLabel(p)).join(' / ');\n        results.push(node);\n      }\n      path.pop();\n    };\n    const loopParent = (node: NzTreeNode, forceDisabled = false): void => {\n      const disabled = forceDisabled || node.isDisabled;\n      path.push(node);\n      node.children!.forEach(sNode => {\n        if (!sNode.isLeaf) {\n          loopParent(sNode, disabled);\n        }\n        if (sNode.isLeaf || !sNode.children || !sNode.children.length) {\n          loopChild(sNode, disabled);\n        }\n      });\n      path.pop();\n    };\n\n    if (!this.columnSnapshot.length) {\n      this.columns = [[]];\n      return;\n    }\n\n    this.columnSnapshot[0].forEach(o => (isChildNode(o) ? loopChild(o) : loopParent(o)));\n\n    if (sorter) {\n      results.sort((a, b) => sorter(this.searchOptionPathMap.get(a)!, this.searchOptionPathMap.get(b)!, searchValue));\n    }\n\n    this.columns = [results];\n    this.$redraw.next(); // Search results may be empty, so should redraw.\n  }\n\n  /**\n   * Set searching mode by UI. It deals with things not directly related to UI.\n   *\n   * @param toSearching If this cascader is entering searching mode\n   */\n  setSearchingMode(toSearching: boolean): void {\n    this.inSearchingMode = toSearching;\n\n    if (toSearching) {\n      this.clearSearchOptions(); // if reset nzOptions when searching, should clear searchOptionPathMap\n      this.columnSnapshot = [...this.columns];\n      this.activatedNodes = [];\n    } else {\n      // User quit searching mode without selecting an option.\n      this.clearSearchOptions();\n      this.activatedNodes = [];\n\n      setTimeout(() => {\n        this.columns = [...this.columnSnapshot];\n        if (this.cascaderComponent.selectedNodes.length) {\n          const activatedNode = this.cascaderComponent.selectedNodes[0];\n          const columnIndex = activatedNode.level;\n          this.activatedNodes[columnIndex] = activatedNode;\n          this.trackAncestorActivatedNodes(columnIndex);\n          this.trackAncestorColumnData(columnIndex);\n        }\n        this.$redraw.next();\n      });\n    }\n\n    this.$redraw.next();\n  }\n\n  /**\n   * Clear selected options.\n   */\n  clear(): void {\n    this.values = [];\n    this.activatedNodes = [];\n    this.dropBehindColumns(0);\n    this.$redraw.next();\n    this.$nodeSelected.next(null);\n  }\n\n  getOptionLabel(o: NzCascaderOption): string {\n    return o[this.cascaderComponent.nzLabelProperty || 'label'] as string;\n  }\n\n  getOptionValue(o: NzCascaderOption): NzSafeAny {\n    return o[this.cascaderComponent.nzValueProperty || 'value'];\n  }\n\n  /**\n   * Try to insert options into a column.\n   *\n   * @param nodes Options to insert\n   * @param columnIndex Position\n   */\n  setColumnData(nodes: NzTreeNode[], columnIndex: number): void {\n    this.columns[columnIndex] = nodes;\n    this.dropBehindColumns(columnIndex);\n  }\n\n  /**\n   * Set all columns data according to activate option's path\n   */\n  private trackAncestorColumnData(startIndex: number): void {\n    const node = this.activatedNodes[startIndex];\n    if (!node) {\n      return;\n    }\n\n    this.dropBehindColumns(startIndex);\n    for (let i = 0; i < startIndex; i++) {\n      this.columns[i + 1] = this.activatedNodes[i].children;\n    }\n  }\n\n  /**\n   * Set all ancestor options as activated.\n   */\n  private trackAncestorActivatedNodes(startIndex: number): void {\n    for (let i = startIndex - 1; i >= 0; i--) {\n      if (!this.activatedNodes[i]) {\n        this.activatedNodes[i] = this.activatedNodes[i + 1].parentNode!;\n      }\n    }\n  }\n\n  private dropBehindActivatedNodes(lastReserveIndex: number): void {\n    this.activatedNodes = this.activatedNodes.splice(0, lastReserveIndex + 1);\n  }\n\n  dropBehindColumns(lastReserveIndex: number): void {\n    if (lastReserveIndex < this.columns.length - 1) {\n      this.columns = this.columns.slice(0, lastReserveIndex + 1);\n    }\n  }\n\n  /**\n   * Load children of an option asynchronously.\n   */\n  loadChildren(node: NzTreeNode | null, columnIndex: number, onLoaded?: (options: NzCascaderOption[]) => void): void {\n    const isRoot = columnIndex < 0 || !isNotNil(node);\n    const option: NzCascaderOption = node?.origin || {};\n    const loadFn = this.cascaderComponent.nzLoadData;\n\n    if (loadFn) {\n      // If there isn't any option in columns.\n      this.$loading.next(isRoot);\n\n      if (node) {\n        node.isLoading = true;\n      }\n\n      wrapIntoObservable(loadFn(option, columnIndex))\n        .pipe(\n          finalize(() => {\n            node && (node.isLoading = false);\n            this.$loading.next(false);\n            this.$redraw.next();\n          })\n        )\n        .subscribe({\n          next: () => {\n            if (option.children) {\n              if (!isRoot) {\n                const nodes = option.children.map(o => new NzTreeNode(o as NzTreeNodeOptions, node));\n                node.children = nodes;\n                this.setColumnData(nodes, columnIndex + 1);\n              } else {\n                // If it's root node, we should initialize the tree.\n                const nodes = this.cascaderComponent.coerceTreeNodes(option.children);\n                this.cascaderComponent.treeService.initTree(nodes);\n                this.setColumnData(nodes, 0);\n              }\n              onLoaded?.(option.children);\n            }\n          },\n          error: () => {\n            node && (node.isLeaf = true);\n          }\n        });\n    }\n  }\n\n  isLoaded(index: number): boolean {\n    return !!this.columns[index] && this.columns[index].length > 0;\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 { BACKSPACE, DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n  CdkConnectedOverlay,\n  ConnectedOverlayPositionChange,\n  ConnectionPositionPair,\n  OverlayModule\n} from '@angular/cdk/overlay';\nimport { _getEventTarget } from '@angular/cdk/platform';\nimport { SlicePipe } from '@angular/common';\nimport {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  DestroyRef,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  inject,\n  Input,\n  NgZone,\n  numberAttribute,\n  OnChanges,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n  signal,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n  ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject, merge, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, switchMap, withLatestFrom } from 'rxjs/operators';\n\nimport { NzNoAnimationDirective, slideAnimationEnter, slideAnimationLeave } from 'ng-zorro-antd/core/animation';\nimport { NzConfigKey, onConfigChangeEventForComponent, WithConfig } from 'ng-zorro-antd/core/config';\nimport {\n  NZ_FORM_SIZE,\n  NZ_FORM_VARIANT,\n  NzFormItemFeedbackIconComponent,\n  NzFormNoStatusService,\n  NzFormStatusService\n} from 'ng-zorro-antd/core/form';\nimport { NzStringTemplateOutletDirective } from 'ng-zorro-antd/core/outlet';\nimport {\n  DEFAULT_CASCADER_POSITIONS,\n  getPlacementName,\n  NzOverlayModule,\n  POSITION_MAP,\n  POSITION_TYPE\n} from 'ng-zorro-antd/core/overlay';\nimport { NzTreeBase, NzTreeNode } from 'ng-zorro-antd/core/tree';\nimport {\n  NgClassInterface,\n  NgStyleInterface,\n  NzSafeAny,\n  NzSizeLDSType,\n  NzStatus,\n  NzValidateStatus,\n  NzVariant\n} from 'ng-zorro-antd/core/types';\nimport { fromEventOutsideAngular, getStatusClassNames, isNotNil, toArray } from 'ng-zorro-antd/core/util';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzCascaderI18nInterface, NzI18nService } from 'ng-zorro-antd/i18n';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport {\n  NzSelectClearComponent,\n  NzSelectItemComponent,\n  NzSelectPlaceholderComponent,\n  NzSelectPlacementType,\n  NzSelectSearchComponent\n} from 'ng-zorro-antd/select';\nimport { NZ_SPACE_COMPACT_ITEM_TYPE, NZ_SPACE_COMPACT_SIZE, NzSpaceCompactItemDirective } from 'ng-zorro-antd/space';\n\nimport { NzCascaderOptionComponent } from './cascader-option.component';\nimport { NzCascaderTreeService } from './cascader-tree.service';\nimport { NzCascaderService } from './cascader.service';\nimport {\n  NzCascaderComponentAsSource,\n  NzCascaderExpandTrigger,\n  NzCascaderOption,\n  NzCascaderPlacement,\n  NzCascaderSize,\n  NzCascaderTriggerType,\n  NzShowSearchOptions\n} from './typings';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'cascader';\nconst defaultDisplayRender = (labels: string[]): string => labels.join(' / ');\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  selector: 'nz-cascader, [nz-cascader]',\n  exportAs: 'nzCascader',\n  template: `\n    @if (nzShowInput) {\n      <div #selectContainer class=\"ant-select-selector\">\n        @if (nzPrefix; as prefix) {\n          <div class=\"ant-select-prefix\">\n            <ng-container *nzStringTemplateOutlet=\"prefix\">{{ prefix }}</ng-container>\n          </div>\n        }\n        <span class=\"ant-select-selection-wrap\">\n          @if (nzMultiple) {\n            <div class=\"ant-select-selection-overflow\">\n              @for (node of selectedNodes | slice: 0 : nzMaxTagCount; track node) {\n                <div class=\"ant-select-selection-overflow-item\">\n                  <nz-select-item\n                    deletable\n                    [disabled]=\"nzDisabled\"\n                    [label]=\"nzDisplayWith(getAncestorOptionList(node))\"\n                    (delete)=\"removeSelected(node)\"\n                  />\n                </div>\n              }\n              @if (selectedNodes.length > nzMaxTagCount) {\n                <div class=\"ant-select-selection-overflow-item\">\n                  <nz-select-item [label]=\"'+ ' + (selectedNodes.length - nzMaxTagCount) + ' ...'\" />\n                </div>\n              }\n\n              <div class=\"ant-select-selection-overflow-item ant-select-selection-overflow-item-suffix\">\n                <nz-select-search\n                  [showInput]=\"!!nzShowSearch\"\n                  (isComposingChange)=\"isComposingChange($event)\"\n                  [value]=\"inputValue\"\n                  (valueChange)=\"inputValue = $event\"\n                  [mirrorSync]=\"true\"\n                  [disabled]=\"nzDisabled\"\n                  [autofocus]=\"nzAutoFocus\"\n                  [focusTrigger]=\"menuVisible()\"\n                />\n              </div>\n            </div>\n          } @else {\n            <nz-select-search\n              [showInput]=\"!!nzShowSearch\"\n              (isComposingChange)=\"isComposingChange($event)\"\n              [value]=\"inputValue\"\n              (valueChange)=\"inputValue = $event\"\n              [mirrorSync]=\"false\"\n              [disabled]=\"nzDisabled\"\n              [autofocus]=\"nzAutoFocus\"\n              [focusTrigger]=\"menuVisible()\"\n            />\n\n            @if (showLabelRender) {\n              <nz-select-item\n                [disabled]=\"nzDisabled\"\n                [label]=\"labelRenderText\"\n                [contentTemplateOutlet]=\"isLabelRenderTemplate ? nzLabelRender : null\"\n                [contentTemplateOutletContext]=\"labelRenderContext\"\n              />\n            }\n          }\n\n          @if (showPlaceholder) {\n            <nz-select-placeholder\n              [placeholder]=\"nzPlaceHolder || locale?.placeholder!\"\n              [style.display]=\"inputValue || isComposing ? 'none' : 'block'\"\n            />\n          }\n        </span>\n      </div>\n\n      @if (nzShowArrow) {\n        <span class=\"ant-select-arrow\" [class.ant-select-arrow-loading]=\"isLoading\">\n          @if (!isLoading) {\n            <nz-icon [nzType]=\"$any(nzSuffixIcon)\" [class.ant-cascader-picker-arrow-expand]=\"menuVisible()\" />\n          } @else {\n            <nz-icon nzType=\"loading\" />\n          }\n\n          @if (hasFeedback && !!status) {\n            <nz-form-item-feedback-icon [status]=\"status\" />\n          }\n        </span>\n      }\n      @if (clearIconVisible) {\n        <nz-select-clear (clear)=\"clearSelection($event)\" />\n      }\n    }\n    <ng-content />\n\n    <ng-template\n      cdkConnectedOverlay\n      nzConnectedOverlay\n      [cdkConnectedOverlayHasBackdrop]=\"nzBackdrop\"\n      [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n      [cdkConnectedOverlayPositions]=\"positions\"\n      cdkConnectedOverlayTransformOriginOn=\".ant-cascader-dropdown\"\n      [cdkConnectedOverlayOpen]=\"menuVisible()\"\n      (overlayOutsideClick)=\"onClickOutside($event)\"\n      (detach)=\"closeMenu()\"\n      (positionChange)=\"onPositionChange($event)\"\n    >\n      <div\n        class=\"ant-select-dropdown ant-cascader-dropdown\"\n        [class.ant-select-dropdown-placement-bottomLeft]=\"dropdownPosition === 'bottomLeft'\"\n        [class.ant-select-dropdown-placement-bottomRight]=\"dropdownPosition === 'bottomRight'\"\n        [class.ant-select-dropdown-placement-topLeft]=\"dropdownPosition === 'topLeft'\"\n        [class.ant-select-dropdown-placement-topRight]=\"dropdownPosition === 'topRight'\"\n        [class.ant-cascader-dropdown-rtl]=\"dir === 'rtl'\"\n        [animate.enter]=\"cascaderAnimationEnter()\"\n        [animate.leave]=\"cascaderAnimationLeave()\"\n        [nzNoAnimation]=\"noAnimation?.nzNoAnimation?.()\"\n        (mouseenter)=\"onTriggerMouseEnter()\"\n        (mouseleave)=\"onTriggerMouseLeave($event)\"\n      >\n        <div\n          #menu\n          class=\"ant-cascader-menus\"\n          [class.ant-cascader-rtl]=\"dir === 'rtl'\"\n          [class.ant-cascader-menus-hidden]=\"!menuVisible()\"\n          [class.ant-cascader-menu-empty]=\"shouldShowEmpty\"\n          [class]=\"nzMenuClassName\"\n          [style]=\"nzMenuStyle\"\n        >\n          @if (shouldShowEmpty) {\n            <ul class=\"ant-cascader-menu\" [style.width]=\"dropdownWidthStyle\" [style.height]=\"dropdownHeightStyle\">\n              <li class=\"ant-cascader-menu-item ant-cascader-menu-item-disabled\">\n                <nz-embed-empty\n                  class=\"ant-cascader-menu-item-content\"\n                  nzComponentName=\"cascader\"\n                  [specificContent]=\"nzNotFoundContent\"\n                />\n              </li>\n            </ul>\n          } @else {\n            @for (options of cascaderService.columns; track options; let i = $index) {\n              <ul\n                class=\"ant-cascader-menu\"\n                role=\"menuitemcheckbox\"\n                [class]=\"nzColumnClassName\"\n                [style.height]=\"dropdownHeightStyle\"\n              >\n                @for (option of options; track option) {\n                  <li\n                    nz-cascader-option\n                    [expandIcon]=\"nzExpandIcon\"\n                    [columnIndex]=\"i\"\n                    [nzLabelProperty]=\"nzLabelProperty\"\n                    [optionTemplate]=\"nzOptionRender\"\n                    [activated]=\"isOptionActivated(option, i)\"\n                    [highlightText]=\"inSearchingMode ? inputValue : ''\"\n                    [node]=\"option\"\n                    [dir]=\"dir\"\n                    [checkable]=\"nzMultiple\"\n                    (mouseenter)=\"onOptionMouseEnter(option, i, $event)\"\n                    (mouseleave)=\"onOptionMouseLeave(option, i, $event)\"\n                    (click)=\"onOptionClick(option, i, $event)\"\n                    (check)=\"onOptionCheck(option, i)\"\n                  ></li>\n                }\n              </ul>\n            }\n          }\n        </div>\n      </div>\n    </ng-template>\n  `,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NzCascaderComponent),\n      multi: true\n    },\n    { provide: NZ_SPACE_COMPACT_ITEM_TYPE, useValue: 'select' },\n    NzCascaderService,\n    NzCascaderTreeService\n  ],\n  host: {\n    '[attr.tabIndex]': '\"0\"',\n    '[class.ant-select-in-form-item]': '!!nzFormStatusService',\n    '[class.ant-select-lg]': 'finalSize() === \"large\"',\n    '[class.ant-select-sm]': 'finalSize() === \"small\"',\n    '[class.ant-select-allow-clear]': 'nzAllowClear',\n    '[class.ant-select-show-arrow]': 'nzShowArrow',\n    '[class.ant-select-show-search]': '!!nzShowSearch',\n    '[class.ant-select-disabled]': 'nzDisabled',\n    '[class.ant-select-borderless]': `finalVariant() === 'borderless'`,\n    '[class.ant-select-filled]': `finalVariant() === 'filled'`,\n    '[class.ant-select-underlined]': `finalVariant() === 'underlined'`,\n    '[class.ant-select-open]': 'menuVisible()',\n    '[class.ant-select-focused]': 'isFocused',\n    '[class.ant-select-multiple]': 'nzMultiple',\n    '[class.ant-select-single]': '!nzMultiple',\n    '[class.ant-select-rtl]': `dir === 'rtl'`\n  },\n  hostDirectives: [NzSpaceCompactItemDirective],\n  imports: [\n    SlicePipe,\n    OverlayModule,\n    FormsModule,\n    NzIconModule,\n    NzEmptyModule,\n    NzFormItemFeedbackIconComponent,\n    NzOverlayModule,\n    NzNoAnimationDirective,\n    NzSelectClearComponent,\n    NzSelectItemComponent,\n    NzSelectPlaceholderComponent,\n    NzSelectSearchComponent,\n    NzCascaderOptionComponent,\n    NzStringTemplateOutletDirective\n  ]\n})\nexport class NzCascaderComponent\n  extends NzTreeBase\n  implements NzCascaderComponentAsSource, OnInit, OnChanges, ControlValueAccessor\n{\n  private ngZone = inject(NgZone);\n  private cdr = inject(ChangeDetectorRef);\n  private i18nService = inject(NzI18nService);\n  private elementRef = inject(ElementRef<HTMLElement>);\n  private renderer = inject(Renderer2);\n  private directionality = inject(Directionality);\n  private destroyRef = inject(DestroyRef);\n\n  readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n  @ViewChild('selectContainer', { static: false }) selectContainer!: ElementRef;\n  protected readonly cascaderAnimationEnter = slideAnimationEnter();\n  protected readonly cascaderAnimationLeave = slideAnimationLeave();\n\n  @ViewChild(NzSelectSearchComponent)\n  set input(inputComponent: NzSelectSearchComponent | undefined) {\n    this.input$.next(inputComponent?.inputElement);\n  }\n\n  get input(): ElementRef<HTMLInputElement> | undefined {\n    return this.input$.getValue();\n  }\n\n  /** Used to store the native `<input type=\"search\" />` element since it might be set asynchronously. */\n  private input$ = new BehaviorSubject<ElementRef<HTMLInputElement> | undefined>(undefined);\n\n  @ViewChild('menu', { static: false }) menu!: ElementRef;\n  @ViewChild(CdkConnectedOverlay, { static: false }) overlay!: CdkConnectedOverlay;\n  @ViewChildren(NzCascaderOptionComponent) cascaderItems!: QueryList<NzCascaderOptionComponent>;\n\n  @Input() nzOpen?: boolean;\n  @Input() nzOptions: NzCascaderOption[] | null = [];\n  @Input() nzOptionRender: TemplateRef<{ $implicit: NzCascaderOption; index: number }> | null = null;\n  @Input({ transform: booleanAttribute }) nzShowInput = true;\n  @Input({ transform: booleanAttribute }) nzShowArrow = true;\n  @Input({ transform: booleanAttribute }) nzAllowClear = true;\n  @Input({ transform: booleanAttribute }) nzAutoFocus = false;\n  @Input({ transform: booleanAttribute }) nzChangeOnSelect = false;\n  @Input({ transform: booleanAttribute }) nzDisabled = false;\n  @Input() nzColumnClassName?: string;\n  @Input() nzExpandTrigger: NzCascaderExpandTrigger = 'click';\n  @Input() nzValueProperty: string = 'value';\n  @Input() nzLabelProperty: string = 'label';\n  @Input() nzLabelRender: TemplateRef<typeof this.labelRenderContext> | null = null;\n  @Input() @WithConfig() nzVariant: NzVariant | undefined = undefined;\n  @Input() nzNotFoundContent?: string | TemplateRef<void>;\n  @Input() @WithConfig() nzSize: NzCascaderSize = 'default';\n  @Input() @WithConfig() nzBackdrop = false;\n  @Input() nzShowSearch: boolean | NzShowSearchOptions = false;\n  @Input() nzPlaceHolder: string = '';\n  @Input() nzMenuClassName?: string;\n  @Input() nzMenuStyle: NgStyleInterface | null = null;\n  /**\n   * Duration in milliseconds before opening the menu when the mouse enters the trigger.\n   * @default 150\n   */\n  @Input({ transform: numberAttribute }) nzMouseLeaveDelay: number = 150;\n  /**\n   * Duration in milliseconds before closing the menu when the mouse leaves the trigger.\n   * @default 150\n   */\n  @Input({ transform: numberAttribute }) nzMouseEnterDelay: number = 150;\n  @Input() nzStatus: NzStatus = '';\n  @Input({ transform: booleanAttribute }) nzMultiple: boolean = false;\n  @Input() nzMaxTagCount: number = Infinity;\n  @Input() nzPlacement: NzCascaderPlacement = 'bottomLeft';\n\n  @Input() nzTriggerAction: NzCascaderTriggerType | NzCascaderTriggerType[] = ['click'] as NzCascaderTriggerType[];\n  @Input() nzChangeOn?: (option: NzCascaderOption, level: number) => boolean;\n  @Input() nzLoadData?: (node: NzCascaderOption, index: number) => PromiseLike<NzSafeAny> | Observable<NzSafeAny>;\n  @Input() nzDisplayWith: (nodes: NzCascaderOption[]) => string | undefined = (nodes: NzCascaderOption[]) => {\n    return defaultDisplayRender(nodes.map(n => this.cascaderService.getOptionLabel(n!)));\n  };\n  // TODO: RTL\n  @Input() nzPrefix: string | TemplateRef<void> | null = null;\n  @Input() nzSuffixIcon: string | TemplateRef<void> = 'down';\n  @Input() nzExpandIcon: string | TemplateRef<void> = '';\n\n  get treeService(): NzCascaderTreeService {\n    return this.nzTreeService as NzCascaderTreeService;\n  }\n\n  @Output() readonly nzVisibleChange = new EventEmitter<boolean>();\n  @Output() readonly nzSelectionChange = new EventEmitter<NzCascaderOption[]>();\n  @Output() readonly nzRemoved = new EventEmitter<NzCascaderOption>();\n  @Output() readonly nzClear = new EventEmitter<void>();\n\n  prefixCls: string = 'ant-select';\n  statusCls: NgClassInterface = {};\n  status: NzValidateStatus = '';\n  hasFeedback: boolean = false;\n\n  /**\n   * If the dropdown should show the empty content.\n   * `true` if there's no options.\n   */\n  shouldShowEmpty: boolean = false;\n\n  el: HTMLElement = this.elementRef.nativeElement;\n  readonly menuVisible = signal(false);\n  isLoading = false;\n  labelRenderText?: string;\n  labelRenderContext = {};\n  onChange = Function.prototype;\n  onTouched = Function.prototype;\n  positions: ConnectionPositionPair[] = [...DEFAULT_CASCADER_POSITIONS];\n\n  /**\n   * Dropdown width in pixel.\n   */\n  dropdownWidthStyle?: string;\n  dropdownHeightStyle: 'auto' | '' = '';\n  dropdownPosition: NzCascaderPlacement = 'bottomLeft';\n  isFocused = false;\n\n  locale!: NzCascaderI18nInterface;\n  dir: Direction = 'ltr';\n\n  isComposing = false;\n\n  protected get overlayOrigin(): ElementRef {\n    return this.elementRef;\n  }\n\n  protected readonly finalSize = computed(() => {\n    if (this.formSize?.()) {\n      return this.formSize();\n    }\n    if (this.compactSize) {\n      return this.compactSize();\n    }\n    return this.size();\n  });\n\n  protected readonly finalVariant = computed(() => this.variant() || this.formVariant?.() || 'outlined');\n\n  private size = signal<NzSizeLDSType>(this.nzSize);\n  private readonly variant = signal<NzVariant | undefined>(this.nzVariant);\n\n  private readonly formSize = inject(NZ_FORM_SIZE, { optional: true });\n  private readonly formVariant = inject(NZ_FORM_VARIANT, { optional: true });\n  private compactSize = inject(NZ_SPACE_COMPACT_SIZE, { optional: true });\n  private inputString = '';\n  private isOpening = false;\n  private delayMenuTimer?: ReturnType<typeof setTimeout>;\n  private delaySelectTimer?: ReturnType<typeof setTimeout>;\n  private isNzDisableFirstChange: boolean = true;\n  selectedNodes: NzTreeNode[] = [];\n\n  get inSearchingMode(): boolean {\n    return this.cascaderService.inSearchingMode;\n  }\n\n  set inputValue(inputValue: string) {\n    this.inputString = inputValue;\n    this.toggleSearchingMode(!!inputValue);\n  }\n\n  get inputValue(): string {\n    return this.inputString;\n  }\n\n  private get hasInput(): boolean {\n    return !!this.inputValue;\n  }\n\n  private get hasValue(): boolean {\n    return this.cascaderService.values && this.cascaderService.values.length > 0;\n  }\n\n  get showLabelRender(): boolean {\n    return !this.hasInput && !!this.selectedNodes.length;\n  }\n\n  get showPlaceholder(): boolean {\n    return !(this.hasInput || this.hasValue);\n  }\n\n  get clearIconVisible(): boolean {\n    return this.nzAllowClear && !this.nzDisabled && (this.hasValue || this.hasInput);\n  }\n\n  get isLabelRenderTemplate(): boolean {\n    return !!this.nzLabelRender;\n  }\n\n  private get openControlled(): boolean {\n    return this.nzOpen !== undefined;\n  }\n\n  noAnimation = inject(NzNoAnimationDirective, { host: true, optional: true });\n  nzFormStatusService = inject(NzFormStatusService, { optional: true });\n  private nzFormNoStatusService = inject(NzFormNoStatusService, { optional: true });\n  public cascaderService = inject(NzCascaderService);\n\n  constructor() {\n    super(inject(NzCascaderTreeService));\n    this.cascaderService.withComponent(this);\n    this.renderer.addClass(this.elementRef.nativeElement, 'ant-select');\n    this.renderer.addClass(this.elementRef.nativeElement, 'ant-cascader');\n\n    this.destroyRef.onDestroy(() => {\n      this.clearDelayMenuTimer();\n      this.clearDelaySelectTimer();\n    });\n\n    onConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME, () => {\n      this.size.set(this.nzSize);\n      this.cdr.markForCheck();\n    });\n  }\n\n  ngOnInit(): void {\n    this.nzFormStatusService?.formStatusChanges\n      .pipe(\n        distinctUntilChanged((pre, cur) => pre.status === cur.status && pre.hasFeedback === cur.hasFeedback),\n        withLatestFrom(this.nzFormNoStatusService ? this.nzFormNoStatusService.noFormStatus : of(false)),\n        map(([{ status, hasFeedback }, noStatus]) => ({ status: noStatus ? '' : status, hasFeedback })),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe(({ status, hasFeedback }) => this.setStatusStyles(status, hasFeedback));\n\n    const srv = this.cascaderService;\n\n    srv.$redraw.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      // These operations would not mutate data.\n      this.checkChildren();\n      this.setDisplayLabel();\n      this.cdr.detectChanges();\n      this.reposition();\n      this.setDropdownStyles();\n    });\n\n    srv.$loading.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(loading => {\n      this.isLoading = loading;\n    });\n\n    srv.$nodeSelected.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(node => {\n      if (!node) {\n        this.emitValue([]);\n        this.nzSelectionChange.emit([]);\n      } else {\n        const shouldClose =\n          // keep menu opened if multiple mode\n          !this.nzMultiple &&\n          (node.isLeaf || (this.nzChangeOnSelect && this.nzExpandTrigger === 'hover')) &&\n          !this.openControlled;\n        if (shouldClose) {\n          this.delaySetMenuVisible(false);\n        }\n        this.nzSelectionChange.emit(this.getAncestorOptionList(node));\n        this.cdr.markForCheck();\n      }\n    });\n\n    srv.$quitSearching.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.inputValue = '';\n      this.dropdownWidthStyle = '';\n    });\n\n    this.i18nService.localeChange\n      .pipe(startWith(), takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.setLocale());\n\n    this.size.set(this.nzSize);\n\n    this.dir = this.directionality.value;\n    this.directionality.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.dir = this.directionality.value;\n      srv.$redraw.next();\n    });\n\n    this.setupSelectionChangeListener();\n    this.setupChangeListener();\n    this.setupKeydownListener();\n    this.setupFocusListener();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzOpen, nzStatus, nzSize, nzPlacement, nzOptions, nzVariant } = changes;\n    if (nzOpen && this.openControlled) {\n      this.setMenuVisible(nzOpen.currentValue);\n    }\n    if (nzOptions) {\n      this.updateOptions();\n    }\n    if (nzStatus) {\n      this.setStatusStyles(this.nzStatus, this.hasFeedback);\n    }\n    if (nzSize) {\n      this.size.set(nzSize.currentValue);\n    }\n    if (nzVariant) {\n      this.variant.set(nzVariant.currentValue);\n    }\n    if (nzPlacement) {\n      const { currentValue } = nzPlacement;\n      this.dropdownPosition = currentValue as NzCascaderPlacement;\n      const listOfPlacement = ['bottomLeft', 'topLeft', 'bottomRight', 'topRight'];\n      if (currentValue && listOfPlacement.includes(currentValue)) {\n        this.positions = [POSITION_MAP[currentValue as POSITION_TYPE]];\n      } else {\n        this.positions = listOfPlacement.map(e => POSITION_MAP[e as POSITION_TYPE]);\n      }\n    }\n  }\n\n  registerOnChange(fn: () => {}): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => {}): void {\n    this.onTouched = fn;\n  }\n\n  writeValue(value: NzSafeAny): void {\n    if (isNotNil(value)) {\n      if (this.nzMultiple) {\n        this.cascaderService.values = toArray(value);\n      } else {\n        this.cascaderService.values = [toArray(value)];\n      }\n      // need clear selected nodes when user set value before updating\n      this.clearSelectedNodes();\n      this.updateSelectedNodes(true, false);\n    } else {\n      this.cascaderService.values = [];\n      this.clearSelectedNodes();\n      this.selectedNodes = [];\n      this.cascaderService.$redraw.next();\n    }\n  }\n\n  private setupSelectionChangeListener(): void {\n    merge(this.nzSelectionChange, this.nzRemoved, this.nzClear)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => {\n        this.updateSelectedNodes();\n        this.emitValue(this.cascaderService.values);\n        this.cascaderService.$redraw.next();\n      });\n  }\n\n  delaySetMenuVisible(visible: boolean, delay: number = 100, setOpening: boolean = false): void {\n    this.clearDelayMenuTimer();\n    if (delay) {\n      if (visible && setOpening) {\n        this.isOpening = true;\n      }\n      this.delayMenuTimer = setTimeout(() => {\n        this.setMenuVisible(visible);\n        this.cdr.detectChanges();\n        this.clearDelayMenuTimer();\n        if (visible) {\n          setTimeout(() => {\n            this.isOpening = false;\n          }, 100);\n        }\n      }, delay);\n    } else {\n      this.setMenuVisible(visible);\n    }\n  }\n\n  setMenuVisible(visible: boolean): void {\n    if (this.nzDisabled || this.menuVisible() === visible) {\n      return;\n    }\n    if (visible) {\n      this.cascaderService.$redraw.next();\n      this.updateSelectedNodes(true);\n      this.scrollToActivatedOptions();\n    } else {\n      this.inputValue = '';\n    }\n\n    this.menuVisible.set(visible);\n    this.nzVisibleChange.emit(visible);\n    this.cdr.detectChanges();\n  }\n\n  private clearDelayMenuTimer(): void {\n    if (this.delayMenuTimer) {\n      clearTimeout(this.delayMenuTimer);\n      this.delayMenuTimer = undefined;\n    }\n  }\n\n  clearSelection(event?: Event): void {\n    if (event) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n\n    this.clearSelectedNodes();\n    this.labelRenderText = '';\n    this.labelRenderContext = {};\n    this.inputValue = '';\n    if (!this.openControlled) {\n      this.setMenuVisible(false);\n    }\n    this.cascaderService.clear();\n    this.nzClear.emit();\n  }\n\n  clearSelectedNodes(): void {\n    this.selectedNodes.forEach(node => {\n      this.removeSelected(node, false);\n    });\n  }\n\n  emitValue(values: NzSafeAny[] | null): void {\n    if (this.nzMultiple) {\n      this.onChange(values);\n    } else {\n      this.onChange(values?.length ? values[0] : []);\n    }\n  }\n\n  /**\n   * @internal\n   */\n  getSubmitValue(): NzSafeAny[] {\n    if (this.nzMultiple) {\n      return this.cascaderService.values;\n    } else {\n      return this.cascaderService.values?.length ? this.cascaderService.values[0] : [];\n    }\n  }\n\n  focus(): void {\n    if (!this.isFocused) {\n      (this.input?.nativeElement || this.el).focus();\n      this.isFocused = true;\n    }\n  }\n\n  blur(): void {\n    if (this.isFocused) {\n      (this.input?.nativeElement || this.el).blur();\n      this.isFocused = false;\n    }\n  }\n\n  handleInputBlur(): void {\n    this.menuVisible() ? this.focus() : this.blur();\n  }\n\n  handleInputFocus(): void {\n    this.focus();\n  }\n\n  isComposingChange(isComposing: boolean): void {\n    this.isComposing = isComposing;\n  }\n\n  @HostListener('click')\n  onTriggerClick(): void {\n    if (this.nzDisabled || this.openControlled) {\n      return;\n    }\n    if (this.nzShowSearch) {\n      this.focus();\n    }\n    if (this.isActionTrigger('click')) {\n      this.delaySetMenuVisible(!this.menuVisible(), 100);\n    }\n    this.onTouched();\n  }\n\n  @HostListener('mouseenter')\n  onTriggerMouseEnter(): void {\n    if (this.nzDisabled || !this.isActionTrigger('hover') || this.openControlled) {\n      return;\n    }\n\n    this.delaySetMenuVisible(true, this.nzMouseEnterDelay, true);\n  }\n\n  @HostListener('mouseleave', ['$event'])\n  onTriggerMouseLeave(event: MouseEvent): void {\n    if (\n      this.nzDisabled ||\n      !this.menuVisible() ||\n      this.isOpening ||\n      !this.isActionTrigger('hover') ||\n      this.openControlled\n    ) {\n      event.preventDefault();\n      return;\n    }\n    const mouseTarget = event.relatedTarget as HTMLElement;\n    const hostEl = this.el;\n    const menuEl = this.menu && (this.menu.nativeElement as HTMLElement);\n    if (hostEl.contains(mouseTarget) || (menuEl && menuEl.contains(mouseTarget))) {\n      return;\n    }\n    this.delaySetMenuVisible(false, this.nzMouseLeaveDelay);\n  }\n\n  onOptionMouseEnter(node: NzTreeNode, columnIndex: number, event: Event): void {\n    event.preventDefault();\n    if (this.nzExpandTrigger === 'hover') {\n      if (!node.isLeaf) {\n        this.delaySetOptionActivated(node, columnIndex, false);\n      } else {\n        this.cascaderService.setNodeDeactivatedSinceColumn(columnIndex);\n      }\n    }\n  }\n\n  onOptionMouseLeave(node: NzTreeNode, _columnIndex: number, event: Event): void {\n    event.preventDefault();\n    if (this.nzExpandTrigger === 'hover' && !node.isLeaf) {\n      this.clearDelaySelectTimer();\n    }\n  }\n\n  /**\n   * Get ancestor options of a node\n   */\n  protected getAncestorOptionList(node: NzTreeNode | null): NzCascaderOption[] {\n    const ancestors = this.treeService.getAncestorNodeList(node);\n    return this.treeService.toOptions(ancestors);\n  }\n\n  updateSelectedNodes(init: boolean = false, updateValue = true): void {\n    const value = this.cascaderService.values;\n    const multiple = this.nzMultiple;\n\n    /**\n     * Update selected nodes and emit value\n     * @param shouldUpdateValue if false, only update selected nodes\n     */\n    const updateNodesAndValue = (shouldUpdateValue: boolean): void => {\n      this.selectedNodes = [...(this.nzMultiple ? this.getCheckedNodeList() : this.getSelectedNodeList())].sort(\n        (a, b) => {\n          const indexA = value.indexOf(a.key);\n          const indexB = value.indexOf(b.key);\n          if (indexA !== -1 && indexB !== -1) {\n            return indexA - indexB;\n          }\n          if (indexA !== -1) {\n            return -1;\n          }\n          if (indexB !== -1) {\n            return 1;\n          }\n          return 0;\n        }\n      );\n      if (shouldUpdateValue) {\n        this.cascaderService.values = this.selectedNodes.map(node =>\n          this.getAncestorOptionList(node).map(o => this.cascaderService.getOptionValue(o))\n        );\n      }\n      this.cascaderService.$redraw.next();\n    };\n\n    if (init) {\n      const defaultValue = value[0];\n      const lastColumnIndex = defaultValue?.length ? defaultValue.length - 1 : 0;\n      this.treeService.fieldNames = {\n        value: this.nzValueProperty,\n        label: this.nzLabelProperty\n      };\n      this.treeService.isMultiple = multiple;\n      this.treeService.isCheckStrictly = false;\n\n      /**\n       * check whether the node is checked or selected according to the value\n       */\n      const checkNodeStates = (): void => {\n        if (multiple) {\n          this.treeService.conductCheckPaths(value, this.treeService.isCheckStrictly);\n        } else {\n          this.treeService.conductSelectedPaths(value);\n        }\n      };\n\n      const initColumnWithIndex = (columnIndex = 0): void => {\n        const activatedOptionSetter = (): void => {\n          const currentValue = defaultValue?.[columnIndex];\n\n          if (!isNotNil(currentValue)) {\n            this.cascaderService.$redraw.next();\n            return;\n          }\n\n          const node =\n            this.cascaderService.columns[columnIndex].find(\n              n => this.cascaderService.getOptionValue(n.origin) === currentValue\n            ) || null;\n\n          if (isNotNil(node)) {\n            this.cascaderService.setNodeActivated(node, columnIndex, false, multiple, false);\n\n            // Load next level options till leaf node\n            if (columnIndex < lastColumnIndex) {\n              initColumnWithIndex(columnIndex + 1);\n            }\n          }\n\n          checkNodeStates();\n          updateNodesAndValue(false);\n        };\n\n        if (this.cascaderService.isLoaded(columnIndex) || !this.nzLoadData) {\n          activatedOptionSetter();\n        } else {\n          const node = this.cascaderService.activatedNodes[columnIndex - 1];\n          this.cascaderService.loadChildren(node, columnIndex - 1, activatedOptionSetter);\n        }\n      };\n\n      // if nzLoadData set, load first level data asynchronously\n      if (this.nzLoadData) {\n        initColumnWithIndex();\n      } else {\n        const nodes = this.coerceTreeNodes(this.nzOptions || []);\n        this.treeService.initTree(nodes);\n        this.cascaderService.setColumnData(nodes, 0);\n        initColumnWithIndex();\n      }\n    }\n\n    updateNodesAndValue(updateValue);\n  }\n\n  onOptionClick(node: NzTreeNode, columnIndex: number, event: Event): void {\n    if (event) {\n      event.preventDefault();\n    }\n    if (node && node.isDisabled) {\n      return;\n    }\n\n    this.el.focus();\n\n    // for multiple mode, click the leaf node can be seen as check action\n    if (this.nzMultiple && node.isLeaf) {\n      this.onOptionCheck(node, columnIndex, true);\n    } else {\n      this.inSearchingMode\n        ? this.cascaderService.setSearchOptionSelected(node, this.nzMultiple)\n        : this.cascaderService.setNodeActivated(node, columnIndex, !this.nzMultiple);\n    }\n  }\n\n  onOptionCheck(node: NzTreeNode, columnIndex: number, performActivate = false): void {\n    if (!this.nzMultiple || node.isDisabled || node.isDisableCheckbox) {\n      return;\n    }\n\n    node.isChecked = !node.isChecked;\n    node.isHalfChecked = false;\n    this.treeService.setCheckedNodeList(node);\n    this.treeService.conduct(node, this.treeService.isCheckStrictly);\n\n    if (this.inSearchingMode) {\n      this.cascaderService.setSearchOptionSelected(node, true);\n    } else if (performActivate) {\n      this.cascaderService.setNodeActivated(node, columnIndex, true, true);\n    } else {\n      // only update selected nodes and not set node activated by default\n      this.cascaderService.setNodeSelected(node, columnIndex, true);\n    }\n  }\n\n  removeSelected(node: NzTreeNode, emitEvent = true): void {\n    node.isSelected = false;\n    node.isChecked = false;\n    if (this.nzMultiple) {\n      this.treeService.conduct(node, this.treeService.isCheckStrictly);\n    }\n    this.treeService.setSelectedNodeList(node, this.nzMultiple);\n    if (emitEvent) {\n      this.nzRemoved.emit(node.origin);\n    }\n  }\n\n  onClickOutside(event: MouseEvent): void {\n    const target = _getEventTarget(event);\n    if (!this.el.contains(target as Node) && !this.openControlled) {\n      this.closeMenu();\n    }\n  }\n\n  onPositionChange(position: ConnectedOverlayPositionChange): void {\n    const placement = getPlacementName(position);\n    this.dropdownPosition = placement as NzSelectPlacementType;\n  }\n\n  private updateOptions(): void {\n    const nodes = this.coerceTreeNodes(this.nzOptions || []);\n    this.treeService.initTree(nodes);\n    this.cascaderService.setColumnData(nodes, 0);\n    this.updateSelectedNodes(true);\n\n    if (this.inSearchingMode) {\n      this.cascaderService.setSearchingMode(this.inSearchingMode);\n      this.cascaderService.prepareSearchOptions(this.inputValue);\n    }\n  }\n\n  private isActionTrigger(action: 'click' | 'hover'): boolean {\n    return typeof this.nzTriggerAction === 'string'\n      ? this.nzTriggerAction === action\n      : this.nzTriggerAction.indexOf(action) !== -1;\n  }\n\n  private onEnter(): void {\n    const columnIndex = Math.max(this.cascaderService.activatedNodes.length - 1, 0);\n    const node = this.cascaderService.activatedNodes[columnIndex];\n    if (node && !node.isDisabled) {\n      this.nzMultiple\n        ? this.onOptionCheck(node, columnIndex, true)\n        : this.inSearchingMode\n          ? this.cascaderService.setSearchOptionSelected(node)\n          : this.cascaderService.setNodeActivated(node, columnIndex, true);\n    }\n  }\n\n  private moveUpOrDown(isUp: boolean): void {\n    const columnIndex = Math.max(this.cascaderService.activatedNodes.length - 1, 0);\n    const activatedNode = this.cascaderService.activatedNodes[columnIndex];\n    const options = this.cascaderService.columns[columnIndex] || [];\n    const length = options.length;\n    let nextIndex = -1;\n    if (!activatedNode) {\n      // Not selected options in this column\n      nextIndex = isUp ? length : -1;\n    } else {\n      nextIndex = options.indexOf(activatedNode);\n    }\n\n    while (true) {\n      nextIndex = isUp ? nextIndex - 1 : nextIndex + 1;\n      if (nextIndex < 0 || nextIndex >= length) {\n        break;\n      }\n      const nextOption = options[nextIndex];\n      if (!nextOption || nextOption.isDisabled || nextOption.isDisableCheckbox) {\n        continue;\n      }\n      this.cascaderService.setNodeActivated(nextOption, columnIndex);\n      break;\n    }\n  }\n\n  private prevColumn(): void {\n    if (this.cascaderService.activatedNodes.length) {\n      this.cascaderService.activatedNodes.pop(); // Remove the last one\n      this.cascaderService.setNodeDeactivatedSinceColumn(this.cascaderService.activatedNodes.length); // collapse menu\n      if (!this.cascaderService.activatedNodes.length) {\n        this.setMenuVisible(false);\n      }\n    }\n  }\n\n  private nextColumn(): void {\n    const length = this.cascaderService.activatedNodes.length;\n    const options = this.cascaderService.columns[length];\n    if (options && options.length) {\n      const nextOpt = options.find(o => !o.isDisabled && !o.isDisableCheckbox);\n      if (nextOpt) {\n        this.cascaderService.setNodeActivated(nextOpt, length);\n      }\n    }\n  }\n\n  private clearDelaySelectTimer(): void {\n    if (this.delaySelectTimer) {\n      clearTimeout(this.delaySelectTimer);\n      this.delaySelectTimer = undefined;\n    }\n  }\n\n  private delaySetOptionActivated(node: NzTreeNode, columnIndex: number, performSelect: boolean): void {\n    this.clearDelaySelectTimer();\n    this.delaySelectTimer = setTimeout(() => {\n      this.cascaderService.setNodeActivated(node, columnIndex, performSelect, this.nzMultiple);\n      this.delaySelectTimer = undefined;\n    }, 150);\n  }\n\n  private toggleSearchingMode(toSearching: boolean): void {\n    if (this.inSearchingMode !== toSearching) {\n      this.cascaderService.setSearchingMode(toSearching);\n    }\n\n    if (this.inSearchingMode) {\n      this.cascaderService.prepareSearchOptions(this.inputValue);\n    }\n  }\n\n  isOptionActivated(node: NzTreeNode, index: number): boolean {\n    return this.cascaderService.activatedNodes[index] === node;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.nzDisabled = (this.isNzDisableFirstChange && this.nzDisabled) || isDisabled;\n    this.isNzDisableFirstChange = false;\n    if (this.nzDisabled) {\n      this.closeMenu();\n    }\n  }\n\n  closeMenu(): void {\n    this.blur();\n    this.clearDelayMenuTimer();\n    this.setMenuVisible(false);\n    // if select none, clear previous state\n    if (!this.hasValue && this.cascaderService.columns.length) {\n      this.cascaderService.dropBehindColumns(0);\n    }\n  }\n\n  /**\n   * Reposition the cascader panel. When a menu opens, the cascader expands\n   * and may exceed the boundary of browser's window.\n   */\n  private reposition(): void {\n    if (this.overlay && this.overlay.overlayRef && this.menuVisible()) {\n      Promise.resolve().then(() => {\n        this.overlay.overlayRef.updatePosition();\n        this.cdr.markForCheck();\n      });\n    }\n  }\n\n  /**\n   * When a cascader options is changed, a child needs to know that it should re-render.\n   */\n  private checkChildren(): void {\n    if (this.cascaderItems) {\n      this.cascaderItems.forEach(item => item.markForCheck());\n    }\n  }\n\n  private setDisplayLabel(): void {\n    if (this.nzMultiple) {\n      return;\n    }\n\n    const node = this.selectedNodes.length ? this.selectedNodes[0] : null;\n    const selectedOptions = this.getAncestorOptionList(node);\n    const labels: string[] = selectedOptions.map(o => this.cascaderService.getOptionLabel(o));\n\n    if (this.isLabelRenderTemplate) {\n      this.labelRenderContext = { labels, selectedOptions };\n    }\n    this.labelRenderText = defaultDisplayRender.call(this, labels);\n  }\n\n  private setDropdownStyles(): void {\n    const firstColumn = this.cascaderService.columns[0];\n\n    this.shouldShowEmpty =\n      (this.inSearchingMode && (!firstColumn || !firstColumn.length)) || // Should show empty when there's no searching result\n      (!(this.nzOptions && this.nzOptions.length) && !this.nzLoadData); // Should show when there's no options and developer does not use nzLoadData\n    this.dropdownHeightStyle = this.shouldShowEmpty ? 'auto' : '';\n\n    if (this.input) {\n      this.dropdownWidthStyle =\n        this.inSearchingMode || this.shouldShowEmpty ? `${this.selectContainer.nativeElement.offsetWidth}px` : '';\n    }\n  }\n\n  private setStatusStyles(status: NzValidateStatus, hasFeedback: boolean): void {\n    // set inner status\n    this.status = status;\n    this.hasFeedback = hasFeedback;\n    this.cdr.markForCheck();\n    // render status if nzStatus is set\n    this.statusCls = getStatusClassNames(this.prefixCls, status, hasFeedback);\n    Object.keys(this.statusCls).forEach(status => {\n      if (this.statusCls[status]) {\n        this.renderer.addClass(this.elementRef.nativeElement, status);\n      } else {\n        this.renderer.removeClass(this.elementRef.nativeElement, status);\n      }\n    });\n  }\n\n  private setLocale(): void {\n    this.locale = this.i18nService.getLocaleData('global');\n    this.cdr.markForCheck();\n  }\n\n  private scrollToActivatedOptions(): void {\n    // The `scrollIntoView` is a native DOM API, which doesn't require Angular to run\n    // a change detection when a promise microtask is resolved.\n    this.ngZone.runOutsideAngular(() => {\n      Promise.resolve().then(() => {\n        // scroll only until option menu view is ready\n        this.cascaderItems\n          .toArray()\n          .filter(e => e.activated)\n          .forEach(e => {\n            e.nativeElement.scrollIntoView({ block: 'start', inline: 'nearest' });\n          });\n      });\n    });\n  }\n\n  private setupChangeListener(): void {\n    this.input$\n      .pipe(\n        switchMap(input => fromEventOutsideAngular(input?.nativeElement, 'change')),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe(event => event.stopPropagation());\n  }\n\n  private setupFocusListener(): void {\n    this.input$\n      .pipe(\n        switchMap(input => fromEventOutsideAngular(input?.nativeElement, 'focus')),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe(() => this.handleInputFocus());\n\n    this.input$\n      .pipe(\n        switchMap(input => fromEventOutsideAngular(input?.nativeElement, 'blur')),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe(() => this.handleInputBlur());\n  }\n\n  private setupKeydownListener(): void {\n    fromEventOutsideAngular<KeyboardEvent>(this.el, 'keydown')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(event => {\n        const keyCode = event.keyCode;\n\n        if (\n          keyCode !== DOWN_ARROW &&\n          keyCode !== UP_ARROW &&\n          keyCode !== LEFT_ARROW &&\n          keyCode !== RIGHT_ARROW &&\n          keyCode !== ENTER &&\n          keyCode !== BACKSPACE &&\n          keyCode !== ESCAPE\n        ) {\n          return;\n        }\n\n        // Press any keys above to reopen menu.\n        if (!this.menuVisible() && keyCode !== BACKSPACE && keyCode !== ESCAPE && !this.openControlled) {\n          // The `setMenuVisible` runs `detectChanges()`, so we don't need to run `markForCheck()` additionally.\n          return this.ngZone.run(() => this.setMenuVisible(true));\n        }\n\n        // Make these keys work as default in searching mode.\n        if (this.inSearchingMode && (keyCode === BACKSPACE || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW)) {\n          return;\n        }\n\n        if (!this.menuVisible()) {\n          return;\n        }\n\n        event.preventDefault();\n\n        this.ngZone.run(() => {\n          // Interact with the component.\n          switch (keyCode) {\n            case DOWN_ARROW:\n              this.moveUpOrDown(false);\n              break;\n            case UP_ARROW:\n              this.moveUpOrDown(true);\n              break;\n            case LEFT_ARROW:\n              if (this.dir === 'rtl') {\n                this.nextColumn();\n              } else {\n                this.prevColumn();\n              }\n              break;\n            case RIGHT_ARROW:\n              if (this.dir === 'rtl') {\n                this.prevColumn();\n              } else {\n                this.nextColumn();\n              }\n              break;\n            case ENTER:\n              this.onEnter();\n              break;\n            case BACKSPACE:\n              this.prevColumn();\n              break;\n          }\n          // `@HostListener`s run `markForCheck()` internally before calling the actual handler so\n          // we call `markForCheck()` to be backwards-compatible.\n          this.cdr.markForCheck();\n        });\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 { NgModule } from '@angular/core';\n\nimport { NzCascaderComponent } from './cascader.component';\n\n@NgModule({\n  imports: [NzCascaderComponent],\n  exports: [NzCascaderComponent]\n})\nexport class NzCascaderModule {}\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 './typings';\nexport * from './utils';\nexport * from './cascader.component';\nexport * from './cascader.module';\nexport * from './cascader.service';\nexport * from './cascader-option.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3"],"mappings":"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"}