{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { Directive, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/table';\nimport { CdkTable, CDK_TABLE, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, STICKY_POSITIONING_LISTENER, CDK_TABLE_TEMPLATE, CdkCellDef, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDef, CdkHeaderCell, CdkFooterCell, CdkCell, CdkHeaderRowDef, CdkFooterRowDef, CdkRowDef, CdkHeaderRow, CDK_ROW_TEMPLATE, CdkFooterRow, CdkRow, CdkNoDataRow, CdkTextColumn, CdkTableModule, DataSource } from '@angular/cdk/table';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nimport { MatCommonModule } from '@angular/material/core';\nimport { _isNumberValue } from '@angular/cdk/coercion';\nimport { BehaviorSubject, Subject, merge, of, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\n\nconst _c0 = [[[\"caption\"]], [[\"colgroup\"], [\"col\"]]];\nconst _c1 = [\"caption\", \"colgroup, col\"];\n\nfunction MatTextColumn_th_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"th\", 3);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵstyleProp(\"text-align\", ctx_r0.justify);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", ctx_r0.headerText, \" \");\n  }\n}\n\nfunction MatTextColumn_td_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"td\", 4);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const data_r2 = ctx.$implicit;\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵstyleProp(\"text-align\", ctx_r1.justify);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", ctx_r1.dataAccessor(data_r2, ctx_r1.name), \" \");\n  }\n}\n\nclass MatRecycleRows {}\n\nMatRecycleRows.ɵfac = function MatRecycleRows_Factory(t) {\n  return new (t || MatRecycleRows)();\n};\n\nMatRecycleRows.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatRecycleRows,\n  selectors: [[\"mat-table\", \"recycleRows\", \"\"], [\"table\", \"mat-table\", \"\", \"recycleRows\", \"\"]],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: _VIEW_REPEATER_STRATEGY,\n    useClass: _RecycleViewRepeaterStrategy\n  }])]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatRecycleRows, [{\n    type: Directive,\n    args: [{\n      selector: 'mat-table[recycleRows], table[mat-table][recycleRows]',\n      providers: [{\n        provide: _VIEW_REPEATER_STRATEGY,\n        useClass: _RecycleViewRepeaterStrategy\n      }]\n    }]\n  }], null, null);\n})();\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n\n\nclass MatTable extends CdkTable {\n  constructor() {\n    super(...arguments);\n    /** Overrides the sticky CSS class set by the `CdkTable`. */\n\n    this.stickyCssClass = 'mat-table-sticky';\n    /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n\n    this.needsPositionStickyOnElement = false;\n  }\n\n}\n\nMatTable.ɵfac = /* @__PURE__ */function () {\n  let ɵMatTable_BaseFactory;\n  return function MatTable_Factory(t) {\n    return (ɵMatTable_BaseFactory || (ɵMatTable_BaseFactory = i0.ɵɵgetInheritedFactory(MatTable)))(t || MatTable);\n  };\n}();\n\nMatTable.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: MatTable,\n  selectors: [[\"mat-table\"], [\"table\", \"mat-table\", \"\"]],\n  hostAttrs: [1, \"mat-table\"],\n  hostVars: 2,\n  hostBindings: function MatTable_HostBindings(rf, ctx) {\n    if (rf & 2) {\n      i0.ɵɵclassProp(\"mat-table-fixed-layout\", ctx.fixedLayout);\n    }\n  },\n  exportAs: [\"matTable\"],\n  features: [i0.ɵɵProvidersFeature([// TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n  //  is only included in the build if used.\n  {\n    provide: _VIEW_REPEATER_STRATEGY,\n    useClass: _DisposeViewRepeaterStrategy\n  }, {\n    provide: CdkTable,\n    useExisting: MatTable\n  }, {\n    provide: CDK_TABLE,\n    useExisting: MatTable\n  }, {\n    provide: _COALESCED_STYLE_SCHEDULER,\n    useClass: _CoalescedStyleScheduler\n  }, // Prevent nested tables from seeing this table's StickyPositioningListener.\n  {\n    provide: STICKY_POSITIONING_LISTENER,\n    useValue: null\n  }]), i0.ɵɵInheritDefinitionFeature],\n  ngContentSelectors: _c1,\n  decls: 6,\n  vars: 0,\n  consts: [[\"headerRowOutlet\", \"\"], [\"rowOutlet\", \"\"], [\"noDataRowOutlet\", \"\"], [\"footerRowOutlet\", \"\"]],\n  template: function MatTable_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef(_c0);\n      i0.ɵɵprojection(0);\n      i0.ɵɵprojection(1, 1);\n      i0.ɵɵelementContainer(2, 0);\n      i0.ɵɵelementContainer(3, 1);\n      i0.ɵɵelementContainer(4, 2);\n      i0.ɵɵelementContainer(5, 3);\n    }\n  },\n  directives: [i1.HeaderRowOutlet, i1.DataRowOutlet, i1.NoDataRowOutlet, i1.FooterRowOutlet],\n  styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-row::after,mat-header-row::after,mat-footer-row::after{display:inline-block;min-height:inherit;content:\\\"\\\"}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:-webkit-sticky !important;position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\\n\"],\n  encapsulation: 2\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatTable, [{\n    type: Component,\n    args: [{\n      selector: 'mat-table, table[mat-table]',\n      exportAs: 'matTable',\n      template: CDK_TABLE_TEMPLATE,\n      host: {\n        'class': 'mat-table',\n        '[class.mat-table-fixed-layout]': 'fixedLayout'\n      },\n      providers: [// TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n      //  is only included in the build if used.\n      {\n        provide: _VIEW_REPEATER_STRATEGY,\n        useClass: _DisposeViewRepeaterStrategy\n      }, {\n        provide: CdkTable,\n        useExisting: MatTable\n      }, {\n        provide: CDK_TABLE,\n        useExisting: MatTable\n      }, {\n        provide: _COALESCED_STYLE_SCHEDULER,\n        useClass: _CoalescedStyleScheduler\n      }, // Prevent nested tables from seeing this table's StickyPositioningListener.\n      {\n        provide: STICKY_POSITIONING_LISTENER,\n        useValue: null\n      }],\n      encapsulation: ViewEncapsulation.None,\n      changeDetection: ChangeDetectionStrategy.Default,\n      styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-row::after,mat-header-row::after,mat-footer-row::after{display:inline-block;min-height:inherit;content:\\\"\\\"}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:-webkit-sticky !important;position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\\n\"]\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n\n\nclass MatCellDef extends CdkCellDef {}\n\nMatCellDef.ɵfac = /* @__PURE__ */function () {\n  let ɵMatCellDef_BaseFactory;\n  return function MatCellDef_Factory(t) {\n    return (ɵMatCellDef_BaseFactory || (ɵMatCellDef_BaseFactory = i0.ɵɵgetInheritedFactory(MatCellDef)))(t || MatCellDef);\n  };\n}();\n\nMatCellDef.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatCellDef,\n  selectors: [[\"\", \"matCellDef\", \"\"]],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkCellDef,\n    useExisting: MatCellDef\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatCellDef, [{\n    type: Directive,\n    args: [{\n      selector: '[matCellDef]',\n      providers: [{\n        provide: CdkCellDef,\n        useExisting: MatCellDef\n      }]\n    }]\n  }], null, null);\n})();\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n\n\nclass MatHeaderCellDef extends CdkHeaderCellDef {}\n\nMatHeaderCellDef.ɵfac = /* @__PURE__ */function () {\n  let ɵMatHeaderCellDef_BaseFactory;\n  return function MatHeaderCellDef_Factory(t) {\n    return (ɵMatHeaderCellDef_BaseFactory || (ɵMatHeaderCellDef_BaseFactory = i0.ɵɵgetInheritedFactory(MatHeaderCellDef)))(t || MatHeaderCellDef);\n  };\n}();\n\nMatHeaderCellDef.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatHeaderCellDef,\n  selectors: [[\"\", \"matHeaderCellDef\", \"\"]],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkHeaderCellDef,\n    useExisting: MatHeaderCellDef\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatHeaderCellDef, [{\n    type: Directive,\n    args: [{\n      selector: '[matHeaderCellDef]',\n      providers: [{\n        provide: CdkHeaderCellDef,\n        useExisting: MatHeaderCellDef\n      }]\n    }]\n  }], null, null);\n})();\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n\n\nclass MatFooterCellDef extends CdkFooterCellDef {}\n\nMatFooterCellDef.ɵfac = /* @__PURE__ */function () {\n  let ɵMatFooterCellDef_BaseFactory;\n  return function MatFooterCellDef_Factory(t) {\n    return (ɵMatFooterCellDef_BaseFactory || (ɵMatFooterCellDef_BaseFactory = i0.ɵɵgetInheritedFactory(MatFooterCellDef)))(t || MatFooterCellDef);\n  };\n}();\n\nMatFooterCellDef.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatFooterCellDef,\n  selectors: [[\"\", \"matFooterCellDef\", \"\"]],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkFooterCellDef,\n    useExisting: MatFooterCellDef\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatFooterCellDef, [{\n    type: Directive,\n    args: [{\n      selector: '[matFooterCellDef]',\n      providers: [{\n        provide: CdkFooterCellDef,\n        useExisting: MatFooterCellDef\n      }]\n    }]\n  }], null, null);\n})();\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\n\n\nclass MatColumnDef extends CdkColumnDef {\n  /** Unique name for this column. */\n  get name() {\n    return this._name;\n  }\n\n  set name(name) {\n    this._setNameInput(name);\n  }\n  /**\n   * Add \"mat-column-\" prefix in addition to \"cdk-column-\" prefix.\n   * In the future, this will only add \"mat-column-\" and columnCssClassName\n   * will change from type string[] to string.\n   * @docs-private\n   */\n\n\n  _updateColumnCssClassName() {\n    super._updateColumnCssClassName();\n\n    this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`);\n  }\n\n}\n\nMatColumnDef.ɵfac = /* @__PURE__ */function () {\n  let ɵMatColumnDef_BaseFactory;\n  return function MatColumnDef_Factory(t) {\n    return (ɵMatColumnDef_BaseFactory || (ɵMatColumnDef_BaseFactory = i0.ɵɵgetInheritedFactory(MatColumnDef)))(t || MatColumnDef);\n  };\n}();\n\nMatColumnDef.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatColumnDef,\n  selectors: [[\"\", \"matColumnDef\", \"\"]],\n  inputs: {\n    sticky: \"sticky\",\n    name: [\"matColumnDef\", \"name\"]\n  },\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkColumnDef,\n    useExisting: MatColumnDef\n  }, {\n    provide: 'MAT_SORT_HEADER_COLUMN_DEF',\n    useExisting: MatColumnDef\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatColumnDef, [{\n    type: Directive,\n    args: [{\n      selector: '[matColumnDef]',\n      inputs: ['sticky'],\n      providers: [{\n        provide: CdkColumnDef,\n        useExisting: MatColumnDef\n      }, {\n        provide: 'MAT_SORT_HEADER_COLUMN_DEF',\n        useExisting: MatColumnDef\n      }]\n    }]\n  }], null, {\n    name: [{\n      type: Input,\n      args: ['matColumnDef']\n    }]\n  });\n})();\n/** Header cell template container that adds the right classes and role. */\n\n\nclass MatHeaderCell extends CdkHeaderCell {}\n\nMatHeaderCell.ɵfac = /* @__PURE__ */function () {\n  let ɵMatHeaderCell_BaseFactory;\n  return function MatHeaderCell_Factory(t) {\n    return (ɵMatHeaderCell_BaseFactory || (ɵMatHeaderCell_BaseFactory = i0.ɵɵgetInheritedFactory(MatHeaderCell)))(t || MatHeaderCell);\n  };\n}();\n\nMatHeaderCell.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatHeaderCell,\n  selectors: [[\"mat-header-cell\"], [\"th\", \"mat-header-cell\", \"\"]],\n  hostAttrs: [\"role\", \"columnheader\", 1, \"mat-header-cell\"],\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatHeaderCell, [{\n    type: Directive,\n    args: [{\n      selector: 'mat-header-cell, th[mat-header-cell]',\n      host: {\n        'class': 'mat-header-cell',\n        'role': 'columnheader'\n      }\n    }]\n  }], null, null);\n})();\n/** Footer cell template container that adds the right classes and role. */\n\n\nclass MatFooterCell extends CdkFooterCell {}\n\nMatFooterCell.ɵfac = /* @__PURE__ */function () {\n  let ɵMatFooterCell_BaseFactory;\n  return function MatFooterCell_Factory(t) {\n    return (ɵMatFooterCell_BaseFactory || (ɵMatFooterCell_BaseFactory = i0.ɵɵgetInheritedFactory(MatFooterCell)))(t || MatFooterCell);\n  };\n}();\n\nMatFooterCell.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatFooterCell,\n  selectors: [[\"mat-footer-cell\"], [\"td\", \"mat-footer-cell\", \"\"]],\n  hostAttrs: [\"role\", \"gridcell\", 1, \"mat-footer-cell\"],\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatFooterCell, [{\n    type: Directive,\n    args: [{\n      selector: 'mat-footer-cell, td[mat-footer-cell]',\n      host: {\n        'class': 'mat-footer-cell',\n        'role': 'gridcell'\n      }\n    }]\n  }], null, null);\n})();\n/** Cell template container that adds the right classes and role. */\n\n\nclass MatCell extends CdkCell {}\n\nMatCell.ɵfac = /* @__PURE__ */function () {\n  let ɵMatCell_BaseFactory;\n  return function MatCell_Factory(t) {\n    return (ɵMatCell_BaseFactory || (ɵMatCell_BaseFactory = i0.ɵɵgetInheritedFactory(MatCell)))(t || MatCell);\n  };\n}();\n\nMatCell.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatCell,\n  selectors: [[\"mat-cell\"], [\"td\", \"mat-cell\", \"\"]],\n  hostAttrs: [\"role\", \"gridcell\", 1, \"mat-cell\"],\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatCell, [{\n    type: Directive,\n    args: [{\n      selector: 'mat-cell, td[mat-cell]',\n      host: {\n        'class': 'mat-cell',\n        'role': 'gridcell'\n      }\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n\n\nclass MatHeaderRowDef extends CdkHeaderRowDef {}\n\nMatHeaderRowDef.ɵfac = /* @__PURE__ */function () {\n  let ɵMatHeaderRowDef_BaseFactory;\n  return function MatHeaderRowDef_Factory(t) {\n    return (ɵMatHeaderRowDef_BaseFactory || (ɵMatHeaderRowDef_BaseFactory = i0.ɵɵgetInheritedFactory(MatHeaderRowDef)))(t || MatHeaderRowDef);\n  };\n}();\n\nMatHeaderRowDef.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatHeaderRowDef,\n  selectors: [[\"\", \"matHeaderRowDef\", \"\"]],\n  inputs: {\n    columns: [\"matHeaderRowDef\", \"columns\"],\n    sticky: [\"matHeaderRowDefSticky\", \"sticky\"]\n  },\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkHeaderRowDef,\n    useExisting: MatHeaderRowDef\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatHeaderRowDef, [{\n    type: Directive,\n    args: [{\n      selector: '[matHeaderRowDef]',\n      providers: [{\n        provide: CdkHeaderRowDef,\n        useExisting: MatHeaderRowDef\n      }],\n      inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky']\n    }]\n  }], null, null);\n})();\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n\n\nclass MatFooterRowDef extends CdkFooterRowDef {}\n\nMatFooterRowDef.ɵfac = /* @__PURE__ */function () {\n  let ɵMatFooterRowDef_BaseFactory;\n  return function MatFooterRowDef_Factory(t) {\n    return (ɵMatFooterRowDef_BaseFactory || (ɵMatFooterRowDef_BaseFactory = i0.ɵɵgetInheritedFactory(MatFooterRowDef)))(t || MatFooterRowDef);\n  };\n}();\n\nMatFooterRowDef.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatFooterRowDef,\n  selectors: [[\"\", \"matFooterRowDef\", \"\"]],\n  inputs: {\n    columns: [\"matFooterRowDef\", \"columns\"],\n    sticky: [\"matFooterRowDefSticky\", \"sticky\"]\n  },\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkFooterRowDef,\n    useExisting: MatFooterRowDef\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatFooterRowDef, [{\n    type: Directive,\n    args: [{\n      selector: '[matFooterRowDef]',\n      providers: [{\n        provide: CdkFooterRowDef,\n        useExisting: MatFooterRowDef\n      }],\n      inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky']\n    }]\n  }], null, null);\n})();\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n\n\nclass MatRowDef extends CdkRowDef {}\n\nMatRowDef.ɵfac = /* @__PURE__ */function () {\n  let ɵMatRowDef_BaseFactory;\n  return function MatRowDef_Factory(t) {\n    return (ɵMatRowDef_BaseFactory || (ɵMatRowDef_BaseFactory = i0.ɵɵgetInheritedFactory(MatRowDef)))(t || MatRowDef);\n  };\n}();\n\nMatRowDef.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatRowDef,\n  selectors: [[\"\", \"matRowDef\", \"\"]],\n  inputs: {\n    columns: [\"matRowDefColumns\", \"columns\"],\n    when: [\"matRowDefWhen\", \"when\"]\n  },\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkRowDef,\n    useExisting: MatRowDef\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatRowDef, [{\n    type: Directive,\n    args: [{\n      selector: '[matRowDef]',\n      providers: [{\n        provide: CdkRowDef,\n        useExisting: MatRowDef\n      }],\n      inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen']\n    }]\n  }], null, null);\n})();\n/** Header template container that contains the cell outlet. Adds the right class and role. */\n\n\nclass MatHeaderRow extends CdkHeaderRow {}\n\nMatHeaderRow.ɵfac = /* @__PURE__ */function () {\n  let ɵMatHeaderRow_BaseFactory;\n  return function MatHeaderRow_Factory(t) {\n    return (ɵMatHeaderRow_BaseFactory || (ɵMatHeaderRow_BaseFactory = i0.ɵɵgetInheritedFactory(MatHeaderRow)))(t || MatHeaderRow);\n  };\n}();\n\nMatHeaderRow.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: MatHeaderRow,\n  selectors: [[\"mat-header-row\"], [\"tr\", \"mat-header-row\", \"\"]],\n  hostAttrs: [\"role\", \"row\", 1, \"mat-header-row\"],\n  exportAs: [\"matHeaderRow\"],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkHeaderRow,\n    useExisting: MatHeaderRow\n  }]), i0.ɵɵInheritDefinitionFeature],\n  decls: 1,\n  vars: 0,\n  consts: [[\"cdkCellOutlet\", \"\"]],\n  template: function MatHeaderRow_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementContainer(0, 0);\n    }\n  },\n  directives: [i1.CdkCellOutlet],\n  encapsulation: 2\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatHeaderRow, [{\n    type: Component,\n    args: [{\n      selector: 'mat-header-row, tr[mat-header-row]',\n      template: CDK_ROW_TEMPLATE,\n      host: {\n        'class': 'mat-header-row',\n        'role': 'row'\n      },\n      // See note on CdkTable for explanation on why this uses the default change detection strategy.\n      // tslint:disable-next-line:validate-decorators\n      changeDetection: ChangeDetectionStrategy.Default,\n      encapsulation: ViewEncapsulation.None,\n      exportAs: 'matHeaderRow',\n      providers: [{\n        provide: CdkHeaderRow,\n        useExisting: MatHeaderRow\n      }]\n    }]\n  }], null, null);\n})();\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n\n\nclass MatFooterRow extends CdkFooterRow {}\n\nMatFooterRow.ɵfac = /* @__PURE__ */function () {\n  let ɵMatFooterRow_BaseFactory;\n  return function MatFooterRow_Factory(t) {\n    return (ɵMatFooterRow_BaseFactory || (ɵMatFooterRow_BaseFactory = i0.ɵɵgetInheritedFactory(MatFooterRow)))(t || MatFooterRow);\n  };\n}();\n\nMatFooterRow.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: MatFooterRow,\n  selectors: [[\"mat-footer-row\"], [\"tr\", \"mat-footer-row\", \"\"]],\n  hostAttrs: [\"role\", \"row\", 1, \"mat-footer-row\"],\n  exportAs: [\"matFooterRow\"],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkFooterRow,\n    useExisting: MatFooterRow\n  }]), i0.ɵɵInheritDefinitionFeature],\n  decls: 1,\n  vars: 0,\n  consts: [[\"cdkCellOutlet\", \"\"]],\n  template: function MatFooterRow_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementContainer(0, 0);\n    }\n  },\n  directives: [i1.CdkCellOutlet],\n  encapsulation: 2\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatFooterRow, [{\n    type: Component,\n    args: [{\n      selector: 'mat-footer-row, tr[mat-footer-row]',\n      template: CDK_ROW_TEMPLATE,\n      host: {\n        'class': 'mat-footer-row',\n        'role': 'row'\n      },\n      // See note on CdkTable for explanation on why this uses the default change detection strategy.\n      // tslint:disable-next-line:validate-decorators\n      changeDetection: ChangeDetectionStrategy.Default,\n      encapsulation: ViewEncapsulation.None,\n      exportAs: 'matFooterRow',\n      providers: [{\n        provide: CdkFooterRow,\n        useExisting: MatFooterRow\n      }]\n    }]\n  }], null, null);\n})();\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n\n\nclass MatRow extends CdkRow {}\n\nMatRow.ɵfac = /* @__PURE__ */function () {\n  let ɵMatRow_BaseFactory;\n  return function MatRow_Factory(t) {\n    return (ɵMatRow_BaseFactory || (ɵMatRow_BaseFactory = i0.ɵɵgetInheritedFactory(MatRow)))(t || MatRow);\n  };\n}();\n\nMatRow.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: MatRow,\n  selectors: [[\"mat-row\"], [\"tr\", \"mat-row\", \"\"]],\n  hostAttrs: [\"role\", \"row\", 1, \"mat-row\"],\n  exportAs: [\"matRow\"],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkRow,\n    useExisting: MatRow\n  }]), i0.ɵɵInheritDefinitionFeature],\n  decls: 1,\n  vars: 0,\n  consts: [[\"cdkCellOutlet\", \"\"]],\n  template: function MatRow_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementContainer(0, 0);\n    }\n  },\n  directives: [i1.CdkCellOutlet],\n  encapsulation: 2\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatRow, [{\n    type: Component,\n    args: [{\n      selector: 'mat-row, tr[mat-row]',\n      template: CDK_ROW_TEMPLATE,\n      host: {\n        'class': 'mat-row',\n        'role': 'row'\n      },\n      // See note on CdkTable for explanation on why this uses the default change detection strategy.\n      // tslint:disable-next-line:validate-decorators\n      changeDetection: ChangeDetectionStrategy.Default,\n      encapsulation: ViewEncapsulation.None,\n      exportAs: 'matRow',\n      providers: [{\n        provide: CdkRow,\n        useExisting: MatRow\n      }]\n    }]\n  }], null, null);\n})();\n/** Row that can be used to display a message when no data is shown in the table. */\n\n\nclass MatNoDataRow extends CdkNoDataRow {\n  constructor() {\n    super(...arguments);\n    this._contentClassName = 'mat-no-data-row';\n  }\n\n}\n\nMatNoDataRow.ɵfac = /* @__PURE__ */function () {\n  let ɵMatNoDataRow_BaseFactory;\n  return function MatNoDataRow_Factory(t) {\n    return (ɵMatNoDataRow_BaseFactory || (ɵMatNoDataRow_BaseFactory = i0.ɵɵgetInheritedFactory(MatNoDataRow)))(t || MatNoDataRow);\n  };\n}();\n\nMatNoDataRow.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: MatNoDataRow,\n  selectors: [[\"ng-template\", \"matNoDataRow\", \"\"]],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkNoDataRow,\n    useExisting: MatNoDataRow\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatNoDataRow, [{\n    type: Directive,\n    args: [{\n      selector: 'ng-template[matNoDataRow]',\n      providers: [{\n        provide: CdkNoDataRow,\n        useExisting: MatNoDataRow\n      }]\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\n\n\nclass MatTextColumn extends CdkTextColumn {}\n\nMatTextColumn.ɵfac = /* @__PURE__ */function () {\n  let ɵMatTextColumn_BaseFactory;\n  return function MatTextColumn_Factory(t) {\n    return (ɵMatTextColumn_BaseFactory || (ɵMatTextColumn_BaseFactory = i0.ɵɵgetInheritedFactory(MatTextColumn)))(t || MatTextColumn);\n  };\n}();\n\nMatTextColumn.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: MatTextColumn,\n  selectors: [[\"mat-text-column\"]],\n  features: [i0.ɵɵInheritDefinitionFeature],\n  decls: 3,\n  vars: 0,\n  consts: [[\"matColumnDef\", \"\"], [\"mat-header-cell\", \"\", 3, \"text-align\", 4, \"matHeaderCellDef\"], [\"mat-cell\", \"\", 3, \"text-align\", 4, \"matCellDef\"], [\"mat-header-cell\", \"\"], [\"mat-cell\", \"\"]],\n  template: function MatTextColumn_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementContainerStart(0, 0);\n      i0.ɵɵtemplate(1, MatTextColumn_th_1_Template, 2, 3, \"th\", 1);\n      i0.ɵɵtemplate(2, MatTextColumn_td_2_Template, 2, 3, \"td\", 2);\n      i0.ɵɵelementContainerEnd();\n    }\n  },\n  directives: [MatColumnDef, MatHeaderCellDef, MatCellDef, MatHeaderCell, MatCell],\n  encapsulation: 2\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatTextColumn, [{\n    type: Component,\n    args: [{\n      selector: 'mat-text-column',\n      template: `\n    <ng-container matColumnDef>\n      <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n        {{headerText}}\n      </th>\n      <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n        {{dataAccessor(data, name)}}\n      </td>\n    </ng-container>\n  `,\n      encapsulation: ViewEncapsulation.None,\n      // Change detection is intentionally not set to OnPush. This component's template will be provided\n      // to the table to be inserted into its view. This is problematic when change detection runs since\n      // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n      // mean's the template in the table's view will not have the updated value (and in fact will cause\n      // an ExpressionChangedAfterItHasBeenCheckedError).\n      // tslint:disable-next-line:validate-decorators\n      changeDetection: ChangeDetectionStrategy.Default\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nconst EXPORTED_DECLARATIONS = [// Table\nMatTable, MatRecycleRows, // Template defs\nMatHeaderCellDef, MatHeaderRowDef, MatColumnDef, MatCellDef, MatRowDef, MatFooterCellDef, MatFooterRowDef, // Cell directives\nMatHeaderCell, MatCell, MatFooterCell, // Row directives\nMatHeaderRow, MatRow, MatFooterRow, MatNoDataRow, MatTextColumn];\n\nclass MatTableModule {}\n\nMatTableModule.ɵfac = function MatTableModule_Factory(t) {\n  return new (t || MatTableModule)();\n};\n\nMatTableModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: MatTableModule\n});\nMatTableModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CdkTableModule, MatCommonModule], MatCommonModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatTableModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CdkTableModule, MatCommonModule],\n      exports: [MatCommonModule, EXPORTED_DECLARATIONS],\n      declarations: EXPORTED_DECLARATIONS\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\n\n\nconst MAX_SAFE_INTEGER = 9007199254740991;\n/** Shared base class with MDC-based implementation. */\n\nclass _MatTableDataSource extends DataSource {\n  constructor(initialData = []) {\n    super();\n    /** Stream emitting render data to the table (depends on ordered data changes). */\n\n    this._renderData = new BehaviorSubject([]);\n    /** Stream that emits when a new filter string is set on the data source. */\n\n    this._filter = new BehaviorSubject('');\n    /** Used to react to internal changes of the paginator that are made by the data source itself. */\n\n    this._internalPageChanges = new Subject();\n    /**\n     * Subscription to the changes that should trigger an update to the table's rendered rows, such\n     * as filtering, sorting, pagination, or base data changes.\n     */\n\n    this._renderChangesSubscription = null;\n    /**\n     * Data accessor function that is used for accessing data properties for sorting through\n     * the default sortData function.\n     * This default function assumes that the sort header IDs (which defaults to the column name)\n     * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n     * May be set to a custom function for different behavior.\n     * @param data Data object that is being accessed.\n     * @param sortHeaderId The name of the column that represents the data.\n     */\n\n    this.sortingDataAccessor = (data, sortHeaderId) => {\n      const value = data[sortHeaderId];\n\n      if (_isNumberValue(value)) {\n        const numberValue = Number(value); // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n        // leave them as strings. For more info: https://goo.gl/y5vbSg\n\n        return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n      }\n\n      return value;\n    };\n    /**\n     * Gets a sorted copy of the data array based on the state of the MatSort. Called\n     * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n     * By default, the function retrieves the active sort and its direction and compares data\n     * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n     * of data ordering.\n     * @param data The array of data that should be sorted.\n     * @param sort The connected MatSort that holds the current sort state.\n     */\n\n\n    this.sortData = (data, sort) => {\n      const active = sort.active;\n      const direction = sort.direction;\n\n      if (!active || direction == '') {\n        return data;\n      }\n\n      return data.sort((a, b) => {\n        let valueA = this.sortingDataAccessor(a, active);\n        let valueB = this.sortingDataAccessor(b, active); // If there are data in the column that can be converted to a number,\n        // it must be ensured that the rest of the data\n        // is of the same type so as not to order incorrectly.\n\n        const valueAType = typeof valueA;\n        const valueBType = typeof valueB;\n\n        if (valueAType !== valueBType) {\n          if (valueAType === 'number') {\n            valueA += '';\n          }\n\n          if (valueBType === 'number') {\n            valueB += '';\n          }\n        } // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n        // one value exists while the other doesn't. In this case, existing value should come last.\n        // This avoids inconsistent results when comparing values to undefined/null.\n        // If neither value exists, return 0 (equal).\n\n\n        let comparatorResult = 0;\n\n        if (valueA != null && valueB != null) {\n          // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n          if (valueA > valueB) {\n            comparatorResult = 1;\n          } else if (valueA < valueB) {\n            comparatorResult = -1;\n          }\n        } else if (valueA != null) {\n          comparatorResult = 1;\n        } else if (valueB != null) {\n          comparatorResult = -1;\n        }\n\n        return comparatorResult * (direction == 'asc' ? 1 : -1);\n      });\n    };\n    /**\n     * Checks if a data object matches the data source's filter string. By default, each data object\n     * is converted to a string of its properties and returns true if the filter has\n     * at least one occurrence in that string. By default, the filter string has its whitespace\n     * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n     * filter matching.\n     * @param data Data object used to check against the filter.\n     * @param filter Filter string that has been set on the data source.\n     * @returns Whether the filter matches against the data\n     */\n\n\n    this.filterPredicate = (data, filter) => {\n      // Transform the data into a lowercase string of all property values.\n      const dataStr = Object.keys(data).reduce((currentTerm, key) => {\n        // Use an obscure Unicode character to delimit the words in the concatenated string.\n        // This avoids matches where the values of two columns combined will match the user's query\n        // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n        // that has a very low chance of being typed in by somebody in a text field. This one in\n        // particular is \"White up-pointing triangle with dot\" from\n        // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n        return currentTerm + data[key] + '◬';\n      }, '').toLowerCase(); // Transform the filter by converting it to lowercase and removing whitespace.\n\n      const transformedFilter = filter.trim().toLowerCase();\n      return dataStr.indexOf(transformedFilter) != -1;\n    };\n\n    this._data = new BehaviorSubject(initialData);\n\n    this._updateChangeSubscription();\n  }\n  /** Array of data that should be rendered by the table, where each object represents one row. */\n\n\n  get data() {\n    return this._data.value;\n  }\n\n  set data(data) {\n    this._data.next(data); // Normally the `filteredData` is updated by the re-render\n    // subscription, but that won't happen if it's inactive.\n\n\n    if (!this._renderChangesSubscription) {\n      this._filterData(data);\n    }\n  }\n  /**\n   * Filter term that should be used to filter out objects from the data array. To override how\n   * data objects match to this filter string, provide a custom function for filterPredicate.\n   */\n\n\n  get filter() {\n    return this._filter.value;\n  }\n\n  set filter(filter) {\n    this._filter.next(filter); // Normally the `filteredData` is updated by the re-render\n    // subscription, but that won't happen if it's inactive.\n\n\n    if (!this._renderChangesSubscription) {\n      this._filterData(this.data);\n    }\n  }\n  /**\n   * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n   * emitted by the MatSort will trigger an update to the table's rendered data.\n   */\n\n\n  get sort() {\n    return this._sort;\n  }\n\n  set sort(sort) {\n    this._sort = sort;\n\n    this._updateChangeSubscription();\n  }\n  /**\n   * Instance of the MatPaginator component used by the table to control what page of the data is\n   * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n   * table's rendered data.\n   *\n   * Note that the data source uses the paginator's properties to calculate which page of data\n   * should be displayed. If the paginator receives its properties as template inputs,\n   * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n   * initialized before assigning it to this data source.\n   */\n\n\n  get paginator() {\n    return this._paginator;\n  }\n\n  set paginator(paginator) {\n    this._paginator = paginator;\n\n    this._updateChangeSubscription();\n  }\n  /**\n   * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n   * changes occur, process the current state of the filter, sort, and pagination along with\n   * the provided base data and send it to the table for rendering.\n   */\n\n\n  _updateChangeSubscription() {\n    var _a; // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n    // The events should emit whenever the component emits a change or initializes, or if no\n    // component is provided, a stream with just a null event should be provided.\n    // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n    // pipeline can progress to the next step. Note that the value from these streams are not used,\n    // they purely act as a signal to progress in the pipeline.\n\n\n    const sortChange = this._sort ? merge(this._sort.sortChange, this._sort.initialized) : of(null);\n    const pageChange = this._paginator ? merge(this._paginator.page, this._internalPageChanges, this._paginator.initialized) : of(null);\n    const dataStream = this._data; // Watch for base data or filter changes to provide a filtered set of data.\n\n    const filteredData = combineLatest([dataStream, this._filter]).pipe(map(([data]) => this._filterData(data))); // Watch for filtered data or sort changes to provide an ordered set of data.\n\n    const orderedData = combineLatest([filteredData, sortChange]).pipe(map(([data]) => this._orderData(data))); // Watch for ordered data or page changes to provide a paged set of data.\n\n    const paginatedData = combineLatest([orderedData, pageChange]).pipe(map(([data]) => this._pageData(data))); // Watched for paged data changes and send the result to the table to render.\n\n    (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n    this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n  }\n  /**\n   * Returns a filtered data array where each filter object contains the filter string within\n   * the result of the filterTermAccessor function. If no filter is set, returns the data array\n   * as provided.\n   */\n\n\n  _filterData(data) {\n    // If there is a filter string, filter out data that does not contain it.\n    // Each data object is converted to a string using the function defined by filterTermAccessor.\n    // May be overridden for customization.\n    this.filteredData = this.filter == null || this.filter === '' ? data : data.filter(obj => this.filterPredicate(obj, this.filter));\n\n    if (this.paginator) {\n      this._updatePaginator(this.filteredData.length);\n    }\n\n    return this.filteredData;\n  }\n  /**\n   * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n   * data array as provided. Uses the default data accessor for data lookup, unless a\n   * sortDataAccessor function is defined.\n   */\n\n\n  _orderData(data) {\n    // If there is no active sort or direction, return the data without trying to sort.\n    if (!this.sort) {\n      return data;\n    }\n\n    return this.sortData(data.slice(), this.sort);\n  }\n  /**\n   * Returns a paged slice of the provided data array according to the provided MatPaginator's page\n   * index and length. If there is no paginator provided, returns the data array as provided.\n   */\n\n\n  _pageData(data) {\n    if (!this.paginator) {\n      return data;\n    }\n\n    const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n    return data.slice(startIndex, startIndex + this.paginator.pageSize);\n  }\n  /**\n   * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n   * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n   * guard against making property changes within a round of change detection.\n   */\n\n\n  _updatePaginator(filteredDataLength) {\n    Promise.resolve().then(() => {\n      const paginator = this.paginator;\n\n      if (!paginator) {\n        return;\n      }\n\n      paginator.length = filteredDataLength; // If the page index is set beyond the page, reduce it to the last page.\n\n      if (paginator.pageIndex > 0) {\n        const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n        const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n\n        if (newPageIndex !== paginator.pageIndex) {\n          paginator.pageIndex = newPageIndex; // Since the paginator only emits after user-generated changes,\n          // we need our own stream so we know to should re-render the data.\n\n          this._internalPageChanges.next();\n        }\n      }\n    });\n  }\n  /**\n   * Used by the MatTable. Called when it connects to the data source.\n   * @docs-private\n   */\n\n\n  connect() {\n    if (!this._renderChangesSubscription) {\n      this._updateChangeSubscription();\n    }\n\n    return this._renderData;\n  }\n  /**\n   * Used by the MatTable. Called when it disconnects from the data source.\n   * @docs-private\n   */\n\n\n  disconnect() {\n    var _a;\n\n    (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n    this._renderChangesSubscription = null;\n  }\n\n}\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\n\n\nclass MatTableDataSource extends _MatTableDataSource {}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRecycleRows, MatRow, MatRowDef, MatTable, MatTableDataSource, MatTableModule, MatTextColumn, _MatTableDataSource };","map":{"version":3,"sources":["D:/Development/Work/CENOS/cenos-ui/node_modules/@angular/material/fesm2015/table.mjs"],"names":["i0","Directive","Component","ViewEncapsulation","ChangeDetectionStrategy","Input","NgModule","i1","CdkTable","CDK_TABLE","_COALESCED_STYLE_SCHEDULER","_CoalescedStyleScheduler","STICKY_POSITIONING_LISTENER","CDK_TABLE_TEMPLATE","CdkCellDef","CdkHeaderCellDef","CdkFooterCellDef","CdkColumnDef","CdkHeaderCell","CdkFooterCell","CdkCell","CdkHeaderRowDef","CdkFooterRowDef","CdkRowDef","CdkHeaderRow","CDK_ROW_TEMPLATE","CdkFooterRow","CdkRow","CdkNoDataRow","CdkTextColumn","CdkTableModule","DataSource","_VIEW_REPEATER_STRATEGY","_RecycleViewRepeaterStrategy","_DisposeViewRepeaterStrategy","MatCommonModule","_isNumberValue","BehaviorSubject","Subject","merge","of","combineLatest","map","MatRecycleRows","ɵfac","ɵdir","provide","useClass","type","args","selector","providers","MatTable","constructor","arguments","stickyCssClass","needsPositionStickyOnElement","ɵcmp","useExisting","useValue","HeaderRowOutlet","DataRowOutlet","NoDataRowOutlet","FooterRowOutlet","exportAs","template","host","encapsulation","None","changeDetection","Default","styles","MatCellDef","MatHeaderCellDef","MatFooterCellDef","MatColumnDef","name","_name","_setNameInput","_updateColumnCssClassName","_columnCssClassName","push","cssClassFriendlyName","inputs","MatHeaderCell","MatFooterCell","MatCell","MatHeaderRowDef","MatFooterRowDef","MatRowDef","MatHeaderRow","CdkCellOutlet","MatFooterRow","MatRow","MatNoDataRow","_contentClassName","MatTextColumn","EXPORTED_DECLARATIONS","MatTableModule","ɵmod","ɵinj","imports","exports","declarations","MAX_SAFE_INTEGER","_MatTableDataSource","initialData","_renderData","_filter","_internalPageChanges","_renderChangesSubscription","sortingDataAccessor","data","sortHeaderId","value","numberValue","Number","sortData","sort","active","direction","a","b","valueA","valueB","valueAType","valueBType","comparatorResult","filterPredicate","filter","dataStr","Object","keys","reduce","currentTerm","key","toLowerCase","transformedFilter","trim","indexOf","_data","_updateChangeSubscription","next","_filterData","_sort","paginator","_paginator","_a","sortChange","initialized","pageChange","page","dataStream","filteredData","pipe","orderedData","_orderData","paginatedData","_pageData","unsubscribe","subscribe","obj","_updatePaginator","length","slice","startIndex","pageIndex","pageSize","filteredDataLength","Promise","resolve","then","lastPageIndex","Math","ceil","newPageIndex","min","connect","disconnect","MatTableDataSource"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { Directive, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/table';\nimport { CdkTable, CDK_TABLE, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, STICKY_POSITIONING_LISTENER, CDK_TABLE_TEMPLATE, CdkCellDef, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDef, CdkHeaderCell, CdkFooterCell, CdkCell, CdkHeaderRowDef, CdkFooterRowDef, CdkRowDef, CdkHeaderRow, CDK_ROW_TEMPLATE, CdkFooterRow, CdkRow, CdkNoDataRow, CdkTextColumn, CdkTableModule, DataSource } from '@angular/cdk/table';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nimport { MatCommonModule } from '@angular/material/core';\nimport { _isNumberValue } from '@angular/cdk/coercion';\nimport { BehaviorSubject, Subject, merge, of, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nclass MatRecycleRows {\n}\nMatRecycleRows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatRecycleRows, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatRecycleRows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatRecycleRows, selector: \"mat-table[recycleRows], table[mat-table][recycleRows]\", providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatRecycleRows, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: 'mat-table[recycleRows], table[mat-table][recycleRows]',\n                    providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n                }]\n        }] });\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\nclass MatTable extends CdkTable {\n    constructor() {\n        super(...arguments);\n        /** Overrides the sticky CSS class set by the `CdkTable`. */\n        this.stickyCssClass = 'mat-table-sticky';\n        /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n        this.needsPositionStickyOnElement = false;\n    }\n}\nMatTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatTable, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatTable, selector: \"mat-table, table[mat-table]\", host: { properties: { \"class.mat-table-fixed-layout\": \"fixedLayout\" }, classAttribute: \"mat-table\" }, providers: [\n        // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n        //  is only included in the build if used.\n        { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n        { provide: CdkTable, useExisting: MatTable },\n        { provide: CDK_TABLE, useExisting: MatTable },\n        { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n        // Prevent nested tables from seeing this table's StickyPositioningListener.\n        { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n    ], exportAs: [\"matTable\"], usesInheritance: true, ngImport: i0, template: \"\\n  <ng-content select=\\\"caption\\\"></ng-content>\\n  <ng-content select=\\\"colgroup, col\\\"></ng-content>\\n  <ng-container headerRowOutlet></ng-container>\\n  <ng-container rowOutlet></ng-container>\\n  <ng-container noDataRowOutlet></ng-container>\\n  <ng-container footerRowOutlet></ng-container>\\n\", isInline: true, styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-row::after,mat-header-row::after,mat-footer-row::after{display:inline-block;min-height:inherit;content:\\\"\\\"}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:-webkit-sticky !important;position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\\n\"], directives: [{ type: i1.HeaderRowOutlet, selector: \"[headerRowOutlet]\" }, { type: i1.DataRowOutlet, selector: \"[rowOutlet]\" }, { type: i1.NoDataRowOutlet, selector: \"[noDataRowOutlet]\" }, { type: i1.FooterRowOutlet, selector: \"[footerRowOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatTable, decorators: [{\n            type: Component,\n            args: [{ selector: 'mat-table, table[mat-table]', exportAs: 'matTable', template: CDK_TABLE_TEMPLATE, host: {\n                        'class': 'mat-table',\n                        '[class.mat-table-fixed-layout]': 'fixedLayout',\n                    }, providers: [\n                        // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n                        //  is only included in the build if used.\n                        { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n                        { provide: CdkTable, useExisting: MatTable },\n                        { provide: CDK_TABLE, useExisting: MatTable },\n                        { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n                        // Prevent nested tables from seeing this table's StickyPositioningListener.\n                        { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n                    ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-row::after,mat-header-row::after,mat-footer-row::after{display:inline-block;min-height:inherit;content:\\\"\\\"}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:-webkit-sticky !important;position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\\n\"] }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass MatCellDef extends CdkCellDef {\n}\nMatCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatCellDef, selector: \"[matCellDef]\", providers: [{ provide: CdkCellDef, useExisting: MatCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatCellDef, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[matCellDef]',\n                    providers: [{ provide: CdkCellDef, useExisting: MatCellDef }],\n                }]\n        }] });\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass MatHeaderCellDef extends CdkHeaderCellDef {\n}\nMatHeaderCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatHeaderCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatHeaderCellDef, selector: \"[matHeaderCellDef]\", providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatHeaderCellDef, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[matHeaderCellDef]',\n                    providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }],\n                }]\n        }] });\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass MatFooterCellDef extends CdkFooterCellDef {\n}\nMatFooterCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatFooterCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatFooterCellDef, selector: \"[matFooterCellDef]\", providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatFooterCellDef, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[matFooterCellDef]',\n                    providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }],\n                }]\n        }] });\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\nclass MatColumnDef extends CdkColumnDef {\n    /** Unique name for this column. */\n    get name() {\n        return this._name;\n    }\n    set name(name) {\n        this._setNameInput(name);\n    }\n    /**\n     * Add \"mat-column-\" prefix in addition to \"cdk-column-\" prefix.\n     * In the future, this will only add \"mat-column-\" and columnCssClassName\n     * will change from type string[] to string.\n     * @docs-private\n     */\n    _updateColumnCssClassName() {\n        super._updateColumnCssClassName();\n        this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`);\n    }\n}\nMatColumnDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatColumnDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatColumnDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatColumnDef, selector: \"[matColumnDef]\", inputs: { sticky: \"sticky\", name: [\"matColumnDef\", \"name\"] }, providers: [\n        { provide: CdkColumnDef, useExisting: MatColumnDef },\n        { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef },\n    ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatColumnDef, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[matColumnDef]',\n                    inputs: ['sticky'],\n                    providers: [\n                        { provide: CdkColumnDef, useExisting: MatColumnDef },\n                        { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef },\n                    ],\n                }]\n        }], propDecorators: { name: [{\n                type: Input,\n                args: ['matColumnDef']\n            }] } });\n/** Header cell template container that adds the right classes and role. */\nclass MatHeaderCell extends CdkHeaderCell {\n}\nMatHeaderCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatHeaderCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\", host: { attributes: { \"role\": \"columnheader\" }, classAttribute: \"mat-header-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatHeaderCell, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: 'mat-header-cell, th[mat-header-cell]',\n                    host: {\n                        'class': 'mat-header-cell',\n                        'role': 'columnheader',\n                    },\n                }]\n        }] });\n/** Footer cell template container that adds the right classes and role. */\nclass MatFooterCell extends CdkFooterCell {\n}\nMatFooterCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatFooterCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatFooterCell, selector: \"mat-footer-cell, td[mat-footer-cell]\", host: { attributes: { \"role\": \"gridcell\" }, classAttribute: \"mat-footer-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatFooterCell, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: 'mat-footer-cell, td[mat-footer-cell]',\n                    host: {\n                        'class': 'mat-footer-cell',\n                        'role': 'gridcell',\n                    },\n                }]\n        }] });\n/** Cell template container that adds the right classes and role. */\nclass MatCell extends CdkCell {\n}\nMatCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatCell, selector: \"mat-cell, td[mat-cell]\", host: { attributes: { \"role\": \"gridcell\" }, classAttribute: \"mat-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatCell, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: 'mat-cell, td[mat-cell]',\n                    host: {\n                        'class': 'mat-cell',\n                        'role': 'gridcell',\n                    },\n                }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass MatHeaderRowDef extends CdkHeaderRowDef {\n}\nMatHeaderRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatHeaderRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatHeaderRowDef, selector: \"[matHeaderRowDef]\", inputs: { columns: [\"matHeaderRowDef\", \"columns\"], sticky: [\"matHeaderRowDefSticky\", \"sticky\"] }, providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatHeaderRowDef, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[matHeaderRowDef]',\n                    providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }],\n                    inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n                }]\n        }] });\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass MatFooterRowDef extends CdkFooterRowDef {\n}\nMatFooterRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatFooterRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatFooterRowDef, selector: \"[matFooterRowDef]\", inputs: { columns: [\"matFooterRowDef\", \"columns\"], sticky: [\"matFooterRowDefSticky\", \"sticky\"] }, providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatFooterRowDef, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[matFooterRowDef]',\n                    providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }],\n                    inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n                }]\n        }] });\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass MatRowDef extends CdkRowDef {\n}\nMatRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatRowDef, selector: \"[matRowDef]\", inputs: { columns: [\"matRowDefColumns\", \"columns\"], when: [\"matRowDefWhen\", \"when\"] }, providers: [{ provide: CdkRowDef, useExisting: MatRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatRowDef, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[matRowDef]',\n                    providers: [{ provide: CdkRowDef, useExisting: MatRowDef }],\n                    inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n                }]\n        }] });\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass MatHeaderRow extends CdkHeaderRow {\n}\nMatHeaderRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatHeaderRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatHeaderRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatHeaderRow, selector: \"mat-header-row, tr[mat-header-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-header-row\" }, providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }], exportAs: [\"matHeaderRow\"], usesInheritance: true, ngImport: i0, template: \"<ng-container cdkCellOutlet></ng-container>\", isInline: true, directives: [{ type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatHeaderRow, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'mat-header-row, tr[mat-header-row]',\n                    template: CDK_ROW_TEMPLATE,\n                    host: {\n                        'class': 'mat-header-row',\n                        'role': 'row',\n                    },\n                    // See note on CdkTable for explanation on why this uses the default change detection strategy.\n                    // tslint:disable-next-line:validate-decorators\n                    changeDetection: ChangeDetectionStrategy.Default,\n                    encapsulation: ViewEncapsulation.None,\n                    exportAs: 'matHeaderRow',\n                    providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }],\n                }]\n        }] });\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass MatFooterRow extends CdkFooterRow {\n}\nMatFooterRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatFooterRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatFooterRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatFooterRow, selector: \"mat-footer-row, tr[mat-footer-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-footer-row\" }, providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }], exportAs: [\"matFooterRow\"], usesInheritance: true, ngImport: i0, template: \"<ng-container cdkCellOutlet></ng-container>\", isInline: true, directives: [{ type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatFooterRow, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'mat-footer-row, tr[mat-footer-row]',\n                    template: CDK_ROW_TEMPLATE,\n                    host: {\n                        'class': 'mat-footer-row',\n                        'role': 'row',\n                    },\n                    // See note on CdkTable for explanation on why this uses the default change detection strategy.\n                    // tslint:disable-next-line:validate-decorators\n                    changeDetection: ChangeDetectionStrategy.Default,\n                    encapsulation: ViewEncapsulation.None,\n                    exportAs: 'matFooterRow',\n                    providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }],\n                }]\n        }] });\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass MatRow extends CdkRow {\n}\nMatRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatRow, selector: \"mat-row, tr[mat-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-row\" }, providers: [{ provide: CdkRow, useExisting: MatRow }], exportAs: [\"matRow\"], usesInheritance: true, ngImport: i0, template: \"<ng-container cdkCellOutlet></ng-container>\", isInline: true, directives: [{ type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatRow, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'mat-row, tr[mat-row]',\n                    template: CDK_ROW_TEMPLATE,\n                    host: {\n                        'class': 'mat-row',\n                        'role': 'row',\n                    },\n                    // See note on CdkTable for explanation on why this uses the default change detection strategy.\n                    // tslint:disable-next-line:validate-decorators\n                    changeDetection: ChangeDetectionStrategy.Default,\n                    encapsulation: ViewEncapsulation.None,\n                    exportAs: 'matRow',\n                    providers: [{ provide: CdkRow, useExisting: MatRow }],\n                }]\n        }] });\n/** Row that can be used to display a message when no data is shown in the table. */\nclass MatNoDataRow extends CdkNoDataRow {\n    constructor() {\n        super(...arguments);\n        this._contentClassName = 'mat-no-data-row';\n    }\n}\nMatNoDataRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatNoDataRow, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatNoDataRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatNoDataRow, selector: \"ng-template[matNoDataRow]\", providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatNoDataRow, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: 'ng-template[matNoDataRow]',\n                    providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }],\n                }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass MatTextColumn extends CdkTextColumn {\n}\nMatTextColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatTextColumn, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatTextColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.0\", type: MatTextColumn, selector: \"mat-text-column\", usesInheritance: true, ngImport: i0, template: `\n    <ng-container matColumnDef>\n      <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n        {{headerText}}\n      </th>\n      <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n        {{dataAccessor(data, name)}}\n      </td>\n    </ng-container>\n  `, isInline: true, directives: [{ type: MatColumnDef, selector: \"[matColumnDef]\", inputs: [\"sticky\", \"matColumnDef\"] }, { type: MatHeaderCellDef, selector: \"[matHeaderCellDef]\" }, { type: MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\" }, { type: MatCellDef, selector: \"[matCellDef]\" }, { type: MatCell, selector: \"mat-cell, td[mat-cell]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatTextColumn, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'mat-text-column',\n                    template: `\n    <ng-container matColumnDef>\n      <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n        {{headerText}}\n      </th>\n      <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n        {{dataAccessor(data, name)}}\n      </td>\n    </ng-container>\n  `,\n                    encapsulation: ViewEncapsulation.None,\n                    // Change detection is intentionally not set to OnPush. This component's template will be provided\n                    // to the table to be inserted into its view. This is problematic when change detection runs since\n                    // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n                    // mean's the template in the table's view will not have the updated value (and in fact will cause\n                    // an ExpressionChangedAfterItHasBeenCheckedError).\n                    // tslint:disable-next-line:validate-decorators\n                    changeDetection: ChangeDetectionStrategy.Default,\n                }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EXPORTED_DECLARATIONS = [\n    // Table\n    MatTable,\n    MatRecycleRows,\n    // Template defs\n    MatHeaderCellDef,\n    MatHeaderRowDef,\n    MatColumnDef,\n    MatCellDef,\n    MatRowDef,\n    MatFooterCellDef,\n    MatFooterRowDef,\n    // Cell directives\n    MatHeaderCell,\n    MatCell,\n    MatFooterCell,\n    // Row directives\n    MatHeaderRow,\n    MatRow,\n    MatFooterRow,\n    MatNoDataRow,\n    MatTextColumn,\n];\nclass MatTableModule {\n}\nMatTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatTableModule, declarations: [\n        // Table\n        MatTable,\n        MatRecycleRows,\n        // Template defs\n        MatHeaderCellDef,\n        MatHeaderRowDef,\n        MatColumnDef,\n        MatCellDef,\n        MatRowDef,\n        MatFooterCellDef,\n        MatFooterRowDef,\n        // Cell directives\n        MatHeaderCell,\n        MatCell,\n        MatFooterCell,\n        // Row directives\n        MatHeaderRow,\n        MatRow,\n        MatFooterRow,\n        MatNoDataRow,\n        MatTextColumn\n    ], imports: [CdkTableModule, MatCommonModule], exports: [MatCommonModule,\n        // Table\n        MatTable,\n        MatRecycleRows,\n        // Template defs\n        MatHeaderCellDef,\n        MatHeaderRowDef,\n        MatColumnDef,\n        MatCellDef,\n        MatRowDef,\n        MatFooterCellDef,\n        MatFooterRowDef,\n        // Cell directives\n        MatHeaderCell,\n        MatCell,\n        MatFooterCell,\n        // Row directives\n        MatHeaderRow,\n        MatRow,\n        MatFooterRow,\n        MatNoDataRow,\n        MatTextColumn] });\nMatTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatTableModule, imports: [[CdkTableModule, MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.0\", ngImport: i0, type: MatTableModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CdkTableModule, MatCommonModule],\n                    exports: [MatCommonModule, EXPORTED_DECLARATIONS],\n                    declarations: EXPORTED_DECLARATIONS,\n                }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n/** Shared base class with MDC-based implementation. */\nclass _MatTableDataSource extends DataSource {\n    constructor(initialData = []) {\n        super();\n        /** Stream emitting render data to the table (depends on ordered data changes). */\n        this._renderData = new BehaviorSubject([]);\n        /** Stream that emits when a new filter string is set on the data source. */\n        this._filter = new BehaviorSubject('');\n        /** Used to react to internal changes of the paginator that are made by the data source itself. */\n        this._internalPageChanges = new Subject();\n        /**\n         * Subscription to the changes that should trigger an update to the table's rendered rows, such\n         * as filtering, sorting, pagination, or base data changes.\n         */\n        this._renderChangesSubscription = null;\n        /**\n         * Data accessor function that is used for accessing data properties for sorting through\n         * the default sortData function.\n         * This default function assumes that the sort header IDs (which defaults to the column name)\n         * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n         * May be set to a custom function for different behavior.\n         * @param data Data object that is being accessed.\n         * @param sortHeaderId The name of the column that represents the data.\n         */\n        this.sortingDataAccessor = (data, sortHeaderId) => {\n            const value = data[sortHeaderId];\n            if (_isNumberValue(value)) {\n                const numberValue = Number(value);\n                // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n                // leave them as strings. For more info: https://goo.gl/y5vbSg\n                return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n            }\n            return value;\n        };\n        /**\n         * Gets a sorted copy of the data array based on the state of the MatSort. Called\n         * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n         * By default, the function retrieves the active sort and its direction and compares data\n         * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n         * of data ordering.\n         * @param data The array of data that should be sorted.\n         * @param sort The connected MatSort that holds the current sort state.\n         */\n        this.sortData = (data, sort) => {\n            const active = sort.active;\n            const direction = sort.direction;\n            if (!active || direction == '') {\n                return data;\n            }\n            return data.sort((a, b) => {\n                let valueA = this.sortingDataAccessor(a, active);\n                let valueB = this.sortingDataAccessor(b, active);\n                // If there are data in the column that can be converted to a number,\n                // it must be ensured that the rest of the data\n                // is of the same type so as not to order incorrectly.\n                const valueAType = typeof valueA;\n                const valueBType = typeof valueB;\n                if (valueAType !== valueBType) {\n                    if (valueAType === 'number') {\n                        valueA += '';\n                    }\n                    if (valueBType === 'number') {\n                        valueB += '';\n                    }\n                }\n                // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n                // one value exists while the other doesn't. In this case, existing value should come last.\n                // This avoids inconsistent results when comparing values to undefined/null.\n                // If neither value exists, return 0 (equal).\n                let comparatorResult = 0;\n                if (valueA != null && valueB != null) {\n                    // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n                    if (valueA > valueB) {\n                        comparatorResult = 1;\n                    }\n                    else if (valueA < valueB) {\n                        comparatorResult = -1;\n                    }\n                }\n                else if (valueA != null) {\n                    comparatorResult = 1;\n                }\n                else if (valueB != null) {\n                    comparatorResult = -1;\n                }\n                return comparatorResult * (direction == 'asc' ? 1 : -1);\n            });\n        };\n        /**\n         * Checks if a data object matches the data source's filter string. By default, each data object\n         * is converted to a string of its properties and returns true if the filter has\n         * at least one occurrence in that string. By default, the filter string has its whitespace\n         * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n         * filter matching.\n         * @param data Data object used to check against the filter.\n         * @param filter Filter string that has been set on the data source.\n         * @returns Whether the filter matches against the data\n         */\n        this.filterPredicate = (data, filter) => {\n            // Transform the data into a lowercase string of all property values.\n            const dataStr = Object.keys(data)\n                .reduce((currentTerm, key) => {\n                // Use an obscure Unicode character to delimit the words in the concatenated string.\n                // This avoids matches where the values of two columns combined will match the user's query\n                // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n                // that has a very low chance of being typed in by somebody in a text field. This one in\n                // particular is \"White up-pointing triangle with dot\" from\n                // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n                return currentTerm + data[key] + '◬';\n            }, '')\n                .toLowerCase();\n            // Transform the filter by converting it to lowercase and removing whitespace.\n            const transformedFilter = filter.trim().toLowerCase();\n            return dataStr.indexOf(transformedFilter) != -1;\n        };\n        this._data = new BehaviorSubject(initialData);\n        this._updateChangeSubscription();\n    }\n    /** Array of data that should be rendered by the table, where each object represents one row. */\n    get data() {\n        return this._data.value;\n    }\n    set data(data) {\n        this._data.next(data);\n        // Normally the `filteredData` is updated by the re-render\n        // subscription, but that won't happen if it's inactive.\n        if (!this._renderChangesSubscription) {\n            this._filterData(data);\n        }\n    }\n    /**\n     * Filter term that should be used to filter out objects from the data array. To override how\n     * data objects match to this filter string, provide a custom function for filterPredicate.\n     */\n    get filter() {\n        return this._filter.value;\n    }\n    set filter(filter) {\n        this._filter.next(filter);\n        // Normally the `filteredData` is updated by the re-render\n        // subscription, but that won't happen if it's inactive.\n        if (!this._renderChangesSubscription) {\n            this._filterData(this.data);\n        }\n    }\n    /**\n     * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n     * emitted by the MatSort will trigger an update to the table's rendered data.\n     */\n    get sort() {\n        return this._sort;\n    }\n    set sort(sort) {\n        this._sort = sort;\n        this._updateChangeSubscription();\n    }\n    /**\n     * Instance of the MatPaginator component used by the table to control what page of the data is\n     * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n     * table's rendered data.\n     *\n     * Note that the data source uses the paginator's properties to calculate which page of data\n     * should be displayed. If the paginator receives its properties as template inputs,\n     * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n     * initialized before assigning it to this data source.\n     */\n    get paginator() {\n        return this._paginator;\n    }\n    set paginator(paginator) {\n        this._paginator = paginator;\n        this._updateChangeSubscription();\n    }\n    /**\n     * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n     * changes occur, process the current state of the filter, sort, and pagination along with\n     * the provided base data and send it to the table for rendering.\n     */\n    _updateChangeSubscription() {\n        var _a;\n        // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n        // The events should emit whenever the component emits a change or initializes, or if no\n        // component is provided, a stream with just a null event should be provided.\n        // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n        // pipeline can progress to the next step. Note that the value from these streams are not used,\n        // they purely act as a signal to progress in the pipeline.\n        const sortChange = this._sort\n            ? merge(this._sort.sortChange, this._sort.initialized)\n            : of(null);\n        const pageChange = this._paginator\n            ? merge(this._paginator.page, this._internalPageChanges, this._paginator.initialized)\n            : of(null);\n        const dataStream = this._data;\n        // Watch for base data or filter changes to provide a filtered set of data.\n        const filteredData = combineLatest([dataStream, this._filter]).pipe(map(([data]) => this._filterData(data)));\n        // Watch for filtered data or sort changes to provide an ordered set of data.\n        const orderedData = combineLatest([filteredData, sortChange]).pipe(map(([data]) => this._orderData(data)));\n        // Watch for ordered data or page changes to provide a paged set of data.\n        const paginatedData = combineLatest([orderedData, pageChange]).pipe(map(([data]) => this._pageData(data)));\n        // Watched for paged data changes and send the result to the table to render.\n        (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n        this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n    }\n    /**\n     * Returns a filtered data array where each filter object contains the filter string within\n     * the result of the filterTermAccessor function. If no filter is set, returns the data array\n     * as provided.\n     */\n    _filterData(data) {\n        // If there is a filter string, filter out data that does not contain it.\n        // Each data object is converted to a string using the function defined by filterTermAccessor.\n        // May be overridden for customization.\n        this.filteredData =\n            this.filter == null || this.filter === ''\n                ? data\n                : data.filter(obj => this.filterPredicate(obj, this.filter));\n        if (this.paginator) {\n            this._updatePaginator(this.filteredData.length);\n        }\n        return this.filteredData;\n    }\n    /**\n     * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n     * data array as provided. Uses the default data accessor for data lookup, unless a\n     * sortDataAccessor function is defined.\n     */\n    _orderData(data) {\n        // If there is no active sort or direction, return the data without trying to sort.\n        if (!this.sort) {\n            return data;\n        }\n        return this.sortData(data.slice(), this.sort);\n    }\n    /**\n     * Returns a paged slice of the provided data array according to the provided MatPaginator's page\n     * index and length. If there is no paginator provided, returns the data array as provided.\n     */\n    _pageData(data) {\n        if (!this.paginator) {\n            return data;\n        }\n        const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n        return data.slice(startIndex, startIndex + this.paginator.pageSize);\n    }\n    /**\n     * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n     * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n     * guard against making property changes within a round of change detection.\n     */\n    _updatePaginator(filteredDataLength) {\n        Promise.resolve().then(() => {\n            const paginator = this.paginator;\n            if (!paginator) {\n                return;\n            }\n            paginator.length = filteredDataLength;\n            // If the page index is set beyond the page, reduce it to the last page.\n            if (paginator.pageIndex > 0) {\n                const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n                const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n                if (newPageIndex !== paginator.pageIndex) {\n                    paginator.pageIndex = newPageIndex;\n                    // Since the paginator only emits after user-generated changes,\n                    // we need our own stream so we know to should re-render the data.\n                    this._internalPageChanges.next();\n                }\n            }\n        });\n    }\n    /**\n     * Used by the MatTable. Called when it connects to the data source.\n     * @docs-private\n     */\n    connect() {\n        if (!this._renderChangesSubscription) {\n            this._updateChangeSubscription();\n        }\n        return this._renderData;\n    }\n    /**\n     * Used by the MatTable. Called when it disconnects from the data source.\n     * @docs-private\n     */\n    disconnect() {\n        var _a;\n        (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n        this._renderChangesSubscription = null;\n    }\n}\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nclass MatTableDataSource extends _MatTableDataSource {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRecycleRows, MatRow, MatRowDef, MatTable, MatTableDataSource, MatTableModule, MatTextColumn, _MatTableDataSource };\n"]},"metadata":{},"sourceType":"module"}