{"version":3,"file":"eo-ng-table.mjs","sources":["../../../projects/eo-ng-table/src/lib/persistence.ts","../../../projects/eo-ng-table/src/lib/nz/table-data.service.ts","../../../projects/eo-ng-table/src/lib/nz/table-style.service.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/virtual-scroll-strategy.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/fixed-size-virtual-scroll.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/scroll-dispatcher.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/scrollable.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/virtual-scrollable.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/viewport-ruler.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/virtual-scroll-viewport.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/virtual-scroll-viewport.html","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/virtual-for-of.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/virtual-scrollable-element.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/virtual-scrollable-window.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/scrolling-module.ts","../../../projects/eo-ng-table/src/lib/eo-ng-scrolling/public-api.ts","../../../projects/eo-ng-table/src/lib/nz/table/tr-measure.component.ts","../../../projects/eo-ng-table/src/lib/nz/table/table-fixed-row.component.ts","../../../projects/eo-ng-table/src/lib/nz/table/tbody.component.ts","../../../projects/eo-ng-table/src/lib/nz/table/table-content.component.ts","../../../projects/eo-ng-table/src/lib/nz/table/table-inner-scroll.component.ts","../../../projects/eo-ng-table/src/lib/nz/table/table-virtual-scroll.directive.ts","../../../projects/eo-ng-table/src/lib/nz/table/title-footer.component.ts","../../../projects/eo-ng-table/src/lib/nz/table/table-inner-default.component.ts","../../../projects/eo-ng-table/src/lib/nz/table/table.component.ts","../../../projects/eo-ng-table/src/lib/nz/addon/sorters.component.ts","../../../projects/eo-ng-table/src/lib/nz/addon/filter-trigger.component.ts","../../../projects/eo-ng-table/src/lib/nz/addon/filter.component.ts","../../../projects/eo-ng-table/src/lib/nz/cell/th-addon.component.ts","../../../projects/eo-ng-table/src/lib/nz/cell/cell.directive.ts","../../../projects/eo-ng-table/src/lib/nz/cell/th-measure.directive.ts","../../../projects/eo-ng-table/src/lib/nz/addon/row-indent.directive.ts","../../../projects/eo-ng-table/src/lib/nz/addon/row-expand-button.directive.ts","../../../projects/eo-ng-table/src/lib/nz/cell/td-addon.component.ts","../../../projects/eo-ng-table/src/lib/nz/cell/cell-fixed.directive.ts","../../../projects/eo-ng-table/src/lib/nz/table/tr.directive.ts","../../../projects/eo-ng-table/src/lib/nz/table/thead.component.ts","../../../projects/eo-ng-table/src/lib/nz/styled/ellipsis.directive.ts","../../../projects/eo-ng-table/src/lib/nz/addon/selection.component.ts","../../../projects/eo-ng-table/src/lib/nz/cell/th-selection.component.ts","../../../projects/eo-ng-table/src/lib/table.component.ts","../../../projects/eo-ng-table/src/lib/table.component.html","../../../projects/eo-ng-table/src/lib/table-simple.component.ts","../../../projects/eo-ng-table/src/lib/nz/styled/align.directive.ts","../../../projects/eo-ng-table/src/lib/nz/styled/word-break.directive.ts","../../../projects/eo-ng-table/src/lib/nz/table/tr-expand.directive.ts","../../../projects/eo-ng-table/src/lib/nz/table.module.ts","../../../projects/eo-ng-table/src/lib/table.module.ts","../../../projects/eo-ng-table/src/public-api.ts","../../../projects/eo-ng-table/src/eo-ng-table.ts"],"sourcesContent":["// {\n//   'api-table': {\n//     'status': 40,\n//     'tags': 200\n//   }\n// }\n\nconst CACHE_KEY = \"TableColPersistence\";\n\ninterface StorageInfo {\n  [key: keyof any]: PersistenceInfo;\n}\n\ninterface PersistenceInfo {\n  [key: keyof any]: number;\n}\n\nexport class ColPersistence {\n  tableKey: string;\n  storage?: StorageInfo;\n\n  get persistence(): PersistenceInfo | undefined {\n    if (this.storage && this.tableKey && !this.storage?.[this.tableKey]) {\n      this.storage[this.tableKey] = {};\n    }\n    return this.storage?.[this.tableKey];\n  }\n\n  constructor(tableKey: string) {\n    this.tableKey = tableKey;\n    try {\n      this.storage = JSON.parse(window.localStorage.getItem(CACHE_KEY) || \"{}\");\n    } catch (err) {\n      console.warn(err);\n    }\n  }\n\n  /**\n   * @param colKey 列标识\n   * @param colWidth 列宽\n   */\n  update(colKey: string, colWidth: number) {\n    if (!this.persistence) return;\n    this.persistence[colKey] = colWidth;\n    if (this.storage) {\n      this.storage[this.tableKey][colKey] = colWidth;\n    }\n    window.localStorage.setItem(CACHE_KEY, JSON.stringify(this.storage));\n  }\n}\n\nexport function getPersistenceKey(col: { key?: string; title: string }) {\n  return `${col.key ?? \"\"}${col.key ? \"-\" : \"\"}${col.title}`;\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, OnDestroy } from \"@angular/core\";\nimport { BehaviorSubject, combineLatest, Observable, Subject } from \"rxjs\";\nimport {\n  debounceTime,\n  distinctUntilChanged,\n  filter,\n  map,\n  skip,\n  switchMap,\n  takeUntil,\n} from \"rxjs/operators\";\n\nimport {\n  NzTableFilterFn,\n  NzTableFilterValue,\n  NzTableQueryParams,\n  NzTableSortFn,\n  NzTableSortOrder,\n} from \"./table.types\";\n\n@Injectable()\nexport class NzTableDataService<T> implements OnDestroy {\n  private destroy$ = new Subject();\n  private pageIndex$ = new BehaviorSubject<number>(1);\n  private frontPagination$ = new BehaviorSubject<boolean>(true);\n  private pageSize$ = new BehaviorSubject<number>(10);\n  private listOfData$ = new BehaviorSubject<readonly T[]>([]);\n  pageIndexDistinct$ = this.pageIndex$.pipe(distinctUntilChanged());\n  pageSizeDistinct$ = this.pageSize$.pipe(distinctUntilChanged());\n  listOfCalcOperator$ = new BehaviorSubject<\n    Array<{\n      key?: string;\n      sortFn: NzTableSortFn<T> | null | boolean;\n      sortOrder: NzTableSortOrder;\n      filterFn: NzTableFilterFn<T> | null | boolean;\n      filterValue: NzTableFilterValue;\n      sortPriority: number | boolean;\n    }>\n  >([]);\n  queryParams$: Observable<NzTableQueryParams> = combineLatest([\n    this.pageIndexDistinct$,\n    this.pageSizeDistinct$,\n    this.listOfCalcOperator$,\n  ]).pipe(\n    debounceTime(0),\n    skip(1),\n    map(([pageIndex, pageSize, listOfCalc]) => ({\n      pageIndex,\n      pageSize,\n      sort: listOfCalc\n        .filter((item) => item.sortFn)\n        .map((item) => ({\n          key: item.key!,\n          value: item.sortOrder,\n        })),\n      filter: listOfCalc\n        .filter((item) => item.filterFn)\n        .map((item) => ({\n          key: item.key!,\n          value: item.filterValue,\n        })),\n    }))\n  );\n  private listOfDataAfterCalc$ = combineLatest([\n    this.listOfData$,\n    this.listOfCalcOperator$,\n  ]).pipe(\n    map(([listOfData, listOfCalcOperator]) => {\n      let listOfDataAfterCalc = [...listOfData];\n      const listOfFilterOperator = listOfCalcOperator.filter((item) => {\n        const { filterValue, filterFn } = item;\n        const isReset =\n          filterValue === null ||\n          filterValue === undefined ||\n          (Array.isArray(filterValue) && filterValue!.length === 0);\n        return !isReset && typeof filterFn === \"function\";\n      });\n      for (const item of listOfFilterOperator) {\n        const { filterFn, filterValue } = item;\n        listOfDataAfterCalc = listOfDataAfterCalc.filter((data) =>\n          (filterFn as NzTableFilterFn<T>)(filterValue, data)\n        );\n      }\n      const listOfSortOperator = listOfCalcOperator\n        .filter(\n          (item) => item.sortOrder !== null && typeof item.sortFn === \"function\"\n        )\n        .sort((a, b) => +b.sortPriority - +a.sortPriority);\n      if (listOfCalcOperator.length) {\n        listOfDataAfterCalc.sort((record1, record2) => {\n          for (const item of listOfSortOperator) {\n            const { sortFn, sortOrder } = item;\n            if (sortFn && sortOrder) {\n              const compareResult = (sortFn as NzTableSortFn<T>)(\n                record1,\n                record2,\n                sortOrder\n              );\n              if (compareResult !== 0) {\n                return sortOrder === \"ascend\" ? compareResult : -compareResult;\n              }\n            }\n          }\n          return 0;\n        });\n      }\n      return listOfDataAfterCalc;\n    })\n  );\n  private listOfFrontEndCurrentPageData$ = combineLatest([\n    this.pageIndexDistinct$,\n    this.pageSizeDistinct$,\n    this.listOfDataAfterCalc$,\n  ]).pipe(\n    takeUntil(this.destroy$),\n    filter((value) => {\n      const [pageIndex, pageSize, listOfData] = value;\n      const maxPageIndex = Math.ceil(listOfData.length / pageSize) || 1;\n      return pageIndex <= maxPageIndex;\n    }),\n    map(([pageIndex, pageSize, listOfData]) =>\n      listOfData.slice((pageIndex - 1) * pageSize, pageIndex * pageSize)\n    )\n  );\n  listOfCurrentPageData$ = this.frontPagination$.pipe(\n    switchMap((pagination) =>\n      pagination\n        ? this.listOfFrontEndCurrentPageData$\n        : this.listOfDataAfterCalc$\n    )\n  );\n  total$ = this.frontPagination$.pipe(\n    switchMap((pagination) =>\n      pagination ? this.listOfDataAfterCalc$ : this.listOfData$\n    ),\n    map((list) => list.length),\n    distinctUntilChanged()\n  );\n\n  updatePageSize(size: number): void {\n    this.pageSize$.next(size);\n  }\n  updateFrontPagination(pagination: boolean): void {\n    this.frontPagination$.next(pagination);\n  }\n  updatePageIndex(index: number): void {\n    this.pageIndex$.next(index);\n  }\n  updateListOfData(list: readonly T[]): void {\n    this.listOfData$.next(list);\n  }\n  constructor() {}\n  ngOnDestroy(): void {\n    //@ts-ignore\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 { Injectable, TemplateRef } from \"@angular/core\";\nimport { BehaviorSubject, combineLatest, merge, ReplaySubject } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\n\nimport { NzThMeasureDirective } from \"./cell/th-measure.directive\";\n\n@Injectable()\nexport class NzTableStyleService {\n  theadTemplate$ = new ReplaySubject<TemplateRef<NzSafeAny>>(1);\n  hasFixLeft$ = new ReplaySubject<boolean>(1);\n  hasFixRight$ = new ReplaySubject<boolean>(1);\n  hostWidth$ = new ReplaySubject<number>(1);\n  columnCount$ = new ReplaySubject<number>(1);\n  showEmpty$ = new ReplaySubject<boolean>(1);\n  noResult$ = new ReplaySubject<string | TemplateRef<NzSafeAny> | undefined | null>(1);\n  private listOfThWidthConfigPx$ = new BehaviorSubject<\n    ReadonlyArray<string | null>\n  >([]);\n  private tableWidthConfigPx$ = new BehaviorSubject<\n    ReadonlyArray<string | null>\n  >([]);\n  manualWidthConfigPx$ = combineLatest([\n    this.tableWidthConfigPx$,\n    this.listOfThWidthConfigPx$,\n  ]).pipe(\n    map(([widthConfig, listOfWidth]) =>\n      widthConfig.length ? widthConfig : listOfWidth\n    )\n  );\n  private listOfAutoWidthPx$ = new ReplaySubject<readonly string[]>(1);\n  listOfListOfThWidthPx$ = merge(\n    /** init with manual width **/\n    this.manualWidthConfigPx$,\n    combineLatest([this.listOfAutoWidthPx$, this.manualWidthConfigPx$]).pipe(\n      map(([autoWidth, manualWidth]) => {\n        /** use autoWidth until column length match **/\n        if (autoWidth.length === manualWidth.length) {\n          return autoWidth.map((width, index) => {\n            if (width === \"0px\") {\n              return manualWidth[index] || null;\n            } else {\n              return manualWidth[index] || width;\n            }\n          });\n        } else {\n          return manualWidth;\n        }\n      })\n    )\n  );\n  listOfMeasureColumn$ = new ReplaySubject<readonly string[]>(1);\n  listOfListOfThWidth$ = combineLatest([\n    this.listOfAutoWidthPx$,\n    this.manualWidthConfigPx$,\n  ]).pipe(\n    map(([autoWidth, manualWidth]) => {\n      /** use autoWidth until column length match **/\n      if (autoWidth.length === manualWidth.length) {\n        return autoWidth.map((width, index) => {\n          if (width === \"0px\") {\n            return (\n              parseInt((manualWidth[index] || \"100\").replace(\"px\", \"\"), 10) ||\n              100\n            );\n          } else {\n            return (\n              parseInt(\n                (manualWidth[index] || width || \"100\").replace(\"px\", \"\"),\n                10\n              ) || 100\n            );\n          }\n        });\n      } else {\n        return manualWidth.map((width) => {\n          return parseInt((width || \"100\").replace(\"px\", \"\"), 10) || 100;\n        });\n      }\n    })\n  );\n  enableAutoMeasure$ = new ReplaySubject<boolean>(1);\n\n  setTheadTemplate(template: TemplateRef<NzSafeAny>): void {\n    this.theadTemplate$.next(template);\n  }\n\n  setHasFixLeft(hasFixLeft: boolean): void {\n    this.hasFixLeft$.next(hasFixLeft);\n  }\n\n  setHasFixRight(hasFixRight: boolean): void {\n    this.hasFixRight$.next(hasFixRight);\n  }\n\n  setTableWidthConfig(widthConfig: ReadonlyArray<string | null>): void {\n    this.tableWidthConfigPx$.next(widthConfig);\n  }\n\n  setListOfTh(listOfTh: readonly NzThMeasureDirective[]): void {\n    let columnCount = 0;\n    listOfTh.forEach((th) => {\n      columnCount +=\n        (th.colspan && +th.colspan) || (th.colSpan && +th.colSpan) || 1;\n    });\n    const listOfThPx = listOfTh.map((item) => item.nzWidth);\n    this.columnCount$.next(columnCount);\n    this.listOfThWidthConfigPx$.next(listOfThPx);\n  }\n\n  setListOfMeasureColumn(listOfTh: readonly NzThMeasureDirective[]): void {\n    const listOfKeys: string[] = [];\n    listOfTh.forEach((th) => {\n      const length =\n        (th.colspan && +th.colspan) || (th.colSpan && +th.colSpan) || 1;\n      for (let i = 0; i < length; i++) {\n        listOfKeys.push(`measure_key_${i}`);\n      }\n    });\n    this.listOfMeasureColumn$.next(listOfKeys);\n  }\n\n  setListOfAutoWidth(listOfAutoWidth: number[]): void {\n    this.listOfAutoWidthPx$.next(listOfAutoWidth.map((width) => `${width}px`));\n  }\n\n  setShowEmpty(showEmpty: boolean): void {\n    this.showEmpty$.next(showEmpty);\n  }\n\n  setNoResult(noResult: string | TemplateRef<NzSafeAny> | undefined | null): void {\n    this.noResult$.next(noResult);\n  }\n\n  setScroll(scrollX: string | null, scrollY: string | null): void {\n    const enableAutoMeasure = !!(scrollX || scrollY);\n    if (!enableAutoMeasure) {\n      this.setListOfAutoWidth([]);\n    }\n    this.enableAutoMeasure$.next(enableAutoMeasure);\n  }\n\n  constructor() {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {CdkVirtualScrollViewport} from './virtual-scroll-viewport';\n\n/** The injection token used to specify the virtual scrolling strategy. */\nexport const VIRTUAL_SCROLL_STRATEGY = new InjectionToken<VirtualScrollStrategy>(\n  'VIRTUAL_SCROLL_STRATEGY',\n);\n\n/** A strategy that dictates which items should be rendered in the viewport. */\nexport interface VirtualScrollStrategy {\n  /** Emits when the index of the first element visible in the viewport changes. */\n  scrolledIndexChange: Observable<number>;\n\n  /**\n   * Attaches this scroll strategy to a viewport.\n   * @param viewport The viewport to attach this strategy to.\n   */\n  attach(viewport: CdkVirtualScrollViewport): void;\n\n  /** Detaches this scroll strategy from the currently attached viewport. */\n  detach(): void;\n\n  /** Called when the viewport is scrolled (debounced using requestAnimationFrame). */\n  onContentScrolled(): void;\n\n  /** Called when the length of the data changes. */\n  onDataLengthChanged(): void;\n\n  /** Called when the range of items rendered in the DOM has changed. */\n  onContentRendered(): void;\n\n  /** Called when the offset of the rendered items changed. */\n  onRenderedOffsetChanged(): void;\n\n  /**\n   * Scroll to the offset for the given index.\n   * @param index The index of the element to scroll to.\n   * @param behavior The ScrollBehavior to use when scrolling.\n   */\n  scrollToIndex(index: number, behavior: ScrollBehavior): void;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\n\nimport { coerceNumberProperty, NumberInput } from \"@angular/cdk/coercion\";\nimport { Directive, forwardRef, Input, OnChanges } from \"@angular/core\";\nimport { Observable, Subject } from \"rxjs\";\nimport { distinctUntilChanged } from \"rxjs/operators\";\nimport {\n  VIRTUAL_SCROLL_STRATEGY,\n  VirtualScrollStrategy,\n} from \"./virtual-scroll-strategy\";\nimport { CdkVirtualScrollViewport } from \"./virtual-scroll-viewport\";\n\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nexport class FixedSizeVirtualScrollStrategy implements VirtualScrollStrategy {\n  private readonly _scrolledIndexChange = new Subject<number>();\n\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n  scrolledIndexChange: Observable<number> = this._scrolledIndexChange.pipe(\n    distinctUntilChanged()\n  );\n\n  /** The attached viewport. */\n  private _viewport: CdkVirtualScrollViewport | null = null;\n\n  /** The size of the items in the virtually scrolling list. */\n  private _itemSize: number;\n\n  /** The minimum amount of buffer rendered beyond the viewport (in pixels). */\n  private _minBufferPx: number;\n\n  /** The number of buffer items to render beyond the edge of the viewport (in pixels). */\n  private _maxBufferPx: number;\n\n  /**\n   * @param itemSize The size of the items in the virtually scrolling list.\n   * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n   * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n   */\n  constructor(itemSize: number, minBufferPx: number, maxBufferPx: number) {\n    this._itemSize = itemSize;\n    this._minBufferPx = minBufferPx;\n    this._maxBufferPx = maxBufferPx;\n  }\n\n  /**\n   * Attaches this scroll strategy to a viewport.\n   * @param viewport The viewport to attach this strategy to.\n   */\n  attach(viewport: CdkVirtualScrollViewport) {\n    this._viewport = viewport;\n    this._updateTotalContentSize();\n    this._updateRenderedRange();\n  }\n\n  /** Detaches this scroll strategy from the currently attached viewport. */\n  detach() {\n    this._scrolledIndexChange.complete();\n    this._viewport = null;\n  }\n\n  /**\n   * Update the item size and buffer size.\n   * @param itemSize The size of the items in the virtually scrolling list.\n   * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n   * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n   */\n  updateItemAndBufferSize(\n    itemSize: number,\n    minBufferPx: number,\n    maxBufferPx: number\n  ) {\n    if (maxBufferPx < minBufferPx) {\n      throw Error(\n        \"CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx\"\n      );\n    }\n    this._itemSize = itemSize;\n    this._minBufferPx = minBufferPx;\n    this._maxBufferPx = maxBufferPx;\n    this._updateTotalContentSize();\n    this._updateRenderedRange();\n  }\n\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n  onContentScrolled() {\n    this._updateRenderedRange();\n  }\n\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n  onDataLengthChanged() {\n    this._updateTotalContentSize();\n    this._updateRenderedRange();\n  }\n\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n  onContentRendered() {\n    /* no-op */\n  }\n\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n  onRenderedOffsetChanged() {\n    /* no-op */\n  }\n\n  /**\n   * Scroll to the offset for the given index.\n   * @param index The index of the element to scroll to.\n   * @param behavior The ScrollBehavior to use when scrolling.\n   */\n  scrollToIndex(index: number, behavior: ScrollBehavior): void {\n    if (this._viewport) {\n      this._viewport.scrollToOffset(index * this._itemSize, behavior);\n    }\n  }\n\n  /** Update the viewport's total content size. */\n  private _updateTotalContentSize() {\n    if (!this._viewport) {\n      return;\n    }\n\n    this._viewport.setTotalContentSize(\n      this._viewport.getDataLength() * this._itemSize\n    );\n  }\n\n  /** Update the viewport's rendered range. */\n  private _updateRenderedRange() {\n    if (!this._viewport) {\n      return;\n    }\n    this._maxBufferPx = 0;\n    this._minBufferPx = 0;\n    const renderedRange = this._viewport.getRenderedRange();\n    const newRange = { start: renderedRange.start, end: renderedRange.end };\n    const viewportSize = this._viewport.getViewportSize();\n    const dataLength = this._viewport.getDataLength();\n    let scrollOffset = this._viewport.measureScrollOffset();\n    let viewportNodeLength: number = Math.ceil(viewportSize / this._itemSize);\n    // Prevent NaN as result when dividing by zero.\n    let firstVisibleIndex =\n      this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n\n    // If user scrolls to the bottom of the list and data changes to a smaller list\n    if (newRange.end > dataLength) {\n      // We have to recalculate the first visible index based on new data length and viewport size.\n      const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n      const newVisibleIndex = Math.max(\n        0,\n        Math.min(firstVisibleIndex, dataLength - maxVisibleItems)\n      );\n\n      // If first visible index changed we must update scroll offset to handle start/end buffers\n      // Current range must also be adjusted to cover the new position (bottom of new list).\n      if (firstVisibleIndex != newVisibleIndex) {\n        firstVisibleIndex = newVisibleIndex;\n        scrollOffset = newVisibleIndex * this._itemSize;\n        newRange.start = Math.floor(firstVisibleIndex);\n      }\n\n      newRange.end = Math.max(\n        0,\n        Math.min(dataLength, newRange.start + maxVisibleItems)\n      );\n    }\n\n    const startBuffer = scrollOffset - newRange.start * this._itemSize;\n    if (startBuffer < this._minBufferPx && newRange.start != 0) {\n      const expandStart = Math.ceil(\n        (this._maxBufferPx - startBuffer) / this._itemSize\n      );\n      newRange.start = Math.max(0, newRange.start - expandStart);\n      newRange.end = Math.min(\n        dataLength,\n        Math.ceil(\n          firstVisibleIndex +\n            (viewportSize + this._minBufferPx) / this._itemSize\n        )\n      );\n    } else {\n      const endBuffer =\n        newRange.end * this._itemSize - (scrollOffset + viewportSize);\n      if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n        const expandEnd = Math.ceil(\n          (this._maxBufferPx - endBuffer) / this._itemSize\n        );\n        if (expandEnd > 0) {\n          newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n          newRange.start = Math.max(\n            0,\n            Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize)\n          );\n        }\n      }\n    }\n    const wheelDir = this._viewport.getWheel();\n    if (this._viewport.insertDomIn === \"default\") {\n      firstVisibleIndex = Math.floor(firstVisibleIndex);\n      if (wheelDir === \"down\" && firstVisibleIndex > newRange.start) {\n        newRange.start = firstVisibleIndex;\n      }\n      newRange.end = newRange.start + viewportNodeLength;\n      //当超出数据的时候，需要进行这次处理\n      if (newRange.end > dataLength) {\n        newRange.end = dataLength;\n        if (newRange.start > viewportNodeLength)\n          newRange.start = dataLength - viewportNodeLength;\n      }\n      if (newRange.end === renderedRange.end) {\n        //newrange 已经到了 end 了，如果本身数据不一样，需要回滚\n\n        this._viewport.setRenderedContentOffset(\n          newRange.end === dataLength\n            ? dataLength * this._itemSize\n            : scrollOffset,\n          \"to-start\",\n          this._itemSize\n        );\n        return;\n      }\n      this._viewport.setRenderedRange(newRange);\n      this._viewport.setRenderedContentOffset(\n        newRange.end === dataLength\n          ? dataLength * this._itemSize\n          : scrollOffset,\n        \"to-start\",\n        this._itemSize\n      );\n      this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n      return;\n    }\n\n    let { index, offset, trHeight } = this._viewport.getCurrentIndexByScrollTop(\n      wheelDir === \"up\"\n        ? scrollOffset\n        : scrollOffset - renderedRange.start * this._itemSize,\n      this._itemSize,\n      wheelDir === \"up\" ? false : true\n    );\n\n    if (offset == 0 && renderedRange.start === 0) {\n      //往上滚动+没有滚动（待定，是为了初始化）\n      this._viewport.setRenderedRange({\n        start: index,\n        end: index + viewportNodeLength + (index > renderedRange.start ? 1 : 0),\n      });\n      this._viewport.setRenderedContentOffset(\n        newRange.end === dataLength\n          ? dataLength * this._itemSize\n          : scrollOffset,\n        \"to-start\",\n        this._itemSize,\n        offset\n      );\n      this._viewport.setScrollTop(index * this._itemSize + offset); //重新计算 scrolltop\n      this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n      return;\n    }\n    //往下滚动\n    if (wheelDir === \"down\") index += renderedRange.start;\n    // console.log(\n    //   \"setRenderedContentOffset\\ntrHeight：\",\n    //   trHeight,\n    //   \"\\nrenderedRange.start：\",\n    //   renderedRange.start,\n    //   \"\\nindex：\",\n    //   index,\n    //   \"\\nnewRange.start：\",\n    //   newRange.start,\n    //   \"\\noffset：\",\n    //   offset,\n    //   \"\\ndataLength：\",\n    //   dataLength,\n    //   \"\\nnewRange.end：\",\n    //   newRange.end,\n    //   \"\\nscrollOffset：\",\n    //   scrollOffset,\n    //   \"\\nthis._viewport.elementRef.nativeElement.scrollTop：\",\n    //   this._viewport.elementRef.nativeElement.scrollTop,\n    //   \"\\nwheel\",\n    //   this._viewport.getWheel(),\n    //   viewportSize,\n    //   \"\\nnviewportSize：\",\n    //   viewportSize\n    // );\n    if (wheelDir === \"up\") {\n      const end = index + newRange.end - newRange.start;\n      //代表最后一个不能直接去掉，会影响滚动条的弹跳\n      if (end > dataLength || index > renderedRange.start) return;\n\n      this._viewport.setRenderedRange(newRange);\n      this._viewport.setRenderedContentOffset(\n        scrollOffset,\n        \"to-start\",\n        offset > trHeight ? 0 : offset\n      );\n      // this._viewport.setScrollTop(start * this._itemSize - offset) //重新计算 scrolltop\n\n      this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n      return;\n    }\n    if (index < renderedRange.start) return;\n    if (index > newRange.start) {\n      if (\n        index + newRange.end - newRange.start >= dataLength &&\n        newRange.end === dataLength\n      ) {\n        this._viewport.setRenderedRange(newRange);\n        this._viewport.setRenderedContentOffset(\n          newRange.end === dataLength\n            ? dataLength * this._itemSize\n            : scrollOffset,\n          \"to-start\",\n          this._itemSize\n        );\n      }\n      return;\n    }\n    let nextNewRangeEnd = index + viewportNodeLength + (offset > 0 ? 1 : 0);\n    if (nextNewRangeEnd > dataLength) {\n      nextNewRangeEnd = dataLength;\n      index = dataLength - viewportNodeLength;\n    }\n\n    if (\n      renderedRange.start !== index ||\n      nextNewRangeEnd !== renderedRange.end ||\n      trHeight > this._itemSize\n    ) {\n      this._viewport.setRenderedRange({\n        start: index,\n        end: nextNewRangeEnd,\n      });\n    }\n    this._viewport.setRenderedContentOffset(\n      nextNewRangeEnd === dataLength\n        ? dataLength * this._itemSize\n        : scrollOffset,\n      \"to-start\",\n      this._itemSize,\n      nextNewRangeEnd === dataLength ? 0 : offset\n    );\n    this._viewport.setScrollTop(\n      nextNewRangeEnd === dataLength\n        ? scrollOffset\n        : index * this._itemSize + offset\n    ); //重新计算 scrolltop\n\n    this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n  }\n}\n\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n *     `FixedSizeVirtualScrollStrategy` from.\n */\nexport function _fixedSizeVirtualScrollStrategyFactory(\n  fixedSizeDir: CdkFixedSizeVirtualScroll\n) {\n  return fixedSizeDir._scrollStrategy;\n}\n\n/** A virtual scroll strategy that supports fixed-size items. */\n@Directive({\n  selector: \"cdk-virtual-scroll-viewport[itemSize]\",\n  standalone: true,\n  providers: [\n    {\n      provide: VIRTUAL_SCROLL_STRATEGY,\n      useFactory: _fixedSizeVirtualScrollStrategyFactory,\n      deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n    },\n  ],\n})\nexport class CdkFixedSizeVirtualScroll implements OnChanges {\n  /** The size of the items in the list (in pixels). */\n  @Input()\n  get itemSize(): number {\n    return this._itemSize;\n  }\n  set itemSize(value: NumberInput) {\n    this._itemSize = coerceNumberProperty(value);\n  }\n  _itemSize = 20;\n\n  /**\n   * The minimum amount of buffer rendered beyond the viewport (in pixels).\n   * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n   */\n  @Input()\n  get minBufferPx(): number {\n    return this._minBufferPx;\n  }\n  set minBufferPx(value: NumberInput) {\n    this._minBufferPx = coerceNumberProperty(value);\n  }\n  _minBufferPx = 100;\n\n  /**\n   * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n   */\n  @Input()\n  get maxBufferPx(): number {\n    return this._maxBufferPx;\n  }\n  set maxBufferPx(value: NumberInput) {\n    this._maxBufferPx = coerceNumberProperty(value);\n  }\n  _maxBufferPx = 200;\n\n  /** The scroll strategy used by this directive. */\n  _scrollStrategy = new FixedSizeVirtualScrollStrategy(\n    this.itemSize,\n    this.minBufferPx,\n    this.maxBufferPx\n  );\n\n  ngOnChanges() {\n    this._scrollStrategy.updateItemAndBufferSize(\n      this.itemSize,\n      this.minBufferPx,\n      this.maxBufferPx\n    );\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\n\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {Platform} from '@angular/cdk/platform';\nimport {ElementRef, Injectable, NgZone, OnDestroy, Optional, Inject} from '@angular/core';\nimport {fromEvent, of as observableOf, Subject, Subscription, Observable, Observer} from 'rxjs';\nimport {auditTime, filter} from 'rxjs/operators';\nimport {CdkScrollable} from './scrollable';\nimport {DOCUMENT} from '@angular/common';\n\n/** Time in ms to throttle the scrolling events by default. */\nexport const DEFAULT_SCROLL_TIME = 20;\n\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\n@Injectable({providedIn: 'root'})\nexport class ScrollDispatcher implements OnDestroy {\n  /** Used to reference correct document/window */\n  protected _document: Document;\n\n  constructor(\n    private _ngZone: NgZone,\n    private _platform: Platform,\n    @Optional() @Inject(DOCUMENT) document: any,\n  ) {\n    this._document = document;\n  }\n\n  /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n  private readonly _scrolled = new Subject<CdkScrollable | void>();\n\n  /** Keeps track of the global `scroll` and `resize` subscriptions. */\n  _globalSubscription: Subscription | null = null;\n\n  /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n  private _scrolledCount = 0;\n\n  /**\n   * Map of all the scrollable references that are registered with the service and their\n   * scroll event subscriptions.\n   */\n  scrollContainers: Map<CdkScrollable, Subscription> = new Map();\n\n  /**\n   * Registers a scrollable instance with the service and listens for its scrolled events. When the\n   * scrollable is scrolled, the service emits the event to its scrolled observable.\n   * @param scrollable Scrollable instance to be registered.\n   */\n  register(scrollable: CdkScrollable): void {\n    if (!this.scrollContainers.has(scrollable)) {\n      this.scrollContainers.set(\n        scrollable,\n        scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)),\n      );\n    }\n  }\n\n  /**\n   * De-registers a Scrollable reference and unsubscribes from its scroll event observable.\n   * @param scrollable Scrollable instance to be deregistered.\n   */\n  deregister(scrollable: CdkScrollable): void {\n    const scrollableReference = this.scrollContainers.get(scrollable);\n\n    if (scrollableReference) {\n      scrollableReference.unsubscribe();\n      this.scrollContainers.delete(scrollable);\n    }\n  }\n\n  /**\n   * Returns an observable that emits an event whenever any of the registered Scrollable\n   * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n   * to override the default \"throttle\" time.\n   *\n   * **Note:** in order to avoid hitting change detection for every scroll event,\n   * all of the events emitted from this stream will be run outside the Angular zone.\n   * If you need to update any data bindings as a result of a scroll event, you have\n   * to run the callback using `NgZone.run`.\n   */\n  scrolled(auditTimeInMs: number = DEFAULT_SCROLL_TIME): Observable<CdkScrollable | void> {\n    if (!this._platform.isBrowser) {\n      return observableOf<void>();\n    }\n\n    return new Observable((observer: Observer<CdkScrollable | void>) => {\n      if (!this._globalSubscription) {\n        this._addGlobalListener();\n      }\n\n      // In the case of a 0ms delay, use an observable without auditTime\n      // since it does add a perceptible delay in processing overhead.\n      const subscription =\n        auditTimeInMs > 0\n          ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)\n          : this._scrolled.subscribe(observer);\n\n      this._scrolledCount++;\n\n      return () => {\n        subscription.unsubscribe();\n        this._scrolledCount--;\n\n        if (!this._scrolledCount) {\n          this._removeGlobalListener();\n        }\n      };\n    });\n  }\n\n  ngOnDestroy() {\n    this._removeGlobalListener();\n    this.scrollContainers.forEach((_, container) => this.deregister(container));\n    this._scrolled.complete();\n  }\n\n  /**\n   * Returns an observable that emits whenever any of the\n   * scrollable ancestors of an element are scrolled.\n   * @param elementOrElementRef Element whose ancestors to listen for.\n   * @param auditTimeInMs Time to throttle the scroll events.\n   */\n  ancestorScrolled(\n    elementOrElementRef: ElementRef | HTMLElement,\n    auditTimeInMs?: number,\n  ): Observable<CdkScrollable | void> {\n    const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n\n    return this.scrolled(auditTimeInMs).pipe(\n      filter(target => {\n        return !target || ancestors.indexOf(target) > -1;\n      }),\n    );\n  }\n\n  /** Returns all registered Scrollables that contain the provided element. */\n  getAncestorScrollContainers(elementOrElementRef: ElementRef | HTMLElement): CdkScrollable[] {\n    const scrollingContainers: CdkScrollable[] = [];\n\n    this.scrollContainers.forEach((_subscription: Subscription, scrollable: CdkScrollable) => {\n      if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n        scrollingContainers.push(scrollable);\n      }\n    });\n\n    return scrollingContainers;\n  }\n\n  /** Use defaultView of injected document if available or fallback to global window reference */\n  private _getWindow(): Window {\n    return this._document.defaultView || window;\n  }\n\n  /** Returns true if the element is contained within the provided Scrollable. */\n  private _scrollableContainsElement(\n    scrollable: CdkScrollable,\n    elementOrElementRef: ElementRef | HTMLElement,\n  ): boolean {\n    let element: HTMLElement | null = coerceElement(elementOrElementRef);\n    let scrollableElement = scrollable.getElementRef().nativeElement;\n\n    // Traverse through the element parents until we reach null, checking if any of the elements\n    // are the scrollable's element.\n    do {\n      if (element == scrollableElement) {\n        return true;\n      }\n    } while ((element = element!.parentElement));\n\n    return false;\n  }\n\n  /** Sets up the global scroll listeners. */\n  private _addGlobalListener() {\n    this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n      const window = this._getWindow();\n      return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n    });\n  }\n\n  /** Cleans up the global scroll listener. */\n  private _removeGlobalListener() {\n    if (this._globalSubscription) {\n      this._globalSubscription.unsubscribe();\n      this._globalSubscription = null;\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n  getRtlScrollAxisType,\n  RtlScrollAxisType,\n  supportsScrollBehavior,\n} from '@angular/cdk/platform';\nimport {Directive, ElementRef, NgZone, OnDestroy, OnInit, Optional} from '@angular/core';\nimport {fromEvent, Observable, Subject, Observer} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {ScrollDispatcher} from './scroll-dispatcher';\n\nexport type _Without<T> = {[P in keyof T]?: never};\nexport type _XOR<T, U> = (_Without<T> & U) | (_Without<U> & T);\nexport type _Top = {top?: number};\nexport type _Bottom = {bottom?: number};\nexport type _Left = {left?: number};\nexport type _Right = {right?: number};\nexport type _Start = {start?: number};\nexport type _End = {end?: number};\nexport type _XAxis = _XOR<_XOR<_Left, _Right>, _XOR<_Start, _End>>;\nexport type _YAxis = _XOR<_Top, _Bottom>;\n\n/**\n * An extended version of ScrollToOptions that allows expressing scroll offsets relative to the\n * top, bottom, left, right, start, or end of the viewport rather than just the top and left.\n * Please note: the top and bottom properties are mutually exclusive, as are the left, right,\n * start, and end properties.\n */\nexport type ExtendedScrollToOptions = _XAxis & _YAxis & ScrollOptions;\n\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\n@Directive({\n  selector: '[cdk-scrollable], [cdkScrollable]',\n  standalone: true,\n})\nexport class CdkScrollable implements OnInit, OnDestroy {\n  protected readonly _destroyed = new Subject<void>();\n\n  protected _elementScrolled: Observable<Event> = new Observable((observer: Observer<Event>) =>\n    this.ngZone.runOutsideAngular(() =>\n      fromEvent(this.elementRef.nativeElement, 'scroll')\n        .pipe(takeUntil(this._destroyed))\n        .subscribe(observer),\n    ),\n  );\n\n  constructor(\n    protected elementRef: ElementRef<HTMLElement>,\n    protected scrollDispatcher: ScrollDispatcher,\n    protected ngZone: NgZone,\n    @Optional() protected dir?: Directionality,\n  ) {}\n\n  ngOnInit() {\n    this.scrollDispatcher.register(this);\n  }\n\n  ngOnDestroy() {\n    this.scrollDispatcher.deregister(this);\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /** Returns observable that emits when a scroll event is fired on the host element. */\n  elementScrolled(): Observable<Event> {\n    return this._elementScrolled;\n  }\n\n  /** Gets the ElementRef for the viewport. */\n  getElementRef(): ElementRef<HTMLElement> {\n    return this.elementRef;\n  }\n\n  /**\n   * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n   * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n   * left and right always refer to the left and right side of the scrolling container irrespective\n   * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n   * in an RTL context.\n   * @param options specified the offsets to scroll to.\n   */\n  scrollTo(options: ExtendedScrollToOptions): void {\n    const el = this.elementRef.nativeElement;\n    const isRtl = this.dir && this.dir.value == 'rtl';\n\n    // Rewrite start & end offsets as right or left offsets.\n    if (options.left == null) {\n      options.left = isRtl ? options.end : options.start;\n    }\n\n    if (options.right == null) {\n      options.right = isRtl ? options.start : options.end;\n    }\n\n    // Rewrite the bottom offset as a top offset.\n    if (options.bottom != null) {\n      (options as _Without<_Bottom> & _Top).top =\n        el.scrollHeight - el.clientHeight - options.bottom;\n    }\n\n    // Rewrite the right offset as a left offset.\n    if (isRtl && getRtlScrollAxisType() != RtlScrollAxisType.NORMAL) {\n      if (options.left != null) {\n        (options as _Without<_Left> & _Right).right =\n          el.scrollWidth - el.clientWidth - options.left;\n      }\n\n      if (getRtlScrollAxisType() == RtlScrollAxisType.INVERTED) {\n        options.left = options.right;\n      } else if (getRtlScrollAxisType() == RtlScrollAxisType.NEGATED) {\n        options.left = options.right ? -options.right : options.right;\n      }\n    } else {\n      if (options.right != null) {\n        (options as _Without<_Right> & _Left).left =\n          el.scrollWidth - el.clientWidth - options.right;\n      }\n    }\n\n    this._applyScrollToOptions(options);\n  }\n\n  private _applyScrollToOptions(options: ScrollToOptions): void {\n    const el = this.elementRef.nativeElement;\n\n    if (supportsScrollBehavior()) {\n      el.scrollTo(options);\n    } else {\n      if (options.top != null) {\n        el.scrollTop = options.top;\n      }\n      if (options.left != null) {\n        el.scrollLeft = options.left;\n      }\n    }\n  }\n\n  /**\n   * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n   * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n   * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n   * left and right always refer to the left and right side of the scrolling container irrespective\n   * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n   * in an RTL context.\n   * @param from The edge to measure from.\n   */\n  measureScrollOffset(from: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end'): number {\n    const LEFT = 'left';\n    const RIGHT = 'right';\n    const el = this.elementRef.nativeElement;\n    if (from == 'top') {\n      return el.scrollTop;\n    }\n    if (from == 'bottom') {\n      return el.scrollHeight - el.clientHeight - el.scrollTop;\n    }\n\n    // Rewrite start & end as left or right offsets.\n    const isRtl = this.dir && this.dir.value == 'rtl';\n    if (from == 'start') {\n      from = isRtl ? RIGHT : LEFT;\n    } else if (from == 'end') {\n      from = isRtl ? LEFT : RIGHT;\n    }\n\n    if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.INVERTED) {\n      // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n      // 0 when scrolled all the way right.\n      if (from == LEFT) {\n        return el.scrollWidth - el.clientWidth - el.scrollLeft;\n      } else {\n        return el.scrollLeft;\n      }\n    } else if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.NEGATED) {\n      // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n      // 0 when scrolled all the way right.\n      if (from == LEFT) {\n        return el.scrollLeft + el.scrollWidth - el.clientWidth;\n      } else {\n        return -el.scrollLeft;\n      }\n    } else {\n      // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n      // (scrollWidth - clientWidth) when scrolled all the way right.\n      if (from == LEFT) {\n        return el.scrollLeft;\n      } else {\n        return el.scrollWidth - el.clientWidth - el.scrollLeft;\n      }\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {Directive, ElementRef, InjectionToken, NgZone, Optional} from '@angular/core';\nimport {ScrollDispatcher} from './scroll-dispatcher';\nimport {CdkScrollable} from './scrollable';\n\nexport const VIRTUAL_SCROLLABLE = new InjectionToken<CdkVirtualScrollable>('VIRTUAL_SCROLLABLE');\n\n/**\n * Extending the {@link CdkScrollable} to be used as scrolling container for virtual scrolling.\n */\n@Directive()\nexport abstract class CdkVirtualScrollable extends CdkScrollable {\n  constructor(\n    elementRef: ElementRef<HTMLElement>,\n    scrollDispatcher: ScrollDispatcher,\n    ngZone: NgZone,\n    @Optional() dir?: Directionality,\n  ) {\n    super(elementRef, scrollDispatcher, ngZone, dir);\n  }\n\n  /**\n   * Measure the viewport size for the provided orientation.\n   *\n   * @param orientation The orientation to measure the size from.\n   */\n  measureViewportSize(orientation: 'horizontal' | 'vertical') {\n    const viewportEl = this.elementRef.nativeElement;\n    return orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n  }\n\n  /**\n   * Measure the bounding ClientRect size including the scroll offset.\n   *\n   * @param from The edge to measure from.\n   */\n  abstract measureBoundingClientRectWithScrollOffset(\n    from: 'left' | 'top' | 'right' | 'bottom',\n  ): number;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\n\nimport { Platform } from \"@angular/cdk/platform\";\nimport { Injectable, NgZone, OnDestroy, Optional, Inject } from \"@angular/core\";\nimport { Observable, Subject } from \"rxjs\";\nimport { auditTime } from \"rxjs/operators\";\nimport { DOCUMENT } from \"@angular/common\";\n\n/** Time in ms to throttle the resize events by default. */\nexport const DEFAULT_RESIZE_TIME = 20;\n\n/** Object that holds the scroll position of the viewport in each direction. */\nexport interface ViewportScrollPosition {\n  top: number;\n  left: number;\n}\n\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\n@Injectable({ providedIn: \"root\" })\nexport class ViewportRuler implements OnDestroy {\n  /** Cached viewport dimensions. */\n  //@ts-ignore\n  private _viewportSize?: { width: number; height: number } | null;\n\n  /** Stream of viewport change events. */\n  private readonly _change = new Subject<Event>();\n\n  /** Event listener that will be used to handle the viewport change events. */\n  private _changeListener = (event: Event) => {\n    this._change.next(event);\n  };\n\n  /** Used to reference correct document/window */\n  protected _document: Document;\n\n  constructor(\n    private _platform: Platform,\n    ngZone: NgZone,\n    @Optional() @Inject(DOCUMENT) document: any\n  ) {\n    this._document = document;\n\n    ngZone.runOutsideAngular(() => {\n      if (_platform.isBrowser) {\n        const window = this._getWindow();\n\n        // Note that bind the events ourselves, rather than going through something like RxJS's\n        // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n        window.addEventListener(\"resize\", this._changeListener);\n        window.addEventListener(\"orientationchange\", this._changeListener);\n      }\n\n      // Clear the cached position so that the viewport is re-measured next time it is required.\n      // We don't need to keep track of the subscription, because it is completed on destroy.\n      this.change().subscribe(() => (this._viewportSize = null));\n    });\n  }\n\n  ngOnDestroy() {\n    if (this._platform.isBrowser) {\n      const window = this._getWindow();\n      window.removeEventListener(\"resize\", this._changeListener);\n      window.removeEventListener(\"orientationchange\", this._changeListener);\n    }\n\n    this._change.complete();\n  }\n\n  /** Returns the viewport's width and height. */\n  getViewportSize(): Readonly<{ width: number; height: number }> {\n    if (!this._viewportSize) {\n      this._updateViewportSize();\n    }\n\n    const output = {\n      width: this._viewportSize!.width,\n      height: this._viewportSize!.height,\n    };\n\n    // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n    if (!this._platform.isBrowser) {\n      this._viewportSize = null!;\n    }\n\n    return output;\n  }\n\n  /** Gets a ClientRect for the viewport's bounds. */\n  getViewportRect() {\n    // Use the document element's bounding rect rather than the window scroll properties\n    // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n    // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n    // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n    // can disagree when the page is pinch-zoomed (on devices that support touch).\n    // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n    // We use the documentElement instead of the body because, by default (without a css reset)\n    // browsers typically give the document body an 8px margin, which is not included in\n    // getBoundingClientRect().\n    const scrollPosition = this.getViewportScrollPosition();\n    const { width, height } = this.getViewportSize();\n\n    return {\n      top: scrollPosition.top,\n      left: scrollPosition.left,\n      bottom: scrollPosition.top + height,\n      right: scrollPosition.left + width,\n      height,\n      width,\n    };\n  }\n\n  /** Gets the (top, left) scroll position of the viewport. */\n  getViewportScrollPosition(): ViewportScrollPosition {\n    // While we can get a reference to the fake document\n    // during SSR, it doesn't have getBoundingClientRect.\n    if (!this._platform.isBrowser) {\n      return { top: 0, left: 0 };\n    }\n\n    // The top-left-corner of the viewport is determined by the scroll position of the document\n    // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n    // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n    // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n    // `document.documentElement` works consistently, where the `top` and `left` values will\n    // equal negative the scroll position.\n    const document = this._document;\n    const window = this._getWindow();\n    const documentElement = document.documentElement!;\n    const documentRect = documentElement.getBoundingClientRect();\n\n    const top =\n      -documentRect.top ||\n      document.body.scrollTop ||\n      window.scrollY ||\n      documentElement.scrollTop ||\n      0;\n\n    const left =\n      -documentRect.left ||\n      document.body.scrollLeft ||\n      window.scrollX ||\n      documentElement.scrollLeft ||\n      0;\n\n    return { top, left };\n  }\n\n  /**\n   * Returns a stream that emits whenever the size of the viewport changes.\n   * This stream emits outside of the Angular zone.\n   * @param throttleTime Time in milliseconds to throttle the stream.\n   */\n  change(throttleTime: number = DEFAULT_RESIZE_TIME): Observable<Event> {\n    return throttleTime > 0\n      ? this._change.pipe(auditTime(throttleTime))\n      : this._change;\n  }\n\n  /** Use defaultView of injected document if available or fallback to global window reference */\n  private _getWindow(): Window {\n    return this._document.defaultView || window;\n  }\n\n  /** Updates the cached viewport size. */\n  private _updateViewportSize() {\n    const window = this._getWindow();\n    this._viewportSize = this._platform.isBrowser\n      ? { width: window.innerWidth, height: window.innerHeight }\n      : { width: 0, height: 0 };\n  }\n}\n","//@ts-nocheck\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\nimport { Directionality } from \"@angular/cdk/bidi\";\nimport { ListRange } from \"@angular/cdk/collections\";\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  inject,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport {\n  animationFrameScheduler,\n  asapScheduler,\n  Observable,\n  Subject,\n  Observer,\n  Subscription,\n} from \"rxjs\";\nimport { auditTime, startWith, takeUntil } from \"rxjs/operators\";\nimport { ScrollDispatcher } from \"./scroll-dispatcher\";\nimport { CdkScrollable, ExtendedScrollToOptions } from \"./scrollable\";\nimport {\n  VIRTUAL_SCROLL_STRATEGY,\n  VirtualScrollStrategy,\n} from \"./virtual-scroll-strategy\";\nimport { ViewportRuler } from \"./viewport-ruler\";\nimport { CdkVirtualScrollRepeater } from \"./virtual-scroll-repeater\";\nimport { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport { CdkVirtualScrollable, VIRTUAL_SCROLLABLE } from \"./virtual-scrollable\";\n\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1: ListRange, r2: ListRange): boolean {\n  return r1.start == r2.start && r1.end == r2.end;\n}\n\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER =\n  typeof requestAnimationFrame !== \"undefined\"\n    ? animationFrameScheduler\n    : asapScheduler;\n\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\n@Component({\n  selector: \"cdk-virtual-scroll-viewport\",\n  templateUrl: \"virtual-scroll-viewport.html\",\n  styleUrls: [\"virtual-scroll-viewport.scss\"],\n  host: {\n    class: \"cdk-virtual-scroll-viewport\",\n    \"[class.cdk-virtual-scroll-orientation-horizontal]\":\n      'orientation === \"horizontal\"',\n    \"[class.cdk-virtual-scroll-orientation-vertical]\":\n      'orientation !== \"horizontal\"',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  providers: [\n    {\n      provide: CdkScrollable,\n      useFactory: (\n        virtualScrollable: CdkVirtualScrollable | null,\n        viewport: CdkVirtualScrollViewport\n      ) => virtualScrollable || viewport,\n      deps: [\n        [new Optional(), new Inject(VIRTUAL_SCROLLABLE)],\n        CdkVirtualScrollViewport,\n      ],\n    },\n  ],\n})\nexport class CdkVirtualScrollViewport\n  extends CdkVirtualScrollable\n  implements OnInit, OnDestroy\n{\n  private _platform = inject(Platform);\n\n  /** Emits when the viewport is detached from a CdkVirtualForOf. */\n  private readonly _detachedSubject = new Subject<void>();\n\n  /** Emits when the rendered range changes. */\n  private readonly _renderedRangeSubject = new Subject<ListRange>();\n\n  /** The direction the viewport scrolls. */\n  @Input()\n  get orientation() {\n    return this._orientation;\n  }\n  @Input() scrollY?: string;\n  set orientation(orientation: \"horizontal\" | \"vertical\") {\n    if (this._orientation !== orientation) {\n      this._orientation = orientation;\n      this._calculateSpacerSize();\n    }\n  }\n  private _orientation: \"horizontal\" | \"vertical\" = \"vertical\";\n  @Input() insertDomIn: \"top\" | \"bottom\" | \"default\" = \"default\"; //插入 dom 到哪里\n  /**\n   * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n   * will be removed.\n   */\n  @Input()\n  get appendOnly(): boolean {\n    return this._appendOnly;\n  }\n  set appendOnly(value: BooleanInput) {\n    this._appendOnly = coerceBooleanProperty(value);\n  }\n  private _appendOnly = false;\n\n  // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n  // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n  // depending on how the strategy calculates the scrolled index, it may come at a cost to\n  // performance.\n  /** Emits when the index of the first element visible in the viewport changes. */\n  @Output()\n  readonly scrolledIndexChange: Observable<number> = new Observable(\n    (observer: Observer<number>) =>\n      this._scrollStrategy.scrolledIndexChange.subscribe((index) =>\n        Promise.resolve().then(() =>\n          this.ngZone.run(() => observer.next(index))\n        )\n      )\n  );\n\n  /** The element that wraps the rendered content. */\n  @ViewChild(\"contentWrapper\", { static: true })\n  _contentWrapper?: ElementRef<HTMLElement>;\n\n  /** A stream that emits whenever the rendered range changes. */\n  readonly renderedRangeStream: Observable<ListRange> =\n    this._renderedRangeSubject;\n\n  /**\n   * The total size of all content (in pixels), including content that is not currently rendered.\n   */\n  private _totalContentSize = 0;\n\n  /** A string representing the `style.width` property value to be used for the spacer element. */\n  _totalContentWidth = \"\";\n\n  /** A string representing the `style.height` property value to be used for the spacer element. */\n  _totalContentHeight = \"\";\n\n  /**\n   * The CSS transform applied to the rendered subset of items so that they appear within the bounds\n   * of the visible viewport.\n   */\n  private _renderedContentTransform?: string;\n\n  /** The currently rendered range of indices. */\n  private _renderedRange: ListRange = { start: 0, end: 0 };\n\n  /** The length of the data bound to this viewport (in number of items). */\n  private _dataLength = 0;\n\n  /** The size of the viewport (in pixels). */\n  private _viewportSize = 0;\n\n  /** the currently attached CdkVirtualScrollRepeater. */\n  private _forOf?: CdkVirtualScrollRepeater<any> | null;\n\n  /** The last rendered content offset that was set. */\n  private _renderedContentOffset = 0;\n\n  /**\n   * Whether the last rendered content offset was to the end of the content (and therefore needs to\n   * be rewritten as an offset to the start of the content).\n   */\n  private _renderedContentOffsetNeedsRewrite = false;\n\n  /** Whether there is a pending change detection cycle. */\n  private _isChangeDetectionPending = false;\n\n  /** A list of functions to run after the next change detection cycle. */\n  private _runAfterChangeDetection: Function[] = [];\n\n  /** Subscription to changes in the viewport size. */\n  private _viewportChanges = Subscription.EMPTY;\n\n  constructor(\n    public override elementRef: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    ngZone: NgZone,\n    @Optional()\n    @Inject(VIRTUAL_SCROLL_STRATEGY)\n    private _scrollStrategy: VirtualScrollStrategy,\n    @Optional() dir: Directionality,\n    scrollDispatcher: ScrollDispatcher,\n    viewportRuler: ViewportRuler,\n    @Optional()\n    @Inject(VIRTUAL_SCROLLABLE)\n    public scrollable: CdkVirtualScrollable\n  ) {\n    super(elementRef, scrollDispatcher, ngZone, dir);\n\n    if (!_scrollStrategy) {\n      throw Error(\n        'Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.'\n      );\n    }\n\n    this._viewportChanges = viewportRuler.change().subscribe(() => {\n      this.checkViewportSize();\n    });\n\n    if (!this.scrollable) {\n      // No scrollable is provided, so the virtual-scroll-viewport needs to become a scrollable\n      this.elementRef.nativeElement.classList.add(\"cdk-virtual-scrollable\");\n      this.scrollable = this;\n    }\n  }\n  wheelDir: \"up\" | \"down\" = \"down\";\n  setWheel = (event) => {\n    if (!event) return;\n    if (event.wheelDeltaY) {\n      //ie 或 谷歌滑轮事件\n      if (event.wheelDeltaY > 0) {\n        this.wheelDir = \"up\";\n        return;\n      }\n      this.wheelDir = \"down\";\n      return;\n    }\n    if (event.deltaY) {\n      // firefox\n      if (event.deltaY > 0) {\n        this.wheelDir = \"down\";\n        return;\n      }\n      this.wheelDir = \"up\";\n      return;\n    }\n  };\n  getWheel() {\n    return this.wheelDir;\n  }\n  override ngOnInit() {\n    if (navigator.userAgent.includes(\"Firefox\")) {\n      this.elementRef.nativeElement.addEventListener(\n        \"DOMMouseScroll\",\n        this.setWheel,\n        false\n      );\n    } else {\n      this.elementRef.nativeElement.addEventListener(\n        \"mousewheel\",\n        this.setWheel\n      );\n    }\n    // Scrolling depends on the element dimensions which we can't get during SSR.\n    if (!this._platform.isBrowser) {\n      return;\n    }\n\n    if (this.scrollable === this) {\n      super.ngOnInit();\n    }\n    // It's still too early to measure the viewport at this point. Deferring with a promise allows\n    // the Viewport to be rendered with the correct size before we measure. We run this outside the\n    // zone to avoid causing more change detection cycles. We handle the change detection loop\n    // ourselves instead.\n    this.ngZone.runOutsideAngular(() =>\n      Promise.resolve().then(() => {\n        this._measureViewportSize();\n        this._scrollStrategy.attach(this);\n\n        this.scrollable\n          .elementScrolled()\n          .pipe(\n            // Start off with a fake scroll event so we properly detect our initial position.\n            startWith(null),\n            // Collect multiple events into one until the next animation frame. This way if\n            // there are multiple scroll events in the same frame we only need to recheck\n            // our layout once.\n            auditTime(0, SCROLL_SCHEDULER)\n          )\n          .subscribe(() => this._scrollStrategy.onContentScrolled());\n\n        this._markChangeDetectionNeeded();\n      })\n    );\n  }\n\n  override ngOnDestroy() {\n    this.detach();\n    this._scrollStrategy.detach();\n\n    // Complete all subjects\n    this._renderedRangeSubject.complete();\n    this._detachedSubject.complete();\n    this._viewportChanges.unsubscribe();\n    clearTimeout(this.timer);\n    this.elementRef.nativeElement.removeEventListener(\n      \"DOMMouseScroll\",\n      () => {}\n    );\n    this.elementRef.nativeElement.removeEventListener(\"mousewheel\", () => {});\n    super.ngOnDestroy();\n  }\n\n  /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n  attach(forOf: CdkVirtualScrollRepeater<any>) {\n    if (this._forOf) {\n      throw Error(\"CdkVirtualScrollViewport is already attached.\");\n    }\n\n    // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n    // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n    // change detection loop ourselves.\n    this.ngZone.runOutsideAngular(() => {\n      this._forOf = forOf;\n      this._forOf.dataStream\n        .pipe(takeUntil(this._detachedSubject))\n        .subscribe((data) => {\n          const newLength = data.length;\n          if (newLength !== this._dataLength) {\n            this._dataLength = newLength;\n            this._scrollStrategy.onDataLengthChanged();\n          }\n          this._doChangeDetection();\n        });\n    });\n  }\n\n  /** Detaches the current `CdkVirtualForOf`. */\n  detach() {\n    this._forOf = null;\n    this._detachedSubject.next();\n  }\n\n  /** Gets the length of the data bound to this viewport (in number of items). */\n  getDataLength(): number {\n    return this._dataLength;\n  }\n\n  /** Gets the size of the viewport (in pixels). */\n  getViewportSize(): number {\n    const scrollY = parseInt(this.scrollY.replace(\"px\", \"\")) || 0;\n    return scrollY > this._viewportSize ? scrollY : this._viewportSize;\n  }\n\n  // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n  // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n  // setting it to something else, but its error prone and should probably be split into\n  // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n\n  /** Get the current rendered range of items. */\n  getRenderedRange(): ListRange {\n    return this._renderedRange;\n  }\n\n  measureBoundingClientRectWithScrollOffset(\n    from: \"left\" | \"top\" | \"right\" | \"bottom\"\n  ): number {\n    return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n  }\n\n  /**\n   * Sets the total size of all content (in pixels), including content that is not currently\n   * rendered.\n   */\n  setTotalContentSize(size: number) {\n    if (this._totalContentSize !== size) {\n      this._totalContentSize = size;\n      this._calculateSpacerSize();\n      this._markChangeDetectionNeeded();\n    }\n  }\n\n  /** Sets the currently rendered range of indices. */\n  setRenderedRange(range: ListRange) {\n    if (!rangesEqual(this._renderedRange, range)) {\n      if (this.appendOnly) {\n        range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n      }\n      this._renderedRangeSubject.next((this._renderedRange = range));\n      this._markChangeDetectionNeeded(() =>\n        this._scrollStrategy.onContentRendered()\n      );\n    }\n  }\n\n  /**\n   * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n   */\n  getOffsetToRenderedContentStart(): number | null {\n    return this._renderedContentOffsetNeedsRewrite\n      ? null\n      : this._renderedContentOffset;\n  }\n  timer: NodeJS.Timeout;\n  setScrollTop(scrollTop: number) {\n    this.elementRef.nativeElement.scrollTop = scrollTop;\n  }\n  getDomHeight(\n    tableTrElem: HTMLTableRowElement,\n    down: boolean = true,\n    next: boolean = true,\n    isFirst: boolean = false\n  ): { trHeight: number; nextTrDom: HTMLTableRowElement | null } {\n    if (!tableTrElem) {\n      return {\n        trHeight: 0,\n        nextTrDom: undefined,\n      };\n    }\n    let height = tableTrElem.offsetHeight || 0;\n    let elementSibling: HTMLTableRowElement | null = (\n      down ? tableTrElem.nextElementSibling : tableTrElem.previousElementSibling\n    ) as HTMLTableRowElement;\n    if (\n      elementSibling &&\n      !elementSibling.getAttribute(\"eo-ng-table-tr\") &&\n      !elementSibling.getAttribute(\"nz-table-measure-row\")\n    ) {\n      const { trHeight, nextTrDom } = this.getDomHeight(elementSibling, down);\n      height = trHeight + height;\n      if (next) {\n        if (down) {\n          //往下走\n          return {\n            trHeight: height,\n            nextTrDom: nextTrDom,\n          };\n        }\n        //往上走的时候，需要通过这个方式重新遍历获取下一个节点\n        return {\n          trHeight: height,\n          nextTrDom: this.getDomHeight(\n            tableTrElem.nextElementSibling as HTMLTableRowElement,\n            true\n          ).nextTrDom,\n        };\n      }\n      if (!down) {\n        //往下走\n        return {\n          trHeight: height,\n          nextTrDom: nextTrDom,\n        };\n      }\n      //往上走的时候，需要通过这个方式重新遍历获取下一个节点\n      return {\n        trHeight: height,\n        nextTrDom: this.getDomHeight(\n          tableTrElem.previousElementSibling as HTMLTableRowElement,\n          false\n        ).nextTrDom,\n      };\n    }\n\n    return {\n      trHeight: height,\n      nextTrDom: isFirst ? elementSibling : tableTrElem,\n    };\n  }\n  getCurrentIndexByScrollTop(\n    offset: number,\n    itemSize: number,\n    next: boolean = true,\n    currentHeight: number = 0,\n    tableTrElem: HTMLTableRowElement | null = this.elementRef.nativeElement.querySelector(\n      \"tr[eo-ng-table-tr]\"\n    ),\n    isFirst: boolean = true\n  ): { index: number; trHeight: number; offset: number } {\n    let index = 0;\n    let trResultHeight!: number;\n    if (!tableTrElem)\n      return {\n        index,\n        trHeight: itemSize,\n        offset: offset,\n      };\n    let { trHeight, nextTrDom } = this.getDomHeight(\n      tableTrElem,\n      this.insertDomIn === \"bottom\",\n      next,\n      true\n    );\n    if (!next) {\n      const firstIndex = parseInt(\n        tableTrElem.getAttribute(\"eo-ng-table-index\")\n      );\n\n      let raceHeight = firstIndex * itemSize - offset;\n      if (firstIndex === 0) {\n        return {\n          trHeight: trHeight,\n          index: 0,\n          offset: 0,\n        };\n      }\n      if (raceHeight > 0) {\n        //表示滚动在 firstindex中\n        return {\n          trHeight: trHeight,\n          index: firstIndex - 1,\n          offset: raceHeight,\n        };\n      }\n      if (raceHeight < 0 || raceHeight < trHeight) {\n        //没有空间\n        return {\n          trHeight: trHeight,\n          index: firstIndex + 1,\n          offset: raceHeight,\n        };\n      }\n      index =\n        firstIndex - Math.abs(Math.ceil((raceHeight - trHeight) / itemSize));\n      return {\n        trHeight: trHeight,\n        index: index - 1,\n        offset: -Math.abs(trHeight - Math.abs(offset - index * itemSize)),\n      };\n    }\n    currentHeight += trHeight;\n\n    if (!isFirst) {\n      index++;\n    }\n    if (currentHeight > offset) {\n      return {\n        index: index,\n        trHeight: trHeight,\n        offset:\n          offset < trHeight ? offset : trHeight - (currentHeight - offset),\n      };\n    }\n\n    if (nextTrDom) {\n      const nextElementConf = this.getCurrentIndexByScrollTop(\n        offset,\n        itemSize,\n        next,\n        currentHeight,\n        nextTrDom as HTMLTableRowElement,\n        false\n      );\n      index += nextElementConf.index;\n      trHeight = nextElementConf.trHeight;\n      trResultHeight = nextElementConf.offset;\n    } else {\n      trHeight = itemSize;\n      index += Math.ceil((offset - currentHeight) / itemSize);\n      trResultHeight = (offset - currentHeight) % itemSize;\n    }\n    return {\n      index,\n      trHeight: trHeight,\n      offset:\n        typeof trResultHeight === \"number\"\n          ? trResultHeight\n          : offset < trHeight\n          ? offset\n          : trHeight - (currentHeight - offset),\n    };\n  }\n  /**\n   * Sets the offset from the start of the viewport to either the start or end of the rendered data\n   * (in pixels).\n   */\n  setRenderedContentOffset(\n    offset: number,\n    to: \"to-start\" | \"to-end\" = \"to-start\",\n    itemSize: number = 40,\n    inTransformPx: number | undefined = undefined\n  ) {\n    // In appendOnly, we always start from the top\n    offset = this.appendOnly && to === \"to-start\" ? 0 : offset;\n\n    // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n    // in the negative direction.\n    const isRtl = this.dir && this.dir.value == \"rtl\";\n    const isHorizontal = this.orientation == \"horizontal\";\n    const axis = isHorizontal ? \"X\" : \"Y\";\n    const axisDirection = isHorizontal && isRtl ? -1 : 1;\n    const transformPx =\n      typeof inTransformPx === \"number\"\n        ? inTransformPx\n        : Number(axisDirection * offset) % itemSize;\n    const scrollIsEnd: boolean =\n      offset === this._totalContentSize - this._viewportSize;\n    if (transformPx === 0 && offset !== 0 && scrollIsEnd) return;\n\n    let transform = `translate${axis}(${scrollIsEnd ? \"0\" : -transformPx}px)`;\n    this._renderedContentOffset = offset;\n    if (to === \"to-end\") {\n      transform += ` translate${axis}(-100%)`;\n      // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n      // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n      // expand upward).\n      this._renderedContentOffsetNeedsRewrite = true;\n    }\n    if (this._renderedContentTransform != transform) {\n      // We know this value is safe because we parse `offset` with `Number()` before passing it\n      // into the string.\n      this._renderedContentTransform = transform;\n      this._markChangeDetectionNeeded(() => {\n        if (this._renderedContentOffsetNeedsRewrite) {\n          this._renderedContentOffset -= this.measureRenderedContentSize();\n          this._renderedContentOffsetNeedsRewrite = false;\n          this.setRenderedContentOffset(this._renderedContentOffset);\n        } else {\n          this._scrollStrategy.onRenderedOffsetChanged();\n        }\n      });\n    }\n  }\n\n  /**\n   * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n   * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n   * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n   * @param offset The offset to scroll to.\n   * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n   */\n  scrollToOffset(offset: number, behavior: ScrollBehavior = \"auto\") {\n    const options: ExtendedScrollToOptions = { behavior };\n    if (this.orientation === \"horizontal\") {\n      options.start = offset;\n    } else {\n      options.top = offset;\n    }\n    this.scrollable.scrollTo(options);\n  }\n\n  /**\n   * Scrolls to the offset for the given index.\n   * @param index The index of the element to scroll to.\n   * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n   */\n  scrollToIndex(index: number, behavior: ScrollBehavior = \"auto\") {\n    this._scrollStrategy.scrollToIndex(index, behavior);\n  }\n\n  /**\n   * Gets the current scroll offset from the start of the scrollable (in pixels).\n   * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n   *     in horizontal mode.\n   */\n  override measureScrollOffset(\n    from?: \"top\" | \"left\" | \"right\" | \"bottom\" | \"start\" | \"end\"\n  ): number {\n    // This is to break the call cycle\n    let measureScrollOffset: InstanceType<\n      typeof CdkVirtualScrollable\n    >[\"measureScrollOffset\"];\n    if (this.scrollable == this) {\n      measureScrollOffset = (_from: NonNullable<typeof from>) =>\n        super.measureScrollOffset(_from);\n    } else {\n      measureScrollOffset = (_from: NonNullable<typeof from>) =>\n        this.scrollable.measureScrollOffset(_from);\n    }\n\n    return Math.max(\n      0,\n      measureScrollOffset(\n        from ?? (this.orientation === \"horizontal\" ? \"start\" : \"top\")\n      ) - this.measureViewportOffset()\n    );\n  }\n\n  /**\n   * Measures the offset of the viewport from the scrolling container\n   * @param from The edge to measure from.\n   */\n  measureViewportOffset(\n    from?: \"top\" | \"left\" | \"right\" | \"bottom\" | \"start\" | \"end\"\n  ) {\n    let fromRect: \"left\" | \"top\" | \"right\" | \"bottom\";\n    const LEFT = \"left\";\n    const RIGHT = \"right\";\n    const isRtl = this.dir?.value == \"rtl\";\n    if (from == \"start\") {\n      fromRect = isRtl ? RIGHT : LEFT;\n    } else if (from == \"end\") {\n      fromRect = isRtl ? LEFT : RIGHT;\n    } else if (from) {\n      fromRect = from;\n    } else {\n      fromRect = this.orientation === \"horizontal\" ? \"left\" : \"top\";\n    }\n\n    const scrollerClientRect =\n      this.scrollable.measureBoundingClientRectWithScrollOffset(fromRect);\n    const viewportClientRect =\n      this.elementRef.nativeElement.getBoundingClientRect()[fromRect];\n\n    return viewportClientRect - scrollerClientRect;\n  }\n\n  /** Measure the combined size of all of the rendered items. */\n  measureRenderedContentSize(): number {\n    //@ts-ignore\n    const contentEl = this._contentWrapper.nativeElement;\n    return this.orientation === \"horizontal\"\n      ? contentEl.offsetWidth\n      : contentEl.offsetHeight;\n  }\n\n  /**\n   * Measure the total combined size of the given range. Throws if the range includes items that are\n   * not rendered.\n   */\n  measureRangeSize(range: ListRange): number {\n    if (!this._forOf) {\n      return 0;\n    }\n    return this._forOf.measureRangeSize(range, this.orientation);\n  }\n\n  /** Update the viewport dimensions and re-render. */\n  checkViewportSize() {\n    // TODO: Cleanup later when add logic for handling content resize\n    this._measureViewportSize();\n    this._scrollStrategy.onDataLengthChanged();\n  }\n\n  /** Measure the viewport size. */\n  private _measureViewportSize() {\n    this._viewportSize = this.scrollable.measureViewportSize(this.orientation);\n  }\n\n  /** Queue up change detection to run. */\n  private _markChangeDetectionNeeded(runAfter?: Function) {\n    if (runAfter) {\n      this._runAfterChangeDetection.push(runAfter);\n    }\n\n    // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n    // properties sequentially we only have to run `_doChangeDetection` once at the end.\n    if (!this._isChangeDetectionPending) {\n      this._isChangeDetectionPending = true;\n      this.ngZone.runOutsideAngular(() =>\n        Promise.resolve().then(() => {\n          this._doChangeDetection();\n        })\n      );\n    }\n  }\n  /** Run change detection. */\n  private _doChangeDetection() {\n    this._isChangeDetectionPending = false;\n\n    // Apply the content transform. The transform can't be set via an Angular binding because\n    // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n    // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n    // the `Number` function first to coerce it to a numeric value.\n    //@ts-ignore\n    this._contentWrapper.nativeElement.style.transform =\n      this._renderedContentTransform;\n\n    // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n    // from the root, since the repeated items are content projected in. Calling `detectChanges`\n    // instead does not properly check the projected content.\n    this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n\n    const runAfterChangeDetection = this._runAfterChangeDetection;\n    this._runAfterChangeDetection = [];\n    for (const fn of runAfterChangeDetection) {\n      fn();\n    }\n  }\n\n  /** Calculates the `style.width` and `style.height` for the spacer element. */\n  private _calculateSpacerSize() {\n    this._totalContentHeight =\n      this.orientation === \"horizontal\"\n        ? \"\"\n        : `calc(${this._totalContentSize}px - 100%)`;\n    this._totalContentWidth =\n      this.orientation === \"horizontal\" ? `${this._totalContentSize}px` : \"\";\n  }\n}\n","<!--\n  Wrap the rendered content in an element that will be used to offset it based on the scroll\n  position.\n-->\n<div #contentWrapper class=\"cdk-virtual-scroll-content-wrapper\">\n  <ng-content></ng-content>\n</div>\n<!--\n  Spacer used to force the scrolling container to the correct size for the *total* number of items\n  so that the scrollbar captures the size of the entire data set.\n-->\n<div\n  class=\"cdk-virtual-scroll-spacer\"\n  [style.width]=\"_totalContentWidth\"\n  [style.height]=\"_totalContentHeight\"\n></div>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\n\nimport {\n  ArrayDataSource,\n  CollectionViewer,\n  DataSource,\n  ListRange,\n  isDataSource,\n  _RecycleViewRepeaterStrategy,\n  _VIEW_REPEATER_STRATEGY,\n  _ViewRepeaterItemInsertArgs,\n} from \"@angular/cdk/collections\";\nimport {\n  Directive,\n  DoCheck,\n  EmbeddedViewRef,\n  Inject,\n  Input,\n  IterableChangeRecord,\n  IterableChanges,\n  IterableDiffer,\n  IterableDiffers,\n  NgIterable,\n  NgZone,\n  OnDestroy,\n  SkipSelf,\n  TemplateRef,\n  TrackByFunction,\n  ViewContainerRef,\n} from \"@angular/core\";\nimport { coerceNumberProperty, NumberInput } from \"@angular/cdk/coercion\";\nimport { Observable, Subject, of as observableOf, isObservable } from \"rxjs\";\nimport {\n  pairwise,\n  shareReplay,\n  startWith,\n  switchMap,\n  takeUntil,\n} from \"rxjs/operators\";\nimport { CdkVirtualScrollRepeater } from \"./virtual-scroll-repeater\";\nimport { CdkVirtualScrollViewport } from \"./virtual-scroll-viewport\";\n\n/** The context for an item rendered by `CdkVirtualForOf` */\nexport type CdkVirtualForOfContext<T> = {\n  /** The item value. */\n  $implicit: T;\n  /** The DataSource, Observable, or NgIterable that was passed to *cdkVirtualFor. */\n  cdkVirtualForOf: DataSource<T> | Observable<T[]> | NgIterable<T>;\n  /** The index of the item in the DataSource. */\n  index: number;\n  /** The number of items in the DataSource. */\n  count: number;\n  /** Whether this is the first item in the DataSource. */\n  first: boolean;\n  /** Whether this is the last item in the DataSource. */\n  last: boolean;\n  /** Whether the index is even. */\n  even: boolean;\n  /** Whether the index is odd. */\n  odd: boolean;\n};\n\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(\n  orientation: \"horizontal\" | \"vertical\",\n  direction: \"start\" | \"end\",\n  node: Node\n) {\n  const el = node as Element;\n  if (!el.getBoundingClientRect) {\n    return 0;\n  }\n  const rect = el.getBoundingClientRect();\n\n  if (orientation === \"horizontal\") {\n    return direction === \"start\" ? rect.left : rect.right;\n  }\n\n  return direction === \"start\" ? rect.top : rect.bottom;\n}\n\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\n@Directive({\n  selector: \"[cdkVirtualFor][cdkVirtualForOf]\",\n  providers: [\n    {\n      provide: _VIEW_REPEATER_STRATEGY,\n      useClass: _RecycleViewRepeaterStrategy,\n    },\n  ],\n  standalone: true,\n})\nexport class CdkVirtualForOf<T>\n  implements CdkVirtualScrollRepeater<T>, CollectionViewer, DoCheck, OnDestroy\n{\n  /** Emits when the rendered view of the data changes. */\n  readonly viewChange = new Subject<ListRange>();\n\n  /** Subject that emits when a new DataSource instance is given. */\n  private readonly _dataSourceChanges = new Subject<DataSource<T>>();\n\n  /** The DataSource to display. */\n  @Input()\n  get cdkVirtualForOf():\n    | DataSource<T>\n    | Observable<T[]>\n    | NgIterable<T>\n    | null\n    | undefined {\n    return this._cdkVirtualForOf;\n  }\n  set cdkVirtualForOf(\n    value: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined\n  ) {\n    this._cdkVirtualForOf = value;\n    if (isDataSource(value)) {\n      this._dataSourceChanges.next(value);\n    } else {\n      // If value is an an NgIterable, convert it to an array.\n      this._dataSourceChanges.next(\n        new ArrayDataSource<T>(\n          isObservable(value) ? value : Array.from(value || [])\n        )\n      );\n    }\n  }\n\n  _cdkVirtualForOf:\n    | DataSource<T>\n    | Observable<T[]>\n    | NgIterable<T>\n    | null\n    | undefined;\n\n  /**\n   * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n   * the item and produces a value to be used as the item's identity when tracking changes.\n   */\n  @Input()\n  get cdkVirtualForTrackBy(): TrackByFunction<T> | undefined {\n    return this._cdkVirtualForTrackBy;\n  }\n  set cdkVirtualForTrackBy(fn: TrackByFunction<T> | undefined) {\n    this._needsUpdate = true;\n    this._cdkVirtualForTrackBy = fn\n      ? (index, item) =>\n          fn(\n            index + (this._renderedRange ? this._renderedRange.start : 0),\n            item\n          )\n      : undefined;\n  }\n  private _cdkVirtualForTrackBy: TrackByFunction<T> | undefined;\n\n  /** The template used to stamp out new elements. */\n  @Input()\n  set cdkVirtualForTemplate(value: TemplateRef<CdkVirtualForOfContext<T>>) {\n    if (value) {\n      this._needsUpdate = true;\n      this._template = value;\n    }\n  }\n\n  /**\n   * The size of the cache used to store templates that are not being used for re-use later.\n   * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n   */\n  @Input()\n  get cdkVirtualForTemplateCacheSize(): number {\n    return this._viewRepeater.viewCacheSize;\n  }\n  set cdkVirtualForTemplateCacheSize(size: NumberInput) {\n    this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n  }\n\n  /** Emits whenever the data in the current DataSource changes. */\n  readonly dataStream: Observable<readonly T[]> = this._dataSourceChanges.pipe(\n    // Start off with null `DataSource`.\n    startWith(null),\n    // Bundle up the previous and current data sources so we can work with both.\n    pairwise(),\n    // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n    // new one, passing back a stream of data changes which we run through `switchMap` to give\n    // us a data stream that emits the latest data from whatever the current `DataSource` is.\n    switchMap(([prev, cur]) => this._changeDataSource(prev, cur)),\n    // Replay the last emitted data when someone subscribes.\n    shareReplay(1)\n  );\n\n  /** The differ used to calculate changes to the data. */\n  private _differ: IterableDiffer<T> | null = null;\n\n  /** The most recent data emitted from the DataSource. */\n  private _data?: readonly T[];\n\n  /** The currently rendered items. */\n  private _renderedItems?: T[];\n\n  /** The currently rendered range of indices. */\n  private _renderedRange?: ListRange;\n\n  /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n  private _needsUpdate = false;\n\n  private readonly _destroyed = new Subject<void>();\n\n  constructor(\n    /** The view container to add items to. */\n    private _viewContainerRef: ViewContainerRef,\n    /** The template to use when stamping out new items. */\n    private _template: TemplateRef<CdkVirtualForOfContext<T>>,\n    /** The set of available differs. */\n    private _differs: IterableDiffers,\n    /** The strategy used to render items in the virtual scroll viewport. */\n    @Inject(_VIEW_REPEATER_STRATEGY)\n    private _viewRepeater: _RecycleViewRepeaterStrategy<\n      T,\n      T,\n      CdkVirtualForOfContext<T>\n    >,\n    /** The virtual scrolling viewport that these items are being rendered in. */\n    @SkipSelf() private _viewport: CdkVirtualScrollViewport,\n    ngZone: NgZone\n  ) {\n    this.dataStream.subscribe((data) => {\n      this._data = data;\n      this._onRenderedDataChange();\n    });\n    this._viewport.renderedRangeStream\n      .pipe(takeUntil(this._destroyed))\n      .subscribe((range) => {\n        this._renderedRange = range;\n        if (this.viewChange.observers.length) {\n          //@ts-ignore\n          ngZone.run(() => this.viewChange.next(this._renderedRange));\n        }\n        this._onRenderedDataChange();\n      });\n    this._viewport.attach(this);\n  }\n\n  /**\n   * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n   * in the specified range. Throws an error if the range includes items that are not currently\n   * rendered.\n   */\n  measureRangeSize(\n    range: ListRange,\n    orientation: \"horizontal\" | \"vertical\"\n  ): number {\n    if (range.start >= range.end) {\n      return 0;\n    }\n    if (\n      //@ts-ignore\n      range.start < this._renderedRange.start ||\n      //@ts-ignore\n      range.end > this._renderedRange.end\n    ) {\n      throw Error(`Error: attempted to measure an item that isn't rendered.`);\n    }\n\n    // The index into the list of rendered views for the first item in the range.\n    //@ts-ignore\n    const renderedStartIndex = range.start - this._renderedRange.start;\n    // The length of the range we're measuring.\n    const rangeLen = range.end - range.start;\n\n    // Loop over all the views, find the first and land node and compute the size by subtracting\n    // the top of the first node from the bottom of the last one.\n    let firstNode: HTMLElement | undefined;\n    let lastNode: HTMLElement | undefined;\n\n    // Find the first node by starting from the beginning and going forwards.\n    for (let i = 0; i < rangeLen; i++) {\n      const view = this._viewContainerRef.get(\n        i + renderedStartIndex\n      ) as EmbeddedViewRef<CdkVirtualForOfContext<T>> | null;\n      if (view && view.rootNodes.length) {\n        firstNode = lastNode = view.rootNodes[0];\n        break;\n      }\n    }\n\n    // Find the last node by starting from the end and going backwards.\n    for (let i = rangeLen - 1; i > -1; i--) {\n      const view = this._viewContainerRef.get(\n        i + renderedStartIndex\n      ) as EmbeddedViewRef<CdkVirtualForOfContext<T>> | null;\n      if (view && view.rootNodes.length) {\n        lastNode = view.rootNodes[view.rootNodes.length - 1];\n        break;\n      }\n    }\n\n    return firstNode && lastNode\n      ? getOffset(orientation, \"end\", lastNode) -\n          getOffset(orientation, \"start\", firstNode)\n      : 0;\n  }\n\n  ngDoCheck() {\n    if (this._differ && this._needsUpdate) {\n      // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n      // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n      // changing (need to do this diff).\n      const changes = this._differ.diff(this._renderedItems);\n      if (!changes) {\n        this._updateContext();\n      } else {\n        this._applyChanges(changes);\n      }\n      this._needsUpdate = false;\n    }\n  }\n\n  ngOnDestroy() {\n    this._viewport.detach();\n\n    this._dataSourceChanges.next(undefined!);\n    this._dataSourceChanges.complete();\n    this.viewChange.complete();\n\n    this._destroyed.next();\n    this._destroyed.complete();\n    this._viewRepeater.detach();\n  }\n\n  /** React to scroll state changes in the viewport. */\n  private _onRenderedDataChange() {\n    if (!this._renderedRange) {\n      return;\n    }\n    //@ts-ignore\n    this._renderedItems = this._data.slice(\n      this._renderedRange.start,\n      this._renderedRange.end\n    );\n    if (!this._differ) {\n      // Use a wrapper function for the `trackBy` so any new values are\n      // picked up automatically without having to recreate the differ.\n      this._differ = this._differs\n        .find(this._renderedItems)\n        .create((index, item) => {\n          return this.cdkVirtualForTrackBy\n            ? this.cdkVirtualForTrackBy(index, item)\n            : item;\n        });\n    }\n    this._needsUpdate = true;\n  }\n\n  /** Swap out one `DataSource` for another. */\n  private _changeDataSource(\n    oldDs: DataSource<T> | null,\n    newDs: DataSource<T> | null\n  ): Observable<readonly T[]> {\n    if (oldDs) {\n      oldDs.disconnect(this);\n    }\n\n    this._needsUpdate = true;\n    return newDs ? newDs.connect(this) : observableOf();\n  }\n\n  /** Update the `CdkVirtualForOfContext` for all views. */\n  private _updateContext() {\n    //@ts-ignore\n    const count = this._data.length;\n    let i = this._viewContainerRef.length;\n    while (i--) {\n      const view = this._viewContainerRef.get(i) as EmbeddedViewRef<\n        CdkVirtualForOfContext<T>\n      >;\n      //@ts-ignore\n      view.context.index = this._renderedRange.start + i;\n      view.context.count = count;\n      this._updateComputedContextProperties(view.context);\n      view.detectChanges();\n    }\n  }\n\n  /** Apply changes to the DOM. */\n  private _applyChanges(changes: IterableChanges<T>) {\n    this._viewRepeater.applyChanges(\n      changes,\n      this._viewContainerRef,\n      (\n        record: IterableChangeRecord<T>,\n        _adjustedPreviousIndex: number | null,\n        currentIndex: number | null\n      ) => this._getEmbeddedViewArgs(record, currentIndex!),\n      (record) => record.item\n    );\n\n    // Update $implicit for any items that had an identity change.\n    changes.forEachIdentityChange((record: IterableChangeRecord<T>) => {\n      const view = this._viewContainerRef.get(\n        record.currentIndex!\n      ) as EmbeddedViewRef<CdkVirtualForOfContext<T>>;\n      view.context.$implicit = record.item;\n    });\n\n    // Update the context variables on all items.\n    //@ts-ignore\n    const count = this._data.length;\n    let i = this._viewContainerRef.length;\n    while (i--) {\n      const view = this._viewContainerRef.get(i) as EmbeddedViewRef<\n        CdkVirtualForOfContext<T>\n      >;\n      //@ts-ignore\n      view.context.index = this._renderedRange.start + i;\n      view.context.count = count;\n      this._updateComputedContextProperties(view.context);\n    }\n  }\n\n  /** Update the computed properties on the `CdkVirtualForOfContext`. */\n  private _updateComputedContextProperties(\n    context: CdkVirtualForOfContext<any>\n  ) {\n    context.first = context.index === 0;\n    context.last = context.index === context.count - 1;\n    context.even = context.index % 2 === 0;\n    context.odd = !context.even;\n  }\n\n  private _getEmbeddedViewArgs(\n    record: IterableChangeRecord<T>,\n    index: number\n  ): _ViewRepeaterItemInsertArgs<CdkVirtualForOfContext<T>> {\n    // Note that it's important that we insert the item directly at the proper index,\n    // rather than inserting it and the moving it in place, because if there's a directive\n    // on the same node that injects the `ViewContainerRef`, Angular will insert another\n    // comment node which can throw off the move when it's being repeated for all items.\n    return {\n      templateRef: this._template,\n      context: {\n        $implicit: record.item,\n        // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n        // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n        cdkVirtualForOf: this._cdkVirtualForOf!,\n        index: -1,\n        count: -1,\n        first: false,\n        last: false,\n        odd: false,\n        even: false,\n      },\n      index,\n    };\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {Directive, ElementRef, NgZone, Optional} from '@angular/core';\nimport {ScrollDispatcher} from './scroll-dispatcher';\nimport {CdkVirtualScrollable, VIRTUAL_SCROLLABLE} from './virtual-scrollable';\n\n/**\n * Provides a virtual scrollable for the element it is attached to.\n */\n@Directive({\n  selector: '[cdkVirtualScrollingElement]',\n  providers: [{provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableElement}],\n  standalone: true,\n  host: {\n    'class': 'cdk-virtual-scrollable',\n  },\n})\nexport class CdkVirtualScrollableElement extends CdkVirtualScrollable {\n  constructor(\n    elementRef: ElementRef,\n    scrollDispatcher: ScrollDispatcher,\n    ngZone: NgZone,\n    @Optional() dir: Directionality,\n  ) {\n    super(elementRef, scrollDispatcher, ngZone, dir);\n  }\n\n  override measureBoundingClientRectWithScrollOffset(\n    from: 'left' | 'top' | 'right' | 'bottom',\n  ): number {\n    return (\n      this.getElementRef().nativeElement.getBoundingClientRect()[from] -\n      this.measureScrollOffset(from)\n    );\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {Directive, ElementRef, NgZone, Optional} from '@angular/core';\nimport {fromEvent, Observable, Observer} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {ScrollDispatcher} from './scroll-dispatcher';\nimport {CdkVirtualScrollable, VIRTUAL_SCROLLABLE} from './virtual-scrollable';\n\n/**\n * Provides as virtual scrollable for the global / window scrollbar.\n */\n@Directive({\n  selector: 'cdk-virtual-scroll-viewport[scrollWindow]',\n  providers: [{provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableWindow}],\n  standalone: true,\n})\nexport class CdkVirtualScrollableWindow extends CdkVirtualScrollable {\n  protected override _elementScrolled: Observable<Event> = new Observable(\n    (observer: Observer<Event>) =>\n      this.ngZone.runOutsideAngular(() =>\n        fromEvent(document, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer),\n      ),\n  );\n\n  constructor(scrollDispatcher: ScrollDispatcher, ngZone: NgZone, @Optional() dir: Directionality) {\n    super(new ElementRef(document.documentElement), scrollDispatcher, ngZone, dir);\n  }\n\n  override measureBoundingClientRectWithScrollOffset(\n    from: 'left' | 'top' | 'right' | 'bottom',\n  ): number {\n    return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\n\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {CdkFixedSizeVirtualScroll} from './fixed-size-virtual-scroll';\nimport {CdkScrollable} from './scrollable';\nimport {CdkVirtualForOf} from './virtual-for-of';\nimport {CdkVirtualScrollViewport} from './virtual-scroll-viewport';\nimport {CdkVirtualScrollableElement} from './virtual-scrollable-element';\nimport {CdkVirtualScrollableWindow} from './virtual-scrollable-window';\n\n@NgModule({\n  exports: [CdkScrollable],\n  imports: [CdkScrollable],\n})\nexport class CdkScrollableModule {}\n\n/**\n * @docs-primary-export\n */\n@NgModule({\n  imports: [\n    BidiModule,\n    CdkScrollableModule,\n    CdkVirtualScrollViewport,\n    CdkFixedSizeVirtualScroll,\n    CdkVirtualForOf,\n    CdkVirtualScrollableWindow,\n    CdkVirtualScrollableElement,\n  ],\n  exports: [\n    BidiModule,\n    CdkScrollableModule,\n    CdkFixedSizeVirtualScroll,\n    CdkVirtualForOf,\n    CdkVirtualScrollViewport,\n    CdkVirtualScrollableWindow,\n    CdkVirtualScrollableElement,\n  ],\n})\nexport class ScrollingModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.io/license\n */\n\nexport * from './fixed-size-virtual-scroll';\nexport * from './scroll-dispatcher';\nexport * from './scrollable';\nexport * from './scrolling-module';\nexport * from './viewport-ruler';\nexport * from './virtual-for-of';\nexport * from './virtual-scroll-strategy';\nexport * from './virtual-scroll-viewport';\nexport * from './virtual-scroll-repeater';\nexport * from './virtual-scrollable';\nexport * from './virtual-scrollable-element';\nexport * from './virtual-scrollable-window';\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\n/* eslint-disable @angular-eslint/component-selector */\n\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChildren,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { combineLatest, Observable, Subject } from \"rxjs\";\nimport {\n  debounceTime,\n  map,\n  startWith,\n  switchMap,\n  takeUntil,\n} from \"rxjs/operators\";\n\nimport { NzResizeObserver } from \"ng-zorro-antd/cdk/resize-observer\";\n\n@Component({\n  selector: \"tr[nz-table-measure-row]\",\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <td\n      #tdElement\n      class=\"nz-disable-td\"\n      style=\"padding: 0px; border: 0px; height: 0px;\"\n      *ngFor=\"let th of listOfMeasureColumn; trackBy: trackByFunc\"\n    ></td>\n  `,\n  host: { class: \"ant-table-measure-now\" },\n})\nexport class NzTrMeasureComponent implements AfterViewInit, OnDestroy {\n  @Input() listOfMeasureColumn: readonly string[] = [];\n  @Output() readonly listOfAutoWidth = new EventEmitter<number[]>();\n  @ViewChildren(\"tdElement\") listOfTdElement!: QueryList<ElementRef>;\n  private destroy$ = new Subject();\n  constructor(\n    private nzResizeObserver: NzResizeObserver,\n    private ngZone: NgZone\n  ) {}\n  trackByFunc(_: number, key: string): string {\n    return key;\n  }\n  ngAfterViewInit(): void {\n    this.listOfTdElement.changes\n      .pipe(startWith(this.listOfTdElement))\n      .pipe(\n        switchMap(\n          (list) =>\n            combineLatest(\n              list.toArray().map((item: ElementRef) =>\n                this.nzResizeObserver.observe(item).pipe(\n                  map(([entry]) => {\n                    const { width } = entry.target.getBoundingClientRect();\n                    return Math.floor(width);\n                  })\n                )\n              )\n            ) as Observable<number[]>\n        ),\n        debounceTime(16),\n        takeUntil(this.destroy$)\n      )\n      .subscribe((data) => {\n        // Caretaker note: we don't have to re-enter the Angular zone each time the stream emits.\n        // The below check is necessary to be sure that zone is not nooped through `BootstrapOptions`\n        // (`bootstrapModule(AppModule, { ngZone: 'noop' }))`. The `ngZone instanceof NgZone` may return\n        // `false` if zone is nooped, since `ngZone` will be an instance of the `NoopNgZone`.\n        // The `ResizeObserver` might be also patched through `zone.js/dist/zone-patch-resize-observer`,\n        // thus calling `ngZone.run` again will cause another change detection.\n        if (this.ngZone instanceof NgZone && NgZone.isInAngularZone()) {\n          this.listOfAutoWidth.next(data);\n        } else {\n          this.ngZone.run(() => this.listOfAutoWidth.next(data));\n        }\n      });\n  }\n  ngOnDestroy(): void {\n    //@ts-ignore\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 {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { BehaviorSubject, Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { NzTableStyleService } from \"../table-style.service\";\n\n@Component({\n  selector: \"tr[nz-table-fixed-row], tr[nzExpand]\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <td class=\"nz-disable-td ant-table-cell\" #tdElement>\n      <div\n        class=\"ant-table-expanded-row-fixed\"\n        *ngIf=\"enableAutoMeasure$ | async; else contentTemplate\"\n        style=\"position: sticky; left: 0px; overflow: hidden;margin: auto;\"\n        [style.width.px]=\"hostWidth$ | async\"\n      >\n        <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n      </div>\n    </td>\n    <ng-template #contentTemplate><ng-content></ng-content></ng-template>\n  `,\n})\nexport class NzTableFixedRowComponent\n  implements OnInit, OnDestroy, AfterViewInit\n{\n  @ViewChild(\"tdElement\", { static: true }) tdElement!: ElementRef;\n  hostWidth$ = new BehaviorSubject<number | null>(null);\n  enableAutoMeasure$ = new BehaviorSubject<boolean>(false);\n  private destroy$ = new Subject();\n  constructor(\n    private nzTableStyleService: NzTableStyleService,\n    private renderer: Renderer2\n  ) {}\n  ngOnInit(): void {\n    if (this.nzTableStyleService) {\n      const { enableAutoMeasure$, hostWidth$ } = this.nzTableStyleService;\n      enableAutoMeasure$\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(this.enableAutoMeasure$);\n      hostWidth$.pipe(takeUntil(this.destroy$)).subscribe(this.hostWidth$);\n    }\n  }\n  ngAfterViewInit(): void {\n    this.nzTableStyleService.columnCount$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((count) => {\n        this.renderer.setAttribute(\n          this.tdElement.nativeElement,\n          \"colspan\",\n          `${count}`\n        );\n      });\n  }\n  ngOnDestroy(): void {\n    //@ts-ignore\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\n/* eslint-disable @angular-eslint/component-selector */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  OnDestroy,\n  Optional,\n  TemplateRef,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { BehaviorSubject, Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\n\nimport { NzTableStyleService } from \"../table-style.service\";\n\n@Component({\n  selector: \"tbody\",\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <ng-container *ngIf=\"listOfMeasureColumn$ | async as listOfMeasureColumn\">\n      <tr\n        nz-table-measure-row\n        *ngIf=\"isInsideTable && listOfMeasureColumn.length\"\n        [listOfMeasureColumn]=\"listOfMeasureColumn\"\n        (listOfAutoWidth)=\"onListOfAutoWidthChange($event)\"\n      ></tr>\n    </ng-container>\n    <ng-content></ng-content>\n    <tr\n      class=\"ant-table-placeholder\"\n      nz-table-fixed-row\n      *ngIf=\"showEmpty$ | async\"\n    >\n      <nz-embed-empty\n        nzComponentName=\"table\"\n        [specificContent]=\"(noResult$ | async)!\"\n      ></nz-embed-empty>\n    </tr>\n  `,\n  host: {\n    \"[class.ant-table-tbody]\": \"isInsideTable\",\n  },\n})\nexport class NzTbodyComponent implements OnDestroy {\n  isInsideTable = false;\n  showEmpty$ = new BehaviorSubject<boolean>(false);\n  noResult$ = new BehaviorSubject<string | TemplateRef<NzSafeAny> | undefined | null>(\n    undefined\n  );\n  listOfMeasureColumn$ = new BehaviorSubject<readonly string[]>([]);\n  private destroy$ = new Subject<void>();\n\n  constructor(@Optional() private nzTableStyleService: NzTableStyleService) {\n    this.isInsideTable = !!this.nzTableStyleService;\n    if (this.nzTableStyleService) {\n      const { showEmpty$, noResult$, listOfMeasureColumn$ } =\n        this.nzTableStyleService;\n      noResult$.pipe(takeUntil(this.destroy$)).subscribe(this.noResult$);\n      listOfMeasureColumn$\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(this.listOfMeasureColumn$);\n      showEmpty$.pipe(takeUntil(this.destroy$)).subscribe(this.showEmpty$);\n    }\n  }\n\n  onListOfAutoWidthChange(listOfAutoWidth: number[]): void {\n    this.nzTableStyleService.setListOfAutoWidth(listOfAutoWidth);\n  }\n\n  ngOnDestroy(): void {\n    //@ts-ignore\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 {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  TemplateRef,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\n\nimport { NzTableLayout } from \"../table.types\";\n\n@Component({\n  selector: \"table[nz-table-content]\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <col\n      [style.width]=\"isFirefox && width === 'auto' ? '100px' : width\"\n      [style.minWidth]=\"width === 'auto' ? '100px' : width\"\n      *ngFor=\"let width of listOfColWidth\"\n    />\n    <thead class=\"ant-table-thead\" *ngIf=\"theadTemplate\">\n      <ng-template [ngTemplateOutlet]=\"theadTemplate\"></ng-template>\n    </thead>\n    <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n    <ng-content></ng-content>\n  `,\n  host: {\n    \"[style.table-layout]\": \"tableLayout\",\n    \"[class.ant-table-fixed]\": \"scrollX\",\n    \"[style.width]\": \"scrollX\",\n    \"[style.min-width]\": `scrollX ? '100%': null`,\n  },\n})\nexport class NzTableContentComponent {\n  @Input() tableLayout: NzTableLayout = \"auto\";\n  @Input() theadTemplate: TemplateRef<NzSafeAny> | null = null;\n  @Input() contentTemplate: TemplateRef<NzSafeAny> | null = null;\n  @Input() listOfColWidth: ReadonlyArray<string | null> = [];\n  @Input() scrollX: string | null = null;\n  isFirefox: boolean = navigator.userAgent.includes(\"Firefox\");\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 { Platform } from \"@angular/cdk/platform\";\nimport { CdkVirtualScrollViewport } from \"../../eo-ng-scrolling/public-api\";\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  TrackByFunction,\n  ViewChild,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { fromEvent, merge, Subject } from \"rxjs\";\nimport { delay, filter, startWith, switchMap, takeUntil } from \"rxjs/operators\";\n\nimport { NzResizeService } from \"ng-zorro-antd/core/services\";\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\n\n@Component({\n  selector: \"nz-table-inner-scroll\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <ng-container *ngIf=\"scrollY; else unScroll\">\n      <div\n        #tableHeaderElement\n        [ngStyle]=\"headerStyleMap\"\n        class=\"ant-table-header nz-table-hide-scrollbar\"\n      >\n        <table\n          nz-table-content\n          tableLayout=\"fixed\"\n          [scrollX]=\"scrollX\"\n          [listOfColWidth]=\"listOfColWidth\"\n          [theadTemplate]=\"theadTemplate\"\n        ></table>\n      </div>\n      <cdk-virtual-scroll-viewport\n        #tableBodyElement\n        [insertDomIn]=\"insertDomIn\"\n        [itemSize]=\"virtualItemSize\"\n        [maxBufferPx]=\"virtualMaxBufferPx\"\n        [minBufferPx]=\"virtualMinBufferPx\"\n        [scrollY]=\"scrollY\"\n        [style.height]=\"\n          !nzVirtualMaxItems ||\n          (nzVirtualMaxItems && getData().length > nzVirtualMaxItems)\n            ? data.length\n              ? scrollY\n              : noDateVirtualHeight\n            : ''\n        \"\n      >\n        <table\n          nz-table-content\n          tableLayout=\"fixed\"\n          [scrollX]=\"scrollX\"\n          [listOfColWidth]=\"listOfColWidth\"\n        >\n          <tbody>\n            <ng-container\n              *cdkVirtualFor=\"\n                let item of getData();\n                let i = index;\n                trackBy: virtualForTrackBy\n              \"\n            >\n              <ng-template\n                [ngTemplateOutlet]=\"virtualTemplate\"\n                [ngTemplateOutletContext]=\"{ $implicit: item, index: i }\"\n              ></ng-template>\n            </ng-container>\n          </tbody>\n        </table>\n      </cdk-virtual-scroll-viewport>\n      <div\n        style=\"position: absolute; top:0; left:0; width:100%; height:100%; pointer-events:none\"\n      ></div>\n    </ng-container>\n\n    <ng-template #unScroll>\n      <div class=\"ant-table-content\" #tableBodyElement [ngStyle]=\"bodyStyleMap\">\n        <table\n          nz-table-content\n          tableLayout=\"fixed\"\n          [scrollX]=\"scrollX\"\n          [listOfColWidth]=\"listOfColWidth\"\n          [theadTemplate]=\"theadTemplate\"\n          [contentTemplate]=\"contentTemplate\"\n        ></table>\n      </div>\n    </ng-template>\n  `,\n  host: {\n    class: \"ant-table-container\",\n    \"[class.unscroll-table]\":\n      \"nzVirtualMaxItems && getData().length <= nzVirtualMaxItems\",\n  },\n  styleUrls: [\"./table-inner-scroll.component.scss\"],\n})\nexport class NzTableInnerScrollComponent<T>\n  implements OnChanges, AfterViewInit, OnDestroy\n{\n  @Input() nzVirtualMaxItems?: number;\n  @Input() data: readonly T[] = [];\n  @Input() scrollX: string | null = null;\n  @Input() scrollY: string | null = null;\n  @Input() contentTemplate: TemplateRef<NzSafeAny> | null = null;\n  @Input() widthConfig: string[] = [];\n  @Input() listOfColWidth: ReadonlyArray<string | null> = [];\n  @Input() theadTemplate: TemplateRef<NzSafeAny> | null = null;\n  @Input() virtualTemplate: TemplateRef<NzSafeAny> | null = null;\n  @Input() virtualItemSize = 0;\n  @Input() virtualMaxBufferPx = 200;\n  @Input() virtualMinBufferPx = 100;\n  @Input() tableMainElement?: HTMLDivElement;\n  @Input() virtualForTrackBy: TrackByFunction<T> = (index) => index;\n  @Input() insertDomIn: \"top\" | \"bottom\" | \"default\" = \"default\"; //插入 dom 到哪里\n  @ViewChild(\"tableHeaderElement\", { read: ElementRef })\n  tableHeaderElement!: ElementRef;\n  @ViewChild(\"tableBodyElement\", { read: ElementRef })\n  tableBodyElement!: ElementRef;\n  @ViewChild(CdkVirtualScrollViewport, { read: CdkVirtualScrollViewport })\n  cdkVirtualScrollViewport?: CdkVirtualScrollViewport;\n  headerStyleMap = {};\n  bodyStyleMap = {};\n  @Input() verticalScrollBarWidth = 0;\n  noDateVirtualHeight = \"182px\";\n  private data$ = new Subject<void>();\n  private scroll$ = new Subject<void>();\n  private destroy$ = new Subject<void>();\n  getData() {\n    const result = this.data.filter((item: any) => {\n      return !item.parent || item.parent?.expand;\n    });\n    return result;\n  }\n  setScrollPositionClassName(clear: boolean = false): void {\n    const { scrollWidth, scrollLeft, clientWidth } =\n      this.tableBodyElement.nativeElement;\n    const leftClassName = \"ant-table-ping-left\";\n    const rightClassName = \"ant-table-ping-right\";\n    if ((scrollWidth === clientWidth && scrollWidth !== 0) || clear) {\n      this.renderer.removeClass(this.tableMainElement, leftClassName);\n      this.renderer.removeClass(this.tableMainElement, rightClassName);\n    } else if (scrollLeft === 0) {\n      this.renderer.removeClass(this.tableMainElement, leftClassName);\n      this.renderer.addClass(this.tableMainElement, rightClassName);\n    } else if (scrollWidth === scrollLeft + clientWidth) {\n      this.renderer.removeClass(this.tableMainElement, rightClassName);\n      this.renderer.addClass(this.tableMainElement, leftClassName);\n    } else {\n      this.renderer.addClass(this.tableMainElement, leftClassName);\n      this.renderer.addClass(this.tableMainElement, rightClassName);\n    }\n  }\n\n  constructor(\n    private renderer: Renderer2,\n    private ngZone: NgZone,\n    private platform: Platform,\n    private resizeService: NzResizeService\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { scrollX, scrollY, data } = changes;\n    if (scrollX || scrollY) {\n      const hasVerticalScrollBar = this.verticalScrollBarWidth !== 0;\n      this.headerStyleMap = {\n        overflowX: \"hidden\",\n        overflowY: this.scrollY && hasVerticalScrollBar ? \"scroll\" : \"hidden\",\n      };\n      this.bodyStyleMap = {\n        overflowY: this.scrollY ? \"scroll\" : \"hidden\",\n        overflowX: this.scrollX ? \"auto\" : null,\n        maxHeight: this.scrollY,\n      };\n      // Caretaker note: we have to emit the value outside of the Angular zone, thus DOM timer (`delay(0)`) and `scroll`\n      // event listener will be also added outside of the Angular zone.\n      this.ngZone.runOutsideAngular(() => this.scroll$.next());\n    }\n    if (data) {\n      // See the comment above.\n      this.ngZone.runOutsideAngular(() => this.data$.next());\n    }\n  }\n  ngAfterViewInit(): void {\n    if (this.platform.isBrowser) {\n      this.ngZone.runOutsideAngular(() => {\n        const scrollEvent$ = this.scroll$.pipe(\n          startWith(null),\n          delay(0),\n          switchMap(() =>\n            fromEvent<MouseEvent>(\n              this.tableBodyElement.nativeElement,\n              \"scroll\"\n            ).pipe(startWith(true))\n          ),\n          takeUntil(this.destroy$)\n        );\n        const resize$ = this.resizeService\n          .subscribe()\n          .pipe(takeUntil(this.destroy$));\n        const data$ = this.data$.pipe(takeUntil(this.destroy$));\n        const setClassName$ = merge(\n          scrollEvent$,\n          resize$,\n          data$,\n          this.scroll$\n        ).pipe(startWith(true), delay(0), takeUntil(this.destroy$));\n        setClassName$.subscribe(() => this.setScrollPositionClassName());\n        scrollEvent$\n          .pipe(filter(() => !!this.scrollY))\n          .subscribe(\n            () =>\n              (this.tableHeaderElement.nativeElement.scrollLeft =\n                this.tableBodyElement.nativeElement.scrollLeft)\n          );\n      });\n    }\n  }\n  ngOnDestroy(): void {\n    this.setScrollPositionClassName(true);\n\n    //@ts-ignore\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 { Directive, TemplateRef } from \"@angular/core\";\n\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\n\n@Directive({\n  selector: \"[nz-virtual-scroll]\",\n  exportAs: \"nzVirtualScroll\",\n})\nexport class NzTableVirtualScrollDirective<T> {\n  constructor(\n    public templateRef: TemplateRef<{ $implicit: T; index: number }>\n  ) {}\n\n  static ngTemplateContextGuard<T>(\n    _dir: NzTableVirtualScrollDirective<T>,\n    _ctx: NzSafeAny\n  ): _ctx is { $implicit: T; index: number } {\n    return true;\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  Component,\n  Input,\n  TemplateRef,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\n\n@Component({\n  selector: \"nz-table-title-footer\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <ng-container *nzStringTemplateOutlet=\"title\">{{ title }}</ng-container>\n    <ng-container *nzStringTemplateOutlet=\"footer\">{{ footer }}</ng-container>\n  `,\n  host: {\n    \"[class.ant-table-title]\": `title !== null`,\n    \"[class.ant-table-footer]\": `footer !== null`,\n  },\n})\nexport class NzTableTitleFooterComponent {\n  @Input() title: string | TemplateRef<NzSafeAny> | null = null;\n  @Input() footer: string | TemplateRef<NzSafeAny> | null = null;\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  Component,\n  Input,\n  TemplateRef,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\n\nimport { NzTableLayout } from \"../table.types\";\n\n@Component({\n  selector: \"nz-table-inner-default\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div class=\"ant-table-content\">\n      <table\n        nz-table-content\n        [contentTemplate]=\"contentTemplate\"\n        [tableLayout]=\"tableLayout\"\n        [listOfColWidth]=\"listOfColWidth\"\n        [theadTemplate]=\"theadTemplate\"\n      ></table>\n    </div>\n  `,\n  host: { class: \"ant-table-container\" },\n})\nexport class NzTableInnerDefaultComponent {\n  @Input() tableLayout: NzTableLayout = \"auto\";\n  @Input() listOfColWidth: ReadonlyArray<string | null> = [];\n  @Input() theadTemplate: TemplateRef<NzSafeAny> | null = null;\n  @Input() contentTemplate: TemplateRef<NzSafeAny> | null = null;\n\n  constructor() {}\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 \"../../eo-ng-scrolling/public-api\";\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  TrackByFunction,\n  ViewChild,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { BehaviorSubject, combineLatest, Subject } from \"rxjs\";\nimport { filter, map, takeUntil } from \"rxjs/operators\";\n\nimport { NzResizeObserver } from \"ng-zorro-antd/cdk/resize-observer\";\nimport {\n  NzConfigKey,\n  NzConfigService,\n  WithConfig,\n} from \"ng-zorro-antd/core/config\";\nimport { BooleanInput, NzSafeAny } from \"ng-zorro-antd/core/types\";\nimport { InputBoolean, measureScrollbar } from \"ng-zorro-antd/core/util\";\nimport { PaginationItemRenderContext } from \"ng-zorro-antd/pagination\";\n\nimport { NzTableDataService } from \"../table-data.service\";\nimport { NzTableStyleService } from \"../table-style.service\";\nimport {\n  NzTableLayout,\n  NzTablePaginationPosition,\n  NzTablePaginationType,\n  NzTableQueryParams,\n  NzTableSize,\n} from \"../table.types\";\nimport { NzTableInnerScrollComponent } from \"./table-inner-scroll.component\";\nimport { NzTableVirtualScrollDirective } from \"./table-virtual-scroll.directive\";\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = \"table\";\n\n@Component({\n  selector: \"nz-table\",\n  exportAs: \"nzTable\",\n  providers: [NzTableStyleService, NzTableDataService],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <nz-spin\n      [nzDelay]=\"nzLoadingDelay\"\n      [nzSpinning]=\"nzLoading\"\n      [nzIndicator]=\"nzLoadingIndicator\"\n    >\n      <ng-container\n        *ngIf=\"\n          nzPaginationPosition === 'both' || nzPaginationPosition === 'top'\n        \"\n      >\n        <ng-template [ngTemplateOutlet]=\"paginationTemplate\"></ng-template>\n      </ng-container>\n      <div\n        #tableMainElement\n        class=\"ant-table\"\n        [class.ant-table-rtl]=\"dir === 'rtl'\"\n        [class.ant-table-fixed-header]=\"nzData.length && scrollY\"\n        [class.ant-table-fixed-column]=\"scrollX\"\n        [class.ant-table-has-fix-left]=\"hasFixLeft\"\n        [class.ant-table-has-fix-right]=\"hasFixRight\"\n        [class.ant-table-bordered]=\"nzBordered\"\n        [class.nz-table-out-bordered]=\"nzOuterBordered && !nzBordered\"\n        [class.ant-table-middle]=\"nzSize === 'middle'\"\n        [class.ant-table-small]=\"nzSize === 'small'\"\n      >\n        <nz-table-title-footer\n          [title]=\"nzTitle\"\n          *ngIf=\"nzTitle\"\n        ></nz-table-title-footer>\n        <nz-table-inner-scroll\n          *ngIf=\"scrollY || scrollX; else defaultTemplate\"\n          [data]=\"data\"\n          [nzVirtualMaxItems]=\"nzVirtualMaxItems\"\n          [insertDomIn]=\"insertDomIn\"\n          [scrollX]=\"scrollX\"\n          [scrollY]=\"scrollY\"\n          [contentTemplate]=\"contentTemplate\"\n          [listOfColWidth]=\"listOfAutoColWidth\"\n          [theadTemplate]=\"theadTemplate\"\n          [verticalScrollBarWidth]=\"verticalScrollBarWidth\"\n          [virtualTemplate]=\"\n            nzVirtualScrollDirective\n              ? nzVirtualScrollDirective.templateRef\n              : null\n          \"\n          [virtualItemSize]=\"nzVirtualItemSize\"\n          [virtualMaxBufferPx]=\"nzVirtualMaxBufferPx\"\n          [virtualMinBufferPx]=\"nzVirtualMinBufferPx\"\n          [tableMainElement]=\"tableMainElement\"\n          [virtualForTrackBy]=\"nzVirtualForTrackBy\"\n        ></nz-table-inner-scroll>\n        <ng-template #defaultTemplate>\n          <nz-table-inner-default\n            [tableLayout]=\"nzTableLayout\"\n            [listOfColWidth]=\"listOfManualColWidth\"\n            [theadTemplate]=\"theadTemplate\"\n            [contentTemplate]=\"contentTemplate\"\n          ></nz-table-inner-default>\n        </ng-template>\n        <nz-table-title-footer\n          [footer]=\"nzFooter\"\n          *ngIf=\"nzFooter\"\n        ></nz-table-title-footer>\n      </div>\n      <ng-container\n        *ngIf=\"\n          nzPaginationPosition === 'both' || nzPaginationPosition === 'bottom'\n        \"\n      >\n        <ng-template [ngTemplateOutlet]=\"paginationTemplate\"></ng-template>\n      </ng-container>\n    </nz-spin>\n    <ng-template #paginationTemplate>\n      <nz-pagination\n        *ngIf=\"nzShowPagination && data.length\"\n        [hidden]=\"!showPagination\"\n        class=\"ant-table-pagination ant-table-pagination-right\"\n        [nzShowSizeChanger]=\"nzShowSizeChanger\"\n        [nzPageSizeOptions]=\"nzPageSizeOptions\"\n        [nzItemRender]=\"nzItemRender!\"\n        [nzShowQuickJumper]=\"nzShowQuickJumper\"\n        [nzHideOnSinglePage]=\"nzHideOnSinglePage\"\n        [nzShowTotal]=\"nzShowTotal\"\n        [nzSize]=\"\n          nzPaginationType === 'small'\n            ? 'small'\n            : nzSize === 'default'\n            ? 'default'\n            : 'small'\n        \"\n        [nzPageSize]=\"nzPageSize\"\n        [nzTotal]=\"nzTotal\"\n        [nzSimple]=\"nzSimple\"\n        [nzPageIndex]=\"nzPageIndex\"\n        (nzPageSizeChange)=\"onPageSizeChange($event)\"\n        (nzPageIndexChange)=\"onPageIndexChange($event)\"\n      ></nz-pagination>\n    </ng-template>\n    <ng-template #contentTemplate>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n  host: {\n    class: \"ant-table-wrapper\",\n    \"[class.ant-table-wrapper-rtl]\": 'dir === \"rtl\"',\n  },\n})\nexport class NzTableComponent<T>\n  implements OnInit, OnDestroy, OnChanges, AfterViewInit\n{\n  readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n  static ngAcceptInputType_nzFrontPagination: BooleanInput;\n  static ngAcceptInputType_nzTemplateMode: BooleanInput;\n  static ngAcceptInputType_nzShowPagination: BooleanInput;\n  static ngAcceptInputType_nzLoading: BooleanInput;\n  static ngAcceptInputType_nzBordered: BooleanInput;\n  static ngAcceptInputType_nzOuterBordered: BooleanInput;\n  static ngAcceptInputType_nzShowSizeChanger: BooleanInput;\n  static ngAcceptInputType_nzHideOnSinglePage: BooleanInput;\n  static ngAcceptInputType_nzShowQuickJumper: BooleanInput;\n  static ngAcceptInputType_nzSimple: BooleanInput;\n  @Input() insertDomIn: \"top\" | \"bottom\" | \"default\" = \"default\"; //插入 dom 到哪里\n  @Input() nzVirtualMaxItems?: number;\n  @Input() nzTableLayout: NzTableLayout = \"auto\";\n  @Input() nzShowTotal: TemplateRef<{\n    $implicit: number;\n    range: [number, number];\n  }> | null = null;\n  @Input() nzItemRender: TemplateRef<PaginationItemRenderContext> | null = null;\n  @Input() nzTitle: string | TemplateRef<NzSafeAny> | null = null;\n  @Input() nzFooter: string | TemplateRef<NzSafeAny> | null = null;\n  @Input() nzNoResult: string | TemplateRef<NzSafeAny> | undefined | null = undefined;\n  @Input() nzPageSizeOptions = [10, 20, 30, 40, 50];\n  @Input() nzVirtualItemSize = 0;\n  @Input() nzVirtualMaxBufferPx = 200;\n  @Input() nzVirtualMinBufferPx = 100;\n  @Input() nzVirtualForTrackBy: TrackByFunction<T> = (index) => index;\n  @Input() nzLoadingDelay = 0;\n  @Input() nzPageIndex = 1;\n  @Input() nzPageSize = 10;\n  @Input() nzTotal = 0;\n  @Input() nzWidthConfig: ReadonlyArray<string | null> = [];\n  @Input() nzData: readonly T[] = [];\n  @Input() nzPaginationPosition: NzTablePaginationPosition = \"bottom\";\n  @Input() nzScroll: { x?: string | null; y?: string | null } = {\n    x: null,\n    y: null,\n  };\n  @Input() nzPaginationType: NzTablePaginationType = \"default\";\n  @Input() @InputBoolean() nzFrontPagination = true;\n  @Input() @InputBoolean() nzTemplateMode = false;\n  @Input() @InputBoolean() nzShowPagination = true;\n  @Input() @InputBoolean() nzLoading = false;\n  @Input() @InputBoolean() nzOuterBordered = false;\n  @Input() @WithConfig() nzLoadingIndicator: TemplateRef<NzSafeAny> | null =\n    null;\n  @Input() @WithConfig() @InputBoolean() nzBordered: boolean = false;\n  @Input() @WithConfig() nzSize: NzTableSize = \"default\";\n  @Input() @WithConfig() @InputBoolean() nzShowSizeChanger: boolean = false;\n  @Input() @WithConfig() @InputBoolean() nzHideOnSinglePage: boolean = false;\n  @Input() @WithConfig() @InputBoolean() nzShowQuickJumper: boolean = false;\n  @Input() @WithConfig() @InputBoolean() nzSimple: boolean = false;\n  @Output() readonly nzPageSizeChange = new EventEmitter<number>();\n  @Output() readonly nzPageIndexChange = new EventEmitter<number>();\n  @Output() readonly nzQueryParams = new EventEmitter<NzTableQueryParams>();\n  @Output() readonly nzCurrentPageDataChange = new EventEmitter<readonly T[]>();\n\n  /** public data for ngFor tr */\n  public data: readonly T[] = [];\n  public cdkVirtualScrollViewport?: CdkVirtualScrollViewport;\n  scrollX: string | null = null;\n  scrollY: string | null = null;\n  theadTemplate: TemplateRef<NzSafeAny> | null = null;\n  listOfAutoColWidth: ReadonlyArray<string | null> = [];\n  listOfManualColWidth: ReadonlyArray<string | null> = [];\n  hasFixLeft = false;\n  hasFixRight = false;\n  showPagination = true;\n  private destroy$ = new Subject<void>();\n  private templateMode$ = new BehaviorSubject<boolean>(false);\n  dir: Direction = \"ltr\";\n  @ContentChild(NzTableVirtualScrollDirective, { static: false })\n  nzVirtualScrollDirective!: NzTableVirtualScrollDirective<T>;\n  @ViewChild(NzTableInnerScrollComponent)\n  nzTableInnerScrollComponent!: NzTableInnerScrollComponent<T>;\n  verticalScrollBarWidth = 0;\n  onPageSizeChange(size: number): void {\n    this.nzTableDataService.updatePageSize(size);\n  }\n\n  onPageIndexChange(index: number): void {\n    this.nzTableDataService.updatePageIndex(index);\n  }\n\n  constructor(\n    private elementRef: ElementRef,\n    private nzResizeObserver: NzResizeObserver,\n    private nzConfigService: NzConfigService,\n    private cdr: ChangeDetectorRef,\n    private nzTableStyleService: NzTableStyleService,\n    private nzTableDataService: NzTableDataService<T>,\n    @Optional() private directionality: Directionality\n  ) {\n    this.nzConfigService\n      .getConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME)\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => {\n        this.cdr.markForCheck();\n      });\n  }\n\n  ngOnInit(): void {\n    const {\n      pageIndexDistinct$,\n      pageSizeDistinct$,\n      listOfCurrentPageData$,\n      total$,\n      queryParams$,\n    } = this.nzTableDataService;\n    const { theadTemplate$, hasFixLeft$, hasFixRight$ } =\n      this.nzTableStyleService;\n\n    this.dir = this.directionality.value;\n    this.directionality.change\n      ?.pipe(takeUntil(this.destroy$))\n      .subscribe((direction: Direction) => {\n        this.dir = direction;\n        this.cdr.detectChanges();\n      });\n\n    queryParams$.pipe(takeUntil(this.destroy$)).subscribe(this.nzQueryParams);\n    pageIndexDistinct$.pipe(takeUntil(this.destroy$)).subscribe((pageIndex) => {\n      if (pageIndex !== this.nzPageIndex) {\n        this.nzPageIndex = pageIndex;\n        this.nzPageIndexChange.next(pageIndex);\n      }\n    });\n    pageSizeDistinct$.pipe(takeUntil(this.destroy$)).subscribe((pageSize) => {\n      if (pageSize !== this.nzPageSize) {\n        this.nzPageSize = pageSize;\n        this.nzPageSizeChange.next(pageSize);\n      }\n    });\n    total$\n      .pipe(\n        takeUntil(this.destroy$),\n        filter(() => this.nzFrontPagination)\n      )\n      .subscribe((total) => {\n        if (total !== this.nzTotal) {\n          this.nzTotal = total;\n          this.cdr.markForCheck();\n        }\n      });\n    listOfCurrentPageData$.pipe(takeUntil(this.destroy$)).subscribe((data) => {\n      this.data = data;\n      this.nzCurrentPageDataChange.next(data);\n      this.cdr.markForCheck();\n    });\n\n    theadTemplate$.pipe(takeUntil(this.destroy$)).subscribe((theadTemplate) => {\n      this.theadTemplate = theadTemplate;\n      this.cdr.markForCheck();\n    });\n\n    hasFixLeft$.pipe(takeUntil(this.destroy$)).subscribe((hasFixLeft) => {\n      this.hasFixLeft = hasFixLeft;\n      this.cdr.markForCheck();\n    });\n\n    hasFixRight$.pipe(takeUntil(this.destroy$)).subscribe((hasFixRight) => {\n      this.hasFixRight = hasFixRight;\n      this.cdr.markForCheck();\n    });\n\n    combineLatest([total$, this.templateMode$])\n      .pipe(\n        map(([total, templateMode]) => total === 0 && !templateMode),\n        takeUntil(this.destroy$)\n      )\n      .subscribe((empty) => {\n        this.nzTableStyleService.setShowEmpty(empty);\n      });\n\n    this.verticalScrollBarWidth = measureScrollbar(\"vertical\");\n    this.nzTableStyleService.listOfListOfThWidthPx$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((listOfWidth) => {\n        this.listOfAutoColWidth = listOfWidth;\n        this.cdr.markForCheck();\n      });\n    this.nzTableStyleService.manualWidthConfigPx$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((listOfWidth) => {\n        this.listOfManualColWidth = listOfWidth;\n        this.cdr.markForCheck();\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const {\n      nzScroll,\n      nzPageIndex,\n      nzPageSize,\n      nzFrontPagination,\n      nzData,\n      nzWidthConfig,\n      nzNoResult,\n      nzTemplateMode,\n    } = changes;\n    if (nzPageIndex) {\n      this.nzTableDataService.updatePageIndex(this.nzPageIndex);\n    }\n    if (nzPageSize) {\n      this.nzTableDataService.updatePageSize(this.nzPageSize);\n    }\n    if (nzData) {\n      this.nzData = this.nzData || [];\n      this.nzTableDataService.updateListOfData(this.nzData);\n    }\n    if (nzFrontPagination) {\n      this.nzTableDataService.updateFrontPagination(this.nzFrontPagination);\n    }\n    if (nzScroll) {\n      this.setScrollOnChanges();\n    }\n    if (nzWidthConfig) {\n      this.nzTableStyleService.setTableWidthConfig(this.nzWidthConfig);\n    }\n    if (nzTemplateMode) {\n      this.templateMode$.next(this.nzTemplateMode);\n    }\n    if (nzNoResult) {\n      this.nzTableStyleService.setNoResult(this.nzNoResult);\n    }\n\n    this.updateShowPagination();\n  }\n\n  ngAfterViewInit(): void {\n    this.nzResizeObserver\n      .observe(this.elementRef)\n      .pipe(\n        map(([entry]) => {\n          const { width } = entry.target.getBoundingClientRect();\n          const scrollBarWidth = this.scrollY ? this.verticalScrollBarWidth : 0;\n          return Math.floor(width - scrollBarWidth);\n        }),\n        takeUntil(this.destroy$)\n      )\n      .subscribe(this.nzTableStyleService.hostWidth$);\n    if (\n      this.nzTableInnerScrollComponent &&\n      this.nzTableInnerScrollComponent.cdkVirtualScrollViewport\n    ) {\n      this.cdkVirtualScrollViewport =\n        this.nzTableInnerScrollComponent.cdkVirtualScrollViewport;\n    }\n  }\n\n  ngOnDestroy(): void {\n    //@ts-ignore\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  private setScrollOnChanges(): void {\n    this.scrollX = (this.nzScroll && this.nzScroll.x) || null;\n    this.scrollY = (this.nzScroll && this.nzScroll.y) || null;\n    this.nzTableStyleService.setScroll(this.scrollX, this.scrollY);\n  }\n\n  private updateShowPagination(): void {\n    this.showPagination =\n      (this.nzHideOnSinglePage && this.nzData.length > this.nzPageSize) ||\n      (this.nzData.length > 0 && !this.nzHideOnSinglePage) ||\n      (!this.nzFrontPagination && this.nzTotal > this.nzPageSize);\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  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\n\nimport { NzTableSortOrder } from \"../table.types\";\n\n@Component({\n  selector: \"nz-table-sorters\",\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <span class=\"ant-table-column-title\"\n      ><ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template\n    ></span>\n    <span\n      class=\"ant-table-column-sorter\"\n      [class.ant-table-column-sorter-full]=\"isDown && isUp\"\n    >\n      <span class=\"ant-table-column-sorter-inner\">\n        <span\n          *ngIf=\"isUp\"\n          nz-icon\n          nzType=\"caret-up\"\n          class=\"ant-table-column-sorter-up\"\n          [class.active]=\"sortOrder === 'ascend'\"\n        ></span>\n        <span\n          nz-icon\n          nzType=\"caret-down\"\n          *ngIf=\"isDown\"\n          class=\"ant-table-column-sorter-down\"\n          [class.active]=\"sortOrder === 'descend'\"\n        ></span>\n      </span>\n    </span>\n  `,\n  host: { class: \"ant-table-column-sorters\" },\n})\nexport class NzTableSortersComponent implements OnChanges {\n  @Input() sortDirections: NzTableSortOrder[] = [\"ascend\", \"descend\", null];\n  @Input() sortOrder: NzTableSortOrder = null;\n  @Input() contentTemplate: TemplateRef<NzSafeAny> | null = null;\n  @ViewChild(\"upTmp\", { static: true }) upTmp: TemplateRef<any> | null = null;\n  @ViewChild(\"downTmp\", { static: true }) downTmp: TemplateRef<any> | null =\n    null;\n  isUp = false;\n  isDown = false;\n  constructor() {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { sortDirections } = changes;\n    if (sortDirections) {\n      this.isUp = this.sortDirections.indexOf(\"ascend\") !== -1;\n      this.isDown = this.sortDirections.indexOf(\"descend\") !== -1;\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  Input,\n  NgZone,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { fromEvent } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport {\n  NzConfigKey,\n  NzConfigService,\n  WithConfig,\n} from \"ng-zorro-antd/core/config\";\nimport { NzDestroyService } from \"ng-zorro-antd/core/services\";\nimport { BooleanInput } from \"ng-zorro-antd/core/types\";\nimport { InputBoolean } from \"ng-zorro-antd/core/util\";\nimport {\n  NzDropDownDirective,\n  NzDropdownMenuComponent,\n} from \"ng-zorro-antd/dropdown\";\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = \"filterTrigger\";\n\n@Component({\n  selector: \"nz-filter-trigger\",\n  exportAs: `nzFilterTrigger`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <span\n      nz-dropdown\n      class=\"ant-table-filter-trigger\"\n      nzTrigger=\"click\"\n      nzPlacement=\"bottomRight\"\n      [nzBackdrop]=\"nzBackdrop\"\n      [nzClickHide]=\"false\"\n      [nzDropdownMenu]=\"nzDropdownMenu\"\n      [class.active]=\"nzActive\"\n      [class.ant-table-filter-open]=\"nzVisible\"\n      [nzVisible]=\"nzVisible\"\n      (nzVisibleChange)=\"onVisibleChange($event)\"\n    >\n      <ng-content></ng-content>\n    </span>\n  `,\n  providers: [NzDestroyService],\n})\nexport class NzFilterTriggerComponent implements OnInit {\n  readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n  static ngAcceptInputType_nzBackdrop: BooleanInput;\n\n  @Input() nzActive = false;\n  @Input() nzDropdownMenu!: NzDropdownMenuComponent;\n  @Input() nzVisible = false;\n\n  @Input() @WithConfig<boolean>() @InputBoolean() nzBackdrop = false;\n\n  @Output() readonly nzVisibleChange = new EventEmitter<boolean>();\n\n  @ViewChild(NzDropDownDirective, { static: true, read: ElementRef })\n  nzDropdown!: ElementRef<HTMLElement>;\n\n  onVisibleChange(visible: boolean): void {\n    this.nzVisible = visible;\n    this.nzVisibleChange.next(visible);\n  }\n\n  hide(): void {\n    this.nzVisible = false;\n    this.cdr.markForCheck();\n  }\n\n  show(): void {\n    this.nzVisible = true;\n    this.cdr.markForCheck();\n  }\n\n  constructor(\n    public readonly nzConfigService: NzConfigService,\n    private ngZone: NgZone,\n    private cdr: ChangeDetectorRef,\n    private destroy$: NzDestroyService\n  ) {}\n\n  ngOnInit(): void {\n    this.ngZone.runOutsideAngular(() => {\n      fromEvent(this.nzDropdown.nativeElement, \"click\")\n        .pipe(takeUntil(this.destroy$))\n        .subscribe((event) => {\n          event.stopPropagation();\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 {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\nimport { arraysEqual } from \"ng-zorro-antd/core/util\";\nimport { NzI18nService, NzTableI18nInterface } from \"ng-zorro-antd/i18n\";\n\nimport { NzTableFilterList } from \"../table.types\";\n\ninterface NzThItemInterface {\n  text: string;\n  value: NzSafeAny;\n  checked: boolean;\n}\n\n@Component({\n  selector: \"nz-table-filter\",\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <span class=\"ant-table-column-title\">\n      <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n    </span>\n    <ng-container *ngIf=\"!customFilter; else extraTemplate\">\n      <nz-filter-trigger\n        [nzVisible]=\"isVisible\"\n        [nzActive]=\"isChecked\"\n        [nzDropdownMenu]=\"filterMenu\"\n        (nzVisibleChange)=\"onVisibleChange($event)\"\n      >\n        <span nz-icon nzType=\"filter\" nzTheme=\"fill\"></span>\n      </nz-filter-trigger>\n      <nz-dropdown-menu #filterMenu=\"nzDropdownMenu\">\n        <div class=\"ant-table-filter-dropdown\">\n          <ul nz-menu>\n            <li\n              nz-menu-item\n              [nzSelected]=\"f.checked\"\n              *ngFor=\"let f of listOfParsedFilter; trackBy: trackByValue\"\n              (click)=\"check(f)\"\n            >\n              <label\n                nz-radio\n                *ngIf=\"!filterMultiple\"\n                [ngModel]=\"f.checked\"\n                (ngModelChange)=\"check(f)\"\n              ></label>\n              <label\n                nz-checkbox\n                *ngIf=\"filterMultiple\"\n                [ngModel]=\"f.checked\"\n                (ngModelChange)=\"check(f)\"\n              ></label>\n              <span>{{ f.text }}</span>\n            </li>\n          </ul>\n          <div class=\"ant-table-filter-dropdown-btns\">\n            <button\n              nz-button\n              nzType=\"link\"\n              nzSize=\"small\"\n              (click)=\"reset()\"\n              [disabled]=\"!isChecked\"\n            >\n              {{ locale.filterReset }}\n            </button>\n            <button\n              nz-button\n              nzType=\"primary\"\n              nzSize=\"small\"\n              (click)=\"confirm()\"\n            >\n              {{ locale.filterConfirm }}\n            </button>\n          </div>\n        </div>\n      </nz-dropdown-menu>\n    </ng-container>\n  `,\n  host: { class: \"ant-table-filter-column\" },\n})\nexport class NzTableFilterComponent implements OnChanges, OnDestroy, OnInit {\n  @Input() contentTemplate: TemplateRef<NzSafeAny> | null = null;\n  @Input() customFilter = false;\n  @Input() extraTemplate: TemplateRef<NzSafeAny> | null = null;\n  @Input() filterMultiple = true;\n  @Input() listOfFilter: NzTableFilterList = [];\n  @Output() readonly filterChange = new EventEmitter<NzSafeAny[] | NzSafeAny>();\n  private destroy$ = new Subject();\n  locale!: NzTableI18nInterface;\n  isChecked = false;\n  isVisible = false;\n  listOfParsedFilter: NzThItemInterface[] = [];\n  listOfChecked: NzSafeAny[] = [];\n\n  trackByValue(_: number, item: NzThItemInterface): NzSafeAny {\n    return item.value;\n  }\n\n  check(filter: NzThItemInterface): void {\n    if (this.filterMultiple) {\n      this.listOfParsedFilter = this.listOfParsedFilter.map((item) => {\n        if (item === filter) {\n          return { ...item, checked: !filter.checked };\n        } else {\n          return item;\n        }\n      });\n      filter.checked = !filter.checked;\n    } else {\n      this.listOfParsedFilter = this.listOfParsedFilter.map((item) => ({\n        ...item,\n        checked: item === filter,\n      }));\n    }\n    this.isChecked = this.getCheckedStatus(this.listOfParsedFilter);\n  }\n\n  confirm(): void {\n    this.isVisible = false;\n    this.emitFilterData();\n  }\n\n  reset(): void {\n    this.isVisible = false;\n    this.listOfParsedFilter = this.parseListOfFilter(this.listOfFilter, true);\n    this.isChecked = this.getCheckedStatus(this.listOfParsedFilter);\n    this.emitFilterData();\n  }\n\n  onVisibleChange(value: boolean): void {\n    this.isVisible = value;\n    if (!value) {\n      this.emitFilterData();\n    } else {\n      this.listOfChecked = this.listOfParsedFilter\n        .filter((item) => item.checked)\n        .map((item) => item.value);\n    }\n  }\n\n  emitFilterData(): void {\n    const listOfChecked = this.listOfParsedFilter\n      .filter((item) => item.checked)\n      .map((item) => item.value);\n    if (!arraysEqual(this.listOfChecked, listOfChecked)) {\n      if (this.filterMultiple) {\n        this.filterChange.emit(listOfChecked);\n      } else {\n        this.filterChange.emit(\n          listOfChecked.length > 0 ? listOfChecked[0] : null\n        );\n      }\n    }\n  }\n\n  parseListOfFilter(\n    listOfFilter: NzTableFilterList,\n    reset?: boolean\n  ): NzThItemInterface[] {\n    return listOfFilter.map((item) => {\n      const checked = reset ? false : !!item.byDefault;\n      return { text: item.text, value: item.value, checked };\n    });\n  }\n\n  getCheckedStatus(listOfParsedFilter: NzThItemInterface[]): boolean {\n    return listOfParsedFilter.some((item) => item.checked);\n  }\n\n  constructor(private cdr: ChangeDetectorRef, private i18n: NzI18nService) {}\n\n  ngOnInit(): void {\n    this.i18n.localeChange.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.locale = this.i18n.getLocaleData(\"Table\");\n      this.cdr.markForCheck();\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { listOfFilter } = changes;\n    if (listOfFilter && this.listOfFilter && this.listOfFilter.length) {\n      this.listOfParsedFilter = this.parseListOfFilter(this.listOfFilter);\n      this.isChecked = this.getCheckedStatus(this.listOfParsedFilter);\n    }\n  }\n  ngOnDestroy(): void {\n    //@ts-ignore\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\n/* eslint-disable @angular-eslint/component-selector */\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { fromEvent, Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\n\nimport { NzDestroyService } from \"ng-zorro-antd/core/services\";\nimport { BooleanInput } from \"ng-zorro-antd/core/types\";\nimport { InputBoolean } from \"ng-zorro-antd/core/util\";\n\nimport {\n  NzTableFilterFn,\n  NzTableFilterList,\n  NzTableFilterValue,\n  NzTableSortFn,\n  NzTableSortOrder,\n} from \"../table.types\";\n\n@Component({\n  selector:\n    \"th[nzColumnKey], th[nzSortFn], th[nzSortOrder], th[nzFilters], th[nzShowSort], th[nzShowFilter], th[nzCustomFilter]\",\n  preserveWhitespaces: false,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <nz-table-filter\n      *ngIf=\"nzShowFilter || nzCustomFilter; else notFilterTemplate\"\n      [contentTemplate]=\"notFilterTemplate\"\n      [extraTemplate]=\"extraTemplate\"\n      [customFilter]=\"nzCustomFilter\"\n      [filterMultiple]=\"nzFilterMultiple\"\n      [listOfFilter]=\"nzFilters\"\n      (filterChange)=\"onFilterValueChange($event)\"\n    ></nz-table-filter>\n    <ng-template #notFilterTemplate>\n      <ng-template\n        [ngTemplateOutlet]=\"nzShowSort ? sortTemplate : contentTemplate\"\n      ></ng-template>\n    </ng-template>\n    <ng-template #extraTemplate>\n      <ng-content select=\"[nz-th-extra]\"></ng-content>\n      <ng-content select=\"nz-filter-trigger\"></ng-content>\n    </ng-template>\n    <ng-template #sortTemplate>\n      <nz-table-sorters\n        [sortOrder]=\"sortOrder\"\n        [sortDirections]=\"sortDirections\"\n        [contentTemplate]=\"contentTemplate\"\n      ></nz-table-sorters>\n    </ng-template>\n    <ng-template #contentTemplate>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n  host: {\n    \"[class.ant-table-column-has-sorters]\": \"nzShowSort\",\n    \"[class.ant-table-column-sort]\": `sortOrder === 'descend' || sortOrder === 'ascend'`,\n  },\n  providers: [NzDestroyService],\n})\nexport class NzThAddOnComponent<T> implements OnChanges, OnInit {\n  static ngAcceptInputType_nzShowSort: BooleanInput;\n  static ngAcceptInputType_nzShowFilter: BooleanInput;\n  static ngAcceptInputType_nzCustomFilter: BooleanInput;\n\n  manualClickOrder$ = new Subject<NzThAddOnComponent<T>>();\n  calcOperatorChange$ = new Subject();\n  nzFilterValue: NzTableFilterValue = null;\n  sortOrder: NzTableSortOrder = null;\n  sortDirections: NzTableSortOrder[] = [\"ascend\", \"descend\", null];\n  private sortOrderChange$ = new Subject<NzTableSortOrder>();\n  private isNzShowSortChanged = false;\n  private isNzShowFilterChanged = false;\n  @Input() nzColumnKey?: string;\n  @Input() nzFilterMultiple = true;\n  @Input() nzSortOrder: NzTableSortOrder = null;\n  @Input() nzSortPriority: number | boolean = false;\n  @Input() nzSortDirections: NzTableSortOrder[] = [\"ascend\", \"descend\", null];\n  @Input() nzFilters: NzTableFilterList = [];\n  @Input() nzSortFn: NzTableSortFn<T> | boolean | null = null;\n  @Input() nzFilterFn: NzTableFilterFn<T> | boolean | null = null;\n  @Input() dragging: boolean = false;\n  @Input() @InputBoolean() nzShowSort = false;\n  @Input() @InputBoolean() nzShowFilter = false;\n  @Input() @InputBoolean() nzCustomFilter = false;\n  @Output() readonly nzCheckedChange = new EventEmitter<boolean>();\n  @Output() readonly nzSortOrderChange = new EventEmitter<string | null>();\n  @Output() readonly nzFilterChange = new EventEmitter<NzTableFilterValue>();\n\n  getNextSortDirection(\n    sortDirections: NzTableSortOrder[],\n    current: NzTableSortOrder\n  ): NzTableSortOrder {\n    const index = sortDirections.indexOf(current);\n    if (index === sortDirections.length - 1) {\n      return sortDirections[0];\n    } else {\n      return sortDirections[index + 1];\n    }\n  }\n\n  setSortOrder(order: NzTableSortOrder): void {\n    this.sortOrderChange$.next(order);\n  }\n\n  clearSortOrder(): void {\n    if (this.sortOrder !== null) {\n      this.setSortOrder(null);\n    }\n  }\n\n  onFilterValueChange(value: NzTableFilterValue): void {\n    this.nzFilterChange.emit(value);\n    this.nzFilterValue = value;\n    this.updateCalcOperator();\n  }\n\n  updateCalcOperator(): void {\n    //@ts-ignore\n    this.calcOperatorChange$.next();\n  }\n\n  constructor(\n    private host: ElementRef<HTMLElement>,\n    private cdr: ChangeDetectorRef,\n    private ngZone: NgZone,\n    private destroy$: NzDestroyService\n  ) {}\n\n  ngOnInit(): void {\n    this.ngZone.runOutsideAngular(() =>\n      fromEvent(this.host.nativeElement, \"click\")\n        .pipe(\n          filter(() => this.nzShowSort),\n          takeUntil(this.destroy$)\n        )\n        .subscribe(() => {\n          const nextOrder = this.getNextSortDirection(\n            this.sortDirections,\n            this.sortOrder!\n          );\n          this.ngZone.run(() => {\n            this.setSortOrder(nextOrder);\n            this.manualClickOrder$.next(this);\n          });\n        })\n    );\n\n    this.sortOrderChange$.pipe(takeUntil(this.destroy$)).subscribe((order) => {\n      if (this.sortOrder !== order && !this.dragging) {\n        this.sortOrder = order;\n        this.nzSortOrderChange.emit(order);\n      }\n      this.updateCalcOperator();\n      this.cdr.markForCheck();\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const {\n      nzSortDirections,\n      nzFilters,\n      nzSortOrder,\n      nzSortFn,\n      nzFilterFn,\n      nzSortPriority,\n      nzFilterMultiple,\n      nzShowSort,\n      nzShowFilter,\n    } = changes;\n    if (nzSortDirections) {\n      if (this.nzSortDirections && this.nzSortDirections.length) {\n        this.sortDirections = this.nzSortDirections;\n      }\n    }\n    if (nzSortOrder) {\n      this.sortOrder = this.nzSortOrder;\n      this.setSortOrder(this.nzSortOrder);\n    }\n    if (nzShowSort) {\n      this.isNzShowSortChanged = true;\n    }\n    if (nzShowFilter) {\n      this.isNzShowFilterChanged = true;\n    }\n    const isFirstChange = (value: SimpleChange): boolean =>\n      value && value.firstChange && value.currentValue !== undefined;\n    if (\n      (isFirstChange(nzSortOrder) || isFirstChange(nzSortFn)) &&\n      !this.isNzShowSortChanged\n    ) {\n      this.nzShowSort = true;\n    }\n    if (isFirstChange(nzFilters) && !this.isNzShowFilterChanged) {\n      this.nzShowFilter = true;\n    }\n    if ((nzFilters || nzFilterMultiple) && this.nzShowFilter) {\n      const listOfValue = this.nzFilters\n        .filter((item) => item.byDefault)\n        .map((item) => item.value);\n      this.nzFilterValue = this.nzFilterMultiple\n        ? listOfValue\n        : listOfValue[0] || null;\n    }\n    if (nzSortFn || nzFilterFn || nzSortPriority || nzFilters) {\n      this.updateCalcOperator();\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 { Directive, Optional } from \"@angular/core\";\n\nimport { NzTableStyleService } from \"../table-style.service\";\n\n@Directive({\n  selector:\n    \"th:not(.nz-disable-th):not([mat-cell]), td:not(.nz-disable-td):not([mat-cell])\",\n  host: {\n    \"[class.ant-table-cell]\": \"isInsideTable\",\n  },\n})\nexport class NzTableCellDirective {\n  isInsideTable = false;\n  constructor(@Optional() nzTableStyleService: NzTableStyleService) {\n    this.isInsideTable = !!nzTableStyleService;\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  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  Renderer2,\n  SimpleChanges,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\n\nimport { isNil } from \"ng-zorro-antd/core/util\";\n\n@Directive({\n  selector: \"th\",\n})\nexport class NzThMeasureDirective implements OnChanges {\n  changes$ = new Subject();\n  @Input() nzWidth: string | null = null;\n  @Input() colspan: string | number | null = null;\n  @Input() colSpan: string | number | null = null;\n  @Input() rowspan: string | number | null = null;\n  @Input() rowSpan: string | number | null = null;\n  constructor(private renderer: Renderer2, private elementRef: ElementRef) {}\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzWidth, colspan, rowspan, colSpan, rowSpan } = changes;\n    if (colspan || colSpan) {\n      const col = this.colspan || this.colSpan;\n      if (!isNil(col)) {\n        this.renderer.setAttribute(\n          this.elementRef.nativeElement,\n          \"colspan\",\n          `${col}`\n        );\n      } else {\n        this.renderer.removeAttribute(this.elementRef.nativeElement, \"colspan\");\n      }\n    }\n    if (rowspan || rowSpan) {\n      const row = this.rowspan || this.rowSpan;\n      if (!isNil(row)) {\n        this.renderer.setAttribute(\n          this.elementRef.nativeElement,\n          \"rowspan\",\n          `${row}`\n        );\n      } else {\n        this.renderer.removeAttribute(this.elementRef.nativeElement, \"rowspan\");\n      }\n    }\n    if (nzWidth || colspan) {\n      //@ts-ignore\n\n      this.changes$.next();\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 { Directive, Input } from \"@angular/core\";\n\n@Directive({\n  selector: \"nz-row-indent\",\n  host: {\n    class: \"ant-table-row-indent\",\n    \"[style.padding-left.px]\": \"indentSize\",\n  },\n})\nexport class NzRowIndentDirective {\n  @Input() indentSize = 0;\n\n  constructor() {}\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 { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\n@Directive({\n  selector: \"button[nz-row-expand-button]\",\n  host: {\n    class: \"ant-table-row-expand-icon\",\n    \"[type]\": `'button'`,\n    \"[class.ant-table-row-expand-icon-expanded]\": `!spaceMode && expand === true`,\n    \"[class.ant-table-row-expand-icon-collapsed]\": `!spaceMode && expand === false`,\n    \"[class.ant-table-row-expand-icon-spaced]\": \"spaceMode\",\n    \"(click)\": \"onHostClick()\",\n  },\n})\nexport class NzRowExpandButtonDirective {\n  @Input() expand = false;\n  @Input() spaceMode = false;\n  @Output() readonly expandChange = new EventEmitter();\n\n  constructor() {}\n\n  onHostClick(): void {\n    if (!this.spaceMode) {\n      this.expand = !this.expand;\n      this.expandChange.next(this.expand);\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\n/* eslint-disable @angular-eslint/component-selector */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { BooleanInput } from \"ng-zorro-antd/core/types\";\nimport { InputBoolean } from \"ng-zorro-antd/core/util\";\n\n@Component({\n  selector:\n    \"td[nzChecked], td[nzDisabled], td[nzIndeterminate], td[nzIndentSize], td[nzExpand], td[nzShowExpand], td[nzShowCheckbox]\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <ng-container *ngIf=\"nzShowExpand || nzIndentSize > 0\">\n      <nz-row-indent [indentSize]=\"nzIndentSize\"></nz-row-indent>\n      <button\n        nz-row-expand-button\n        [expand]=\"nzExpand\"\n        (expandChange)=\"onExpandChange($event)\"\n        [spaceMode]=\"!nzShowExpand\"\n      ></button>\n    </ng-container>\n    <label\n      eo-ng-checkbox\n      *ngIf=\"nzShowCheckbox\"\n      [nzDisabled]=\"nzDisabled\"\n      [ngModel]=\"nzChecked\"\n      [nzIndeterminate]=\"nzIndeterminate\"\n      (ngModelChange)=\"onCheckedChange($event)\"\n    ></label>\n    <ng-content></ng-content>\n  `,\n  host: {\n    \"[class.ant-table-cell-with-append]\": `nzShowExpand || nzIndentSize > 0`,\n    \"[class.ant-table-selection-column]\": `nzShowCheckbox`,\n  },\n})\nexport class NzTdAddOnComponent implements OnChanges {\n  static ngAcceptInputType_nzShowExpand: BooleanInput;\n  static ngAcceptInputType_nzShowCheckbox: BooleanInput;\n  static ngAcceptInputType_nzExpand: BooleanInput;\n\n  @Input() nzChecked = false;\n  @Input() nzDisabled = false;\n  @Input() nzIndeterminate = false;\n  @Input() nzIndentSize = 0;\n  @Input() @InputBoolean() nzShowExpand = false;\n  @Input() @InputBoolean() nzShowCheckbox = false;\n  @Input() @InputBoolean() nzExpand = false;\n  @Output() readonly nzCheckedChange = new EventEmitter<boolean>();\n  @Output() readonly nzExpandChange = new EventEmitter<boolean>();\n  private isNzShowExpandChanged = false;\n  private isNzShowCheckboxChanged = false;\n\n  onCheckedChange(checked: boolean): void {\n    this.nzChecked = checked;\n    this.nzCheckedChange.emit(checked);\n  }\n\n  onExpandChange(expand: boolean): void {\n    this.nzExpand = expand;\n    this.nzExpandChange.emit(expand);\n  }\n  ngOnChanges(changes: SimpleChanges): void {\n    const isFirstChange = (value: SimpleChange): boolean =>\n      value && value.firstChange && value.currentValue !== undefined;\n    const { nzExpand, nzChecked, nzShowExpand, nzShowCheckbox } = changes;\n    if (nzShowExpand) {\n      this.isNzShowExpandChanged = true;\n    }\n    if (nzShowCheckbox) {\n      this.isNzShowCheckboxChanged = true;\n    }\n    if (isFirstChange(nzExpand) && !this.isNzShowExpandChanged) {\n      this.nzShowExpand = true;\n    }\n    if (isFirstChange(nzChecked) && !this.isNzShowCheckboxChanged) {\n      this.nzShowCheckbox = true;\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  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  Renderer2,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\n\n@Directive({\n  selector: \"td[nzRight],th[nzRight],td[nzLeft],th[nzLeft]\",\n  host: {\n    \"[class.ant-table-cell-fix-right]\": `isFixedRight`,\n    \"[class.ant-table-cell-fix-left]\": `isFixedLeft`,\n    \"[style.position]\": `isFixed? 'sticky' : null`,\n  },\n})\nexport class NzCellFixedDirective implements OnChanges {\n  @Input() nzRight: string | boolean = false;\n  @Input() nzLeft: string | boolean = false;\n  @Input() colspan: number | null = null;\n  @Input() colSpan: number | null = null;\n  changes$ = new Subject<void>();\n  isAutoLeft = false;\n  isAutoRight = false;\n  isFixedLeft = false;\n  isFixedRight = false;\n  isFixed = false;\n\n  setAutoLeftWidth(autoLeft: string | null): void {\n    this.renderer.setStyle(this.elementRef.nativeElement, \"left\", autoLeft);\n  }\n\n  setAutoRightWidth(autoRight: string | null): void {\n    this.renderer.setStyle(this.elementRef.nativeElement, \"right\", autoRight);\n  }\n\n  setIsFirstRight(isFirstRight: boolean): void {\n    this.setFixClass(isFirstRight, \"ant-table-cell-fix-right-first\");\n  }\n\n  setIsLastLeft(isLastLeft: boolean): void {\n    this.setFixClass(isLastLeft, \"ant-table-cell-fix-left-last\");\n  }\n\n  private setFixClass(flag: boolean, className: string): void {\n    // the setFixClass function may call many times, so remove it first.\n    this.renderer.removeClass(this.elementRef.nativeElement, className);\n\n    if (flag) {\n      this.renderer.addClass(this.elementRef.nativeElement, className);\n    }\n  }\n\n  constructor(private renderer: Renderer2, private elementRef: ElementRef) {}\n\n  ngOnChanges(): void {\n    this.setIsFirstRight(false);\n    this.setIsLastLeft(false);\n    this.isAutoLeft = this.nzLeft === \"\" || this.nzLeft === true;\n    this.isAutoRight = this.nzRight === \"\" || this.nzRight === true;\n    this.isFixedLeft = this.nzLeft !== false;\n    this.isFixedRight = this.nzRight !== false;\n    this.isFixed = this.isFixedLeft || this.isFixedRight;\n    const validatePx = (value: string | boolean): string | null => {\n      if (typeof value === \"string\" && value !== \"\") {\n        return value;\n      } else {\n        return null;\n      }\n    };\n    this.setAutoLeftWidth(validatePx(this.nzLeft));\n    this.setAutoRightWidth(validatePx(this.nzRight));\n    this.changes$.next();\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  AfterContentInit,\n  ContentChildren,\n  Directive,\n  OnDestroy,\n  Optional,\n  QueryList,\n} from \"@angular/core\";\nimport { combineLatest, merge, Observable, ReplaySubject, Subject } from \"rxjs\";\nimport { map, mergeMap, startWith, switchMap, takeUntil } from \"rxjs/operators\";\n\nimport { NzCellFixedDirective } from \"../cell/cell-fixed.directive\";\nimport { NzThMeasureDirective } from \"../cell/th-measure.directive\";\nimport { NzTableStyleService } from \"../table-style.service\";\n\n@Directive({\n  selector:\n    \"tr:not([mat-row]):not([mat-header-row]):not([nz-table-measure-row]):not([nzExpand]):not([nz-table-fixed-row])\",\n  host: {\n    \"[class.ant-table-row]\": \"isInsideTable\",\n  },\n})\nexport class NzTrDirective implements AfterContentInit, OnDestroy {\n  @ContentChildren(NzThMeasureDirective)\n  listOfNzThDirective!: QueryList<NzThMeasureDirective>;\n  @ContentChildren(NzCellFixedDirective)\n  listOfCellFixedDirective!: QueryList<NzCellFixedDirective>;\n  private destroy$ = new Subject<void>();\n  private listOfFixedColumns$ = new ReplaySubject<NzCellFixedDirective[]>(1);\n  private listOfColumns$ = new ReplaySubject<NzThMeasureDirective[]>(1);\n  listOfFixedColumnsChanges$: Observable<NzCellFixedDirective[]> =\n    this.listOfFixedColumns$.pipe(\n      switchMap((list) =>\n        merge(\n          ...[\n            this.listOfFixedColumns$,\n            ...list.map((c: NzCellFixedDirective) => c.changes$),\n          ]\n        ).pipe(mergeMap(() => this.listOfFixedColumns$))\n      ),\n      takeUntil(this.destroy$)\n    );\n  listOfFixedLeftColumnChanges$ = this.listOfFixedColumnsChanges$.pipe(\n    map((list) => list.filter((item) => item.nzLeft !== false))\n  );\n  listOfFixedRightColumnChanges$ = this.listOfFixedColumnsChanges$.pipe(\n    map((list) => list.filter((item) => item.nzRight !== false))\n  );\n  listOfColumnsChanges$: Observable<NzThMeasureDirective[]> =\n    this.listOfColumns$.pipe(\n      switchMap((list) =>\n        merge(\n          ...[\n            this.listOfColumns$,\n            ...list.map((c: NzThMeasureDirective) => c.changes$),\n          ]\n        ).pipe(mergeMap(() => this.listOfColumns$))\n      ),\n      takeUntil(this.destroy$)\n    );\n  isInsideTable = false;\n\n  constructor(@Optional() private nzTableStyleService: NzTableStyleService) {\n    this.isInsideTable = !!nzTableStyleService;\n  }\n\n  ngAfterContentInit(): void {\n    if (this.nzTableStyleService) {\n      this.listOfCellFixedDirective.changes\n        .pipe(\n          startWith(this.listOfCellFixedDirective),\n          takeUntil(this.destroy$)\n        )\n        .subscribe(this.listOfFixedColumns$);\n      this.listOfNzThDirective.changes\n        .pipe(startWith(this.listOfNzThDirective), takeUntil(this.destroy$))\n        .subscribe(this.listOfColumns$);\n      /** set last left and first right **/\n      this.listOfFixedLeftColumnChanges$.subscribe((listOfFixedLeft) => {\n        listOfFixedLeft.forEach((cell) =>\n          cell.setIsLastLeft(\n            cell === listOfFixedLeft[listOfFixedLeft.length - 1]\n          )\n        );\n      });\n      this.listOfFixedRightColumnChanges$.subscribe((listOfFixedRight) => {\n        listOfFixedRight.forEach((cell) =>\n          cell.setIsFirstRight(cell === listOfFixedRight[0])\n        );\n      });\n      /** calculate fixed nzLeft and nzRight **/\n      combineLatest([\n        this.nzTableStyleService.listOfListOfThWidth$,\n        this.listOfFixedLeftColumnChanges$,\n      ])\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(([listOfAutoWidth, listOfLeftCell]) => {\n          listOfLeftCell.forEach((cell, index) => {\n            if (cell.isAutoLeft) {\n              const currentArray = listOfLeftCell.slice(0, index);\n              const count = currentArray.reduce(\n                (pre, cur) => pre + (cur.colspan || cur.colSpan || 1),\n                0\n              );\n              const width = listOfAutoWidth\n                .slice(0, count)\n                .reduce((pre, cur) => pre + cur, 0);\n              cell.setAutoLeftWidth(`${width}px`);\n            }\n          });\n        });\n      combineLatest([\n        this.nzTableStyleService.listOfListOfThWidth$,\n        this.listOfFixedRightColumnChanges$,\n      ])\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(([listOfAutoWidth, listOfRightCell]) => {\n          listOfRightCell.forEach((_, index) => {\n            const cell = listOfRightCell[listOfRightCell.length - index - 1];\n            if (cell.isAutoRight) {\n              const currentArray = listOfRightCell.slice(\n                listOfRightCell.length - index,\n                listOfRightCell.length\n              );\n              const count = currentArray.reduce(\n                (pre, cur) => pre + (cur.colspan || cur.colSpan || 1),\n                0\n              );\n              const width = listOfAutoWidth\n                .slice(listOfAutoWidth.length - count, listOfAutoWidth.length)\n                .reduce((pre, cur) => pre + cur, 0);\n              cell.setAutoRightWidth(`${width}px`);\n            }\n          });\n        });\n    }\n  }\n\n  ngOnDestroy(): void {\n    //@ts-ignore\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\n/* eslint-disable @angular-eslint/component-selector */\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { EMPTY, merge, Observable, of, Subject } from \"rxjs\";\nimport {\n  delay,\n  map,\n  mergeMap,\n  startWith,\n  switchMap,\n  takeUntil,\n} from \"rxjs/operators\";\n\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\n\nimport { NzThAddOnComponent } from \"../cell/th-addon.component\";\nimport { NzTableDataService } from \"../table-data.service\";\nimport { NzTableStyleService } from \"../table-style.service\";\nimport { NzTrDirective } from \"./tr.directive\";\n\n@Component({\n  selector: \"thead:not(.ant-table-thead)\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <ng-template #contentTemplate>\n      <ng-content></ng-content>\n    </ng-template>\n    <ng-container *ngIf=\"!isInsideTable\">\n      <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n    </ng-container>\n  `,\n})\nexport class NzTheadComponent<T>\n  implements AfterContentInit, OnDestroy, AfterViewInit, OnInit\n{\n  private destroy$ = new Subject<void>();\n  isInsideTable = false;\n  @ViewChild(\"contentTemplate\", { static: true })\n  templateRef!: TemplateRef<NzSafeAny>;\n  @ContentChildren(NzTrDirective, { descendants: true })\n  listOfNzTrDirective!: QueryList<NzTrDirective>;\n  @ContentChildren(NzThAddOnComponent, { descendants: true })\n  listOfNzThAddOnComponent!: QueryList<NzThAddOnComponent<T>>;\n  @Output() readonly nzSortOrderChange = new EventEmitter<{\n    key: NzSafeAny;\n    value: string | null;\n  }>();\n\n  constructor(\n    private elementRef: ElementRef,\n    private renderer: Renderer2,\n    @Optional() private nzTableStyleService: NzTableStyleService,\n    @Optional() private nzTableDataService: NzTableDataService<T>\n  ) {\n    this.isInsideTable = !!this.nzTableStyleService;\n  }\n\n  ngOnInit(): void {\n    if (this.nzTableStyleService) {\n      this.nzTableStyleService.setTheadTemplate(this.templateRef);\n    }\n  }\n\n  ngAfterContentInit(): void {\n    if (this.nzTableStyleService) {\n      const firstTableRow$ = this.listOfNzTrDirective.changes.pipe(\n        startWith(this.listOfNzTrDirective),\n        map((item) => item && item.first)\n      ) as Observable<NzTrDirective>;\n      const listOfColumnsChanges$ = firstTableRow$.pipe(\n        switchMap((firstTableRow) =>\n          firstTableRow ? firstTableRow.listOfColumnsChanges$ : EMPTY\n        ),\n        takeUntil(this.destroy$)\n      );\n      listOfColumnsChanges$.subscribe((data) =>\n        this.nzTableStyleService.setListOfTh(data)\n      );\n      /** TODO: need reset the measure row when scrollX change **/\n      this.nzTableStyleService.enableAutoMeasure$\n        .pipe(switchMap((enable) => (enable ? listOfColumnsChanges$ : of([]))))\n        .pipe(takeUntil(this.destroy$))\n        .subscribe((data) =>\n          this.nzTableStyleService.setListOfMeasureColumn(data)\n        );\n      const listOfFixedLeftColumnChanges$ = firstTableRow$.pipe(\n        switchMap((firstTr) =>\n          firstTr ? firstTr.listOfFixedLeftColumnChanges$ : EMPTY\n        ),\n        takeUntil(this.destroy$)\n      );\n      const listOfFixedRightColumnChanges$ = firstTableRow$.pipe(\n        switchMap((firstTr) =>\n          firstTr ? firstTr.listOfFixedRightColumnChanges$ : EMPTY\n        ),\n        takeUntil(this.destroy$)\n      );\n      listOfFixedLeftColumnChanges$.subscribe((listOfFixedLeftColumn) => {\n        this.nzTableStyleService.setHasFixLeft(\n          listOfFixedLeftColumn.length !== 0\n        );\n      });\n      listOfFixedRightColumnChanges$.subscribe((listOfFixedRightColumn) => {\n        this.nzTableStyleService.setHasFixRight(\n          listOfFixedRightColumn.length !== 0\n        );\n      });\n    }\n    if (this.nzTableDataService) {\n      const listOfColumn$ = this.listOfNzThAddOnComponent.changes.pipe(\n        startWith(this.listOfNzThAddOnComponent)\n      ) as Observable<QueryList<NzThAddOnComponent<T>>>;\n      const manualSort$ = listOfColumn$.pipe(\n        switchMap(() =>\n          merge(\n            ...this.listOfNzThAddOnComponent.map((th) => th.manualClickOrder$)\n          )\n        ),\n        takeUntil(this.destroy$)\n      );\n      manualSort$.subscribe((data: NzThAddOnComponent<T>) => {\n        const emitValue = { key: data.nzColumnKey, value: data.sortOrder };\n        this.nzSortOrderChange.emit(emitValue);\n        if (data.nzSortFn && data.nzSortPriority === false) {\n          this.listOfNzThAddOnComponent\n            .filter((th) => th !== data)\n            .forEach((th) => th.clearSortOrder());\n        }\n      });\n      const listOfCalcOperator$ = listOfColumn$.pipe(\n        switchMap((list) =>\n          merge(\n            ...[\n              listOfColumn$,\n              ...list.map((c: NzThAddOnComponent<T>) => c.calcOperatorChange$),\n            ]\n          ).pipe(mergeMap(() => listOfColumn$))\n        ),\n        map((list) =>\n          list\n            .filter((item) => !!item.nzSortFn || !!item.nzFilterFn)\n            .map((item) => {\n              const {\n                nzSortFn,\n                sortOrder,\n                nzFilterFn,\n                nzFilterValue,\n                nzSortPriority,\n                nzColumnKey,\n              } = item;\n              return {\n                key: nzColumnKey,\n                sortFn: nzSortFn,\n                sortPriority: nzSortPriority,\n                sortOrder: sortOrder!,\n                filterFn: nzFilterFn!,\n                filterValue: nzFilterValue,\n              };\n            })\n        ),\n        // TODO: after checked error here\n        delay(0),\n        takeUntil(this.destroy$)\n      );\n      listOfCalcOperator$.subscribe((list) => {\n        this.nzTableDataService.listOfCalcOperator$.next(list);\n      });\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this.nzTableStyleService) {\n      this.renderer.removeChild(\n        this.renderer.parentNode(this.elementRef.nativeElement),\n        this.elementRef.nativeElement\n      );\n    }\n  }\n\n  ngOnDestroy(): void {\n    //@ts-ignore\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 { Directive, Input } from \"@angular/core\";\n\nimport { BooleanInput } from \"ng-zorro-antd/core/types\";\nimport { InputBoolean } from \"ng-zorro-antd/core/util\";\n\n@Directive({\n  selector: \"th[nzEllipsis],td[nzEllipsis]\",\n  host: {\n    \"[class.ant-table-cell-ellipsis]\": \"nzEllipsis\",\n  },\n})\nexport class NzCellEllipsisDirective {\n  static ngAcceptInputType_nzEllipsis: BooleanInput;\n\n  @Input() @InputBoolean() nzEllipsis = true;\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  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\n\n@Component({\n  selector: \"nz-table-selection\",\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <label\n      *ngIf=\"showCheckbox\"\n      eo-ng-checkbox\n      [class.ant-table-selection-select-all-custom]=\"showRowSelection\"\n      [ngModel]=\"checked\"\n      [nzDisabled]=\"disabled\"\n      [nzIndeterminate]=\"indeterminate\"\n      (ngModelChange)=\"onCheckedChange($event)\"\n    ></label>\n    <div class=\"ant-table-selection-extra\" *ngIf=\"showRowSelection\">\n      <span\n        nz-dropdown\n        class=\"ant-table-selection-down\"\n        nzPlacement=\"bottomLeft\"\n        [nzDropdownMenu]=\"selectionMenu\"\n      >\n        <span nz-icon nzType=\"down\"></span>\n      </span>\n      <nz-dropdown-menu #selectionMenu=\"nzDropdownMenu\">\n        <ul nz-menu class=\"ant-table-selection-menu\">\n          <li\n            nz-menu-item\n            *ngFor=\"let selection of listOfSelections\"\n            (click)=\"selection.onSelect()\"\n          >\n            {{ selection.text }}\n          </li>\n        </ul>\n      </nz-dropdown-menu>\n    </div>\n  `,\n  host: { class: \"ant-table-selection\" },\n})\nexport class NzTableSelectionComponent {\n  @Input() listOfSelections: Array<{\n    text: string;\n    onSelect(...args: NzSafeAny[]): NzSafeAny;\n  }> = [];\n  @Input() checked = false;\n  @Input() disabled = false;\n  @Input() indeterminate = false;\n  @Input() showCheckbox = false;\n  @Input() showRowSelection = false;\n  @Output() readonly checkedChange = new EventEmitter<boolean>();\n\n  constructor() {}\n\n  onCheckedChange(checked: boolean): void {\n    this.checked = checked;\n    this.checkedChange.emit(checked);\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\n/* eslint-disable @angular-eslint/component-selector */\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { BooleanInput, NzSafeAny } from \"ng-zorro-antd/core/types\";\nimport { InputBoolean } from \"ng-zorro-antd/core/util\";\n\n@Component({\n  selector:\n    \"th[nzSelections],th[nzChecked],th[nzShowCheckbox],th[nzShowRowSelection]\",\n  preserveWhitespaces: false,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <nz-table-selection\n      [checked]=\"nzChecked\"\n      [disabled]=\"nzDisabled\"\n      [indeterminate]=\"nzIndeterminate\"\n      [listOfSelections]=\"nzSelections\"\n      [showCheckbox]=\"nzShowCheckbox\"\n      [showRowSelection]=\"nzShowRowSelection\"\n      (checkedChange)=\"onCheckedChange($event)\"\n    ></nz-table-selection>\n    <ng-content></ng-content>\n  `,\n  host: { class: \"ant-table-selection-column\" },\n})\nexport class NzThSelectionComponent implements OnChanges {\n  static ngAcceptInputType_nzShowCheckbox: BooleanInput;\n  static ngAcceptInputType_nzShowRowSelection: BooleanInput;\n\n  @Input() nzSelections: Array<{\n    text: string;\n    onSelect(...args: NzSafeAny[]): NzSafeAny;\n  }> = [];\n  @Input() nzChecked = false;\n  @Input() nzDisabled = false;\n  @Input() nzIndeterminate = false;\n  @Input() @InputBoolean() nzShowCheckbox = false;\n  @Input() @InputBoolean() nzShowRowSelection = false;\n  @Output() readonly nzCheckedChange = new EventEmitter<boolean>();\n\n  private isNzShowExpandChanged = false;\n  private isNzShowCheckboxChanged = false;\n\n  constructor() {}\n\n  onCheckedChange(checked: boolean): void {\n    this.nzChecked = checked;\n    this.nzCheckedChange.emit(checked);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const isFirstChange = (value: SimpleChange): boolean =>\n      value && value.firstChange && value.currentValue !== undefined;\n    const { nzChecked, nzSelections, nzShowExpand, nzShowCheckbox } = changes;\n    if (nzShowExpand) {\n      this.isNzShowExpandChanged = true;\n    }\n    if (nzShowCheckbox) {\n      this.isNzShowCheckboxChanged = true;\n    }\n    if (isFirstChange(nzSelections) && !this.isNzShowExpandChanged) {\n      this.nzShowRowSelection = true;\n    }\n    if (isFirstChange(nzChecked) && !this.isNzShowCheckboxChanged) {\n      this.nzShowCheckbox = true;\n    }\n  }\n}\n","import {\n  Component,\n  ViewChild,\n  EventEmitter,\n  Input,\n  forwardRef,\n  Output,\n  TemplateRef,\n  NgZone,\n  ChangeDetectorRef\n} from '@angular/core'\nimport { moveItemInArray } from '@angular/cdk/drag-drop'\nimport { v4 as uuidv4 } from 'uuid'\nimport { NzResizeEvent } from 'ng-zorro-antd/resizable'\nimport { NzTableComponent, NzTableLayout, NzTableQueryParams } from 'ng-zorro-antd/table'\n\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms'\nimport { NzSafeAny, OnChangeType } from 'ng-zorro-antd/core/types'\n\nimport { assign, isArray } from 'lodash-es'\nimport { TBODY_TYPE } from './types/table.type'\nimport { ColPersistence, getPersistenceKey } from './persistence'\ntype defaultTmpType = string | TemplateRef<void> | null\ntype CHECK_MODE_TYPE = 'change' | 'blur' | 'click' | 'mouseleave'\n\n@Component({\n  selector: 'eo-ng-table',\n  templateUrl: './table.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => EoNgTableComponent),\n      multi: true\n    }\n  ]\n})\nexport class EoNgTableComponent implements ControlValueAccessor {\n  /** 数据持久化需要改值作为唯一标识(避免混用缓存数据) */\n  @Input() id?: string\n  @Input() nzResizable: boolean = true // 是否全局可拖动\n  @Input() nzData: Array<any> = [] // 数据列表\n  @Input() nzDataItem: any = {} // 系统自动生成行时填充的数据项\n  @Input() nzThead: Array<any> = [] // 表头配置\n  @Input() nzTbody: Array<any> = [] // 表体配置\n  @Input() nzShowPagination: boolean = false // 是否展示分页\n  @Input() nzTableLayout: NzTableLayout = 'fixed' // 是否自适宜\n  @Input() nzFrontPagination: boolean = false // 是否滚动加载\n  @Input() nzPrimaryKey: string = 'eoKey' // 主键，有且只有一个，用于拖动时 placeholder 的展示\n  @Input() nzCheckAddRow: Function | null = null // 检查是否添加行\n  @Input() nzTrShowFn: Function | null = null // 检查是否添加行\n  @Output() nzResizeEnd = new EventEmitter() // 拖动调整列宽的回调\n  @Input() nzScroll: { x?: string; y?: string } = {} // 滚动区域\n  @Input() nzVirtualItemSize: number = 40 // 当为大数据滚动时，最小可视区域展示条目\n  @Input() nzTrClick: Function | null = null // 行点击效果\n  @Input() nzTrStyleFn: Function | null = null // 行 style\n  @Input() nzTrMouseEnter: Function | null = null // 行鼠标移入效果\n  @Input() nzTrMouseLeave: Function | null = null // 行鼠标移开效果\n  @Input() nzDraggable: boolean = false // 是否允许拖动排序\n  @Input() nzLoading: boolean = false // 页面是否加载中\n  @Input() nzLoadingIndicator: TemplateRef<void> | null = null // 加载指示符\n  @Input() nzLoadingDelay: number = 0 // 延迟显示加载效果的时间（防止闪烁）\n  @Input() nzFooter: defaultTmpType = null // 底部效果\n  @Input() nzTrTopTmp: defaultTmpType = null // tr 上方补充模版\n  @Input() nzTrBottomTmp: defaultTmpType = null // tr 下方补充模版\n  @Input() nzTotal!: number // 当分页时，总数\n  @Input() nzPageSize!: number // 当分页时，每一页的条目数\n  @Input() nzPageIndex!: number // 当分页时，当前第几页\n  @Input() nzPaginationType: 'default' | 'small' = 'default' // 指定分页显示的尺寸\n  @Input() nzPageSizeOptions!: number[] // 页数选择器可选值\n  @Input() nzVirtualMaxItems: number = 0 // 当数据超过多少条时要使用滚动加载\n  @Input() nzVirtualMaxBufferPx: number = 1 // 缓冲区最大像素高度，与 cdk maxBufferPx 相同\n  @Input() nzVirtualMinBufferPx!: number // 缓冲区最小像素高度，低于该值时将加载新结构，与 cdk minBufferPx 相同\n  @Input() nzShowQuickJumper: boolean = false // 是否可以快速跳转至某页\n  @Input() nzShowSizeChanger: boolean = false // 是否可以改变 nzPageSize\n  @Input() nzNoResult!: string | TemplateRef<void> // 无数据时显示内容\n  @Input() nzShowTotal!: TemplateRef<{\n    $implicit: number\n    range: [number, number]\n  }> // 用于显示数据总量和当前数据范围，用法参照 Pagination 组件\n\n  @Input() nzItemRender!: TemplateRef<{\n    $implicit: 'page' | 'prev' | 'next'\n    page: number\n  }> // 用于自定义页码的结构，用法参照 Pagination 组件\n\n  @Input() nzHideOnSinglePage!: boolean // 只有一页时是否隐藏分页器\n  @Input() nzSimple!: boolean // 当添加该属性时，显示为简单分页\n  @Input() nzIsLevel: boolean = false // 是否为层级列表\n  /**\n   * 全局粘贴去空格配置，优先级：column(rowItem).trimOnPaste > 组件级 trimOnPaste\n   * 可为: false/undefined（不处理），true|'trim'（去除前后空格），'removeAll'（去除所有空白字符）\n   */\n  @Input() trimOnPaste?: boolean | 'trim' | 'removeAll' = false\n  @Input() nzChildKey: string = 'children' // 当为层级列表时，子集绑定的关键词\n  @Input() nzExpand: boolean = false // 当为层级列表时，初始化默认展开情况\n  @Output() nzPageSizeChange = new EventEmitter<number>() // 分页条目改变时回调函数\n  @Output() nzPageIndexChange = new EventEmitter<number>() // 分页改变时回调函数\n  @Output() nzWatchScroll = new EventEmitter() // 滚动时回调函数\n  @Output() nzDataChange = new EventEmitter() // 数据变更时回调函数\n  @Output() nzFilterChange = new EventEmitter() // 过滤器变更时回调函数\n  @Output() nzSortChange = new EventEmitter() // 排序变更时回调函数\n  @Output() nzCurrentPageDataChange = new EventEmitter<any[]>() // 当前页面展示数据改变的回调函数\n  @Output() nzQueryParams = new EventEmitter<NzTableQueryParams>() // 当服务端分页、筛选、排序时，用于获得参数，具体见示例\n  @Output() getScrollViewPort = new EventEmitter<any>() // 当服务端分页、筛选、排序时，用于获得参数，具体见示例\n  @Output() getRealTableNodes = new EventEmitter<any[]>() // 假设表格真实的传参。假设说 nzdata 有层级，那么这个就是平铺后的数据\n  /**\n   * @deprecated\n   * 该事件只暴露拖拽后的数据\n   * 某些场景比较受限\n   * 请改用onDragEnd平替，nzDragEnd存放在data属性中\n   */\n  @Output() nzDragEnd = new EventEmitter<any>() // 当服务端分页、筛选、排序时，用于获得参数，具体见示例\n  @Output() onDragEnd = new EventEmitter<{\n    data: any[]\n    preIndex: number\n    preItem: any\n    currentIndex: number\n    currentItem: any\n  }>() // 当服务端分页、筛选、排序时，用于获得参数，具体见示例\n\n  @Output() nzRadioChange = new EventEmitter<any>() // 当服务端分页、筛选、排序时，用于获得参数，具体见示例\n  @Input() nzDragCheck?: Function // 拖动前调用检查数据，传参是{当前元素，需要拖动到的那一个位置所在的元素，是否往参数里面插入}，返回是一个 check\n  onChange: OnChangeType = (_value: any[]) => {}\n  trackByFn: any\n\n  allChecked: { [key: string]: boolean } = {\n    checked: false\n  }\n\n  @ViewChild('radio', { static: true }) radio: TemplateRef<any> | null = null\n  @ViewChild('input', { static: true }) input: TemplateRef<any> | null = null\n\n  @ViewChild('autoComplete', { static: true })\n  autoComplete: TemplateRef<any> | null = null\n\n  @ViewChild('select', { static: true }) select: TemplateRef<any> | null = null\n\n  @ViewChild('btn', { static: true }) btn: TemplateRef<any> | null = null\n  @ViewChild('default', { static: true }) default: TemplateRef<any> | null = null\n\n  @ViewChild('defaultEmptyTpl') defaultEmptyTpl: TemplateRef<any> | undefined\n  @ViewChild('eoTreeTable', { static: false })\n  nzTableComponent?: NzTableComponent<any> // table 承载体\n\n  mapOfExpandedData: Array<any> = [] // 将 nzData 转换后的列表，用于 nz-table 的赋值\n  sortIsInner: boolean = false // 当前是否已经排序在某一层级内部\n  checkboxConf: any = {} // checkbox配置\n\n  dragging: boolean = false\n\n  startResize(evt: NzResizeEvent) {\n    this.dragging = true\n  }\n\n  /**\n   * 拖动改变列宽回调函数\n   * @param width 拖动时列宽\n   * @param col 拖动的具体列数\n   */\n  onResize(evt: NzResizeEvent, col: any): void {\n    const { width } = evt\n    setTimeout(() => {\n      this.dragging = false\n    }, 0)\n    // 重制列宽\n    if (!width) return\n    col.width = width < (col.minWidth || 100) ? `${col.minWidth}px` : width\n    const key = getPersistenceKey(col)\n    this.persistenceStorage?.update(key, col.width)\n    // 广播，和父组件通信\n    this.nzResizeEnd.emit(this.nzThead)\n  }\n\n  getDataLength(data: any[]) {\n    const result = data.filter((item: any) => {\n      return !item.parent || item.parent?.expand\n    })\n    return result.length\n  }\n\n  getIndex(eoKey: string) {\n    return this.mapOfExpandedData.findIndex((item: any) => {\n      return item.data.eoKey === eoKey\n    })\n  }\n\n  /**\n   * 当数据展开时触发函数（因为 ng-table 层级点击展开时只能展开第一层级子节点的状态，故需要使用这个函数）\n   * @param item 需要展开的条目\n   * @param $event 判断展开还是隐藏？\n   */\n  collapse(item: any, $event: boolean, isRoot: boolean = true): void {\n    if (!$event) {\n      // 是否为展开\n      if (item.data[this.nzChildKey]) {\n        // 是否存在子集\n        item.data[this.nzChildKey].forEach((d: any) => {\n          const target = this.mapOfExpandedData.find((a) => {\n            // 查找目标子集\n            return a.data.eoKey === d.eoKey\n          })!\n          target.expand = false // 设置为隐藏\n          this.collapse(target, false, false) // 轮询，直到已经查找到最小的子集\n        })\n      }\n    }\n  }\n\n  /**\n   * 将数据推进堆栈区，与convertTreeToList共用\n   * @param stack\n   * @param item\n   * @param resetKey 是否重制数据，主要为 expand，展开状态\n   * @param baseLevel 当前操作的层级是？\n   */\n  setItemInStack(stack: Array<any>, item: any, resetKey: boolean = true, baseLevel: number = 0, parent?: any) {\n    const expandItem: any = {\n      level: baseLevel,\n      parent: parent,\n      expand: this.nzExpand // 默认展开状态\n    }\n    const checkboxs: any[] = Object.entries(this.checkboxConf)\n    if (checkboxs?.length) {\n      // 非重制时，当前项的checkbox勾选状态\n      checkboxs.forEach((keyvalue: any[]) => {\n        const key: string = keyvalue[0]\n        const checkbox: any = keyvalue[1]\n        expandItem[key] = checkbox._valueRef[item.hasOwnProperty(key) ? item[key] : this.nzDataItem[key]] || false\n      })\n    }\n    if (!resetKey) {\n      // 是否重制\n      const target = this.mapOfExpandedData.find((a: { data: any }) => a.data.eoKey === item.eoKey)!\n      if (target) {\n        // 如果在旧列表中匹配到相应节点\n        expandItem.expand = target.expand\n      }\n    }\n    item.eoKey = item.eoKey || uuidv4() // 初始化 eoKey 为 uuid\n    // 将当前内容填入堆栈区\n    stack.push({\n      ...expandItem,\n      data: assign(\n        item,\n        typeof this.nzDataItem === 'object' ? structuredClone(this.nzDataItem) : this.nzDataItem,\n        structuredClone(item)\n      )\n    })\n  }\n\n  keyRowRef: any = {\n    radio: 'radio',\n    select: 'select',\n    autoComplete: 'autoComplete',\n    input: 'input',\n    btn: 'btn'\n  }\n\n  /** 处理单元格 paste 事件，按列或全局配置进行去空格处理 */\n  onCellPaste(event: ClipboardEvent, rowItem: any, rowIndex: number) {\n    try {\n      const clipText = event.clipboardData?.getData('text') || ''\n      // 决定策略：列级优先，然后组件级\n      const cfg = rowItem?.trimOnPaste !== undefined ? rowItem.trimOnPaste : this.trimOnPaste\n      if (!cfg) return // 不处理\n      event.preventDefault()\n      let result = clipText\n      if (cfg === true || cfg === 'trim') {\n        result = clipText.trim()\n      } else if (cfg === 'removeAll') {\n        result = clipText.replace(/\\s+/g, '')\n      }\n      // 找到目标 input 元素并插入文本：优先使用 document.activeElement\n      const active = document.activeElement as HTMLInputElement | null\n      if (active && (active.tagName === 'INPUT' || active.tagName === 'TEXTAREA')) {\n        const start = active.selectionStart || 0\n        const end = active.selectionEnd || 0\n        const value = active.value || ''\n        const newVal = value.slice(0, start) + result + value.slice(end)\n        active.value = newVal\n        const pos = start + result.length\n        active.setSelectionRange(pos, pos)\n        // 触发 input 事件以更新 ngModel\n        const ie = new Event('input', { bubbles: true })\n        active.dispatchEvent(ie)\n      } else {\n        // 兜底：直接修改数据源\n        if (this.mapOfExpandedData[rowIndex] && rowItem && rowItem.key) {\n          this.mapOfExpandedData[rowIndex].data[rowItem.key] = result\n          // 手动触发变更检测相关行为\n          this.checkValid('change', rowItem, rowIndex)\n        }\n      }\n    } catch (e) {\n      // ignore\n    }\n  }\n\n  getRowItem(type: 'radio' | 'input' | 'autoComplete' | 'select' | 'btn' | undefined) {\n    // @ts-ignore\n    return this[this.keyRowRef[type || 'default'] || 'default']\n  }\n\n  tdKeyRef: any = {\n    sort: 'sort',\n    checkbox: 'checkbox',\n    default: 'default'\n  }\n\n  getSwicthNode(type: 'sort' | '' | any, showFn: Function, item: any) {\n    if (showFn && !showFn(item.data, item)) return '' // 如果存在展示函数，并且返回结果为 false，即不展示\n    return this.tdKeyRef[type || 'default'] || 'default'\n  }\n\n  /**\n   * 初始化将 nzData 调整为我们需要的列表结构\n   * @param root 根节点数据\n   * @param resetKey 是否重制数据，主要为 expand，展开状态\n   * @param baseLevel 当前操作的层级是？\n   * @returns 转换后的列表\n   */\n  convertTreeToList(root: any, resetKey: boolean = true, baseLevel: number = 0): Array<any> {\n    const stack: Array<any> = [] // 堆栈区\n    const array: Array<any> = [] // 待返回的列表\n    const hashMap = {} // hash 表，用于辨别是非重复\n    this.setItemInStack(stack, root, resetKey, baseLevel)\n\n    while (stack.length !== 0) {\n      // 判断堆栈长度，用于push arrary\n      const node = stack.pop()! // 将当前待检验的数据从堆栈区拿出\n      this.visitNode(node, hashMap, array) // 将独立 node push 进 array 中\n      if (node.data[this.nzChildKey]) {\n        // 判断是否有子集\n        for (let i = node.data[this.nzChildKey].length - 1; i >= 0; i--) {\n          // 遍历子集\n          this.setItemInStack(stack, node.data[this.nzChildKey][i], resetKey, node.level! + 1, node)\n        }\n      }\n    }\n\n    return array\n  }\n\n  /** 校验左侧元素是否全是left */\n  checkPrevElementIsAllLeft<\n    T extends {\n      left: boolean\n    }\n  >(data: T[], target: T): boolean {\n    const index = data.indexOf(target)\n    if (index === 0) return true\n    if (index === -1) return false\n    return data.slice(0, index).reduce((acc: boolean, cur: T) => {\n      acc = cur.left && acc\n      return acc\n    }, true)\n  }\n\n  /**\n   * 检查是否存在重复数值，并将当前节点置入数组\n   * @param node 当前待置入节点\n   * @param hashMap hash 检查表\n   * @param array 待被置入的数组\n   */\n  visitNode(node: any, hashMap: { [key: string]: boolean }, array: Array<any>): void {\n    // 判断当前列表是否已存在相同的 key\n    if (!hashMap[node.data.eoKey]) {\n      hashMap[node.data.eoKey] = true\n      array.push(node)\n    }\n  }\n\n  resetCheckboxConf() {\n    this.checkboxConf = {}\n    const checkboxs: any[] = this.nzTbody?.filter((a) => a.type === 'checkbox')\n    if (checkboxs?.length) {\n      const theadCheckbox: any[] = this.nzThead?.filter((a) => a.type === 'checkbox')\n      /**\n       * 第一列 checkbox 左侧如果全部都是 left: true 则这个 checkbox 也是 true\n       */\n      const isBodyAllLeft = this.checkPrevElementIsAllLeft(this.nzTbody, checkboxs[0])\n      if (isBodyAllLeft) {\n        checkboxs[0].left = true\n        theadCheckbox[0].left = true\n      }\n      this.checkboxConf = {}\n      checkboxs.forEach((item: any, index: number) => {\n        const key: string = item.key || 'checked'\n        const checkboxItem: any = {\n          ...item,\n          _valueRef: {},\n          valueRef: item.valueRef || {\n            true: true,\n            false: false\n          }\n        }\n        checkboxItem._valueRef[checkboxItem.valueRef.true] = true\n        checkboxItem._valueRef[checkboxItem.valueRef.false] = false\n        this.checkboxConf[key] = checkboxItem\n        theadCheckbox[index] = theadCheckbox[index] || {}\n        if (!theadCheckbox[index].key) theadCheckbox[index].key = key\n      })\n    }\n  }\n\n  // 刷新 status 数据\n  refreshStatusByCheckbox() {\n    this.mapOfExpandedData = []\n    this.nzData?.forEach((item) => {\n      item.eoKey = item.eoKey || uuidv4() // 初始化 eoKey 为 uuid\n      this.mapOfExpandedData = this.mapOfExpandedData.concat(this.convertTreeToList(item))\n    })\n    const checkboxs: any[] = Object.entries(this.checkboxConf)\n    if (checkboxs?.length) {\n      checkboxs.forEach((keyvalue: any[]) => {\n        this.refreshStatus(false, { key: keyvalue[0] })\n      })\n    }\n    this.getRealTableNodes.emit(this.mapOfExpandedData)\n  }\n\n  persistenceStorage?: ColPersistence\n\n  pending: boolean = true\n  get tHead() {\n    return this.pending ? [] : this.nzThead\n  }\n\n  /**\n   * 组件初始化\n   */\n  ngOnInit(): void {\n    if (this.nzScroll && this.nzVirtualMaxItems) {\n      console.warn('table 组件的 `nzScroll`和 `nzVirtualMaxItems`有冲突，请及时更改')\n    }\n    if (this.id) {\n      this.persistenceStorage = new ColPersistence(this.id)\n      if (!this.persistenceStorage?.storage?.[this.id]) {\n        this.pending = false\n      }\n    } else {\n      this.pending = false\n    }\n    // 刷新 checkbox 配置\n    this.resetCheckboxConf()\n    // 刷新 checkbox 状态\n    this.refreshStatusByCheckbox()\n  }\n\n  /**\n   * 拖动排序行时所需的列表重制操作\n   * @param item 当前操作项\n   * @param currentIndex 得调整的序号\n   * @param level 得调整的层级\n   */\n  dragResetTable(item: any, currentIndex: number, level: number) {\n    // 判断先后对比是不是在同一层级下\n    if (item.data[this.nzChildKey]) {\n      const nzChildList = item.data[this.nzChildKey]\n      // 这里需要倒序处理，否则拖拽视图更新的时候是倒序，而数据是正序\n      for (let i = nzChildList.length - 1; i >= 0; i--) {\n        const d = nzChildList[i]\n        const index = this.mapOfExpandedData.findIndex((a) => a.data.eoKey === d.eoKey)!\n        const targetItem = this.mapOfExpandedData[index]\n        targetItem.level = level\n        moveItemInArray(this.mapOfExpandedData, index, currentIndex)\n        if (index < currentIndex) {\n          this.dragResetTable(targetItem, currentIndex, targetItem.level + 1)\n        } else {\n          this.dragResetTable(targetItem, currentIndex + 1, targetItem.level + 1)\n        }\n      }\n    }\n  }\n\n  /**\n   * 获取当前节点的子集长度\n   * @param root 父节点数据\n   * @returns 子集长度\n   */\n  getChildrenLength(root: any) {\n    const stack: Array<any> = []\n    const array: Array<any> = []\n    const hashMap = {}\n    stack.push({ data: { ...root } })\n    while (stack.length !== 0) {\n      const node = stack.pop()!\n      this.visitNode(node, hashMap, array)\n      if (node.data[this.nzChildKey]) {\n        for (let i = node.data[this.nzChildKey].length - 1; i >= 0; i--) {\n          stack.push({ data: { ...node.data[this.nzChildKey][i] } })\n        }\n      }\n    }\n    return array.length\n  }\n\n  /**\n   * 重制拖动时的 placeholder 操作\n   * @returns 拖动的是向下还是向上\n   */\n  resetDragPlaceholder() {\n    let position = 0\n    // 判断是非存在旧节点，假设存在，需要将 class 置空\n    if (this.oldElem) {\n      if (this.oldElem.className.includes('eo-ng-table-placeholder-top')) {\n        // 这个适用于当拖动状态为下一个选项的顶部，改变它的序号\n        position = -1\n      }\n      this.oldElem.className = (this.oldElem.className || '').replace(\n        / eo-ng-table-placeholder-(center|bottom|top)/,\n        ''\n      )\n    }\n    return position\n  }\n\n  /**\n   * 当前操作为拖动进某一个数据中的操作\n   * @param preIndex 前置序号\n   * @param preItem 前置数据\n   * @param currentIndex 新序号\n   * @param currentItem 新数据\n   * @returns 新序号\n   */\n  sortInner(preIndex: number, preItem: any, currentIndex: number, currentItem: any) {\n    if (preIndex > currentIndex) {\n      currentIndex += 1\n    } else if (preIndex < currentIndex && currentItem.data[this.nzChildKey]?.length) {\n      currentIndex += this.getChildrenLength(currentItem) + 1\n    }\n    preItem.level = currentItem.level + 1\n    preItem.parent = currentItem\n    if (!currentItem.data[this.nzChildKey]) {\n      currentItem.data[this.nzChildKey] = []\n    }\n    currentItem.data[this.nzChildKey].unshift(preItem.data)\n    currentItem.expand = true // 设置为内容展开\n    return currentIndex\n  }\n\n  /**\n   * 当前操作为拖动进某一个数据外的操作\n   * @param preIndex 前置序号\n   * @param preItem 前置数据\n   * @param currentIndex 新序号\n   * @param currentItem 新数据\n   * @returns 新序号\n   */\n  sortOutline(preIndex: number, preItem: any, currentIndex: number, currentItem: any) {\n    // 当拖动到目标项外\n    preItem.level = currentItem.level\n    preItem.parent = currentItem.parent\n    const currentArr = (currentItem.parent?.data || {})[this.nzChildKey] || this.nzData\n    const childCurrentIndex = currentArr.findIndex((a: { eoKey: any }) => a.eoKey === currentItem.data.eoKey)!\n    currentArr.splice(currentIndex > preIndex ? childCurrentIndex + 1 : childCurrentIndex, 0, preItem.data)\n    return currentIndex\n  }\n\n  // @ts-ignore\n  getTrId(path: HTMLElement[] | HTMLElement) {\n    if (isArray(path)) {\n      for (const dom of path) {\n        if (dom.nodeName === 'TR') {\n          return dom.id.replace('eo-ng-table-tr-', '')\n        }\n      }\n      return\n    }\n    if (path.nodeName === 'TR') return path.id.replace('eo-ng-table-tr-', '')\n    if (path.parentElement) return this.getTrId(path.parentElement)\n  }\n\n  // 更改 radio\n  changeRadio(data: any, rowItem: TBODY_TYPE) {\n    rowItem.radio = data[rowItem.key as string]\n    this.nzRadioChange.emit(rowItem)\n  }\n\n  /**\n   * 条目拖动排序后操作\n   * @param event 操作对象\n   * @returns null\n   */\n  async dragEnd(event: any) {\n    const position = this.resetDragPlaceholder()\n    if (event.previousContainer !== event.container) return\n    const preItem = event.item.data\n    const currentKey = this.getTrId(event.event.path || event.event.target)\n    const currentItem = this.mapOfExpandedData.find((a) => a.data.eoKey === currentKey)\n    // 拖动不规范，重制数据。（例如：将父项拖进它的子项里）\n    if (this.nzDragCheck) {\n      if (\n        currentItem?.parent?.data.eoKey === preItem.data.eoKey ||\n        (this.nzDragCheck && (await !this.nzDragCheck(preItem, currentItem, this.sortIsInner, position)))\n      ) {\n        event.item._dragRef.reset()\n        return\n      }\n    }\n    const preArr = (preItem.parent?.data || {})[this.nzChildKey] || this.nzData\n    const index = preArr.findIndex((a: { eoKey: any }) => a.eoKey === preItem.data.eoKey)!\n    preArr.splice(index, 1)\n    const preIndex = this.mapOfExpandedData.findIndex((a) => a.data.eoKey === preItem.data.eoKey)\n    let currentIndex = this.mapOfExpandedData.findIndex((a) => a.data.eoKey === currentItem.data.eoKey)\n    if (currentIndex > preIndex) currentIndex += position\n    if (this.sortIsInner) {\n      // 当拖动到目标项里\n      currentIndex = this.sortInner(preIndex, preItem, currentIndex, currentItem)\n    } else {\n      // 当拖动到目标项外\n      currentIndex = this.sortOutline(preIndex, preItem, currentIndex, currentItem)\n    }\n    moveItemInArray(event.container.data, preIndex, currentIndex)\n\n    // 重制表格\n    this.dragResetTable(preItem, preIndex > currentIndex ? currentIndex + 1 : currentIndex, preItem.level + 1)\n    this.mapOfExpandedData = [...this.mapOfExpandedData]\n\n    // 通过 mapOfExpandedData 重置 tree\n    if (!this.nzIsLevel) {\n      this.nzData = this.mapOfExpandedData.map((val) => val.data)\n    }\n\n    this.emitFormModelData()\n    this.nzDragEnd.emit(this.nzData)\n    this.onDragEnd.emit({\n      data: this.nzData,\n      preIndex,\n      preItem,\n      currentIndex,\n      currentItem\n    })\n  }\n\n  oldElem: any\n  // @ts-ignore\n  getTrElem(path: HTMLElement) {\n    if (path.nodeName === 'TR') return path\n    if (path.parentElement) return this.getTrElem(path.parentElement)\n  }\n\n  /**\n   * 条目拖动过程中效果\n   * @param event 拖动数据\n   * @returns null\n   */\n  dragMove(event: any) {\n    const baseHeight = 45\n    const targetPath = event.event.path || []\n    const findTrDom = this.getTrElem(event.event.target)\n    let targetElem = findTrDom === event.source.element.nativeElement ? null : findTrDom\n    // 检查目前拖动到的目标节点是否为 tr，并且获取相应的 dom 内容\n    for (let key = 0; key < targetPath.length; key++) {\n      if (targetPath[key].nodeName === 'TR' && targetPath[key + 1]?.nodeName !== 'THEAD') {\n        targetElem = targetPath[key]\n        break\n      }\n    }\n    if (!targetElem) return\n    if (this.oldElem) {\n      this.oldElem.className = (this.oldElem.className || '').replace(\n        / eo-ng-table-placeholder-(center|bottom|top)/,\n        ''\n      )\n    }\n\n    const itemY = event.event.offsetY % baseHeight\n    let newClass\n    this.sortIsInner = false\n    newClass = 'eo-ng-table-placeholder-top'\n    if (this.nzIsLevel && itemY >= baseHeight / 3 && itemY <= (baseHeight * 2) / 3) {\n      // 居中\n      newClass = 'eo-ng-table-placeholder-center'\n      this.sortIsInner = true\n    } else if (itemY > (baseHeight * 2) / 3) {\n      // 置于底部\n      newClass = 'eo-ng-table-placeholder-bottom'\n    }\n\n    targetElem.className += ' ' + newClass\n    this.oldElem = targetElem\n  }\n\n  /**\n   * 提供给父仓库的组件\n   */\n  publicApis: any = {\n    deleteRow: (index: number) => {\n      const item = this.mapOfExpandedData[index]\n      if (item.parent) {\n        const nzDataIndex = item.parent?.data[this.nzChildKey].findIndex(\n          (a: { eoKey: any }) => a.eoKey === item.data.eoKey\n        )!\n        item.parent?.data[this.nzChildKey].splice(nzDataIndex, 1)\n      } else {\n        const nzDataIndex = this.nzData.findIndex((a: { eoKey: any }) => a.eoKey === item.data.eoKey)!\n        this.nzData.splice(nzDataIndex, 1)\n      }\n      let newArr: Array<any> = []\n      this.nzData.forEach((dataItem: any) => {\n        newArr = newArr.concat(this.convertTreeToList(dataItem, false))\n      })\n      this.mapOfExpandedData = newArr\n\n      const checkboxs: any[] = Object.entries(this.checkboxConf)\n      if (checkboxs?.length) {\n        checkboxs.forEach((keyvalue: any[]) => {\n          this.refreshStatus(false, { key: keyvalue[0] })\n        })\n      }\n      this.emitFormModelData()\n      setTimeout(() => {\n        this.updateRootLevelExpand(this.nzData)\n      }, 0)\n    },\n    /**\n     * 检查当前数据项是不是所在层级的最后一项数据\n     */\n    checkIsCurrentLevelLastItem: (item: any) => {\n      // 获取父亲队列，用于增加\n      setTimeout(() => {\n        this.updateRootLevelExpand(this.nzData)\n      }, 0)\n      const children = (item.parent?.data || {})[this.nzChildKey] || this.nzData\n      // 判断当前同级数组最后一行和操作行的 eokey 是否一样\n      if (children[children.length - 1].eoKey === item.data.eoKey) {\n        return true\n      }\n      return false\n    },\n    /**\n     * 检查当前数据项是不是最后一项数据\n     */\n    checkIsLastItem: (item: any) => {\n      // 获取父亲队列，用于增加\n      return item.data.eoKey === this.mapOfExpandedData[this.mapOfExpandedData.length - 1].data.eoKey\n    },\n    /**\n     * 插入行\n     * @param index 当前操作的行号\n     * @param pos 插入位置，up（向上插入）/down（向下插入）\n     * @param autoAdd 是否自增\n     * @returns\n     */\n    insertRow: (index: number, pos: 'up' | 'down', autoAdd: boolean = true) => {\n      // 插入，是向上插入还是向下插入\n      const item = this.mapOfExpandedData[index]\n      if (this.nzCheckAddRow && !this.nzCheckAddRow(item.data)) {\n        // 是否检查行数据是否正常，假设不正常，直接返回，不会新增行\n        return\n      }\n      // 获取父亲队列，用于增加\n      const newArr = (item.parent?.data || {})[this.nzChildKey] || this.nzData\n      // 假设是自增加，需要判断是否是层级下的最后一行\n      if (autoAdd && newArr[newArr.length - 1].eoKey !== item.data.eoKey) {\n        // 如果不是，则返回\n        return\n      }\n      // 新行数据\n      let newNzDataItem\n      if (typeof this.nzDataItem === 'function') {\n        // 假设nzDataItem为函数，应该通过函数返回内容进行结合\n        newNzDataItem = {\n          ...structuredClone(this.nzDataItem(item, 'add')),\n          eoKey: uuidv4()\n        }\n      } else {\n        // 否则，常规合并\n        newNzDataItem = {\n          ...structuredClone(this.nzDataItem),\n          eoKey: uuidv4()\n        }\n      }\n      const newItem: any = {\n        data: newNzDataItem,\n        level: item.level,\n        parent: item.parent\n      }\n      const checkboxs: any[] = Object.entries(this.checkboxConf)\n      checkboxs.forEach((keyvalue: any[]) => {\n        const key: string = keyvalue[0] || 'checked'\n        newItem[key] = keyvalue[1]._valueRef[this.nzDataItem[key]] || false\n      })\n      // 当前数据的行序号是什么\n      const targetIndex = newArr.findIndex((a: { eoKey: any }) => a.eoKey === item.data.eoKey)\n      // 训练插入行\n      let insertIndex: number = targetIndex\n      if (pos !== 'up') insertIndex++\n      newArr.splice(insertIndex, 0, newNzDataItem) // 插入源数据\n      // 刷新 table 里封装的数据\n      if (pos === 'up') {\n        // 如果是向上插入\n        this.mapOfExpandedData.splice(index, 0, newItem)\n      } else {\n        // 如果是向下插入\n        this.mapOfExpandedData.splice(\n          index + this.getChildrenLength(newArr[targetIndex]), // 重新测算，需要额外增加当前项的子级的数量测算\n          0,\n          newItem\n        )\n      }\n\n      this.mapOfExpandedData = [...this.mapOfExpandedData]\n      this.emitFormModelData()\n      this.updateRootLevelExpand(this.nzData)\n    },\n    /**\n     * 向下插入行\n     * @param index 操作的当前的行\n     */\n    addRow: (index: number) => {\n      this.publicApis.insertRow(index, 'down', false)\n    },\n    addChildRow: (index: number) => {\n      const parentItem = this.mapOfExpandedData[index]\n      if (!parentItem.expand) parentItem.expand = true\n      let newNzDataItem\n      if (typeof this.nzDataItem === 'function') {\n        newNzDataItem = {\n          ...structuredClone(this.nzDataItem(parentItem, 'addChild')),\n          eoKey: uuidv4()\n        }\n      } else {\n        newNzDataItem = {\n          ...structuredClone(this.nzDataItem),\n          eoKey: uuidv4()\n        }\n      }\n      const newItem: any = {\n        data: newNzDataItem,\n        level: parentItem.level + 1,\n        parent: parentItem,\n        expand: this.nzExpand\n      }\n      const checkboxs: any[] = Object.entries(this.checkboxConf)\n      checkboxs.forEach((keyvalue: any[]) => {\n        const key: string = keyvalue[0] || 'checked'\n        newItem[key] = keyvalue[1]._valueRef[this.nzDataItem[key]] || false\n      })\n      parentItem.data[this.nzChildKey] = parentItem.data[this.nzChildKey] || []\n      parentItem.data[this.nzChildKey].push(newNzDataItem)\n      this.mapOfExpandedData.splice(index + this.getChildrenLength(parentItem.data) - 1, 0, newItem)\n      this.mapOfExpandedData = [...this.mapOfExpandedData]\n      this.emitFormModelData()\n      this.updateRootLevelExpand(this.nzData)\n    }\n  }\n\n  /**\n   * 初始化持久化数据配置\n   * @param nzThead\n   */\n  initPersistence(nzThead: any) {\n    if (!this.id) {\n      console.warn('检测到有eo-ng-table没有id，建议添加id以开启表头列宽缓存')\n      this.pending = false\n      return\n    }\n    const allTableColCache = this.persistenceStorage?.storage\n    const currentTableColCache = allTableColCache?.[this.id]\n    if (currentTableColCache) {\n      nzThead.forEach((col: any) => {\n        const key = getPersistenceKey(col)\n        if (currentTableColCache[key]) {\n          col.width = currentTableColCache[key]\n        }\n      })\n    }\n    this.pending = false\n  }\n\n  updateRootLevelExpand(nzData: any[]) {\n    this.rootLevelHasExpand = false\n    nzData.forEach((row: any) => {\n      if (row[this.nzChildKey]?.length) {\n        this.rootLevelHasExpand = true\n      }\n    })\n  }\n\n  /**\n   * 当传参数据发生变更时走这\n   * @param event 变更的数据对象\n   */\n  rootLevelHasExpand: boolean = false\n  ngOnChanges(event: any): void {\n    if (event.nzThead?.currentValue) {\n      /** 会出现ngOnChanges执行比ngOnInit早的情况 */\n      setTimeout(() => {\n        this.initPersistence(event.nzThead.currentValue)\n      }, 0)\n    }\n    // 当存在表头或者表体变动时，刷新 checkbox 配置\n    if ((event.nzTbody && !event.nzTbody.firstChange) || (event.nzThead && !event.nzThead.firstChange)) {\n      this.resetCheckboxConf()\n      this.getNgTbody()\n    }\n    if (event.nzData) {\n      this.updateRootLevelExpand(event.nzData.currentValue)\n    }\n    // 当存在数据变动时，刷新 data\n    if (event.nzData && !event.nzData.firstChange) {\n      if ((this.getScrollViewPort as any)?.observers.length <= 0) {\n        this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToOffset(0) // 回滚到初始位置\n      }\n      let newArr: Array<any> = []\n      this.nzData?.forEach((item) => {\n        newArr = newArr.concat(this.convertTreeToList(item, false))\n      })\n      this.mapOfExpandedData = newArr\n      this.getRealTableNodes.emit(this.mapOfExpandedData)\n      const checkboxs: any[] = Object.entries(this.checkboxConf)\n      if (checkboxs?.length) {\n        checkboxs.forEach((keyvalue: any[]) => {\n          this.refreshStatus(false, { key: keyvalue[0] })\n        })\n      }\n      // 假设数据变更，需要更新虚拟滚动视图\n      if ((this.getScrollViewPort as any)?.observers.length <= 0 && this.nzScroll?.y) {\n        this.nzTableComponent?.cdkVirtualScrollViewport?.ngOnInit()\n\n        return\n      }\n      return // 这个 return 是为了拦截后面重复 refresh 状态数据\n    }\n    // 当不存在数据变动时，刷新 checkbox 状态\n    if ((event.nzTbody && !event.nzTbody.firstChange) || (event.nzThead && !event.nzThead.firstChange)) {\n      this.refreshStatusByCheckbox()\n    }\n  }\n\n  changePageIndex($event: any) {\n    this.nzPageIndexChange.emit($event)\n  }\n\n  changePageSize($event: any) {\n    this.nzPageSizeChange.emit($event)\n  }\n\n  /**\n   * checkbox 刷新勾选状态\n   * @param event 勾选状态\n   * @param rowItem 当前操作行配置\n   * @param item 当前操作条目数据\n   */\n  refreshStatus(event?: boolean, rowItem?: any, item?: any): void {\n    if (rowItem?.click) this.resetMapData(rowItem.click(item.data, event))\n    const key: string = rowItem?.key || 'checked'\n    const validData = this.mapOfExpandedData.filter((value) => !value.disabled)\n    let allChecked: boolean = validData.length > 0\n    validData.forEach((value) => {\n      const checked = value[key] === true\n      const target = ((value.parent?.data || {})[this.nzChildKey] || this.nzData).find(\n        (a: { eoKey: any; paramKey: any }) => {\n          return a.eoKey === value.data.eoKey\n        }\n      )\n      if (!target) return\n      target[key] = this.checkboxConf[key].valueRef[value[key]]\n      if (!checked && !value.disabled) allChecked = false\n    })\n    this.allChecked[key] = allChecked\n  }\n\n  /**\n   * 全选操作\n   * @param value 勾选状态\n   */\n  checkAll(value: boolean, col: any): void {\n    if (col.click) col.click(value)\n    this.mapOfExpandedData.forEach((item: any) => {\n      if (!item.disabled) {\n        item[col.key || 'checked'] = value\n      }\n    })\n    this.refreshStatus(value, {\n      key: col.key || 'checked'\n    })\n    this.emitFormModelData()\n  }\n\n  emitData(target: string) {\n    this.emitFormModelData()\n  }\n\n  /**\n   * 当项排序状态检查\n   * @param a 前置项\n   * @param b 后置项\n   * @param key 关键词\n   * @param event 排序要求\n   * @returns 排序状态\n   */\n  sortCheckAAndB(a: any, b: any, key: string, event: string) {\n    // 假设没有关键词，则不排序\n    if (!a[this.nzPrimaryKey]) return 0\n    if (a[key] > b[key]) {\n      // 前面比后面大\n      return event === 'ascend' ? 1 : -1\n    }\n    if (a[key] === b[key]) {\n      // 相等\n      return 0\n    }\n\n    return event === 'ascend' ? -1 : 1 // 前面比后面小\n  }\n\n  /**\n   * 列排序操作，用于轮询\n   * @param data 数据\n   * @param key 关键词\n   * @param event 排序状态\n   * @returns 操作的序号\n   */\n  sortDataByKey(data: any, key: string, event: string): void {\n    if (!data[this.nzChildKey]) return\n    data[this.nzChildKey].sort((a: any, b: any) => {\n      this.sortDataByKey(a, key, event)\n      if (!a[this.nzPrimaryKey]) return 0\n      return this.sortCheckAAndB(a, b, key, event)\n    })\n  }\n\n  /**\n   * 列排序操作函数\n   * @param data 数据\n   * @param key 关键词\n   * @param event 排序状态\n   * @returns 操作的序号\n   */\n  sortFn(col: any, event: any) {\n    if (!col.showSort) return\n    if (col.sortFn === true) {\n      this.nzSortChange.emit({\n        key: event,\n        col: col\n      })\n      return\n    }\n    const key = col.key\n    const resetData: any = {}\n    resetData[this.nzChildKey] = structuredClone(this.nzData)\n    if (event) this.sortDataByKey(resetData, key, event)\n    let newArr: Array<any> = []\n    resetData[this.nzChildKey].forEach((item: any) => {\n      newArr = newArr.concat(this.convertTreeToList(item, false))\n    })\n    this.mapOfExpandedData = newArr\n    this.emitFormModelData()\n  }\n\n  /**\n   * 过滤回调函数\n   * @param col 列\n   * @param event 过滤关系\n   */\n  filterFnChanged(col: any, event: any) {\n    this.nzFilterChange.emit({\n      keys: event,\n      col: col\n    })\n  }\n\n  /**\n   * 重置列表数据\n   * @param nzData 数据数组\n   * @returns null\n   */\n  resetMapData(nzData: any) {\n    if (!nzData) return\n    if (Array.isArray(nzData)) {\n      this.nzData = nzData\n      let newArr: Array<any> = []\n      this.nzData.forEach((item) => {\n        newArr = newArr.concat(this.convertTreeToList(item, false))\n      })\n      this.mapOfExpandedData = newArr\n    } else {\n      const index = this.mapOfExpandedData.findIndex((a) => a.data.eoKey === nzData.eoKey)\n      const newItem = this.mapOfExpandedData[index]\n      if (!newItem) {\n        throw new Error('EO 预警：eoKey 没有对上，请检查传参是否正确，正常应该是传参应该是当前操作的数据项的 data')\n      }\n      const newArr: Array<any> = this.convertTreeToList(nzData, false, newItem.level)\n      newArr[0].parent = newItem.parent\n      this.mapOfExpandedData.splice(index, this.getChildrenLength(nzData), ...newArr)\n      this.mapOfExpandedData = [...this.mapOfExpandedData]\n    }\n    const checkboxs: any[] = Object.entries(this.checkboxConf)\n    if (checkboxs?.length) {\n      checkboxs.forEach((keyvalue: any[]) => {\n        this.refreshStatus(false, { key: keyvalue[0] })\n      })\n    }\n    this.emitFormModelData()\n  }\n\n  /**\n   * 按钮点击事件\n   * @param event dom 操作对象\n   * @param btnConf 按钮信息\n   * @param index 操作行序列信息\n   */\n  btnClick(event: any, btnConf: any, index: number) {\n    const data = this.mapOfExpandedData[index]\n    event?.stopPropagation() // 停止冒泡\n    setTimeout(() => {\n      this.updateRootLevelExpand(this.nzData)\n    }, 0)\n    switch (btnConf.action) {\n      case 'add': {\n        this.publicApis.insertRow(index, 'down', false)\n        return\n      }\n      case 'delete': {\n        this.publicApis.deleteRow(index)\n        return\n      }\n      case 'addChild': {\n        this.publicApis.addChildRow(index)\n        return\n      }\n    }\n    if (btnConf.click) this.resetMapData(btnConf.click(data)) // 触发点击回调函数，并根据情况重置列表\n  }\n\n  /**\n   * 行操作操作\n   * @param event dom 操作对象\n   * @param item 操作行信息\n   */\n  oprTr(action: string, event: any, item: any, list?: any) {\n    event?.stopPropagation() // 停止冒泡\n    let oprFn\n    switch (action) {\n      case 'click': {\n        oprFn = this.nzTrClick\n        break\n      }\n      case 'mouseenter': {\n        oprFn = this.nzTrMouseEnter\n        break\n      }\n      case 'mouseleave': {\n        oprFn = this.nzTrMouseLeave\n        break\n      }\n    }\n    if (oprFn) this.resetMapData(oprFn(item, event, list)) // 触发点击回调函数，并根据情况重置列表\n  }\n\n  constructor(private ngZone: NgZone, public cdr: ChangeDetectorRef) {}\n  /**\n   * 在视图变更完成后\n   * @returns null\n   */\n  ngAfterViewInit(): void {\n    if (!this.nzNoResult) {\n      this.nzNoResult = this.defaultEmptyTpl!\n    }\n    // 占位，重置 tbody html\n    this.getNgTbody()\n    if ((this.getScrollViewPort as any)?.observers.length > 0) {\n      this.getScrollViewPort.emit(\n        // 广播 viewport\n        this.nzTableComponent?.cdkVirtualScrollViewport\n      )\n      return\n    }\n    // 是否需要监听滚动\n    if ((this.nzWatchScroll as any)?.observers.length <= 0) return // 是否存在滚动监听者，否则结束操作\n    this.nzTableComponent?.cdkVirtualScrollViewport?.scrolledIndexChange.subscribe(\n      // 订阅滚动事件\n      (index: number) => {\n        this.nzWatchScroll.emit(index) // 回调\n      }\n    )\n  }\n\n  /**\n   * @desc 像父级广播\n   * @param fnName 广播的名称\n   */\n  emitParent(fnName: string, $event: any) {\n    const vm: any = this\n    vm[fnName].emit($event)\n  }\n\n  /**\n   * @desc 检测数据合法性\n   * @param action string 操作\n   * @param row TBODY_TYPE tbody 每一列配置\n   * @param itemIndex 当前操作的数据项\n   */\n  async checkValid(action: CHECK_MODE_TYPE, row: TBODY_TYPE, itemIndex: number) {\n    if (action === 'change') {\n      this.publicApis.insertRow(itemIndex, 'down')\n      this.emitFormModelData() // 因为数据就是变更了，所以需要触发回调\n    }\n    if (row.check && action === row.checkMode) {\n      const status: boolean = row.check(\n        this.mapOfExpandedData[itemIndex].data[row.key as string],\n        this.mapOfExpandedData[itemIndex]\n      )\n      this.mapOfExpandedData[itemIndex][row.key + 'Status'] = status ? '' : 'error'\n    }\n\n    const execFn: any = row[action]\n    if (execFn) execFn(this.mapOfExpandedData[itemIndex].data)\n  }\n\n  // 以下内容为表单控制\n  emitFormModelData() {\n    this.ngZone.run(() => {\n      this.nzDataChange.emit(this.nzData)\n      this.getRealTableNodes.emit(this.mapOfExpandedData)\n      if (this.onChange) this.onChange(this.nzData)\n    })\n  }\n\n  writeValue(value: any[] = []): void {\n    this.nzData = value\n  }\n\n  registerOnChange(fn: OnChangeType): NzSafeAny {\n    this.onChange = fn\n  }\n\n  registerOnTouched(fn: any): void {\n    // 占位，触摸表格时触发\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    // 占位，禁用状态变更\n  }\n\n  // 占位\n  getNgTbody() {\n    console.warn('Eo 预警，目前系统使用的是 eo-ng-table，将遇到性能瓶颈，加载会相对慢')\n  }\n}\n","<nz-table\n  [class]=\"{\n    'hide-expand': !rootLevelHasExpand\n  }\"\n  class=\"eo-ng-table\"\n  [nzScroll]=\"nzScroll\"\n  #eoTreeTable\n  [nzVirtualMaxItems]=\"nzVirtualMaxItems\"\n  [nzData]=\"mapOfExpandedData\"\n  [nzTableLayout]=\"nzTableLayout\"\n  [nzShowPagination]=\"nzShowPagination\"\n  [nzFrontPagination]=\"nzFrontPagination\"\n  [nzVirtualItemSize]=\"nzVirtualItemSize\"\n  cdkDropList\n  [cdkDropListData]=\"mapOfExpandedData\"\n  [cdkDropListDisabled]=\"!nzDraggable\"\n  [nzFooter]=\"nzFooter\"\n  [nzTotal]=\"nzTotal\"\n  [(nzPageIndex)]=\"nzPageIndex\"\n  (nzPageIndexChange)=\"changePageIndex($event)\"\n  (nzPageSizeChange)=\"changePageSize($event)\"\n  [(nzPageSize)]=\"nzPageSize\"\n  [nzPaginationType]=\"nzPaginationType\"\n  [nzPageSizeOptions]=\"nzPageSizeOptions\"\n  [nzShowQuickJumper]=\"nzShowQuickJumper\"\n  [nzShowSizeChanger]=\"nzShowSizeChanger\"\n  [nzNoResult]=\"nzLoading ? null : nzNoResult\"\n  [nzShowTotal]=\"nzShowTotal\"\n  [nzItemRender]=\"nzItemRender\"\n  [nzHideOnSinglePage]=\"nzHideOnSinglePage\"\n  [nzSimple]=\"nzSimple\"\n  [nzLoading]=\"nzLoading\"\n  [nzLoadingIndicator]=\"nzLoadingIndicator\"\n  [nzLoadingDelay]=\"nzLoadingDelay\"\n  (nzCurrentPageDataChange)=\"emitParent('nzCurrentPageDataChange', $event)\"\n  (nzQueryParams)=\"emitParent('nzQueryParams', $event)\"\n  [nzVirtualMinBufferPx]=\"nzVirtualMinBufferPx\"\n  [nzVirtualMaxBufferPx]=\"nzVirtualMaxBufferPx\"\n  [insertDomIn]=\"nzTrTopTmp ? 'top' : nzTrBottomTmp ? 'bottom' : 'default'\"\n>\n  <!--表头-->\n  <thead>\n    <tr>\n      <ng-container *ngFor=\"let colItem of tHead; index as i; trackBy: trackByFn\">\n        <ng-container [ngSwitch]=\"colItem.type\">\n          <ng-container *ngSwitchCase=\"'checkbox'\">\n            <th\n              scope=\"col\"\n              *ngIf=\"!colItem.showFn || (colItem.showFn && colItem.showFn())\"\n              [nzLeft]=\"colItem.left || false\"\n              [nzRight]=\"colItem.right || false\"\n              [nzWidth]=\"colItem.width ? colItem.width + 'px' : '40px'\"\n              nzShowCheckbox\n              [(nzChecked)]=\"allChecked[colItem.key || 'checked']\"\n              (nzCheckedChange)=\"checkAll($event, colItem)\"\n              [nzDisabled]=\"colItem.disabled\"\n              [nzSelections]=\"colItem.opts\"\n              [nzEllipsis]=\"colItem.ellipsis === undefined ? true : colItem.ellipsis\"\n            >\n              <span *ngIf=\"colItem.title\" style=\"margin-left: 5px\">{{ colItem.title }}</span>\n            </th>\n          </ng-container>\n          <ng-container *ngSwitchDefault>\n            <th\n              class=\"un-checkbox-th\"\n              scope=\"col\"\n              *ngIf=\"!colItem.showFn || (colItem.showFn && colItem.showFn())\"\n              nzPreview\n              [nzColumnKey]=\"colItem.key\"\n              [nzWidth]=\"colItem.width ? colItem.width + 'px' : 'auto'\"\n              [nzShowSort]=\"colItem.showSort\"\n              [nzSortOrder]=\"colItem.sortOrder\"\n              [nzSortDirections]=\"colItem.sortDirections\"\n              [nzSortPriority]=\"colItem.sortPriority || false\"\n              [nzSortFn]=\"colItem.sortFn || true\"\n              (nzSortOrderChange)=\"sortFn(colItem, $event)\"\n              [dragging]=\"dragging\"\n              (nzResizeStart)=\"startResize($event)\"\n              (nzResizeEnd)=\"onResize($event, colItem)\"\n              [nzMinWidth]=\"colItem.width < (colItem.minWidth || 100) ? colItem.width : colItem.minWidth || 100\"\n              nz-resizable\n              [nzLeft]=\"colItem.left || false\"\n              [nzRight]=\"colItem.right || false\"\n              [nzFilterMultiple]=\"colItem.filterMultiple === undefined ? true : colItem.filterMultiple\"\n              [nzFilters]=\"colItem.filterOpts\"\n              [nzFilterFn]=\"colItem.filterFn\"\n              (nzFilterChange)=\"filterFnChanged(colItem, $event)\"\n              [nzEllipsis]=\"colItem.ellipsis === undefined ? (dragging ? false : true) : colItem.ellipsis\"\n              [nzCustomFilter]=\"colItem.filterTrigger\"\n            >\n              <!-- 上面nzEllipsis加dragging是因为为true的时候会影响拖拽虚线的显示: #34274 -->\n              <ng-container\n                *nzStringTemplateOutlet=\"\n                  colItem.title;\n                  context: {\n                    item: colItem,\n                    index: i\n                  }\n                \"\n                ><span class=\"default-title-th-span\">{{ colItem.title }}</span></ng-container\n              >\n              <nz-resize-handle\n                class=\"\n                  {{ colItem.filterOpts?.length ? 'filter-resize-th' : '' }}\n                \"\n                nzDirection=\"right\"\n                *ngIf=\"colItem.resizeable === undefined ? nzResizable : colItem.resizeable\"\n                style=\"right: {{\n                  colItem.filterOpts?.length && colItem.showSort\n                    ? '-60px'\n                    : colItem.filterOpts?.length\n                    ? '-40px'\n                    : colItem.showSort\n                    ? '-25px'\n                    : ''\n                }};\"\n              >\n                <div class=\"resize-trigger\"></div>\n              </nz-resize-handle>\n              <nz-filter-trigger\n                *ngIf=\"colItem.filterTrigger\"\n                [nzDropdownMenu]=\"colItem.filterNzDropdownMenu\"\n                [(nzVisible)]=\"colItem.filterNzVisible\"\n                [nzHasBackdrop]=\"colItem.filterNzHasBackdrop\"\n                [nzActive]=\"colItem.filterNzActive\"\n              >\n                <ng-container\n                  *nzStringTemplateOutlet=\"\n                    colItem.filterIcon;\n                    context: {\n                      item: colItem,\n                      index: i\n                    }\n                  \"\n                >\n                  <i nz-icon nzType=\"filter\" nzTheme=\"fill\"></i\n                ></ng-container>\n              </nz-filter-trigger>\n            </th>\n          </ng-container>\n        </ng-container>\n      </ng-container>\n    </tr>\n  </thead>\n  <!--表体-->\n  <tbody>\n    <!--是否存在滚动倾向-->\n    <ng-container *ngIf=\"!nzScroll.y\">\n      <!--否，普通的列表-->\n      <ng-container *ngFor=\"let item of eoTreeTable.data; index as i; trackBy: trackByFn\">\n        <ng-container\n          *ngTemplateOutlet=\"\n            tbodyItem;\n            context: {\n              index: getIndex(item.data.eoKey),\n              $implicit: item\n            }\n          \"\n        ></ng-container>\n      </ng-container>\n    </ng-container>\n    <!--是，正常加载 virtual-scoll td 模版-->\n    <ng-template #tbodyItem nz-virtual-scroll let-item let-i=\"index\">\n      <!--上行补充内容-->\n      <ng-container *ngIf=\"nzTrTopTmp\">\n        <ng-container\n          *nzStringTemplateOutlet=\"\n            nzTrTopTmp;\n            context: {\n              item: item,\n              index: getIndex(item.data.eoKey),\n              apis: publicApis\n            }\n          \"\n          ><div>{{ nzTrTopTmp }}</div></ng-container\n        >\n      </ng-container>\n      <tr\n        *ngIf=\"(item.parent && item.parent.expand) || !item.parent\"\n        style=\"{{ nzTrStyleFn ? nzTrStyleFn(item.data) : '' }}\"\n        [style.height]=\"!nzTrShowFn || (nzTrShowFn && nzTrShowFn(item.data, item.parent?.data)) ? '' : 'fit-content'\"\n        cdkDrag\n        (cdkDragDropped)=\"dragEnd($event)\"\n        [cdkDragData]=\"item\"\n        (cdkDragMoved)=\"dragMove($event)\"\n        cdkDragBoundary=\".eo-ng-table\"\n        (click)=\"oprTr('click', $event, item, eoTreeTable.data)\"\n        (mouseenter)=\"oprTr('mouseenter', $event, item, eoTreeTable.data)\"\n        (mouseleave)=\"oprTr('mouseleave', $event, item, eoTreeTable.data)\"\n        id=\"eo-ng-table-tr-{{ item.data.eoKey }}\"\n        eo-ng-table-tr=\"true\"\n        [attr.eo-ng-table-index]=\"i\"\n      >\n        <ng-container *ngIf=\"!nzTrShowFn || (nzTrShowFn && nzTrShowFn(item.data, item.parent?.data))\">\n          <ng-container\n            *ngFor=\"let rowItem of nzTbody; trackBy: trackByFn\"\n            [ngSwitch]=\"getSwicthNode(rowItem.type, rowItem.showFn, item)\"\n          >\n            <td\n              [nzShowCheckbox]=\"\n                !rowItem.showContainerFn || (rowItem.showContainerFn && rowItem.showContainerFn(item.data))\n              \"\n              [(nzChecked)]=\"item[rowItem.key || 'checked']\"\n              [nzLeft]=\"rowItem.left || false\"\n              [nzRight]=\"rowItem.right || false\"\n              [attr.colspan]=\"rowItem.colspan || (rowItem.seColspan && rowItem.seColspan(item))\"\n              [attr.rowspan]=\"rowItem.rowspan || (rowItem.seRowspan && rowItem.seRowspan(item))\"\n              [nzDisabled]=\"\n                rowItem.disabledFn ? rowItem.disabledFn(item.data, item) : item.data[rowItem.disabledKey || 'disabled']\n              \"\n              (nzCheckedChange)=\"refreshStatus($event, rowItem, item); emitData('checkChange')\"\n              *ngSwitchCase=\"'checkbox'\"\n              style=\"{{ rowItem.styleFn ? rowItem.styleFn(item.data) : '' }}\"\n              [nzEllipsis]=\"rowItem.ellipsis === undefined ? true : rowItem.ellipsis\"\n            ></td>\n            <td\n              class=\"eo-table-sort\"\n              [nzLeft]=\"rowItem.left || false\"\n              [nzRight]=\"rowItem.right || false\"\n              *ngSwitchCase=\"'sort'\"\n              [attr.colspan]=\"rowItem.colspan || (rowItem.seColspan && rowItem.seColspan(item.data))\"\n              style=\"{{ rowItem.styleFn ? rowItem.styleFn(item.data) : '' }}\"\n              [attr.rowspan]=\"rowItem.rowspan || (rowItem.seRowspan && rowItem.seRowspan(item))\"\n              [nzEllipsis]=\"rowItem.ellipsis === undefined ? true : rowItem.ellipsis\"\n            >\n              <button\n                type=\"button\"\n                cdkDragHandle\n                class=\"eo-ng-table-sort-handle\"\n                eo-ng-button\n                [disabled]=\"\n                  rowItem.disabledFn\n                    ? rowItem.disabledFn(item.data, item)\n                    : item.data[rowItem.disabledKey || 'disabled']\n                \"\n                *ngIf=\"!rowItem.showContainerFn || (rowItem.showContainerFn && rowItem.showContainerFn(item.data))\"\n              >\n                <svg class=\"iconpark-icon\">\n                  <use href=\"#sort\"></use>\n                </svg>\n              </button>\n              <div *cdkDragPreview>{{ item.data[nzPrimaryKey] }}</div>\n            </td>\n            <!--  这里antd里面如果有indent会同时把expand和indent同时渲染，当level=0且无子元素的时候应该保留expand不渲染indent -->\n            <td\n              [attr.colspan]=\"rowItem.colspan || (rowItem.seColspan && rowItem.seColspan(item))\"\n              *ngSwitchCase=\"'default'\"\n              [attr.rowspan]=\"rowItem.rowspan || (rowItem.seRowspan && rowItem.seRowspan(item))\"\n              class=\"eo-table-{{ rowItem.type || 'default' }}-td {{ rowItem.class || '' }}\"\n              [nzLeft]=\"rowItem.left || false\"\n              [nzRight]=\"rowItem.right || false\"\n              style=\"white-space: nowrap;{{ rowItem.styleFn ? rowItem.styleFn(item.data) : '' }}\"\n              [nzIndentSize]=\"\n                rowItem.key === nzPrimaryKey\n                  ? !item.level && !item.data[nzChildKey]?.length\n                    ? 20\n                    : item.level! * 20\n                  : 0\n              \"\n              [class]=\"{\n                'hide-indent': rowItem.key === nzPrimaryKey && !item.level && !item.data[nzChildKey]?.length\n              }\"\n              [nzShowExpand]=\"item.data[nzChildKey]?.length > 0 && rowItem.key === nzPrimaryKey\"\n              [(nzExpand)]=\"item.expand\"\n              (nzExpandChange)=\"collapse(item, $event)\"\n              [nzEllipsis]=\"rowItem.ellipsis === undefined ? true : rowItem.ellipsis\"\n            >\n              <ng-container\n                *ngIf=\"!rowItem.showContainerFn || (rowItem.showContainerFn && rowItem.showContainerFn(item.data))\"\n              >\n                <ng-container\n                  *ngTemplateOutlet=\"\n                    getRowItem(rowItem.type);\n                    context: {\n                      btns: rowItem.btns,\n                      item: item.data,\n                      originItem: item,\n                      index: getIndex(item.data.eoKey),\n                      rowItem: rowItem,\n                      apis: publicApis\n                    }\n                  \"\n                ></ng-container>\n              </ng-container>\n            </td>\n          </ng-container>\n        </ng-container>\n      </tr>\n      <!--下行补充内容-->\n      <ng-container *ngIf=\"nzTrBottomTmp\">\n        <ng-container\n          *nzStringTemplateOutlet=\"\n            nzTrBottomTmp;\n            context: {\n              item: item,\n              index: getIndex(item.data.eoKey),\n              apis: publicApis\n            }\n          \"\n          ><div>{{ nzTrBottomTmp }}</div></ng-container\n        >\n      </ng-container>\n    </ng-template>\n  </tbody>\n</nz-table>\n<!--模板-->\n<ng-template #default let-index=\"index\" let-rowItem=\"rowItem\" let-apis=\"apis\">\n  <ng-container\n    *nzStringTemplateOutlet=\"\n      rowItem.title || rowItem.key;\n      context: {\n        item: mapOfExpandedData[index].data,\n        originItem: mapOfExpandedData[index],\n        index: getIndex(mapOfExpandedData[index].data.eoKey),\n        rowItem: rowItem,\n        apis: apis\n      }\n    \"\n    ><span\n      class=\"default-tpl-td-span\"\n      [attr.title]=\"\n        (rowItem.keyPrefix || '') +\n        (rowItem.title || mapOfExpandedData[index].data[rowItem.key] || '') +\n        (rowItem.keySuffix || '')\n      \"\n      >{{ rowItem.keyPrefix }}{{ rowItem.title || mapOfExpandedData[index].data[rowItem.key]\n      }}{{ rowItem.keySuffix }}</span\n    >\n  </ng-container>\n</ng-template>\n<ng-template #autoComplete let-index=\"index\" let-rowItem=\"rowItem\" let-apis=\"apis\">\n  <eo-ng-auto-complete\n    style=\"display: -webkit-flex\"\n    [nzHasPopconfirm]=\"!!rowItem.popconfimTitle\"\n    [nzPopconfirmTitle]=\"popconfimContainer\"\n    nzPopconfirmPlacement=\"topLeft\"\n    nzPopconfirmOverlayClassName=\"eo-ng-table-popconfim\"\n    [nzMaxlength]=\"rowItem.maxlength\"\n    [nzMinlength]=\"rowItem.minlength\"\n    [nzIcon]=\"popconfimIcon\"\n    [nzPopconfirmShowArrow]=\"false\"\n    [(ngModel)]=\"mapOfExpandedData[index].data[rowItem.key]\"\n    [nzOptions]=\"rowItem.opts || rowItem?.optsFn(mapOfExpandedData[index].data) || []\"\n    (ngModelChange)=\"checkValid('change', rowItem, index)\"\n    [nzPlaceholder]=\"mapOfExpandedData[index].data[rowItem.placeholderKey] || rowItem.placeholder\"\n    (nzBlur)=\"checkValid('blur', rowItem, index)\"\n    (click)=\"checkValid('click', rowItem, index)\"\n    (mouseleave)=\"checkValid('mouseleave', rowItem, index)\"\n    [nzStatus]=\"mapOfExpandedData[index][rowItem.key + 'Status'] || ''\"\n    [disabled]=\"\n      rowItem.disabledFn\n        ? rowItem.disabledFn(mapOfExpandedData[index].data, mapOfExpandedData[index])\n        : mapOfExpandedData[index].data[rowItem.disabledKey || 'disabled']\n    \"\n  ></eo-ng-auto-complete>\n  <div class=\"error-tips\" *ngIf=\"rowItem.errorTip\">\n    <ng-container *nzStringTemplateOutlet=\"rowItem.errorTip\"\n      ><div>{{ rowItem.errorTip }}</div></ng-container\n    >\n  </div>\n\n  <ng-template #popconfimContainer>\n    <ng-container\n      *nzStringTemplateOutlet=\"\n        rowItem.popconfimTitle;\n        context: {\n          item: mapOfExpandedData[index],\n          apis: apis,\n          index: index,\n          key: rowItem.key\n        }\n      \"\n      >{{ rowItem.popconfimTitle }}</ng-container\n    >\n  </ng-template>\n</ng-template>\n<ng-template #input let-index=\"index\" let-rowItem=\"rowItem\" let-apis=\"apis\">\n  <!--需要判断 popconfirm 是否存在，而去删掉nzStatus字段，因为它不知道什么原因影响了popconfirm的展示-->\n  <ng-container *ngIf=\"!rowItem.showPopConfirm; else inputPopconfirmTmp\">\n    <!--假设没有 POPCONFIRM-->\n    <div style=\"display: -webkit-flex\">\n      <input\n        eo-ng-input\n        [maxlength]=\"rowItem.maxlength\"\n        [minlength]=\"rowItem.minlength\"\n        [max]=\"rowItem.max\"\n        [min]=\"rowItem.min\"\n        [attr.type]=\"rowItem.inputType || 'text'\"\n        [placeholder]=\"mapOfExpandedData[index].data[rowItem.placeholderKey] || rowItem.placeholder\"\n        [(ngModel)]=\"mapOfExpandedData[index].data[rowItem.key]\"\n        (paste)=\"onCellPaste($event, rowItem, index)\"\n        (ngModelChange)=\"checkValid('change', rowItem, index)\"\n        (blur)=\"checkValid('blur', rowItem, index)\"\n        (click)=\"checkValid('click', rowItem, index)\"\n        (mouseleave)=\"checkValid('mouseleave', rowItem, index)\"\n        [nzStatus]=\"mapOfExpandedData[index][rowItem.key + 'Status'] || 'default'\"\n        [disabled]=\"\n          rowItem.disabledFn\n            ? rowItem.disabledFn(mapOfExpandedData[index].data, mapOfExpandedData[index])\n            : mapOfExpandedData[index].data[rowItem.disabledKey || 'disabled']\n        \"\n      />\n    </div>\n\n    <div class=\"error-tips\" *ngIf=\"rowItem.errorTip\">\n      <ng-container *nzStringTemplateOutlet=\"rowItem.errorTip\"\n        ><div>{{ rowItem.errorTip }}</div></ng-container\n      >\n    </div>\n  </ng-container>\n\n  <!--假设有 POPCONFIRM-->\n  <ng-template #inputPopconfirmTmp>\n    <div style=\"display: -webkit-flex\">\n      <input\n        eo-ng-input\n        [attr.type]=\"rowItem.inputType || 'text'\"\n        [maxlength]=\"rowItem.maxlength\"\n        [minlength]=\"rowItem.minlength\"\n        [max]=\"rowItem.max\"\n        [min]=\"rowItem.min\"\n        nz-popconfirm\n        [nzPopconfirmTitle]=\"popconfimContainer\"\n        nzPopconfirmPlacement=\"topLeft\"\n        nzPopconfirmOverlayClassName=\"eo-ng-table-popconfim\"\n        [nzIcon]=\"popconfimIcon\"\n        [nzPopconfirmShowArrow]=\"false\"\n        [placeholder]=\"mapOfExpandedData[index].data[rowItem.placeholderKey] || rowItem.placeholder\"\n        [(ngModel)]=\"mapOfExpandedData[index].data[rowItem.key]\"\n        (paste)=\"onCellPaste($event, rowItem, index)\"\n        (ngModelChange)=\"checkValid('change', rowItem, index)\"\n        (blur)=\"checkValid('blur', rowItem, index)\"\n        (click)=\"checkValid('click', rowItem, index)\"\n        (mouseleave)=\"checkValid('mouseleave', rowItem, index)\"\n        [disabled]=\"\n          rowItem.disabledFn\n            ? rowItem.disabledFn(mapOfExpandedData[index].data, mapOfExpandedData[index])\n            : mapOfExpandedData[index].data[rowItem.disabledKey || 'disabled']\n        \"\n      />\n    </div>\n\n    <ng-template #popconfimContainer>\n      <ng-container\n        *nzStringTemplateOutlet=\"\n          rowItem.popconfimTitle;\n          context: {\n            item: mapOfExpandedData[index],\n            apis: apis,\n            index: index,\n            key: rowItem.key\n          }\n        \"\n        >{{ rowItem.popconfimTitle }}</ng-container\n      >\n    </ng-template>\n  </ng-template>\n</ng-template>\n<ng-template #radio let-index=\"index\" let-rowItem=\"rowItem\" let-apis=\"apis\">\n  <label\n    eo-ng-radio\n    [ngModel]=\"rowItem.radio === mapOfExpandedData[index].data[rowItem.key]\"\n    (ngModelChange)=\"changeRadio(mapOfExpandedData[index].data, rowItem)\"\n  ></label>\n</ng-template>\n<ng-template #popconfimIcon></ng-template>\n<ng-template #select let-index=\"index\" let-rowItem=\"rowItem\">\n  <eo-ng-select\n    style=\"width: -webkit-fill-available\"\n    [(ngModel)]=\"mapOfExpandedData[index].data[rowItem.key]\"\n    [nzPlaceHolder]=\"mapOfExpandedData[index].data[rowItem.placeholderKey] || rowItem.placeholder\"\n    [nzOptions]=\"rowItem.opts\"\n    [nzDropdownMatchSelectWidth]=\"rowItem.dropdownMatchSelectWidth === false ? false : true\"\n    (ngModelChange)=\"checkValid('change', rowItem, index)\"\n    [nzShowSearch]=\"\n      (rowItem.mode || 'default') !== 'default' ? false : rowItem.showSearch === undefined ? true : rowItem.showSearch\n    \"\n    [nzMode]=\"rowItem.mode || 'default'\"\n    (nzOnSearch)=\"rowItem.onSearch ? rowItem.onSearch($event) : null\"\n    [nzDisabled]=\"\n      rowItem.disabledFn\n        ? rowItem.disabledFn(mapOfExpandedData[index].data, mapOfExpandedData[index])\n        : mapOfExpandedData[index].data[rowItem.disabledKey || 'disabled']\n    \"\n    [disabled]=\"\n      rowItem.disabledFn\n        ? rowItem.disabledFn(mapOfExpandedData[index].data, mapOfExpandedData[index])\n        : mapOfExpandedData[index].data[rowItem.disabledKey || 'disabled']\n    \"\n  ></eo-ng-select>\n</ng-template>\n<ng-template #btn let-index=\"index\" let-btns=\"btns\" let-apis=\"apis\">\n  <div class=\"eo-ng-table-btns\">\n    <ng-container\n      *ngFor=\"let btnItem of btns; index as btnIndex; last as btnLast; trackBy: trackByFn\"\n      [ngSwitch]=\"btnItem.type\"\n    >\n      <ng-container\n        *ngIf=\"\n          !btnItem.showFn || (btnItem.showFn && btnItem.showFn(mapOfExpandedData[index].data, mapOfExpandedData[index]))\n        \"\n      >\n        <ng-container *ngSwitchCase=\"'delete'\">\n          <ng-container\n            *ngTemplateOutlet=\"\n              deleteBtn;\n              context: {\n                index: index,\n                item: mapOfExpandedData[index],\n                disabledFn: btnItem.disabledFn\n              }\n            \"\n          ></ng-container>\n        </ng-container>\n        <ng-container *ngSwitchCase=\"'add'\">\n          <ng-container\n            *ngTemplateOutlet=\"\n              addBtn;\n              context: {\n                index: index,\n                name: btnItem.title,\n                item: mapOfExpandedData[index],\n                disabledFn: btnItem.disabledFn\n              }\n            \"\n          ></ng-container>\n        </ng-container>\n        <ng-container *ngSwitchCase=\"'addChild'\">\n          <ng-container\n            *ngTemplateOutlet=\"\n              addChildBtn;\n              context: {\n                index: index,\n                item: mapOfExpandedData[index],\n                disabledFn: btnItem.disabledFn\n              }\n            \"\n          ></ng-container>\n        </ng-container>\n        <ng-container *ngSwitchCase=\"'dropdown'\">\n          <ng-container\n            *ngTemplateOutlet=\"\n              dropdownBtn;\n              context: {\n                index: index,\n                menus: btnItem.opts,\n                item: mapOfExpandedData[index],\n                btnItem: btnItem,\n                disabledFn: btnItem.disabledFn\n              }\n            \"\n          ></ng-container>\n        </ng-container>\n\n        <ng-container *ngSwitchDefault>\n          <ng-container\n            *nzStringTemplateOutlet=\"\n              btnItem.type || btnItem.title;\n              context: {\n                item: mapOfExpandedData[index],\n                disabledFn: btnItem.disabledFn,\n                apis: apis,\n                index: index\n              }\n            \"\n          >\n            <button\n              type=\"button\"\n              eo-ng-button\n              nzType=\"text\"\n              class=\"eo-ng-table-btn eo-ng-table-delete-btn\"\n              [disabled]=\"\n                btnItem.disabledFn ? btnItem.disabledFn(mapOfExpandedData[index].data, mapOfExpandedData[index]) : false\n              \"\n              (click)=\"btnClick($event, btnItem, index)\"\n              eoNgFeedbackTooltip\n              [nzTooltipTitle]=\"btnItem.icon ? btnItem.title : ''\"\n              type=\"button\"\n            >\n              <svg class=\"iconpark-icon\" *ngIf=\"btnItem.icon\">\n                <use [attr.href]=\"'#' + btnItem.icon\"></use>\n              </svg>\n              <span *ngIf=\"!btnItem.icon\">{{ btnItem.title }}</span>\n            </button>\n          </ng-container>\n        </ng-container>\n      </ng-container>\n    </ng-container>\n  </div>\n</ng-template>\n<ng-template #deleteBtn let-index=\"index\" let-disabledFn=\"disabledFn\" let-item=\"item\">\n  <button\n    type=\"button\"\n    eo-ng-button\n    nzType=\"text\"\n    class=\"eo-ng-table-btn eo-ng-table-delete-btn\"\n    (click)=\"publicApis.deleteRow(index)\"\n    [disabled]=\"disabledFn ? disabledFn(item.data, item) : false\"\n    type=\"button\"\n  >\n    删除\n  </button>\n</ng-template>\n<ng-template #addChildBtn let-index=\"index\" let-disabledFn=\"disabledFn\" let-item=\"item\">\n  <button\n    type=\"button\"\n    eo-ng-button\n    nzType=\"text\"\n    class=\"eo-ng-table-btn eo-ng-table-add-btn\"\n    (click)=\"publicApis.addChildRow(index)\"\n    [disabled]=\"disabledFn ? disabledFn(item.data, item) : false\"\n    type=\"button\"\n  >\n    添加子字段\n  </button>\n</ng-template>\n<ng-template #addBtn let-name=\"name\" let-index=\"index\" let-disabledFn=\"disabledFn\" let-item=\"item\">\n  <button\n    type=\"button\"\n    eo-ng-button\n    nzType=\"text\"\n    class=\"eo-ng-table-btn eo-ng-table-add-btn\"\n    (click)=\"publicApis.insertRow(index, 'down', false)\"\n    [disabled]=\"disabledFn ? disabledFn(item.data, item) : false\"\n    type=\"button\"\n  >\n    {{ name || '添加' }}\n  </button>\n</ng-template>\n<!--下拉菜单按钮-->\n<ng-template\n  #dropdownBtn\n  let-index=\"index\"\n  let-btnItem=\"btnItem\"\n  let-item=\"item\"\n  let-disabledFn=\"disabledFn\"\n  let-menus=\"menus\"\n>\n  <eo-ng-dropdown\n    class=\"eo-ng-table-btn\"\n    btnClass=\"eo-ng-table-dropdown-btn\"\n    [title]=\"btnItem.title\"\n    [btnType]=\"btnItem.btnType || 'text'\"\n    [menus]=\"menus\"\n    [dataResource]=\"{ index: index, item: item.data }\"\n    [trigger]=\"btnItem.trigger || 'click'\"\n    [disabled]=\"disabledFn ? disabledFn(item.data, item) : false\"\n  ></eo-ng-dropdown>\n</ng-template>\n\n<ng-template #defaultEmptyTpl>\n  <eo-ng-empty nzMainTitle=\"暂无数据\" nzInputImage=\"simple\"></eo-ng-empty>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, forwardRef } from \"@angular/core\";\n\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { THEAD_TYPE } from \"../public-api\";\nimport { EoNgTableComponent } from \"./table.component\";\n\n@Component({\n  selector: \"eo-ng-simple-table\",\n  templateUrl: \"./table.component.html\",\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => EoNgSimpleTableComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EoNgSimpleTableComponent extends EoNgTableComponent {\n  nzTheadTmpHtml: string = \"\";\n  nzTbodyTmpHtml: string = \"\";\n  getNgThead() {\n    this.nzThead.forEach((theadItem: THEAD_TYPE) => {});\n  }\n  timer!: NodeJS.Timeout;\n  override getNgTbody() {\n    const date = new Date().getTime();\n    clearTimeout(this.timer);\n    this.timer = setTimeout(() => {\n      console.log(\"渲染完表格时间\", new Date().getTime() - date);\n    });\n  }\n  ngOnDestroy(): void {\n    clearTimeout(this.timer);\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 { Directive, Input } from \"@angular/core\";\n\n@Directive({\n  selector: \"th[nzAlign],td[nzAlign]\",\n  host: {\n    \"[style.text-align]\": \"nzAlign\",\n  },\n})\nexport class NzCellAlignDirective {\n  @Input() nzAlign: \"left\" | \"right\" | \"center\" | null = null;\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 { Directive, Input } from \"@angular/core\";\n\nimport { BooleanInput } from \"ng-zorro-antd/core/types\";\nimport { InputBoolean } from \"ng-zorro-antd/core/util\";\n\n@Directive({\n  selector: \"th[nzBreakWord],td[nzBreakWord]\",\n  host: {\n    \"[style.word-break]\": `nzBreakWord ? 'break-all' : ''`,\n  },\n})\nexport class NzCellBreakWordDirective {\n  static ngAcceptInputType_nzBreakWord: BooleanInput;\n\n  @Input() @InputBoolean() nzBreakWord = true;\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 { Directive, Input } from \"@angular/core\";\n\n@Directive({\n  selector: \"tr[nzExpand]\",\n  host: {\n    class: \"ant-table-expanded-row\",\n    \"[hidden]\": `!nzExpand`,\n  },\n})\nexport class NzTrExpandDirective {\n  @Input() nzExpand = true;\n\n  constructor() {}\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 { PlatformModule } from \"@angular/cdk/platform\";\nimport { ScrollingModule } from \"../eo-ng-scrolling/scrolling-module\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { EoNgCheckboxModule } from \"eo-ng-checkbox\";\n\nimport { NzButtonModule } from \"ng-zorro-antd/button\";\nimport { NzResizeObserverModule } from \"ng-zorro-antd/cdk/resize-observer\";\nimport { NzCheckboxModule } from \"ng-zorro-antd/checkbox\";\nimport { NzOutletModule } from \"ng-zorro-antd/core/outlet\";\nimport { NzDropDownModule } from \"ng-zorro-antd/dropdown\";\nimport { NzEmptyModule } from \"ng-zorro-antd/empty\";\nimport { NzI18nModule } from \"ng-zorro-antd/i18n\";\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\nimport { NzMenuModule } from \"ng-zorro-antd/menu\";\nimport { NzPaginationModule } from \"ng-zorro-antd/pagination\";\nimport { NzRadioModule } from \"ng-zorro-antd/radio\";\nimport { NzSpinModule } from \"ng-zorro-antd/spin\";\n\nimport { NzFilterTriggerComponent } from \"./addon/filter-trigger.component\";\nimport { NzTableFilterComponent } from \"./addon/filter.component\";\nimport { NzRowExpandButtonDirective } from \"./addon/row-expand-button.directive\";\nimport { NzRowIndentDirective } from \"./addon/row-indent.directive\";\nimport { NzTableSelectionComponent } from \"./addon/selection.component\";\nimport { NzTableSortersComponent } from \"./addon/sorters.component\";\nimport { NzCellFixedDirective } from \"./cell/cell-fixed.directive\";\nimport { NzTableCellDirective } from \"./cell/cell.directive\";\nimport { NzTdAddOnComponent } from \"./cell/td-addon.component\";\nimport { NzThAddOnComponent } from \"./cell/th-addon.component\";\nimport { NzThMeasureDirective } from \"./cell/th-measure.directive\";\nimport { NzThSelectionComponent } from \"./cell/th-selection.component\";\nimport { NzCellAlignDirective } from \"./styled/align.directive\";\nimport { NzCellEllipsisDirective } from \"./styled/ellipsis.directive\";\nimport { NzCellBreakWordDirective } from \"./styled/word-break.directive\";\nimport { NzTableContentComponent } from \"./table/table-content.component\";\nimport { NzTableFixedRowComponent } from \"./table/table-fixed-row.component\";\nimport { NzTableInnerDefaultComponent } from \"./table/table-inner-default.component\";\nimport { NzTableInnerScrollComponent } from \"./table/table-inner-scroll.component\";\nimport { NzTableVirtualScrollDirective } from \"./table/table-virtual-scroll.directive\";\nimport { NzTableComponent } from \"./table/table.component\";\nimport { NzTbodyComponent } from \"./table/tbody.component\";\nimport { NzTheadComponent } from \"./table/thead.component\";\nimport { NzTableTitleFooterComponent } from \"./table/title-footer.component\";\nimport { NzTrExpandDirective } from \"./table/tr-expand.directive\";\nimport { NzTrMeasureComponent } from \"./table/tr-measure.component\";\nimport { NzTrDirective } from \"./table/tr.directive\";\n\n@NgModule({\n  declarations: [\n    NzTableComponent,\n    NzThAddOnComponent,\n    NzTableCellDirective,\n    NzThMeasureDirective,\n    NzTdAddOnComponent,\n    NzTheadComponent,\n    NzTbodyComponent,\n    NzTrDirective,\n    NzTrExpandDirective,\n    NzTableVirtualScrollDirective,\n    NzCellFixedDirective,\n    NzTableContentComponent,\n    NzTableTitleFooterComponent,\n    NzTableInnerDefaultComponent,\n    NzTableInnerScrollComponent,\n    NzTrMeasureComponent,\n    NzRowIndentDirective,\n    NzRowExpandButtonDirective,\n    NzCellBreakWordDirective,\n    NzCellAlignDirective,\n    NzTableSortersComponent,\n    NzTableFilterComponent,\n    NzTableSelectionComponent,\n    NzCellEllipsisDirective,\n    NzFilterTriggerComponent,\n    NzTableFixedRowComponent,\n    NzThSelectionComponent,\n  ],\n  exports: [\n    NzTableComponent,\n    NzThAddOnComponent,\n    NzTableCellDirective,\n    NzThMeasureDirective,\n    NzTdAddOnComponent,\n    NzTheadComponent,\n    NzTbodyComponent,\n    NzTrDirective,\n    NzTableVirtualScrollDirective,\n    NzCellFixedDirective,\n    NzFilterTriggerComponent,\n    NzTrExpandDirective,\n    NzCellBreakWordDirective,\n    NzCellAlignDirective,\n    NzCellEllipsisDirective,\n    NzTableFixedRowComponent,\n    NzThSelectionComponent,\n  ],\n  imports: [\n    BidiModule,\n    NzMenuModule,\n    FormsModule,\n    NzOutletModule,\n    NzRadioModule,\n    NzCheckboxModule,\n    NzDropDownModule,\n    NzButtonModule,\n    CommonModule,\n    PlatformModule,\n    NzPaginationModule,\n    NzResizeObserverModule,\n    NzSpinModule,\n    NzI18nModule,\n    NzIconModule,\n    NzEmptyModule,\n    ScrollingModule,\n    EoNgCheckboxModule,\n  ],\n})\nexport class NzTableModule {}\n","import { CommonModule } from \"@angular/common\";\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { NzOutletModule } from \"ng-zorro-antd/core/outlet\";\nimport { DragDropModule } from \"@angular/cdk/drag-drop\";\nimport { EoNgDropdownModule } from \"eo-ng-dropdown\";\nimport { EoNgSelectModule } from \"eo-ng-select\";\nimport { EoNgTableComponent } from \"./table.component\";\nimport { NzResizableModule } from \"ng-zorro-antd/resizable\";\nimport { NzCheckboxModule } from \"ng-zorro-antd/checkbox\";\nimport { ScrollingModule } from \"./eo-ng-scrolling/scrolling-module\";\nimport { EoNgInputModule } from \"eo-ng-input\";\nimport { EoNgAutoCompleteModule } from \"eo-ng-auto-complete\";\nimport { EoNgButtonModule } from \"eo-ng-button\";\nimport { NzPopconfirmModule } from \"ng-zorro-antd/popconfirm\";\nimport { NzDividerModule } from \"ng-zorro-antd/divider\";\nimport { NzTableModule } from \"./nz/table.module\";\nimport { EoNgFeedbackTooltipModule } from \"eo-ng-feedback\";\nimport { EoNgRadioModule } from \"eo-ng-radio\";\nimport { EoNgEmptyModule } from \"eo-ng-empty\";\nimport { EoNgSimpleTableComponent } from \"./table-simple.component\";\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\n\n@NgModule({\n  declarations: [\n    EoNgTableComponent,\n    EoNgSimpleTableComponent,\n  ],\n  imports: [\n    ScrollingModule,\n    NzCheckboxModule,\n    NzResizableModule,\n    NzTableModule,\n    CommonModule,\n    FormsModule,\n    NzOutletModule,\n    DragDropModule,\n    EoNgDropdownModule,\n    EoNgSelectModule,\n    EoNgInputModule,\n    EoNgAutoCompleteModule,\n    EoNgButtonModule,\n    NzPopconfirmModule,\n    NzDividerModule,\n    EoNgFeedbackTooltipModule,\n    EoNgRadioModule,\n    EoNgEmptyModule,\n    NzIconModule,\n  ],\n  exports: [EoNgTableComponent, EoNgSimpleTableComponent],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class EoNgTableModule {}\n","/*\n * @Name: 文件用途\n * @Copyright: 广州银云信息科技有限公司\n * @Author:\n * @Date: 2022-07-27 03:39:25\n * @LastEditors: qintian\n * @LastEditTime: 2022-07-27 03:39:44\n */\n/*\n * Public API Surface of eo-ng-table\n */\nexport * from \"./lib/table-simple.component\";\nexport * from \"./lib/table.component\";\nexport * from \"./lib/table.module\";\nexport * from \"./lib/types/table.type\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf","i1.ScrollDispatcher","i1","i2.ScrollDispatcher","i3.ViewportRuler","i1.CdkVirtualScrollViewport","i2","i1.NzTableStyleService","i4.NzTrMeasureComponent","i5.NzTableFixedRowComponent","i3","i4.CdkFixedSizeVirtualScroll","i5.CdkVirtualForOf","i6.CdkVirtualScrollViewport","i7.NzTbodyComponent","i8.NzTableContentComponent","i1.NzTableContentComponent","NZ_CONFIG_MODULE_NAME","i3.NzTableStyleService","i4.NzTableDataService","i5","i6","i9.NzTableTitleFooterComponent","i10.NzTableInnerDefaultComponent","i11.NzTableInnerScrollComponent","i7","i8","i10","i11","i12.NzFilterTriggerComponent","i3.NzTableSortersComponent","i4.NzTableFilterComponent","i4.NzRowIndentDirective","i5.NzRowExpandButtonDirective","i2.NzTableDataService","i4","i1.NzTableSelectionComponent","uuidv4","i2.NzTableComponent","i3.NzThAddOnComponent","i4.NzTableCellDirective","i5.NzThMeasureDirective","i6.NzTdAddOnComponent","i7.NzTheadComponent","i8.NzTbodyComponent","i9.NzTrDirective","i10.NzTableVirtualScrollDirective","i11.NzCellFixedDirective","i13.NzCellEllipsisDirective","i14.NzThSelectionComponent"],"mappings":"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"}