{"version":3,"file":"st.mjs","sources":["../../../../packages/abc/st/st-row.directive.ts","../../../../packages/abc/st/st-widget.ts","../../../../packages/abc/st/st-column-source.ts","../../../../packages/abc/st/st-data-source.ts","../../../../packages/abc/st/st-export.ts","../../../../packages/abc/st/st-widget-host.directive.ts","../../../../packages/abc/st/st-filter.component.ts","../../../../packages/abc/st/st.config.ts","../../../../packages/abc/st/st.component.ts","../../../../packages/abc/st/st-td.component.html","../../../../packages/abc/st/st.component.html","../../../../packages/abc/st/st.module.ts","../../../../packages/abc/st/provide.ts","../../../../packages/abc/st/st.ts"],"sourcesContent":["import { Directive, Injectable, Input, OnInit, TemplateRef, inject } from '@angular/core';\n\n@Injectable()\nexport class STRowSource {\n  private titles: Record<string, TemplateRef<void>> = {};\n  private rows: Record<string, TemplateRef<void>> = {};\n\n  add(type: string | undefined, path: string, ref: TemplateRef<void>): void {\n    this[type === 'title' ? 'titles' : 'rows'][path] = ref;\n  }\n\n  getTitle(path: string): TemplateRef<void> {\n    return this.titles[path];\n  }\n\n  getRow(path: string): TemplateRef<void> {\n    return this.rows[path];\n  }\n}\n\n@Directive({\n  selector: '[st-row]'\n})\nexport class STRowDirective implements OnInit {\n  private readonly source = inject(STRowSource, { host: true });\n  private readonly ref = inject(TemplateRef);\n  @Input('st-row') id!: string;\n\n  @Input() type?: 'title';\n\n  ngOnInit(): void {\n    this.source.add(this.type, this.id, this.ref);\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\n@Injectable({ providedIn: 'root' })\nexport class STWidgetRegistry {\n  private _widgets: Record<string, NzSafeAny> = {};\n\n  get widgets(): NzSafeAny {\n    return this._widgets;\n  }\n\n  register(type: string, widget: NzSafeAny): void {\n    this._widgets[type] = widget;\n  }\n\n  has(type: string): boolean {\n    return Object.prototype.hasOwnProperty.call(this._widgets, type);\n  }\n\n  get(type: string): NzSafeAny {\n    return this._widgets[type];\n  }\n}\n","import { inject, Injectable, TemplateRef } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { ACLService } from '@delon/acl';\nimport { ALAIN_I18N_TOKEN } from '@delon/theme';\nimport { AlainSTConfig } from '@delon/util/config';\nimport { deepCopy, warn } from '@delon/util/other';\nimport type { NgClassInterface, NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { STRowSource } from './st-row.directive';\nimport { STWidgetRegistry } from './st-widget';\nimport {\n  STColumn,\n  STColumnButton,\n  STColumnButtonPop,\n  STColumnFilter,\n  STColumnGroupType,\n  STColumnSafeType,\n  STIcon,\n  STResizable,\n  STSortMap,\n  STWidthMode\n} from './st.interfaces';\nimport { _STColumn, _STHeader } from './st.types';\n\nexport interface STColumnSourceProcessOptions {\n  widthMode: STWidthMode;\n  resizable?: STResizable;\n  safeType: STColumnSafeType;\n  expand: boolean;\n}\n\n@Injectable()\nexport class STColumnSource {\n  private readonly dom = inject(DomSanitizer);\n  private readonly rowSource = inject(STRowSource, { host: true });\n  private readonly acl = inject(ACLService, { optional: true });\n  private readonly i18nSrv = inject(ALAIN_I18N_TOKEN, { optional: true });\n  private readonly stWidgetRegistry = inject(STWidgetRegistry);\n  private cog!: AlainSTConfig;\n\n  setCog(val: AlainSTConfig): void {\n    this.cog = val;\n  }\n\n  private fixPop(i: STColumnButton, def: STColumnButtonPop): void {\n    if (i.pop == null || i.pop === false) {\n      i.pop = false;\n      return;\n    }\n\n    let pop: STColumnButtonPop = {\n      okType: 'primary',\n      ...def\n    };\n    if (typeof i.pop === 'string') {\n      pop.title = i.pop;\n    } else if (typeof i.pop === 'object') {\n      pop = {\n        ...pop,\n        ...i.pop\n      };\n    }\n\n    if (typeof pop.condition !== 'function') {\n      pop.condition = () => false;\n    }\n\n    if (this.i18nSrv) {\n      if (pop.titleI18n) pop.title = this.i18nSrv.fanyi(pop.titleI18n);\n      if (pop.okTextI18n) pop.okText = this.i18nSrv.fanyi(pop.okTextI18n);\n      if (pop.cancelTextI18n) pop.cancelText = this.i18nSrv.fanyi(pop.cancelTextI18n);\n    }\n\n    i.pop = pop;\n  }\n\n  private btnCoerce(list: STColumnButton[]): STColumnButton[] {\n    if (!list) return [];\n    const ret: STColumnButton[] = [];\n    const { modal, drawer, pop, btnIcon } = this.cog;\n\n    for (const item of list) {\n      if (this.acl && item.acl && !this.acl.can(item.acl)) {\n        continue;\n      }\n\n      if (item.type === 'modal' || item.type === 'static') {\n        if (item.modal == null || item.modal.component == null) {\n          if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            console.warn(`[st] Should specify modal parameter when type is modal or static`);\n          }\n          item.type = 'none';\n        } else {\n          item.modal = { paramsName: 'record', size: 'lg', ...modal, ...item.modal };\n        }\n      }\n\n      if (item.type === 'drawer') {\n        if (item.drawer == null || item.drawer.component == null) {\n          if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            console.warn(`[st] Should specify drawer parameter when type is drawer`);\n          }\n          item.type = 'none';\n        } else {\n          item.drawer = { paramsName: 'record', size: 'lg', ...drawer, ...item.drawer };\n        }\n      }\n\n      if (item.type === 'del' && typeof item.pop === 'undefined') {\n        item.pop = true;\n      }\n\n      // pop\n      this.fixPop(item, pop!);\n\n      if (typeof item.icon !== 'function') {\n        item.icon = {\n          ...btnIcon,\n          ...(typeof item.icon === 'string' ? { type: item.icon } : item.icon)\n        } as STIcon;\n      }\n\n      item.children = Array.isArray(item.children) ? this.btnCoerce(item.children) : null;\n\n      // i18n\n      if (item.i18n && this.i18nSrv) {\n        item.text = this.i18nSrv.fanyi(item.i18n);\n      }\n\n      ret.push(item);\n    }\n    this.btnCoerceIf(ret);\n    return ret;\n  }\n\n  private btnCoerceIf(list: STColumnButton[]): void {\n    for (const item of list) {\n      item.iifBehavior = item.iifBehavior ?? this.cog.iifBehavior;\n      if (item.children && item.children.length > 0) {\n        this.btnCoerceIf(item.children);\n      }\n    }\n  }\n\n  private fixedCoerce(list: _STColumn[], expand: boolean): void {\n    const countReduce = (a: number, b: _STColumn): number => a + +b.width!.toString().replace('px', '');\n    const expandWidth = expand ? 50 : 0;\n    // left width\n    list\n      .filter(w => w.fixed && w.fixed === 'left' && w.width)\n      .forEach((item, idx) => (item._left = `${list.slice(0, idx).reduce(countReduce, 0) + expandWidth}px`));\n    // right width\n    list\n      .filter(w => w.fixed && w.fixed === 'right' && w.width)\n      .reverse()\n      .forEach((item, idx) => (item._right = `${idx > 0 ? list.slice(-idx).reduce(countReduce, 0) : 0}px`));\n  }\n\n  private sortCoerce(item: _STColumn): STSortMap {\n    const res = this.fixSortCoerce(item);\n    res.reName = {\n      ...this.cog.sortReName,\n      ...res.reName\n    };\n    return res;\n  }\n\n  private fixSortCoerce(item: _STColumn): STSortMap {\n    if (typeof item.sort === 'undefined') {\n      return { enabled: false };\n    }\n\n    let res: STSortMap = {};\n\n    if (typeof item.sort === 'string') {\n      if (item.sort === 'ascend' || item.sort === 'descend') {\n        res.directions = [item.sort, null];\n      } else {\n        res.key = item.sort;\n      }\n    } else if (typeof item.sort !== 'boolean') {\n      res = item.sort;\n    } else if (typeof item.sort === 'boolean') {\n      res.compare = (a, b) => a[item.indexKey!] - b[item.indexKey!];\n    }\n\n    if (!res.key) {\n      res.key = item.indexKey;\n    }\n\n    if (!Array.isArray(res.directions)) {\n      res.directions = this.cog.sortDirections ?? ['ascend', 'descend', null];\n    }\n\n    res.enabled = true;\n\n    return res;\n  }\n\n  private filterCoerce(item: _STColumn): STColumnFilter | null {\n    if (item.filter == null) {\n      return null;\n    }\n\n    let res: STColumnFilter | null = item.filter;\n    res.type = res.type ?? 'default';\n    res.showOPArea = res.showOPArea !== false;\n\n    let icon = 'filter';\n    let iconTheme = 'fill';\n    let fixMenus = true;\n    let value: NzSafeAny = undefined;\n    switch (res.type) {\n      case 'keyword':\n        icon = 'search';\n        iconTheme = 'outline';\n        break;\n      case 'number':\n        icon = 'search';\n        iconTheme = 'outline';\n        res.number = {\n          step: 1,\n          min: -Infinity,\n          max: Infinity,\n          ...res.number\n        };\n        break;\n      case 'date':\n        icon = 'calendar';\n        iconTheme = 'outline';\n        res.date = {\n          range: false,\n          mode: 'date',\n          showToday: true,\n          showNow: false,\n          ...res.date\n        };\n        break;\n      case 'custom':\n        break;\n      default:\n        fixMenus = false;\n        break;\n    }\n    if (fixMenus && (res.menus == null || res.menus!.length === 0)) {\n      res.menus = [{ value }];\n    }\n\n    if (res.menus?.length === 0) {\n      return null;\n    }\n\n    if (typeof res.multiple === 'undefined') {\n      res.multiple = true;\n    }\n\n    res.confirmText = res.confirmText ?? this.cog.filterConfirmText;\n    res.clearText = res.clearText ?? this.cog.filterClearText;\n    res.key = res.key ?? item.indexKey;\n    res.icon = res.icon ?? icon;\n\n    const baseIcon = { type: icon, theme: iconTheme } as STIcon;\n    if (typeof res.icon === 'string') {\n      res.icon = { ...baseIcon, type: res.icon } as STIcon;\n    } else {\n      res.icon = { ...baseIcon, ...res.icon };\n    }\n\n    this.updateDefault(res);\n\n    if (this.acl) {\n      res.menus = res.menus?.filter(w => this.acl!.can(w.acl!));\n    }\n\n    return res.menus?.length === 0 ? null : res;\n  }\n\n  private restoreRender(item: _STColumn): void {\n    if (item.renderTitle) {\n      item.__renderTitle =\n        typeof item.renderTitle === 'string'\n          ? this.rowSource.getTitle(item.renderTitle)\n          : (item.renderTitle as TemplateRef<void>);\n    }\n    if (item.render) {\n      item.__render =\n        typeof item.render === 'string' ? this.rowSource.getRow(item.render) : (item.render as TemplateRef<void>);\n    }\n  }\n\n  private widgetCoerce(item: _STColumn): void {\n    if (item.type !== 'widget') return;\n    if (item.widget == null || !this.stWidgetRegistry.has(item.widget.type)) {\n      delete item.type;\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        warn(`st: No widget for type \"${item.widget?.type}\"`);\n      }\n    }\n  }\n\n  private genHeaders(rootColumns: _STColumn[]): { headers: _STHeader[][]; headerWidths: string[] | null } {\n    const rows: _STHeader[][] = [];\n    const widths: string[] = [];\n    const fillRowCells = (columns: _STColumn[], colIndex: number, rowIndex = 0): number[] => {\n      // Init rows\n      rows[rowIndex] = rows[rowIndex] ?? [];\n\n      let currentColIndex = colIndex;\n      const colSpans: number[] = columns.map(column => {\n        const cell: STColumnGroupType = {\n          column,\n          colStart: currentColIndex,\n          hasSubColumns: false\n        };\n\n        let colSpan = 1;\n\n        const subColumns = column.children;\n        if (Array.isArray(subColumns) && subColumns.length > 0) {\n          colSpan = fillRowCells(subColumns, currentColIndex, rowIndex + 1).reduce((total, count) => total + count, 0);\n          cell.hasSubColumns = true;\n        } else {\n          widths.push((cell.column.width as string) ?? '');\n        }\n\n        if ('colSpan' in column) {\n          colSpan = column.colSpan!;\n        }\n\n        if ('rowSpan' in column) {\n          cell.rowSpan = column.rowSpan;\n        }\n\n        cell.colSpan = colSpan;\n        cell.colEnd = cell.colStart + colSpan - 1;\n        rows[rowIndex].push(cell as NzSafeAny);\n\n        currentColIndex += colSpan;\n\n        return colSpan;\n      });\n\n      return colSpans;\n    };\n\n    fillRowCells(rootColumns, 0);\n\n    // Handle `rowSpan`\n    const rowCount = rows.length;\n    for (let rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {\n      rows[rowIndex].forEach(cell => {\n        if (!('rowSpan' in cell) && !(cell as _STHeader).hasSubColumns) {\n          (cell as _STHeader).rowSpan = rowCount - rowIndex;\n        }\n      });\n    }\n\n    return { headers: rows, headerWidths: rowCount > 1 ? widths : null };\n  }\n\n  private cleanCond(list: _STColumn[]): _STColumn[] {\n    const res: _STColumn[] = [];\n    const copyList = deepCopy(list);\n    for (const item of copyList) {\n      if (typeof item.iif === 'function' && !item.iif(item)) {\n        continue;\n      }\n      if (this.acl && item.acl && !this.acl.can(item.acl)) {\n        continue;\n      }\n      if (Array.isArray(item.children) && item.children.length > 0) {\n        item.children = this.cleanCond(item.children);\n      }\n      res.push(item);\n    }\n    return res;\n  }\n\n  private mergeClass(item: _STColumn): void {\n    const builtInClassNames: string[] = [];\n    if (item._isTruncate) {\n      builtInClassNames.push('text-truncate');\n    }\n    const rawClassName = item.className;\n    if (!rawClassName) {\n      const typeClass = (\n        {\n          number: 'text-right',\n          currency: 'text-right',\n          date: 'text-center'\n        } as NzSafeAny\n      )[item.type!];\n      if (typeClass) {\n        builtInClassNames.push(typeClass);\n      }\n      item._className = builtInClassNames;\n      return;\n    }\n\n    const rawClassNameIsArray = Array.isArray(rawClassName);\n    if (!rawClassNameIsArray && typeof rawClassName === 'object') {\n      const objClassNames: NgClassInterface = rawClassName;\n      builtInClassNames.forEach(key => (objClassNames[key] = true));\n      item._className = objClassNames;\n      return;\n    }\n\n    const arrayClassNames = rawClassNameIsArray ? Array.from(rawClassName as string[]) : [rawClassName];\n    arrayClassNames.splice(0, 0, ...builtInClassNames);\n    item._className = [...new Set(arrayClassNames)].filter(w => !!w);\n  }\n\n  process(\n    list: STColumn[],\n    options: STColumnSourceProcessOptions\n  ): { columns: _STColumn[]; headers: _STHeader[][]; headerWidths: string[] | null } {\n    if (!list || list.length === 0) {\n      return { columns: [], headers: [], headerWidths: null };\n    }\n    const { noIndex } = this.cog;\n    let checkboxCount = 0;\n    let radioCount = 0;\n    const columns: _STColumn[] = [];\n\n    const processItem = (item: _STColumn): _STColumn => {\n      // index\n      if (item.index) {\n        if (!Array.isArray(item.index)) {\n          item.index = item.index.toString().split('.');\n        }\n        item.indexKey = item.index.join('.');\n      }\n\n      // #region title\n\n      const tit = (typeof item.title === 'string' ? { text: item.title } : item.title) ?? {};\n      if (tit.i18n && this.i18nSrv) {\n        tit.text = this.i18nSrv.fanyi(tit.i18n);\n      }\n      if (tit.text) {\n        tit._text = this.dom.bypassSecurityTrustHtml(tit.text);\n      }\n      item.title = tit;\n\n      // #endregion\n\n      // no\n      if (item.type === 'no') {\n        item.noIndex = item.noIndex == null ? noIndex : item.noIndex;\n      }\n      // checkbox\n      if (item.selections == null) {\n        item.selections = [];\n      }\n      if (item.type === 'checkbox') {\n        ++checkboxCount;\n        if (!item.width) {\n          item.width = `${item.selections.length > 0 ? 62 : 50}px`;\n        }\n      }\n      if (this.acl) {\n        item.selections = item.selections.filter(w => this.acl!.can(w.acl!));\n      }\n      // radio\n      if (item.type === 'radio') {\n        ++radioCount;\n        item.selections = [];\n        if (!item.width) {\n          item.width = '50px';\n        }\n      }\n      // cell\n      if (item.cell != null) {\n        item.type = 'cell';\n      }\n      // types\n      if (item.type === 'yn') {\n        item.yn = { truth: true, ...this.cog.yn, ...item.yn };\n      }\n      // date\n      if (item.type === 'date') {\n        item.dateFormat = item.dateFormat ?? this.cog.date?.format;\n      }\n      if (\n        (item.type === 'link' && typeof item.click !== 'function') ||\n        (item.type === 'badge' && item.badge == null) ||\n        (item.type === 'tag' && item.tag == null) ||\n        (item.type === 'enum' && item.enum == null)\n      ) {\n        item.type = '';\n      }\n      item._isTruncate = !!item.width && options.widthMode.strictBehavior === 'truncate' && item.type !== 'img';\n      // className\n      this.mergeClass(item);\n      // width\n      if (typeof item.width === 'number') {\n        item._width = item.width;\n        item.width = `${item.width}px`;\n      }\n      item._left = false;\n      item._right = false;\n      item.safeType = item.safeType ?? options.safeType;\n\n      // sorter\n      item._sort = this.sortCoerce(item);\n      // filter\n      item.filter = this.filterCoerce(item) as STColumnFilter;\n      // buttons\n      item.buttons = this.btnCoerce(item.buttons!);\n      // widget\n      this.widgetCoerce(item);\n      // restore custom row\n      this.restoreRender(item);\n      // resizable\n      item.resizable = {\n        disabled: true,\n        bounds: 'window',\n        minWidth: 60,\n        maxWidth: 360,\n        preview: true,\n        ...options.resizable,\n        ...(typeof item.resizable === 'boolean' ? ({ disabled: !item.resizable } as STResizable) : item.resizable)\n      };\n\n      return item;\n    };\n\n    const processList = (data: _STColumn[]): void => {\n      for (const item of data) {\n        columns.push(processItem(item));\n        if (Array.isArray(item.children)) {\n          processList(item.children);\n        }\n      }\n    };\n\n    const copyList = this.cleanCond(list as _STColumn[]);\n    processList(copyList);\n\n    if (checkboxCount > 1) {\n      throw new Error(`[st]: just only one column checkbox`);\n    }\n    if (radioCount > 1) {\n      throw new Error(`[st]: just only one column radio`);\n    }\n\n    this.fixedCoerce(columns as _STColumn[], options.expand);\n    return {\n      columns: columns.filter(w => !Array.isArray(w.children) || w.children.length === 0),\n      ...this.genHeaders(copyList)\n    };\n  }\n\n  restoreAllRender(columns: _STColumn[]): void {\n    columns.forEach(i => this.restoreRender(i));\n  }\n\n  updateDefault(filter: STColumnFilter): this {\n    if (filter.menus == null) return this;\n\n    if (filter.type === 'default') {\n      filter.default = filter.menus!.findIndex(w => w.checked!) !== -1;\n    } else {\n      filter.default = !!filter.menus![0].value;\n    }\n    return this;\n  }\n\n  cleanFilter(col: _STColumn): this {\n    const f = col.filter!;\n    f.default = false;\n    if (f.type === 'default') {\n      f.menus!.forEach(i => (i.checked = false));\n    } else {\n      f.menus![0].value = undefined;\n    }\n    return this;\n  }\n}\n","/* eslint-disable @angular-eslint/prefer-inject */\nimport { DecimalPipe } from '@angular/common';\nimport { HttpParams } from '@angular/common/http';\nimport { Host, Injectable } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Observable, of, map } from 'rxjs';\n\nimport type { CellOptions } from '@delon/abc/cell';\nimport { DatePipe, STLocaleData, YNPipe, _HttpClient } from '@delon/theme';\nimport type { AlainSTConfig } from '@delon/util/config';\nimport { CurrencyService } from '@delon/util/format';\nimport { deepCopy, deepGet } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport type {\n  STColumn,\n  STColumnFilter,\n  STColumnFilterMenu,\n  STColumnMaxMultipleButton,\n  STCustomRequestOptions,\n  STData,\n  STIcon,\n  STMultiSort,\n  STMultiSortResultType,\n  STOnCellResult,\n  STPage,\n  STReq,\n  STReqReNameType,\n  STRequestOptions,\n  STRes,\n  STRowClassName,\n  STSingleSort,\n  STSortMap,\n  STStatistical,\n  STStatisticalResult,\n  STStatisticalResults,\n  STStatisticalType\n} from './st.interfaces';\nimport type { _STColumn, _STColumnButton, _STDataValue, _STHeader } from './st.types';\n\nexport interface STDataSourceOptions {\n  pi: number;\n  ps: number;\n  paginator: boolean;\n  data?: string | STData[] | Observable<STData[]>;\n  total: number;\n  req: STReq;\n  res: STRes;\n  page: STPage;\n  columns: _STColumn[];\n  headers: _STHeader[][];\n  singleSort?: STSingleSort | null;\n  multiSort?: STMultiSort;\n  rowClassName?: STRowClassName | null;\n  customRequest?: (options: STCustomRequestOptions) => Observable<NzSafeAny>;\n  locale: STLocaleData;\n}\n\nexport interface STDataSourceResult {\n  /** 是否需要显示分页器 */\n  pageShow: boolean;\n  /** 新 `pi`，若返回 `undefined` 表示用户受控 */\n  pi: number;\n  /** 新 `ps`，若返回 `undefined` 表示用户受控 */\n  ps: number;\n  /** 新 `total`，若返回 `undefined` 表示用户受控 */\n  total: number;\n  /** 数据 */\n  list: STData[];\n  /** 统计数据 */\n  statistical: STStatisticalResults;\n}\n\n@Injectable()\nexport class STDataSource {\n  private cog!: AlainSTConfig;\n  private sortTick = 0;\n\n  constructor(\n    private http: _HttpClient,\n    @Host() private datePipe: DatePipe,\n    @Host() private ynPipe: YNPipe,\n    @Host() private numberPipe: DecimalPipe,\n    private currencySrv: CurrencyService,\n    private dom: DomSanitizer\n  ) {}\n\n  setCog(val: AlainSTConfig): void {\n    this.cog = val;\n  }\n\n  process(options: STDataSourceOptions): Observable<STDataSourceResult> {\n    let data$: Observable<STData[]>;\n    let isRemote = false;\n    const { data, res, total, page, pi, ps, paginator, columns, headers, locale } = options;\n    let retTotal: number;\n    let retPs: number;\n    let retList: STData[];\n    let retPi: number;\n    let rawData: NzSafeAny;\n    let showPage = page.show;\n\n    if (typeof data === 'string') {\n      isRemote = true;\n      data$ = this.getByRemote(data, options).pipe(\n        map(result => {\n          rawData = result;\n          let ret: STData[];\n          if (Array.isArray(result)) {\n            ret = result;\n            retTotal = ret.length;\n            retPs = retTotal;\n            showPage = false;\n          } else {\n            const reName = res.reName!;\n            if (typeof reName === 'function') {\n              const fnRes = reName(result, { pi, ps, total });\n              ret = fnRes.list;\n              retTotal = fnRes.total;\n            } else {\n              // list\n              ret = deepGet(result, reName.list as string[], []);\n              if (ret == null || !Array.isArray(ret)) {\n                ret = [];\n              }\n              // total\n              const resultTotal = reName.total && deepGet(result, reName.total as string[], null);\n              retTotal = resultTotal == null ? (total ?? 0) : +resultTotal;\n            }\n          }\n          return deepCopy(ret);\n        })\n      );\n    } else if (data == null || Array.isArray(data)) {\n      data$ = of(data ?? []);\n    } else {\n      // a cold observable\n      data$ = data;\n    }\n\n    if (!isRemote) {\n      data$ = data$.pipe(\n        // sort\n        map((result: STData[]) => {\n          rawData = result;\n          let copyResult = deepCopy(result);\n          const sorterFn = this.getSorterFn(headers);\n          if (sorterFn) {\n            copyResult = copyResult.sort(sorterFn);\n          }\n          return copyResult;\n        }),\n        // filter\n        map((result: STData[]) => {\n          columns\n            .filter(w => w.filter)\n            .forEach(c => {\n              const filter = c.filter!;\n              const values = this.getFilteredData(filter);\n              if (values.length === 0) return;\n              const onFilter = filter.fn;\n              if (typeof onFilter !== 'function') {\n                if (typeof ngDevMode === 'undefined' || ngDevMode) {\n                  console.warn(`[st] Muse provide the fn function in filter`);\n                }\n                return;\n              }\n              result = result.filter(record => values.some(v => onFilter(v, record)));\n            });\n          return result;\n        }),\n        // paging\n        map((result: STData[]) => {\n          if (paginator && page.front) {\n            const maxPageIndex = Math.ceil(result.length / ps);\n            retPi = Math.max(1, pi > maxPageIndex ? maxPageIndex : pi);\n            retTotal = result.length;\n            if (page.show === true) {\n              return result.slice((retPi - 1) * ps, retPi * ps);\n            }\n          }\n          return result;\n        })\n      );\n    }\n\n    // pre-process\n    if (typeof res.process === 'function') {\n      data$ = data$.pipe(map(result => res.process!(result, rawData)));\n    }\n\n    data$ = data$.pipe(\n      map(result => this.optimizeData({ result, columns, rowClassName: options.rowClassName, locale }))\n    );\n\n    return data$.pipe(\n      map(result => {\n        retList = result;\n        const realTotal = retTotal ?? total;\n        const realPs = retPs ?? ps;\n\n        return {\n          pi: retPi,\n          ps: retPs,\n          total: retTotal,\n          list: retList,\n          statistical: this.genStatistical(columns as _STColumn[], retList, rawData),\n          pageShow: typeof showPage === 'undefined' ? realTotal > realPs : showPage\n        } as STDataSourceResult;\n      })\n    );\n  }\n\n  private get(item: STData, col: _STColumn, idx: number): _STDataValue {\n    try {\n      const safeHtml = col.safeType === 'safeHtml';\n      if (col.format) {\n        const formatRes = col.format(item, col, idx) ?? '';\n        return {\n          text: formatRes,\n          _text: safeHtml ? this.dom.bypassSecurityTrustHtml(formatRes) : formatRes,\n          org: formatRes,\n          safeType: col.safeType!\n        };\n      }\n\n      const value = deepGet(item, col.index as string[], col.default);\n\n      let text = value;\n      let color: string | undefined;\n      let tooltip: string | undefined;\n      switch (col.type) {\n        case 'no':\n          text = this.getNoIndex(item, col, idx);\n          break;\n        case 'img':\n          text = value ? `<img src=\"${value}\" class=\"img\">` : '';\n          break;\n        case 'number':\n          text = this.numberPipe.transform(value, col.numberDigits);\n          break;\n        case 'currency':\n          text = this.currencySrv.format(value, col.currency?.format);\n          break;\n        case 'date':\n          text =\n            value == null || value === col.default || (typeof value === 'number' && value <= 0)\n              ? col.default\n              : this.datePipe.transform(value, col.dateFormat);\n          break;\n        case 'yn':\n          text = this.ynPipe.transform(value === col.yn!.truth, col.yn!.yes!, col.yn!.no!, col.yn!.mode!, false);\n          break;\n        case 'enum':\n          text = col.enum![value];\n          break;\n        case 'tag':\n        case 'badge': {\n          const data = col.type === 'tag' ? col.tag : col.badge;\n          if (data && data[text]) {\n            const dataItem = data[text];\n            text = dataItem.text;\n            color = dataItem.color;\n            tooltip = dataItem.tooltip;\n          } else {\n            text = '';\n          }\n          break;\n        }\n      }\n      if (text == null) text = '';\n      return {\n        text,\n        _text: safeHtml ? this.dom.bypassSecurityTrustHtml(text) : text,\n        org: value,\n        color,\n        tooltip,\n        safeType: col.safeType!,\n        buttons: []\n      };\n    } catch (ex) {\n      const text = `INVALID DATA`;\n      console.error(`Failed to get data`, item, col, ex);\n      return { text, _text: text, org: text, buttons: [], safeType: 'text' };\n    }\n  }\n\n  private getByRemote(url: string, options: STDataSourceOptions): Observable<unknown> {\n    const { req, page, paginator, pi, ps, singleSort, multiSort, columns, headers } = options;\n    const method = (req.method ?? 'GET').toUpperCase();\n\n    let params: Record<string, any> = {};\n    const reName = req.reName as STReqReNameType;\n    if (paginator) {\n      if (req.type === 'page') {\n        params = {\n          [reName.pi as string]: page.zeroIndexed ? pi - 1 : pi,\n          [reName.ps as string]: ps\n        };\n      } else {\n        params = {\n          [reName.skip as string]: (pi - 1) * ps,\n          [reName.limit as string]: ps\n        };\n      }\n    }\n    params = {\n      ...params,\n      ...req.params,\n      ...this.getReqSortMap(singleSort, multiSort, headers),\n      ...this.getReqFilterMap(columns)\n    };\n    if (options.req.ignoreParamNull == true) {\n      Object.keys(params).forEach(key => {\n        if (params[key] == null) delete params[key];\n      });\n    }\n\n    let reqOptions: STRequestOptions = {\n      params,\n      body: req.body,\n      headers: req.headers\n    };\n    if (method === 'POST' && req.allInBody === true) {\n      reqOptions = {\n        body: { ...req.body, ...params },\n        headers: req.headers\n      };\n    }\n    if (typeof req.process === 'function') {\n      reqOptions = req.process(reqOptions);\n    }\n    if (!(reqOptions.params instanceof HttpParams)) {\n      reqOptions.params = new HttpParams({ fromObject: reqOptions.params });\n    }\n    if (typeof options.customRequest === 'function') {\n      return options.customRequest({ method, url, options: reqOptions });\n    }\n    return this.http.request(method, url, reqOptions);\n  }\n\n  getCell(c: STColumn, item: STData, idx: number): STOnCellResult {\n    const onCellResult = typeof c.onCell === 'function' ? c.onCell(item, idx) : null;\n    const mergedColSpan = onCellResult?.colSpan ?? 1;\n    const mergedRowSpan = onCellResult?.rowSpan ?? 1;\n    return {\n      colSpan: mergedColSpan <= 0 ? null : mergedColSpan,\n      rowSpan: mergedRowSpan <= 0 ? null : mergedRowSpan\n    } as STOnCellResult;\n  }\n\n  optimizeData(options: {\n    columns: _STColumn[];\n    result: STData[];\n    rowClassName?: STRowClassName | null;\n    locale: STLocaleData;\n  }): STData[] {\n    const { result, columns, rowClassName, locale } = options;\n    for (let i = 0, len = result.length; i < len; i++) {\n      result[i]._values = columns.map(c => {\n        const props = this.getCell(c, result[i], i);\n\n        if (Array.isArray(c.buttons) && c.buttons.length > 0) {\n          return { buttons: this.genButtons(c.buttons as _STColumnButton[], result[i], c, locale), _text: '', props };\n        }\n\n        let cell: CellOptions | undefined;\n        if (typeof c.cell === 'function') {\n          cell = c.cell(result[i], c);\n        }\n        return { ...this.get(result[i], c, i), props, cell };\n      });\n      result[i]._rowClassName = [rowClassName ? rowClassName(result[i], i) : null, result[i].className]\n        .filter(w => !!w)\n        .join(' ');\n    }\n    return result;\n  }\n\n  getNoIndex(item: STData, col: _STColumn, idx: number): number {\n    return typeof col.noIndex === 'function' ? col.noIndex(item, col, idx) : col.noIndex! + idx;\n  }\n\n  private genButtons(_btns: _STColumnButton[], item: STData, col: STColumn, locale: STLocaleData): _STColumnButton[] {\n    const fn = (btns: _STColumnButton[]): _STColumnButton[] => {\n      return deepCopy(btns).filter(btn => {\n        const result = typeof btn.iif === 'function' ? btn.iif(item, btn, col) : true;\n        const isRenderDisabled = btn.iifBehavior === 'disabled';\n        btn._result = result;\n        btn._disabled = !result && isRenderDisabled;\n        if (Array.isArray(btn.children)) {\n          if (btn.children.length > 0) {\n            btn.children = fn(btn.children);\n          } else {\n            return false;\n          }\n        }\n        return result || isRenderDisabled;\n      });\n    };\n\n    const res = fn(_btns);\n\n    const fnText = (btns: _STColumnButton[]): _STColumnButton[] => {\n      for (const btn of btns) {\n        btn._text = typeof btn.text === 'function' ? btn.text(item, btn) : (btn.text ?? '');\n        btn._className = typeof btn.className === 'function' ? btn.className(item, btn) : btn.className;\n        btn._icon = typeof btn.icon === 'function' ? btn.icon(item, btn) : (btn.icon as STIcon);\n        if (btn.children?.length) {\n          btn.children = fnText(btn.children!);\n        }\n      }\n      return btns;\n    };\n\n    return this.fixMaxMultiple(fnText(res), col, locale);\n  }\n\n  private fixMaxMultiple(btns: _STColumnButton[], col: STColumn, locale: STLocaleData): _STColumnButton[] {\n    const curCog = col.maxMultipleButton;\n    const btnSize = btns.length;\n    if (curCog == null || btnSize <= 0) return btns;\n\n    const cog: STColumnMaxMultipleButton = {\n      ...this.cog.maxMultipleButton,\n      ...(typeof curCog === 'number' ? { count: curCog } : curCog)\n    };\n\n    if (cog.count! >= btnSize) return btns;\n\n    const newBtns: _STColumnButton[] = btns.slice(0, cog.count);\n    newBtns.push({ _text: cog.text ?? locale.more, children: btns.slice(cog.count) });\n    return newBtns;\n  }\n\n  // #region sort\n\n  private getValidSort(headers: _STHeader[][]): STSortMap[] {\n    return headers.reduce((a, header) => {\n      const ls = header\n        .map(i => i.column)\n        .filter(item => item._sort && item._sort.enabled && item._sort.default)\n        .map(item => item._sort!);\n      return a.concat(...ls);\n    }, [] as STSortMap[]);\n  }\n\n  private getSorterFn(headers: _STHeader[][]): ((a: STData, b: STData) => number) | void {\n    const sortList = this.getValidSort(headers);\n    if (sortList.length === 0) {\n      return;\n    }\n    const sortItem = sortList[0];\n    if (sortItem.compare === null) {\n      return;\n    }\n    if (typeof sortItem.compare !== 'function') {\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        console.warn(`[st] Muse provide the compare function in sort`);\n      }\n      return;\n    }\n\n    return (a: STData, b: STData) => {\n      const result = sortItem.compare!(a, b);\n      if (result !== 0) {\n        return sortItem.default === 'descend' ? -result : result;\n      }\n      return 0;\n    };\n  }\n\n  get nextSortTick(): number {\n    return ++this.sortTick;\n  }\n\n  getReqSortMap(\n    singleSort: STSingleSort | undefined | null,\n    multiSort: STMultiSort | undefined,\n    headers: _STHeader[][]\n  ): STMultiSortResultType {\n    let ret: STMultiSortResultType = {};\n    const sortList = this.getValidSort(headers);\n\n    if (multiSort) {\n      const ms: STMultiSort = {\n        key: 'sort',\n        separator: '-',\n        nameSeparator: '.',\n        keepEmptyKey: true,\n        arrayParam: false,\n        ...multiSort\n      };\n\n      const sortMap = sortList\n        .sort((a, b) => a.tick - b.tick)\n        .map(item => item.key! + ms.nameSeparator + ((item.reName ?? {})[item.default!] ?? item.default));\n\n      ret = { [ms.key!]: ms.arrayParam ? sortMap : sortMap.join(ms.separator) };\n\n      return sortMap.length === 0 && ms.keepEmptyKey === false ? {} : ret;\n    }\n\n    if (sortList.length === 0) return ret;\n\n    const mapData = sortList[0];\n    let sortFiled = mapData.key;\n    let sortValue = (sortList[0].reName ?? {})[mapData.default!] ?? mapData.default;\n    if (singleSort) {\n      sortValue = sortFiled + (singleSort.nameSeparator ?? '.') + sortValue;\n      sortFiled = singleSort.key ?? 'sort';\n    }\n    ret[sortFiled as string] = sortValue as string;\n    return ret;\n  }\n\n  // #endregion\n\n  // #region filter\n\n  private getFilteredData(filter: STColumnFilter): STColumnFilterMenu[] {\n    return filter.type === 'default' ? filter.menus!.filter(f => f.checked === true) : filter.menus!.slice(0, 1);\n  }\n\n  private getReqFilterMap(columns: _STColumn[]): Record<string, string> {\n    let ret = {};\n    columns\n      .filter(w => w.filter && w.filter.default === true)\n      .forEach(col => {\n        const filter = col.filter!;\n        const values = this.getFilteredData(filter);\n        let obj: Record<string, NzSafeAny> = {};\n        if (filter.reName) {\n          obj = filter.reName!(filter.menus!, col);\n        } else {\n          obj[filter.key!] = values.map(i => i.value).join(',');\n        }\n        ret = { ...ret, ...obj };\n      });\n    return ret;\n  }\n\n  // #endregion\n\n  // #region statistical\n\n  private genStatistical(columns: _STColumn[], list: STData[], rawData: NzSafeAny): STStatisticalResults {\n    const res: Record<string, NzSafeAny> = {};\n    columns.forEach((col, index) => {\n      res[col.key ?? col.indexKey ?? index] =\n        col.statistical == null ? {} : this.getStatistical(col, index, list, rawData);\n    });\n    return res;\n  }\n\n  private getStatistical(col: _STColumn, index: number, list: STData[], rawData: NzSafeAny): STStatisticalResult {\n    const val = col.statistical;\n    const item: STStatistical = {\n      digits: 2,\n      currency: undefined,\n      ...(typeof val === 'string' ? { type: val as STStatisticalType } : (val as STStatistical))\n    };\n    let res: STStatisticalResult = { value: 0 };\n    let currency = false;\n    if (typeof item.type === 'function') {\n      res = item.type(this.getValues(index, list), col, list, rawData);\n      currency = true;\n    } else {\n      switch (item.type) {\n        case 'count':\n          res.value = list.length;\n          break;\n        case 'distinctCount':\n          res.value = this.getValues(index, list).filter((value, idx, self) => self.indexOf(value) === idx).length;\n          break;\n        case 'sum':\n          res.value = this.toFixed(this.getSum(index, list), item.digits!);\n          currency = true;\n          break;\n        case 'average':\n          res.value = this.toFixed(this.getSum(index, list) / list.length, item.digits!);\n          currency = true;\n          break;\n        case 'max':\n          res.value = Math.max(...this.getValues(index, list));\n          currency = true;\n          break;\n        case 'min':\n          res.value = Math.min(...this.getValues(index, list));\n          currency = true;\n          break;\n      }\n    }\n    if (item.currency === true || (item.currency == null && currency === true)) {\n      res.text = this.currencySrv.format(res.value, col.currency?.format) as string;\n    } else {\n      res.text = String(res.value);\n    }\n    return res;\n  }\n\n  private toFixed(val: number, digits: number): number {\n    if (isNaN(val) || !isFinite(val)) {\n      return 0;\n    }\n    return parseFloat(val.toFixed(digits));\n  }\n\n  private getValues(index: number, list: STData[]): number[] {\n    return list.map(i => i._values[index].org).map(i => (i === '' || i == null ? 0 : i));\n  }\n\n  private getSum(index: number, list: STData[]): number {\n    return this.getValues(index, list).reduce((p, i) => (p += parseFloat(String(i))), 0);\n  }\n\n  // #endregion\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { XlsxExportResult, XlsxService } from '@delon/abc/xlsx';\nimport { deepGet } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { STColumn, STExportOptions } from './st.interfaces';\nimport { _STColumn } from './st.types';\n\n@Injectable()\nexport class STExport {\n  private readonly xlsxSrv = inject(XlsxService);\n\n  private _stGet(item: NzSafeAny, col: STColumn, index: number, colIndex: number): NzSafeAny {\n    const ret: Record<string, NzSafeAny> = { t: 's', v: '' };\n\n    if (col.format) {\n      ret.v = col.format(item, col, index);\n    } else {\n      const val = item._values ? item._values[colIndex].text : deepGet(item, col.index as string[], '');\n      ret.v = val;\n      if (val != null) {\n        switch (col.type) {\n          case 'currency':\n            ret.t = 'n';\n            break;\n          case 'date':\n            // Can't be a empty value, it will cause `#NULL!`\n            // See https://github.com/SheetJS/sheetjs/blob/master/docbits/52_datatype.md\n            if (`${val}`.length > 0) {\n              ret.t = 'd';\n              // Number Formats: https://github.com/SheetJS/sheetjs/blob/master/docbits/63_numfmt.md\n              ret.z = col.dateFormat;\n            }\n            break;\n          case 'yn': {\n            const yn = col.yn!;\n            ret.v = val === yn.truth ? yn.yes : yn.no;\n            break;\n          }\n        }\n      }\n    }\n\n    ret.v = ret.v ?? '';\n\n    return ret;\n  }\n\n  private genSheet(opt: STExportOptions): Record<string, unknown> {\n    const sheets: Record<string, Record<string, NzSafeAny>> = {};\n    const sheet: Record<string, NzSafeAny> = (sheets[opt.sheetname ?? 'Sheet1'] = {});\n    const dataLen = opt.data!.length;\n    const columns = opt.columens! as _STColumn[];\n    let validColCount = 0;\n    let wpx = false;\n    const invalidFn = (col: _STColumn): boolean =>\n      col.exported === false || !col.index || !(!col.buttons || col.buttons.length === 0);\n    for (const [idx, col] of columns.entries()) {\n      if (invalidFn(col)) continue;\n      if (!wpx && col._width != null) wpx = true;\n      ++validColCount;\n      const columnName = this.xlsxSrv!.numberToSchema(validColCount);\n      sheet[`${columnName}1`] = {\n        t: 's',\n        v: typeof col.title === 'object' ? col.title.text : col.title\n      };\n      for (let dataIdx = 0; dataIdx < dataLen; dataIdx++) {\n        sheet[`${columnName}${dataIdx + 2}`] = this._stGet(opt.data![dataIdx], col, dataIdx, idx);\n      }\n    }\n    if (wpx) {\n      // wpx: width in screen pixels https://github.com/SheetJS/sheetjs#column-properties\n      sheet['!cols'] = columns.filter(col => !invalidFn(col)).map(col => ({ wpx: col._width }));\n    }\n\n    if (validColCount > 0 && dataLen > 0) {\n      sheet['!ref'] = `A1:${this.xlsxSrv!.numberToSchema(validColCount)}${dataLen + 1}`;\n    }\n\n    return sheets;\n  }\n\n  async export(opt: STExportOptions): Promise<XlsxExportResult> {\n    const sheets = this.genSheet(opt);\n    return this.xlsxSrv.export({\n      sheets,\n      filename: opt.filename,\n      callback: opt.callback\n    });\n  }\n}\n","import { Directive, Input, OnInit, ViewContainerRef, inject } from '@angular/core';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { STWidgetRegistry } from './st-widget';\nimport { STColumn, STData } from './st.interfaces';\n\n@Directive({\n  selector: '[st-widget-host]'\n})\nexport class STWidgetHostDirective implements OnInit {\n  private readonly stWidgetRegistry = inject(STWidgetRegistry);\n  private readonly viewContainerRef = inject(ViewContainerRef);\n\n  @Input() record!: STData;\n  @Input() column!: STColumn;\n\n  ngOnInit(): void {\n    const widget = this.column.widget!;\n    const componentType = this.stWidgetRegistry.get(widget.type);\n\n    this.viewContainerRef.clear();\n    const componentRef = this.viewContainerRef.createComponent(componentType);\n    const { record, column } = this;\n    const data: Record<string, NzSafeAny> = widget.params ? widget.params({ record, column }) : { record };\n    Object.keys(data).forEach(key => {\n      (componentRef.instance as NzSafeAny)[key] = data[key];\n    });\n  }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewEncapsulation,\n  inject\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport type { LocaleData } from '@delon/theme';\nimport { NzCheckboxComponent } from 'ng-zorro-antd/checkbox';\nimport { NzDatePickerComponent, NzRangePickerComponent } from 'ng-zorro-antd/date-picker';\nimport { NzDropdownModule } from 'ng-zorro-antd/dropdown';\nimport { NzIconDirective } from 'ng-zorro-antd/icon';\nimport { NzInputDirective } from 'ng-zorro-antd/input';\nimport { NzInputNumberComponent } from 'ng-zorro-antd/input-number';\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\nimport { NzRadioComponent } from 'ng-zorro-antd/radio';\n\nimport type { STColumnFilter, STColumnFilterMenu, STIcon } from './st.interfaces';\nimport type { _STColumn } from './st.types';\n\n@Component({\n  selector: 'st-filter',\n  template: `\n    <span\n      class=\"ant-table-filter-trigger\"\n      [class.active]=\"visible ?? f.default\"\n      nz-dropdown\n      [nzDropdownMenu]=\"filterMenu\"\n      nzTrigger=\"click\"\n      [nzClickHide]=\"false\"\n      [(nzVisible)]=\"visible\"\n      nzOverlayClassName=\"st__filter-wrap\"\n      (click)=\"stopPropagation($event)\"\n    >\n      <nz-icon [nzType]=\"icon.type\" [nzTheme]=\"icon.theme!\" />\n    </span>\n    <nz-dropdown-menu #filterMenu=\"nzDropdownMenu\">\n      <div class=\"ant-table-filter-dropdown\">\n        @switch (f.type) {\n          @case ('keyword') {\n            <div class=\"st__filter-keyword\">\n              <input\n                type=\"text\"\n                nz-input\n                [attr.placeholder]=\"f.placeholder\"\n                [(ngModel)]=\"f.menus![0]!.value\"\n                (ngModelChange)=\"n.emit($event)\"\n                (keyup.enter)=\"confirm()\"\n              />\n            </div>\n          }\n          @case ('number') {\n            <div class=\"p-sm st__filter-number\">\n              <nz-input-number\n                [(ngModel)]=\"f.menus![0]!.value\"\n                (ngModelChange)=\"n.emit($event)\"\n                [nzMin]=\"f.number!.min!\"\n                [nzMax]=\"f.number!.max!\"\n                [nzStep]=\"f.number!.step!\"\n                [nzPrecision]=\"f.number!.precision ?? null\"\n                [nzPlaceHolder]=\"f.placeholder!\"\n                class=\"width-100\"\n              />\n            </div>\n          }\n          @case ('date') {\n            <div class=\"p-sm st__filter-date\">\n              @if (f.date!.range) {\n                <nz-range-picker\n                  nzInline\n                  [nzMode]=\"$any(f.date!.mode)\"\n                  [(ngModel)]=\"f.menus![0]!.value\"\n                  (ngModelChange)=\"n.emit($event)\"\n                  [nzShowNow]=\"f.date!.showNow\"\n                  [nzShowToday]=\"f.date!.showToday\"\n                  [nzDisabledDate]=\"f.date!.disabledDate\"\n                  [nzDisabledTime]=\"f.date!.disabledTime\"\n                />\n              } @else {\n                <nz-date-picker\n                  nzInline\n                  [nzMode]=\"$any(f.date!.mode)\"\n                  [(ngModel)]=\"f.menus![0]!.value\"\n                  (ngModelChange)=\"n.emit($event)\"\n                  [nzShowNow]=\"f.date!.showNow\"\n                  [nzShowToday]=\"f.date!.showToday\"\n                  [nzDisabledDate]=\"f.date!.disabledDate\"\n                  [nzDisabledTime]=\"f.date!.disabledTime\"\n                />\n              }\n            </div>\n          }\n          @case ('custom') {\n            <div class=\"st__filter-custom\">\n              <ng-template\n                [ngTemplateOutlet]=\"f.custom!\"\n                [ngTemplateOutletContext]=\"{ $implicit: f, col: col, handle: this }\"\n              />\n            </div>\n          }\n          @default {\n            <ul nz-menu>\n              @for (filter of f.menus; track $index) {\n                <li nz-menu-item>\n                  @if (f.multiple) {\n                    <label nz-checkbox [(ngModel)]=\"filter.checked\" (ngModelChange)=\"checkboxChange()\">\n                      {{ filter.text }}\n                    </label>\n                  } @else {\n                    <label nz-radio [ngModel]=\"filter.checked\" (ngModelChange)=\"radioChange(filter)\">\n                      {{ filter.text }}\n                    </label>\n                  }\n                </li>\n              }\n            </ul>\n          }\n        }\n        @if (f.showOPArea) {\n          <div class=\"ant-table-filter-dropdown-btns\">\n            <a class=\"ant-table-filter-dropdown-link confirm\" (click)=\"confirm()\">\n              <span>{{ f.confirmText ?? locale.filterConfirm }}</span>\n            </a>\n            <a class=\"ant-table-filter-dropdown-link clear\" (click)=\"reset()\">\n              <span>{{ f.clearText ?? locale.filterReset }}</span>\n            </a>\n          </div>\n        }\n      </div>\n    </nz-dropdown-menu>\n  `,\n  host: {\n    '[class.ant-table-filter-trigger-container]': `true`,\n    '[class.st__filter]': `true`,\n    '[class.ant-table-filter-trigger-container-open]': `visible`\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [\n    FormsModule,\n    NzDropdownModule,\n    NzIconDirective,\n    NzInputDirective,\n    NzInputNumberComponent,\n    NzRangePickerComponent,\n    NzDatePickerComponent,\n    NgTemplateOutlet,\n    NzMenuModule,\n    NzCheckboxComponent,\n    NzRadioComponent\n  ]\n})\nexport class STFilterComponent {\n  private readonly cdr = inject(ChangeDetectorRef);\n\n  visible?: boolean = false;\n  @Input() col!: _STColumn;\n  @Input() locale: LocaleData = {};\n  @Input() f!: STColumnFilter;\n  @Output() readonly n = new EventEmitter<unknown>();\n  @Output() readonly handle = new EventEmitter<boolean>();\n  get icon(): STIcon {\n    return this.f.icon as STIcon;\n  }\n\n  stopPropagation($event: MouseEvent): void {\n    $event.stopPropagation();\n  }\n\n  checkboxChange(): void {\n    this.n.emit(this.f.menus?.filter(w => w.checked));\n  }\n\n  radioChange(item: STColumnFilterMenu): void {\n    this.f.menus!.forEach(i => (i.checked = false));\n    item.checked = !item.checked;\n    this.n.emit(item);\n  }\n\n  close(result?: boolean): void {\n    if (result != null) this.handle.emit(result);\n\n    this.visible = false;\n    this.cdr.detectChanges();\n  }\n\n  confirm(): this {\n    this.handle.emit(true);\n    return this;\n  }\n\n  reset(): this {\n    this.handle.emit(false);\n    return this;\n  }\n}\n","import { AlainSTConfig } from '@delon/util/config';\n\nexport const ST_DEFAULT_CONFIG: AlainSTConfig = {\n  pi: 1,\n  ps: 10,\n  size: 'default',\n  responsive: true,\n  responsiveHideHeaderFooter: false,\n  req: {\n    type: 'page',\n    method: 'GET',\n    allInBody: false,\n    lazyLoad: false,\n    ignoreParamNull: false,\n    reName: { pi: 'pi', ps: 'ps', skip: 'skip', limit: 'limit' }\n  },\n  res: {\n    reName: { list: ['list'], total: ['total'] }\n  },\n  page: {\n    front: true,\n    zeroIndexed: false,\n    position: 'bottom',\n    placement: 'right',\n    show: true,\n    showSize: false,\n    pageSizes: [10, 20, 30, 40, 50],\n    showQuickJumper: false,\n    total: true,\n    toTop: true,\n    toTopOffset: 100,\n    itemRender: null,\n    simple: false\n  },\n  modal: {\n    paramsName: 'record',\n    size: 'lg',\n    exact: true\n  },\n  drawer: {\n    paramsName: 'record',\n    size: 'md',\n    footer: true,\n    footerHeight: 55\n  },\n  pop: {\n    title: '确认删除吗？',\n    trigger: 'click',\n    placement: 'top'\n  },\n  btnIcon: {\n    theme: 'outline',\n    spin: false\n  },\n  noIndex: 1,\n  expandRowByClick: false,\n  expandAccordion: false,\n  widthMode: {\n    type: 'default',\n    strictBehavior: 'truncate'\n  },\n  virtualItemSize: 54,\n  virtualMaxBufferPx: 200,\n  virtualMinBufferPx: 100,\n  iifBehavior: 'hide',\n  loadingDelay: 0,\n  safeType: 'safeHtml',\n  date: {\n    format: `yyyy-MM-dd HH:mm`\n  },\n  yn: {\n    truth: true,\n    yes: '是',\n    mode: 'icon'\n  },\n  maxMultipleButton: {\n    text: '更多',\n    count: 2\n  }\n};\n","import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';\nimport type { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { DecimalPipe, DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewInit,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  effect,\n  ElementRef,\n  EventEmitter,\n  inject,\n  input,\n  Input,\n  numberAttribute,\n  OnChanges,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  TemplateRef,\n  TrackByFunction,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { isObservable, Observable, of, filter, catchError, map, finalize, throwError, lastValueFrom } from 'rxjs';\n\nimport { CellComponent } from '@delon/abc/cell';\nimport { ALAIN_I18N_TOKEN, DatePipe, DelonLocaleService, DrawerHelper, ModalHelper, YNPipe } from '@delon/theme';\nimport { AlainConfigService, AlainSTConfig } from '@delon/util/config';\nimport { deepCopy, deepMergeKey } from '@delon/util/other';\nimport { NzBadgeComponent } from 'ng-zorro-antd/badge';\nimport { NzCheckboxComponent } from 'ng-zorro-antd/checkbox';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzDividerComponent } from 'ng-zorro-antd/divider';\nimport { NzContextMenuService, NzDropdownMenuComponent, NzDropdownModule } from 'ng-zorro-antd/dropdown';\nimport { NzIconDirective } from 'ng-zorro-antd/icon';\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\nimport { NzPopconfirmDirective } from 'ng-zorro-antd/popconfirm';\nimport { NzRadioComponent } from 'ng-zorro-antd/radio';\nimport { NzResizableModule, NzResizeEvent } from 'ng-zorro-antd/resizable';\nimport { NzTableComponent, NzTableModule } from 'ng-zorro-antd/table';\nimport { NzTagComponent } from 'ng-zorro-antd/tag';\nimport { NzTooltipDirective } from 'ng-zorro-antd/tooltip';\n\nimport { STColumnSource } from './st-column-source';\nimport { STDataSource, STDataSourceOptions, STDataSourceResult } from './st-data-source';\nimport { STExport } from './st-export';\nimport { STFilterComponent } from './st-filter.component';\nimport { STRowSource } from './st-row.directive';\nimport { STWidgetHostDirective } from './st-widget-host.directive';\nimport { ST_DEFAULT_CONFIG } from './st.config';\nimport type {\n  STChange,\n  STChangeType,\n  STClickRowClassName,\n  STClickRowClassNameType,\n  STColumn,\n  STColumnButton,\n  STColumnSafeType,\n  STColumnSelection,\n  STContextmenuFn,\n  STContextmenuItem,\n  STCustomRequestOptions,\n  STData,\n  STDragOptions,\n  STError,\n  STExportOptions,\n  STLoadOptions,\n  STMultiSort,\n  STPage,\n  STReq,\n  STRes,\n  STResetColumnsOption,\n  STResizable,\n  STRowClassName,\n  STSingleSort,\n  STStatisticalResults,\n  STWidthMode\n} from './st.interfaces';\nimport type { _STColumn, _STDataValue, _STHeader, _STTdNotify, _STTdNotifyType } from './st.types';\n\n@Component({\n  selector: 'st-td',\n  templateUrl: './st-td.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [\n    FormsModule,\n    NzTooltipDirective,\n    NgTemplateOutlet,\n    NzPopconfirmDirective,\n    NzIconDirective,\n    NzCheckboxComponent,\n    NzRadioComponent,\n    NzTagComponent,\n    NzBadgeComponent,\n    CellComponent,\n    STWidgetHostDirective,\n    NzDropdownModule,\n    NzMenuModule,\n    NzDividerComponent\n  ]\n})\nexport class STTdComponent {\n  private readonly stComp = inject(STComponent, { host: true });\n  private readonly router = inject(Router);\n  private readonly modalHelper = inject(ModalHelper);\n  private readonly drawerHelper = inject(DrawerHelper);\n\n  @Input() c!: _STColumn;\n  @Input() cIdx!: number;\n  @Input() data!: STData[];\n  @Input() i!: STData;\n  @Input() index!: number;\n  @Output() readonly n = new EventEmitter<_STTdNotify>();\n\n  private get routerState(): { pi: number; ps: number; total: number } {\n    const { pi, ps, total } = this.stComp;\n    return { pi, ps, total };\n  }\n\n  private report(type: _STTdNotifyType): void {\n    this.n.emit({ type, item: this.i, col: this.c });\n  }\n\n  _checkbox(value: boolean): void {\n    this.i.checked = value;\n    this.report('checkbox');\n  }\n\n  _radio(): void {\n    this.data.filter(w => !w.disabled).forEach(i => (i.checked = false));\n    this.i.checked = true;\n    this.report('radio');\n  }\n\n  _link(e: Event): boolean {\n    this._stopPropagation(e);\n    const res = this.c.click!(this.i, this.stComp);\n    if (typeof res === 'string') {\n      this.router.navigateByUrl(res, { state: this.routerState });\n    }\n    return false;\n  }\n\n  _client(): void {\n    this.c.click?.(this.i, this.stComp);\n  }\n\n  _stopPropagation(ev: Event): void {\n    ev.preventDefault();\n    ev.stopPropagation();\n  }\n\n  _btn(btn: STColumnButton, ev?: Event): void {\n    ev?.stopPropagation();\n    const cog = this.stComp.cog;\n    let record = this.i;\n    if (btn.type === 'modal' || btn.type === 'static') {\n      if (cog.modal!.pureRecoard === true) {\n        record = this.stComp.pureItem(record)!;\n      }\n      const modal = btn.modal!;\n      const obj = { [modal.paramsName!]: record };\n      (this.modalHelper[btn.type === 'modal' ? 'create' : 'createStatic'] as NzSafeAny)(\n        modal.component,\n        { ...obj, ...(modal.params && modal.params(record)) },\n        deepMergeKey({}, true, cog.modal, modal)\n      )\n        .pipe(filter(w => typeof w !== 'undefined'))\n        .subscribe((res: NzSafeAny) => this.btnCallback(record, btn, res));\n      return;\n    } else if (btn.type === 'drawer') {\n      if (cog.drawer!.pureRecoard === true) {\n        record = this.stComp.pureItem(record)!;\n      }\n      const drawer = btn.drawer!;\n      const obj = { [drawer.paramsName!]: record };\n      this.drawerHelper\n        .create(\n          drawer.title!,\n          drawer.component,\n          { ...obj, ...(drawer.params && drawer.params(record)) },\n          deepMergeKey({}, true, cog.drawer, drawer)\n        )\n        .pipe(filter(w => typeof w !== 'undefined'))\n        .subscribe(res => this.btnCallback(record, btn, res));\n      return;\n    } else if (btn.type === 'link') {\n      const clickRes = this.btnCallback(record, btn);\n      if (typeof clickRes === 'string') {\n        this.router.navigateByUrl(clickRes, { state: this.routerState });\n      }\n      return;\n    }\n    this.btnCallback(record, btn);\n  }\n\n  private btnCallback(record: STData, btn: STColumnButton, modal?: NzSafeAny): NzSafeAny {\n    if (!btn.click) return;\n    if (typeof btn.click === 'string') {\n      switch (btn.click) {\n        case 'load':\n          this.stComp.load();\n          break;\n        case 'reload':\n          this.stComp.reload();\n          break;\n      }\n    } else {\n      return btn.click(record, modal, this.stComp);\n    }\n  }\n}\n\n@Component({\n  selector: 'st',\n  exportAs: 'st',\n  templateUrl: './st.component.html',\n  providers: [STDataSource, STRowSource, STColumnSource, STExport, DatePipe, YNPipe, DecimalPipe],\n  host: {\n    '[class.st]': `true`,\n    '[class.st__p-left]': `page.placement === 'left'`,\n    '[class.st__p-center]': `page.placement === 'center'`,\n    '[class.st__width-strict]': `widthMode.type === 'strict'`,\n    '[class.st__row-class]': `rowClassName`,\n    '[class.ant-table-rep]': `responsive`,\n    '[class.ant-table-rep__hide-header-footer]': `responsiveHideHeaderFooter`\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [\n    FormsModule,\n    NzTableModule,\n    NzTooltipDirective,\n    NzCheckboxComponent,\n    NzResizableModule,\n    NgTemplateOutlet,\n    NzDropdownModule,\n    NzIconDirective,\n    NzMenuModule,\n    STFilterComponent,\n    STTdComponent,\n    DragDropModule\n  ]\n})\nexport class STComponent implements AfterViewInit, OnChanges {\n  private readonly i18nSrv = inject(ALAIN_I18N_TOKEN);\n  private readonly el: HTMLElement = inject(ElementRef).nativeElement;\n  private readonly cdr = inject(ChangeDetectorRef);\n  private readonly doc = inject(DOCUMENT);\n  private readonly exportSrv = inject(STExport);\n  private readonly columnSource = inject(STColumnSource);\n  private readonly dataSource = inject(STDataSource);\n  private readonly cms = inject(NzContextMenuService, { optional: true });\n  private readonly destroy$ = inject(DestroyRef);\n  private readonly cogSrv = inject(AlainConfigService);\n\n  private totalTpl = ``;\n  private inied = false;\n  cog!: AlainSTConfig;\n  private _req!: STReq;\n  private _res!: STRes;\n  private _page!: STPage;\n  private _widthMode!: STWidthMode;\n  private customWidthConfig: boolean = false;\n  _widthConfig: string[] = [];\n  locale = inject(DelonLocaleService).valueSignal('st');\n  _loading = false;\n  _data: STData[] = [];\n  _statistical: STStatisticalResults = {};\n  _isPagination = true;\n  _allChecked = false;\n  _allCheckedDisabled = false;\n  _indeterminate = false;\n  _headers: _STHeader[][] = [];\n  _columns: _STColumn[] = [];\n  contextmenuList: STContextmenuItem[] = [];\n  @ViewChild('table') readonly orgTable!: NzTableComponent<STData>;\n  @ViewChild('contextmenuTpl') readonly contextmenuTpl!: NzDropdownMenuComponent;\n\n  @Input()\n  get req(): STReq {\n    return this._req;\n  }\n  set req(value: STReq) {\n    this._req = deepMergeKey({}, true, this.cog.req, value);\n  }\n  /** 返回体配置 */\n  @Input()\n  get res(): STRes {\n    return this._res;\n  }\n  set res(value: STRes) {\n    const item = (this._res = deepMergeKey({}, true, this.cog.res, value));\n    const reName = item.reName!;\n    if (typeof reName !== 'function') {\n      if (!Array.isArray(reName.list)) reName.list = reName.list!.split('.');\n      if (!Array.isArray(reName.total)) reName.total = reName.total!.split('.');\n    }\n    this._res = item;\n  }\n  @Input()\n  get page(): STPage {\n    return this._page;\n  }\n  set page(value: STPage) {\n    this._page = { ...this.cog.page, ...value };\n    this.updateTotalTpl();\n  }\n  @Input() data?: string | STData[] | Observable<STData[]>;\n  @Input() delay?: boolean = false;\n  @Input() columns?: STColumn[] | null;\n  @Input() contextmenu?: STContextmenuFn | null;\n  @Input({ transform: (v: unknown) => numberAttribute(v, 10) }) ps = 10;\n  @Input({ transform: (v: unknown) => numberAttribute(v, 1) }) pi = 1;\n  @Input({ transform: (v: unknown) => numberAttribute(v, 0) }) total = 0;\n  @Input() loading: boolean | null = null;\n  @Input({ transform: numberAttribute }) loadingDelay = 0;\n  @Input() loadingIndicator: TemplateRef<void> | null = null;\n  @Input({ transform: booleanAttribute }) bordered = false;\n  @Input() size!: 'small' | 'middle' | 'default';\n  @Input() scroll: { x?: string | null; y?: string | null } = { x: null, y: null };\n  drag = input<STDragOptions | null, unknown>(null, {\n    transform: v => {\n      const obj: STDragOptions | null = typeof v === 'object' ? v : booleanAttribute(v) ? {} : null;\n      if (obj == null) return null;\n\n      if (typeof obj.dropped !== 'function') {\n        obj.dropped = e => {\n          moveItemInArray(this._data, e.previousIndex, e.currentIndex);\n          this.cd();\n        };\n      }\n      return obj;\n    }\n  });\n  @Input() singleSort?: STSingleSort | null;\n  private _multiSort?: STMultiSort;\n  @Input()\n  get multiSort(): NzSafeAny {\n    return this._multiSort;\n  }\n  set multiSort(value: NzSafeAny) {\n    if (\n      (typeof value === 'boolean' && !booleanAttribute(value)) ||\n      (typeof value === 'object' && Object.keys(value).length === 0)\n    ) {\n      this._multiSort = undefined;\n      return;\n    }\n    this._multiSort = {\n      ...(typeof value === 'object' ? value : {})\n    };\n  }\n  @Input() rowClassName?: STRowClassName | null;\n  @Input() clickRowClassName?: STClickRowClassName | null;\n  @Input()\n  set widthMode(value: STWidthMode) {\n    this._widthMode = { ...this.cog.widthMode, ...value };\n  }\n  get widthMode(): STWidthMode {\n    return this._widthMode;\n  }\n  @Input()\n  set widthConfig(val: string[]) {\n    this._widthConfig = val;\n    this.customWidthConfig = val && val.length > 0;\n  }\n  private _resizable?: STResizable;\n  @Input()\n  set resizable(val: STResizable | boolean | string) {\n    this._resizable = typeof val === 'object' ? val : { disabled: !booleanAttribute(val) };\n  }\n  @Input() header?: string | TemplateRef<void> | null;\n  @Input({ transform: booleanAttribute }) showHeader = true;\n  @Input() footer?: string | TemplateRef<void> | null;\n  @Input() bodyHeader?: TemplateRef<{ $implicit: STStatisticalResults }> | null;\n  @Input() body?: TemplateRef<{ $implicit: STStatisticalResults }> | null;\n  @Input({ transform: booleanAttribute }) expandRowByClick = false;\n  @Input({ transform: booleanAttribute }) expandAccordion = false;\n  @Input() expand: TemplateRef<{ $implicit: STData; index: number }> | null = null;\n  @Input() expandIcon: TemplateRef<{ $implicit: STData; index: number }> | null = null;\n  @Input() noResult?: string | TemplateRef<void> | null;\n  @Input({ transform: booleanAttribute }) responsive: boolean = true;\n  @Input({ transform: booleanAttribute }) responsiveHideHeaderFooter?: boolean;\n  @Output() readonly error = new EventEmitter<STError>();\n  @Output() readonly change = new EventEmitter<STChange>();\n  @Input({ transform: booleanAttribute }) virtualScroll = false;\n  @Input({ transform: numberAttribute }) virtualItemSize = 54;\n  @Input({ transform: numberAttribute }) virtualMaxBufferPx = 200;\n  @Input({ transform: numberAttribute }) virtualMinBufferPx = 100;\n  @Input() customRequest?: (options: STCustomRequestOptions) => Observable<NzSafeAny>;\n  @Input() virtualForTrackBy: TrackByFunction<STData> = index => index;\n  @Input() trackBy: TrackByFunction<STData> = (_, item) => item;\n\n  /**\n   * Get the number of the current page\n   */\n  get count(): number {\n    return this._data.length;\n  }\n\n  /**\n   * Get the data of the current page\n   */\n  get list(): STData[] {\n    return this._data;\n  }\n\n  get noColumns(): boolean {\n    return this.columns == null;\n  }\n\n  constructor() {\n    effect(() => {\n      this.locale();\n      if (this._columns.length > 0) {\n        this.updateTotalTpl();\n        this.cd();\n      }\n    });\n\n    this.i18nSrv.change\n      .pipe(\n        takeUntilDestroyed(),\n        filter(() => this._columns.length > 0)\n      )\n      .subscribe(() => this.refreshColumns());\n\n    this.setCog(this.cogSrv.merge('st', ST_DEFAULT_CONFIG)!);\n  }\n\n  private setCog(cog: AlainSTConfig): void {\n    const copyMultiSort = { ...cog.multiSort };\n    // Because multiSort.global will affect the result, it should be removed first, and multiSort will be operated again after processing.\n    delete cog.multiSort;\n    this.cog = cog;\n    Object.assign(this, cog);\n\n    if (copyMultiSort.global !== false) {\n      this.multiSort = copyMultiSort;\n    }\n    this.columnSource.setCog(cog);\n    this.dataSource.setCog(cog);\n  }\n\n  cd(): this {\n    this.cdr.detectChanges();\n    return this;\n  }\n\n  private refreshData(): this {\n    this._data = [...this._data];\n    return this.cd();\n  }\n\n  renderTotal(total: string, range: string[]): string {\n    return this.totalTpl\n      ? this.totalTpl.replace('{{total}}', total).replace('{{range[0]}}', range[0]).replace('{{range[1]}}', range[1])\n      : '';\n  }\n\n  private changeEmit(type: STChangeType, data?: NzSafeAny): void {\n    const res: STChange = {\n      type,\n      pi: this.pi,\n      ps: this.ps,\n      total: this.total\n    };\n    if (data != null) {\n      res[type] = data;\n    }\n    this.change.emit(res);\n  }\n\n  // #region data\n\n  /**\n   * 获取过滤后所有数据\n   * - 本地数据：包含排序、过滤后不分页数据\n   * - 远程数据：不传递 `pi`、`ps` 两个参数\n   */\n  get filteredData(): Observable<STData[]> {\n    return this.loadData({ paginator: false } as unknown as STDataSourceOptions).pipe(map(res => res.list));\n  }\n\n  private updateTotalTpl(): void {\n    const { total } = this.page;\n    if (typeof total === 'string' && total.length) {\n      this.totalTpl = total;\n    } else if (booleanAttribute(total)) {\n      this.totalTpl = this.locale().total;\n    } else {\n      this.totalTpl = '';\n    }\n  }\n\n  private setLoading(val: boolean): void {\n    if (this.loading == null) {\n      this._loading = val;\n      this.cdr.detectChanges();\n    }\n  }\n\n  private loadData(options?: STDataSourceOptions): Observable<STDataSourceResult> {\n    const { pi, ps, data, req, res, page, total, singleSort, multiSort, rowClassName, _columns, _headers } = this;\n    return this.dataSource\n      .process({\n        pi,\n        ps,\n        total,\n        data,\n        req,\n        res,\n        page,\n        columns: _columns,\n        headers: _headers,\n        singleSort,\n        multiSort,\n        rowClassName,\n        paginator: true,\n        customRequest: this.customRequest ?? this.cog.customRequest,\n        locale: this.locale(),\n        ...options\n      })\n      .pipe(takeUntilDestroyed(this.destroy$));\n  }\n\n  private loadPageData(): Observable<this> {\n    this.setLoading(true);\n    return this.loadData().pipe(\n      finalize(() => this.setLoading(false)),\n      catchError(error => {\n        this.error.emit({ type: 'req', error });\n        return throwError(() => error);\n      }),\n      map(result => {\n        const undefinedString = 'undefined';\n        if (typeof result.pi !== undefinedString) {\n          this.pi = result.pi;\n        }\n        if (typeof result.ps !== undefinedString) {\n          this.ps = result.ps;\n        }\n        if (typeof result.total !== undefinedString) {\n          this.total = result.total;\n        }\n        if (typeof result.pageShow !== undefinedString) {\n          this._isPagination = result.pageShow;\n        }\n        this._data = result.list ?? [];\n        this._statistical = result.statistical as STStatisticalResults;\n        this._restoreCheck();\n        this._refCheck();\n        // Should be re-render in next tike when using virtual scroll\n        // https://github.com/ng-alain/ng-alain/issues/1836\n        if (this.cdkVirtualScrollViewport != null) {\n          Promise.resolve().then(() => this.cdkVirtualScrollViewport?.checkViewportSize());\n        }\n        this.changeEmit('loaded', result.list);\n        return this;\n      })\n    );\n  }\n\n  /** 清空所有数据 */\n  clear(cleanStatus: boolean = true): this {\n    if (cleanStatus) {\n      this.clearStatus();\n    }\n    this._data = [];\n    this.checkList = [];\n    return this.cd();\n  }\n\n  /** 清空所有状态 */\n  clearStatus(): this {\n    return this.clearCheck().clearRadio().clearFilter().clearSort();\n  }\n\n  /**\n   * 根据页码重新加载数据\n   *\n   * @param pi 指定当前页码，默认：`1`\n   * @param extraParams 重新指定 `extraParams` 值\n   * @param options 选项\n   */\n  load(pi: number = 1, extraParams?: NzSafeAny, options?: STLoadOptions): this {\n    if (pi !== -1) this.pi = pi;\n    if (typeof extraParams !== 'undefined') {\n      this.req.params = options && options.merge ? { ...this.req.params, ...extraParams } : extraParams;\n    }\n    this._change('pi', options);\n    return this;\n  }\n\n  /**\n   * 重新刷新当前页\n   *\n   * @param extraParams 重新指定 `extraParams` 值\n   */\n  reload(extraParams?: NzSafeAny, options?: STLoadOptions): this {\n    return this.load(-1, extraParams, options);\n  }\n\n  /**\n   * 重置且重新设置 `pi` 为 `1`，包含以下值：\n   * - `check` 数据\n   * - `radio` 数据\n   * - `sort` 数据\n   * - `fileter` 数据\n   *\n   * @param extraParams 重新指定 `extraParams` 值\n   */\n  reset(extraParams?: NzSafeAny, options?: STLoadOptions): this {\n    this.clearStatus().load(1, extraParams, options);\n    return this;\n  }\n\n  private _toTop(enforce?: boolean): void {\n    if (!(enforce == null ? this.page.toTop : enforce)) return;\n    const el = this.el;\n    el.scrollIntoView();\n    // fix header height\n    this.doc.documentElement.scrollTop -= this.page.toTopOffset!;\n    if (this.scroll) {\n      if (this.cdkVirtualScrollViewport) {\n        this.cdkVirtualScrollViewport.scrollTo({\n          top: 0,\n          left: 0\n        });\n      } else {\n        el.querySelector('.ant-table-body, .ant-table-content')?.scrollTo(0, 0);\n      }\n    }\n  }\n\n  _change(type: 'pi' | 'ps', options?: STLoadOptions): void {\n    if (type === 'pi' || (type === 'ps' && this.pi <= Math.ceil(this.total / this.ps))) {\n      this.loadPageData().subscribe(() => this._toTop(options?.toTop));\n    }\n\n    this.changeEmit(type);\n  }\n\n  private closeOtherExpand(item: STData): void {\n    if (this.expandAccordion === false) return;\n    this._data.filter(i => i !== item).forEach(i => (i.expand = false));\n  }\n\n  _rowClick(e: Event, item: STData, index: number, dbl: boolean): void {\n    const el = e.target as HTMLElement;\n    if (el.nodeName === 'INPUT') return;\n    const { expand, expandRowByClick } = this;\n    if (!!expand && item.showExpand !== false && expandRowByClick) {\n      item.expand = !item.expand;\n      this.closeOtherExpand(item);\n      this.changeEmit('expand', item);\n      return;\n    }\n\n    const data = { e, item, index };\n    if (dbl) {\n      this.changeEmit('dblClick', data);\n    } else {\n      this._clickRowClassName(el, item, index);\n      this.changeEmit('click', data);\n    }\n  }\n\n  private _clickRowClassName(el: HTMLElement, item: STData, index: number): void {\n    const cr = this.clickRowClassName;\n    if (cr == null) return;\n    const config = {\n      exclusive: false,\n      ...(typeof cr === 'string' ? { fn: () => cr } : cr)\n    } as STClickRowClassNameType;\n    const className = config.fn(item, index);\n    const trEl = el.closest('tr') as HTMLElement;\n    if (config.exclusive) {\n      trEl.parentElement!.querySelectorAll('tr').forEach((a: HTMLElement) => a.classList.remove(className));\n    }\n    if (trEl.classList.contains(className)) {\n      trEl.classList.remove(className);\n    } else {\n      trEl.classList.add(className);\n    }\n  }\n\n  _expandChange(item: STData, expand: boolean): void {\n    item.expand = expand;\n    this.closeOtherExpand(item);\n    this.changeEmit('expand', item);\n  }\n\n  _stopPropagation(ev: Event): void {\n    ev.stopPropagation();\n  }\n\n  private _refColAndData(): this {\n    this._columns.forEach((c, cIdx) => {\n      this._data.forEach((i, idx) => {\n        const values = i._values as _STDataValue[];\n        if (c.type === 'no') {\n          const text = `${this.dataSource.getNoIndex(i, c, idx)}`;\n          values[cIdx] = {\n            text,\n            _text: text,\n            org: idx,\n            safeType: 'text'\n          } as _STDataValue;\n        }\n        values[cIdx].props = this.dataSource.getCell(c, i, idx);\n      });\n    });\n\n    return this.refreshData();\n  }\n\n  /**\n   * Add a rows in the table, like this:\n   *\n   * ```\n   * this.st.addRow(stDataItem)\n   * ```\n   *\n   * **TIPS:** Don't change the `total` value, it is recommended to use the `reload` method if needed\n   */\n  addRow(data: STData | STData[], options?: { index?: number }): this {\n    if (!Array.isArray(data)) data = [data];\n    this._data.splice(options?.index ?? 0, 0, ...(data as STData[]));\n    return this.optimizeData()._refColAndData();\n  }\n\n  /**\n   * Remove a row in the table, like this:\n   *\n   * ```\n   * this.st.removeRow(0)\n   * this.st.removeRow(stDataItem)\n   * ```\n   *\n   * **TIPS:** Don't change the `total` value, it is recommended to use the `reload` method if needed\n   */\n  removeRow(data: STData | STData[] | number): this {\n    if (typeof data === 'number') {\n      this._data.splice(data, 1);\n    } else {\n      if (!Array.isArray(data)) {\n        data = [data];\n      }\n\n      const curData = this._data;\n      for (let i = curData.length; i >= 0; i--) {\n        if (data.indexOf(curData[i]) !== -1) {\n          curData.splice(i, 1);\n        }\n      }\n    }\n    return this._refCheck()._refColAndData();\n  }\n\n  /**\n   * Sets the row value for the `index` in the table, like this:\n   *\n   * - `optinos.refreshSchema` Whether to refresh of st schemas\n   * - `optinos.emitReload` Whether to trigger a reload http request when data is url\n   *\n   * ```\n   * this.st.setRow(0, { price: 100 })\n   * this.st.setRow(0, { price: 100, name: 'asdf' })\n   * this.st.setRow(item, { price: 100 })\n   * ```\n   */\n  setRow(\n    index: number | STData,\n    item: STData,\n    options?: {\n      refreshSchema?: boolean;\n      emitReload?: boolean;\n      /**\n       *\n       * @param arrayProcessMethod 数组处理方式\n       *  - `true` 表示替换新值，不管新值为哪种类型\n       *  - `false` 表示会合并整个数组（将旧数据与新数据合并成新数组）\n       */\n      arrayProcessMethod?: boolean;\n    }\n  ): this {\n    options = { refreshSchema: false, emitReload: false, ...options };\n    if (typeof index !== 'number') {\n      index = this._data.indexOf(index);\n    }\n    this._data[index] = deepMergeKey(this._data[index], options?.arrayProcessMethod ?? false, item);\n    this.optimizeData();\n    if (options.refreshSchema) {\n      this.resetColumns({ emitReload: options.emitReload });\n      return this;\n    }\n    return this.refreshData();\n  }\n\n  // #endregion\n\n  // #region sort\n\n  sort(col: _STColumn, value: NzSafeAny): void {\n    if (this.multiSort) {\n      col._sort.default = value;\n      col._sort.tick = this.dataSource.nextSortTick;\n    } else {\n      this._headers.forEach(row => {\n        row.forEach(item => (item.column._sort.default = item.column === col ? value : null));\n      });\n    }\n    this.cdr.detectChanges();\n    this.loadPageData().subscribe(() => {\n      const res = {\n        value,\n        map: this.dataSource.getReqSortMap(this.singleSort, this.multiSort, this._headers),\n        column: col\n      };\n      this.changeEmit('sort', res);\n    });\n  }\n\n  clearSort(): this {\n    this._headers.forEach(row => {\n      row.forEach(item => (item.column._sort.default = null));\n    });\n    return this;\n  }\n\n  // #endregion\n\n  // #region filter\n\n  _handleFilter(col: _STColumn, confirm: boolean): void {\n    if (!confirm) {\n      this.columnSource.cleanFilter(col);\n    }\n    // 过滤表示一种数据的变化应重置页码为 `1`\n    this.pi = 1;\n    this.columnSource.updateDefault(col.filter!);\n    this.loadPageData().subscribe(() => this.changeEmit('filter', confirm ? col : null));\n  }\n\n  handleFilterNotify(value?: unknown): void {\n    this.changeEmit('filterChange', value);\n  }\n\n  clearFilter(): this {\n    this._columns.filter(w => w.filter && w.filter.default === true).forEach(col => this.columnSource.cleanFilter(col));\n    return this;\n  }\n  // #endregion\n\n  // #region checkbox\n\n  checkList: STData[] = [];\n\n  /** 清除所有 `checkbox` */\n  clearCheck(): this {\n    this.checkList = [];\n    return this.checkAll(false);\n  }\n\n  private _refCheck(): this {\n    const validData = this._data.filter(w => !w.disabled);\n    const checkedList = validData.filter(w => w.checked === true);\n    this._allChecked = checkedList.length > 0 && checkedList.length === validData.length;\n    const allUnChecked = validData.every(value => !value.checked);\n    this._indeterminate = !this._allChecked && !allUnChecked;\n    this._allCheckedDisabled = this._data.length === this._data.filter(w => w.disabled).length;\n    return this.cd();\n  }\n\n  checkAll(checked?: boolean): this {\n    checked = typeof checked === 'undefined' ? this._allChecked : checked;\n    this._data.filter(w => !w.disabled).forEach(i => (i.checked = checked));\n    return this._refCheck()._checkNotify().refreshData();\n  }\n\n  _rowSelection(row: STColumnSelection): this {\n    row.select(this._data);\n    return this._refCheck()._checkNotify();\n  }\n\n  _checkNotify(): this {\n    const res = this._data.filter(w => !w.disabled && w.checked === true);\n    const idMap = this.page.checkboxIdMap;\n    if (idMap != null) {\n      const rowIds = this.list.map(w => w[idMap]);\n      this.checkList = this.checkList.filter(w => rowIds.indexOf(w[idMap]) === -1).concat(res);\n    } else {\n      this.checkList = res;\n    }\n    this.changeEmit('checkbox', this.checkList);\n    return this;\n  }\n\n  _restoreCheck(): void {\n    const idMap = this.page.checkboxIdMap;\n    if (idMap == null) return;\n    this.list.forEach(u => (u.checked = this.checkList.some(w => w[idMap] === u[idMap])));\n  }\n\n  // #endregion\n\n  // #region radio\n\n  /** 清除所有 `radio` */\n  clearRadio(): this {\n    this._data.filter(w => w.checked).forEach(item => (item.checked = false));\n    this.changeEmit('radio', null);\n    return this.refreshData();\n  }\n\n  // #endregion\n\n  _handleTd(ev: _STTdNotify): void {\n    switch (ev.type) {\n      case 'checkbox':\n        this._refCheck()._checkNotify();\n        break;\n      case 'radio':\n        this.changeEmit('radio', ev.item);\n        this.refreshData();\n        break;\n    }\n  }\n\n  // #region export\n\n  /**\n   * 导出当前页，确保已经注册 `XlsxModule`\n   *\n   * @param newData 重新指定数据；若为 `true` 表示使用 `filteredData` 数据\n   * @param opt 额外参数\n   */\n  export(newData?: STData[] | true, opt?: STExportOptions): void {\n    const data = Array.isArray(newData)\n      ? this.dataSource.optimizeData({ columns: this._columns, result: newData, locale: this.locale() })\n      : this._data;\n    (newData === true ? this.filteredData : of(data)).subscribe((res: STData[]) =>\n      this.exportSrv.export({\n        columens: this._columns,\n        ...opt,\n        data: res\n      })\n    );\n  }\n\n  // #endregion\n\n  // #region resizable\n\n  colResize({ width }: NzResizeEvent, column: _STColumn): void {\n    column.width = `${width}px`;\n    this.changeEmit('resize', column);\n  }\n\n  // #endregion\n\n  // #region contextmenu\n  onContextmenu(event: MouseEvent): void {\n    if (!this.contextmenu) {\n      return;\n    }\n    event.preventDefault();\n    event.stopPropagation();\n    const colEl = (event.target as HTMLElement).closest('[data-col-index]') as HTMLElement;\n    if (!colEl) {\n      return;\n    }\n    const colIndex = Number(colEl.dataset.colIndex);\n    const rowIndex = Number((colEl.closest('tr') as HTMLElement).dataset.index);\n    const isTitle = isNaN(rowIndex);\n    const obs$ = this.contextmenu({\n      event,\n      type: isTitle ? 'head' : 'body',\n      rowIndex: isTitle ? null : rowIndex,\n      colIndex,\n      data: isTitle ? null : this.list[rowIndex],\n      column: this._columns[colIndex]\n    });\n    (isObservable(obs$) ? obs$ : of(obs$))\n      .pipe(\n        takeUntilDestroyed(this.destroy$),\n        filter(res => res.length > 0)\n      )\n      .subscribe(res => {\n        this.contextmenuList = res.map(i => {\n          if (!Array.isArray(i.children)) {\n            i.children = [];\n          }\n          return i;\n        });\n        this.cdr.detectChanges();\n        this.cms?.create(event, this.contextmenuTpl);\n      });\n  }\n  // #endregion\n\n  get cdkVirtualScrollViewport(): CdkVirtualScrollViewport | undefined {\n    return this.orgTable?.cdkVirtualScrollViewport as NzSafeAny;\n  }\n\n  private _resetColumns(options?: STResetColumnsOption): Observable<this> {\n    options = { emitReload: true, preClearData: false, ...options };\n    if (typeof options.columns !== 'undefined') {\n      this.columns = options.columns;\n    }\n    if (typeof options.pi !== 'undefined') {\n      this.pi = options.pi;\n    }\n    if (typeof options.ps !== 'undefined') {\n      this.ps = options.ps;\n    }\n    if (options.emitReload) {\n      // Should clean data, Because of changing columns may cause inaccurate data\n      options.preClearData = true;\n    }\n    if (options.preClearData) {\n      this._data = [];\n    }\n    this.refreshColumns();\n    if (options.emitReload) {\n      return this.loadPageData();\n    } else {\n      this.cd();\n      return of(this);\n    }\n  }\n\n  resetColumns(options?: STResetColumnsOption): Promise<this> {\n    return lastValueFrom(this._resetColumns(options));\n  }\n\n  private refreshColumns(): this {\n    const res = this.columnSource.process(this.columns as _STColumn[], {\n      widthMode: this.widthMode,\n      resizable: this._resizable,\n      safeType: this.cog.safeType as STColumnSafeType,\n      expand: this.expand != null\n    });\n    this._columns = res.columns;\n    this._headers = res.headers;\n    if (this.customWidthConfig === false && res.headerWidths != null) {\n      this._widthConfig = res.headerWidths;\n    }\n    return this;\n  }\n\n  private optimizeData(): this {\n    this._data = this.dataSource.optimizeData({\n      columns: this._columns,\n      result: this._data,\n      rowClassName: this.rowClassName,\n      locale: this.locale()\n    });\n    return this;\n  }\n\n  /**\n   * Return pure data, `st` internally maintains a set of data for caching, this part of data may affect the backend\n   *\n   * 返回纯净数据，`st` 内部会维护一组用于缓存的数据，这部分数据可能会影响后端\n   */\n  pureItem(itemOrIndex: STData | number): STData | null {\n    if (typeof itemOrIndex === 'number') {\n      itemOrIndex = this._data[itemOrIndex];\n    }\n    if (!itemOrIndex) {\n      return null;\n    }\n    const copyItem = deepCopy(itemOrIndex);\n    ['_values', '_rowClassName'].forEach(key => delete copyItem[key]);\n    return copyItem;\n  }\n\n  ngAfterViewInit(): void {\n    if (!this.delay) this.refreshColumns();\n    if (!this.req.lazyLoad) this.loadPageData().subscribe();\n    this.inied = true;\n  }\n\n  ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges): void {\n    if (changes.loading) {\n      this._loading = changes.loading.currentValue;\n    }\n    if (!this.inied) return;\n\n    if (changes.columns) {\n      this.refreshColumns().optimizeData();\n    }\n    if (changes.data) {\n      this.loadPageData().subscribe();\n    }\n  }\n}\n","<ng-template #btnTpl let-i let-child=\"child\">\n  @if (i.tooltip) {\n    <span nz-tooltip [nzTooltipTitle]=\"i.tooltip\" [class.d-block]=\"child\" [class.width-100]=\"child\">\n      <ng-template [ngTemplateOutlet]=\"btnItemTpl\" [ngTemplateOutletContext]=\"{ $implicit: i }\" />\n    </span>\n  } @else {\n    <ng-template [ngTemplateOutlet]=\"btnItemTpl\" [ngTemplateOutletContext]=\"{ $implicit: i }\" />\n  }\n</ng-template>\n<ng-template #btnItemTpl let-i>\n  @if (i.pop) {\n    @let pop = i.pop;\n    <a\n      nz-popconfirm\n      [nzPopconfirmTitle]=\"pop.title\"\n      [nzIcon]=\"pop.icon\"\n      [nzCondition]=\"pop.condition(i)\"\n      [nzCancelText]=\"pop.cancelText\"\n      [nzOkText]=\"pop.okText\"\n      [nzOkType]=\"pop.okType\"\n      (nzOnConfirm)=\"_btn(i)\"\n      class=\"st__btn-text\"\n      [class]=\"i._className\"\n      (click)=\"_stopPropagation($event)\"\n    >\n      <ng-template [ngTemplateOutlet]=\"btnTextTpl\" [ngTemplateOutletContext]=\"{ $implicit: i }\" />\n    </a>\n  } @else {\n    <a (click)=\"_btn(i, $event)\" class=\"st__btn-text\" [class]=\"i._className\">\n      <ng-template [ngTemplateOutlet]=\"btnTextTpl\" [ngTemplateOutletContext]=\"{ $implicit: i }\" />\n    </a>\n  }\n</ng-template>\n<ng-template #btnTextTpl let-i>\n  @if (i._icon) {\n    @let icon = i._icon;\n    @if (icon.iconfont) {\n      <nz-icon [nzIconfont]=\"icon.iconfont\" />\n    } @else {\n      <nz-icon [nzType]=\"icon.type\" [nzTheme]=\"icon.theme\" [nzSpin]=\"icon.spin\" [nzTwotoneColor]=\"icon.twoToneColor\" />\n    }\n  }\n  <span [innerHTML]=\"i._text\" [class.pl-xs]=\"i._icon\"></span>\n</ng-template>\n@if (c.__render) {\n  <ng-template [ngTemplateOutlet]=\"c.__render!\" [ngTemplateOutletContext]=\"{ $implicit: i, index: index, column: c }\" />\n} @else {\n  @let col = i._values[cIdx];\n  @switch (c.type) {\n    @case ('checkbox') {\n      <label nz-checkbox [nzDisabled]=\"i.disabled\" [ngModel]=\"i.checked\" (ngModelChange)=\"_checkbox($event)\"></label>\n    }\n    @case ('radio') {\n      <label nz-radio [nzDisabled]=\"i.disabled\" [ngModel]=\"i.checked\" (ngModelChange)=\"_radio()\"></label>\n    }\n    @case ('link') {\n      <a (click)=\"_link($event)\" [innerHTML]=\"col._text\" [attr.title]=\"col.text\"></a>\n    }\n    @case ('tag') {\n      <nz-tag [nzColor]=\"col.color\" [nz-tooltip]=\"col.tooltip\">\n        <span [innerHTML]=\"col._text\"></span>\n      </nz-tag>\n    }\n    @case ('badge') {\n      <nz-badge [nzStatus]=\"col.color\" [nzText]=\"col.text\" [nz-tooltip]=\"col.tooltip\" />\n    }\n    @case ('cell') {\n      <cell [value]=\"col.text\" [options]=\"col.cell ?? c.cell\" (click)=\"_client()\" />\n    }\n    @case ('widget') {\n      <ng-template st-widget-host [record]=\"i\" [column]=\"c\" />\n    }\n    @default {\n      @if (c.safeType === 'text') {\n        <span [innerText]=\"col._text\" [attr.title]=\"c._isTruncate ? col.text : null\"></span>\n      } @else {\n        <span [innerHTML]=\"col._text\" [attr.title]=\"c._isTruncate ? col.text : null\"></span>\n      }\n    }\n  }\n  @for (btn of col.buttons; track $index) {\n    @if (btn.children && btn.children.length > 0) {\n      <a nz-dropdown [nzDropdownMenu]=\"btnMenu\" nzOverlayClassName=\"st__btn-sub\">\n        <span [innerHTML]=\"btn._text\"></span>\n        <nz-icon nzType=\"down\" />\n      </a>\n      <nz-dropdown-menu #btnMenu=\"nzDropdownMenu\">\n        <ul nz-menu>\n          @for (subBtn of btn.children; track $index) {\n            @if (subBtn.type === 'divider') {\n              <li nz-menu-divider></li>\n            } @else {\n              <li nz-menu-item [class.st__btn-disabled]=\"subBtn._disabled\">\n                <ng-template\n                  [ngTemplateOutlet]=\"btnTpl\"\n                  [ngTemplateOutletContext]=\"{ $implicit: subBtn, child: true }\"\n                />\n              </li>\n            }\n          }\n        </ul>\n      </nz-dropdown-menu>\n    } @else {\n      <span [class.st__btn-disabled]=\"btn._disabled\">\n        <ng-template [ngTemplateOutlet]=\"btnTpl\" [ngTemplateOutletContext]=\"{ $implicit: btn, child: false }\" />\n      </span>\n    }\n    @if (!$last) {\n      <nz-divider nzType=\"vertical\" />\n    }\n  }\n}\n","<ng-template #titleTpl let-i>\n  <span [innerHTML]=\"i._text\"></span>\n  @if (i.optional) {\n    <small class=\"st__head-optional\" [innerHTML]=\"i.optional\"></small>\n  }\n  @if (i.optionalHelp) {\n    <nz-icon class=\"st__head-tip\" nz-tooltip [nzTooltipTitle]=\"i.optionalHelp\" nzType=\"question-circle\" />\n  }\n</ng-template>\n<ng-template #chkAllTpl let-custom>\n  <label\n    nz-checkbox\n    class=\"st__checkall\"\n    [nzDisabled]=\"_allCheckedDisabled\"\n    [(ngModel)]=\"_allChecked\"\n    [nzIndeterminate]=\"_indeterminate\"\n    (ngModelChange)=\"checkAll()\"\n    [class.ant-table-selection-select-all-custom]=\"custom\"\n  ></label>\n</ng-template>\n<nz-table\n  #table\n  [nzData]=\"_data\"\n  [(nzPageIndex)]=\"pi\"\n  (nzPageIndexChange)=\"_change('pi')\"\n  [(nzPageSize)]=\"ps\"\n  (nzPageSizeChange)=\"_change('ps')\"\n  [nzTotal]=\"total\"\n  [nzShowPagination]=\"_isPagination\"\n  [nzFrontPagination]=\"false\"\n  [nzBordered]=\"bordered\"\n  [nzSize]=\"size\"\n  [nzLoading]=\"noColumns || _loading\"\n  [nzLoadingDelay]=\"loadingDelay\"\n  [nzLoadingIndicator]=\"loadingIndicator\"\n  [nzTitle]=\"header!\"\n  [nzFooter]=\"footer!\"\n  [nzScroll]=\"scroll\"\n  [nzVirtualItemSize]=\"virtualItemSize\"\n  [nzVirtualMaxBufferPx]=\"virtualMaxBufferPx\"\n  [nzVirtualMinBufferPx]=\"virtualMinBufferPx\"\n  [nzVirtualForTrackBy]=\"virtualForTrackBy\"\n  [nzNoResult]=\"noResult!\"\n  [nzPageSizeOptions]=\"page.pageSizes!\"\n  [nzShowQuickJumper]=\"page.showQuickJumper\"\n  [nzShowSizeChanger]=\"page.showSize\"\n  [nzPaginationPosition]=\"page.position!\"\n  [nzPaginationType]=\"page.type!\"\n  [nzItemRender]=\"page.itemRender!\"\n  [nzSimple]=\"page.simple\"\n  [nzShowTotal]=\"totalTpl\"\n  [nzWidthConfig]=\"_widthConfig\"\n  (contextmenu)=\"onContextmenu($event)\"\n  [class.st__no-column]=\"noColumns\"\n>\n  @if (showHeader) {\n    <thead>\n      @for (row of _headers; track row) {\n        <tr>\n          @if ($first && expand) {\n            <th nzWidth=\"50px\" [rowSpan]=\"_headers.length\" [nzLeft]=\"row[0].column._left ? true : false\"></th>\n          }\n          @for (h of row; track h; let index = $index; let last = $last) {\n            @let _c = h.column;\n            <th\n              [colSpan]=\"h.colSpan\"\n              [rowSpan]=\"h.rowSpan\"\n              [nzWidth]=\"$any(_c).width\"\n              [nzLeft]=\"_c._left\"\n              [nzRight]=\"_c._right\"\n              [class]=\"_c._className\"\n              [attr.data-col]=\"_c.indexKey\"\n              [attr.data-col-index]=\"index\"\n              [nzShowSort]=\"_c._sort.enabled\"\n              [nzSortDirections]=\"_c._sort.directions!\"\n              [nzSortOrder]=\"$any(_c)._sort.default\"\n              (nzSortOrderChange)=\"sort(_c, $event)\"\n              [nzCustomFilter]=\"!!_c.filter\"\n              [class.st__has-filter]=\"_c.filter\"\n              nz-resizable\n              [nzDisabled]=\"last || $any(_c).resizable.disabled\"\n              [nzMaxWidth]=\"$any(_c).resizable.maxWidth\"\n              [nzMinWidth]=\"$any(_c).resizable.minWidth\"\n              [nzBounds]=\"$any(_c).resizable.bounds\"\n              [nzPreview]=\"$any(_c).resizable.preview\"\n              (nzResizeEnd)=\"colResize($event, _c)\"\n            >\n              @if ($any(!last && !$any(_c).resizable.disabled)) {\n                <nz-resize-handle nzDirection=\"right\" (click)=\"_stopPropagation($event)\">\n                  <i></i>\n                </nz-resize-handle>\n              }\n              @if (_c.__renderTitle) {\n                <ng-template\n                  [ngTemplateOutlet]=\"_c.__renderTitle!\"\n                  [ngTemplateOutletContext]=\"{ $implicit: h.column, index: index }\"\n                />\n              } @else {\n                @switch (_c.type) {\n                  @case ('checkbox') {\n                    @if (_c.selections!.length === 0) {\n                      <ng-template [ngTemplateOutlet]=\"chkAllTpl\" [ngTemplateOutletContext]=\"{ $implicit: false }\" />\n                    } @else {\n                      <div class=\"ant-table-selection\">\n                        <ng-template [ngTemplateOutlet]=\"chkAllTpl\" [ngTemplateOutletContext]=\"{ $implicit: true }\" />\n                        @if (_c.selections!.length) {\n                          <div class=\"ant-table-selection-extra\">\n                            <div\n                              nz-dropdown\n                              nzPlacement=\"bottomLeft\"\n                              [nzDropdownMenu]=\"selectionMenu\"\n                              class=\"ant-table-selection-down st__checkall-selection\"\n                            >\n                              <nz-icon nzType=\"down\" />\n                            </div>\n                          </div>\n                        }\n                        <nz-dropdown-menu #selectionMenu=\"nzDropdownMenu\">\n                          <ul nz-menu class=\"ant-table-selection-menu\">\n                            @for (rw of _c.selections; track $index) {\n                              <li nz-menu-item (click)=\"_rowSelection(rw)\" [innerHTML]=\"rw.text\"></li>\n                            }\n                          </ul>\n                        </nz-dropdown-menu>\n                      </div>\n                    }\n                  }\n                  @default {\n                    <ng-template [ngTemplateOutlet]=\"titleTpl\" [ngTemplateOutletContext]=\"{ $implicit: _c.title }\" />\n                  }\n                }\n              }\n              @if (_c.filter) {\n                <ng-container *ngTemplateOutlet=\"filterTpl\" />\n              }\n              <ng-template #filterTpl>\n                <st-filter\n                  nz-th-extra\n                  [col]=\"h.column\"\n                  [f]=\"_c.filter!\"\n                  [locale]=\"locale()\"\n                  (n)=\"handleFilterNotify($event)\"\n                  (handle)=\"_handleFilter(_c, $event)\"\n                />\n              </ng-template>\n            </th>\n          }\n        </tr>\n      }\n    </thead>\n  }\n  <tbody\n    class=\"st__body\"\n    cdkDropList\n    [cdkDropListDisabled]=\"drag() === null\"\n    (cdkDropListDropped)=\"drag()?.dropped?.($event)\"\n    (cdkDropListEntered)=\"drag()?.entered?.($event)\"\n    (cdkDropListExited)=\"drag()?.exited?.($event)\"\n    (cdkDropListSorted)=\"drag()?.sorted?.($event)\"\n  >\n    @if (!_loading) {\n      <ng-template [ngTemplateOutlet]=\"bodyHeader!\" [ngTemplateOutletContext]=\"{ $implicit: _statistical }\" />\n    }\n    <ng-template #bodyTpl let-i let-index=\"index\">\n      <tr\n        [attr.data-index]=\"index\"\n        (click)=\"_rowClick($event, i, index, false)\"\n        (dblclick)=\"_rowClick($event, i, index, true)\"\n        [class]=\"i._rowClassName\"\n        cdkDrag\n      >\n        @if (expand) {\n          <td\n            [nzShowExpand]=\"expand && i.showExpand !== false\"\n            [nzExpand]=\"i.expand\"\n            [nzExpandIcon]=\"expandIcon ? wrapExpandIcon : null\"\n            (nzExpandChange)=\"_expandChange(i, $event)\"\n            (click)=\"_stopPropagation($event)\"\n            nzWidth=\"50px\"\n            [nzLeft]=\"_columns[0]._left ? true : false\"\n          ></td>\n          <ng-template #wrapExpandIcon>\n            <span (click)=\"_expandChange(i, !i.expand)\">\n              <ng-template [ngTemplateOutlet]=\"expandIcon\" [ngTemplateOutletContext]=\"{ $implicit: i, index: index }\" />\n            </span>\n          </ng-template>\n        }\n        @for (c of _columns; track cIdx; let cIdx = $index) {\n          @let props = i._values[cIdx].props;\n          @if (props?.colSpan > 0 && props?.rowSpan > 0) {\n            <td\n              [nzLeft]=\"c._left\"\n              [nzRight]=\"c._right\"\n              [attr.data-col-index]=\"cIdx\"\n              [class]=\"c._className\"\n              [attr.colspan]=\"props?.colSpan === 1 ? null : props?.colSpan\"\n              [attr.rowspan]=\"props?.rowSpan === 1 ? null : props?.rowSpan\"\n            >\n              @if (responsive) {\n                <span class=\"ant-table-rep__title\">\n                  <ng-template [ngTemplateOutlet]=\"titleTpl\" [ngTemplateOutletContext]=\"{ $implicit: c.title }\" />\n                </span>\n              }\n              <st-td [data]=\"_data\" [i]=\"i\" [index]=\"index\" [c]=\"c\" [cIdx]=\"cIdx\" (n)=\"_handleTd($event)\" />\n            </td>\n          }\n        }\n      </tr>\n      <tr [nzExpand]=\"i.expand\">\n        <ng-template [ngTemplateOutlet]=\"expand\" [ngTemplateOutletContext]=\"{ $implicit: i, index: index }\" />\n      </tr>\n    </ng-template>\n    @if (virtualScroll) {\n      <ng-template nz-virtual-scroll let-i let-index=\"index\">\n        <ng-template [ngTemplateOutlet]=\"bodyTpl\" [ngTemplateOutletContext]=\"{ $implicit: i, index: index }\" />\n      </ng-template>\n    } @else {\n      @for (i of _data; track trackBy($index, i)) {\n        <ng-template [ngTemplateOutlet]=\"bodyTpl\" [ngTemplateOutletContext]=\"{ $implicit: i, index: $index }\" />\n      }\n    }\n    @if (!_loading) {\n      <ng-template [ngTemplateOutlet]=\"body!\" [ngTemplateOutletContext]=\"{ $implicit: _statistical }\" />\n    }\n  </tbody>\n  <ng-template #totalTpl let-range=\"range\" let-total>{{ renderTotal(total, range) }}</ng-template>\n</nz-table>\n<nz-dropdown-menu #contextmenuTpl=\"nzDropdownMenu\">\n  <ul nz-menu class=\"st__contextmenu\">\n    @for (i of contextmenuList; track $index) {\n      @if (i.children!.length === 0) {\n        <li nz-menu-item (click)=\"i.fn!(i)\" [innerHTML]=\"i.text\"></li>\n      } @else {\n        <li nz-submenu [nzTitle]=\"i.text\">\n          <ul>\n            @for (ci of i.children; track $index) {\n              <li nz-menu-item (click)=\"ci.fn!(ci)\" [innerHTML]=\"ci.text\"></li>\n            }\n          </ul>\n        </li>\n      }\n    }\n  </ul>\n</nz-dropdown-menu>\n","import { NgModule } from '@angular/core';\n\nimport { STRowDirective } from './st-row.directive';\nimport { STWidgetHostDirective } from './st-widget-host.directive';\nimport { STComponent } from './st.component';\n\nconst COMPONENTS = [STComponent, STRowDirective, STWidgetHostDirective];\n\n@NgModule({\n  imports: COMPONENTS,\n  exports: COMPONENTS\n})\nexport class STModule {}\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideEnvironmentInitializer } from '@angular/core';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { STWidgetRegistry } from './st-widget';\n\nexport interface STWidgetProvideConfig {\n  KEY: string;\n  type: NzSafeAny;\n}\n\n/**\n * Just only using Standalone widgets\n */\nexport function provideSTWidgets(...widgets: STWidgetProvideConfig[]): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    provideEnvironmentInitializer(() => {\n      const srv = inject(STWidgetRegistry);\n      widgets.forEach(widget => srv.register(widget.KEY, widget.type));\n    })\n  ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i3","i1","i4"],"mappings":"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"}