{"version":3,"sources":["src/app/services/instrument-id-service.ts","src/app/shared/components/instrument-and-plan-helper.ts","node_modules/@angular/cdk/fesm2022/dispose-view-repeater-strategy-b11b87ea.mjs","node_modules/@angular/cdk/fesm2022/table.mjs","src/app/shared/components/plan-treatment-unclassified/plan-treatment-unclassified.ts","src/app/shared/components/plan-treatment-unclassified/plan-treatment-unclassified.html","src/app/shared/components/plan-treatment-classified/plan-treatment-classified.ts","src/app/shared/components/plan-treatment-classified/plan-treatment-classified.html"],"sourcesContent":["import { Injectable } from \"@angular/core\"\nimport { Subject } from 'rxjs'\n@Injectable({\n providedIn: \"root\"\n})\nexport class InstrumentIDService {\n\n private iid = new Subject()\n public iidj$ = this.iid.asObservable()\n\n public listener = false\n\n setIID(iid: string) {\n this.iid.next(iid)\n }\n\n}","import { Component, Input, inject } from \"@angular/core\"\nimport { Dictionary } from \"./filtering-search-component-base/filtering-search-types\"\nimport { IconNamesEnum } from \"ngx-bootstrap-icons\"\nimport { InstrumentIDService } from \"src/app/services/instrument-id-service\"\nimport { Router } from \"@angular/router\"\n\n@Component({\n template: '',\n standalone: true\n})\n\nexport class InstrumentAndPlanHelper {\n private instrumentIDService = inject(InstrumentIDService)\n private router = inject(Router)\n\n @Input() public instrumentIDLookup: Dictionary = {}\n @Input() public classesLookup: Dictionary = {}\n @Input() public treatmentColumnVisibility: Dictionary = {}\n @Input() expandAll = false\n\n @Input() set extraData(dict: Dictionary) {\n for (const [key, value] of Object.entries(dict)) {\n switch (key) {\n case 'instrumentIDLookup':\n this.instrumentIDLookup = value\n break\n case 'classesLookup':\n this.classesLookup = value\n break\n case 'treatmentColumnVisibility':\n this.treatmentColumnVisibility = value\n break\n }\n }\n }\n\n public company = {}\n public iconNames = IconNamesEnum\n\n\n createInstrumentIDLookupLookup(capital_structures: any) {\n this.instrumentIDLookup = {}\n if (capital_structures !== null) {\n for (const structure of Object.values(capital_structures)) {\n if (Array.isArray(structure) && structure.length > 0) {\n structure.forEach((element: any) => {\n this.instrumentIDLookup[element.instrument_id] = element.instrument_name\n })\n }\n }\n }\n }\n getNonEmptyColumns(arrayOfObjects: any[], result : string[] = [], columnsToReturn : string[] = []) : string[] {\n const exactMinMaxRegex = /(.*)(_min|_max|_exact)$/\n if (arrayOfObjects && arrayOfObjects.length > 0) {\n let columnLookup : Dictionary = {}\n for (const row of arrayOfObjects) {\n for (let key of Object.keys(row)) {\n const value = row[key]\n\n const matches = key.match(exactMinMaxRegex)\n\n if (matches) {\n columnLookup[ matches[1] ] = true\n } else if (typeof value === 'number') {\n columnLookup[key] = true\n } else if (typeof value === 'string' && !isNaN(Number(value)) && !isNaN(parseFloat(value))) {\n columnLookup[key] = true\n } else if (typeof value === 'string') {\n columnLookup[key] = (columnLookup[key] ?? false) || value.trim().length > 0\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n columnLookup[key] = columnLookup[key] || value.length > 0\n } else {\n columnLookup[key] = true\n }\n }\n }\n }\n for (const key in columnLookup) {\n if (columnLookup[key]) {\n result.push(key)\n }\n if (columnsToReturn.length > 0) {\n result = result.filter( (col) => columnsToReturn.indexOf(col) !== -1)\n }\n }\n }\n return result\n }\n createTreatmentGroups(planClasses: any[]) {\n planClasses.forEach(element => {\n this.classesLookup[element.class_id] = `#${element.class_number} ${element.class_name}`\n this.treatmentColumnVisibility[element.class_id] = { }\n element.toggle_treatments.forEach((treatment: { groupedTreatments: any[]; count: number; treatments: any[]; }) => {\n treatment.groupedTreatments = []\n treatment.count = 0\n treatment.treatments.forEach((t) => {\n treatment.groupedTreatments[t.option_number] = treatment.groupedTreatments[t.option_number] || []\n treatment.groupedTreatments[t.option_number].push(t)\n treatment.count ++\n\n for (const [key, value] of Object.entries(t)) {\n this.treatmentColumnVisibility[element.class_id][key] = this.treatmentColumnVisibility[element.class_id][key] || (value as string).length > 0\n }\n\n })\n treatment.groupedTreatments = Object.values(treatment.groupedTreatments)\n })\n })\n }\n\n public openInstrument(event: Event, situationID: string, iid: string) {\n event.preventDefault()\n if (this.instrumentIDService.listener) {\n this.instrumentIDService.setIID(iid)\n } else {\n this.router.navigate( ['/situations', situationID], {\n state: {\n iid\n }\n })\n\n }\n }\n}","import { a as _ViewRepeaterOperation } from './recycle-view-repeater-strategy-c1712813.mjs';\n\n/**\n * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = _ViewRepeaterOperation.INSERTED;\n } else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = _ViewRepeaterOperation.REMOVED;\n } else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = _ViewRepeaterOperation.MOVED;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record\n });\n }\n });\n }\n detach() {}\n}\nexport { _DisposeViewRepeaterStrategy as _ };\n","import { i as isDataSource } from './data-source-5320b6fd.mjs';\nconst _c0 = [[[\"caption\"]], [[\"colgroup\"], [\"col\"]], \"*\"];\nconst _c1 = [\"caption\", \"colgroup, col\", \"*\"];\nfunction CdkTable_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0, 2);\n }\n}\nfunction CdkTable_Conditional_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"thead\", 0);\n i0.ɵɵelementContainer(1, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(2, \"tbody\", 0);\n i0.ɵɵelementContainer(3, 2)(4, 3);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(5, \"tfoot\", 0);\n i0.ɵɵelementContainer(6, 4);\n i0.ɵɵelementEnd();\n }\n}\nfunction CdkTable_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 1)(1, 2)(2, 3)(3, 4);\n }\n}\nfunction CdkTextColumn_th_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"th\", 3);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"text-align\", ctx_r0.justify);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r0.headerText, \" \");\n }\n}\nfunction CdkTextColumn_td_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 4);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const data_r2 = ctx.$implicit;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"text-align\", ctx_r0.justify);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r0.dataAccessor(data_r2, ctx_r0.name), \" \");\n }\n}\nexport { D as DataSource } from './data-source-5320b6fd.mjs';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, TemplateRef, Directive, booleanAttribute, Input, ContentChild, ElementRef, NgZone, Injectable, IterableDiffers, ViewContainerRef, Component, ChangeDetectionStrategy, ViewEncapsulation, afterNextRender, ChangeDetectorRef, EventEmitter, Injector, HostAttributeToken, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';\nimport { Subject, BehaviorSubject, isObservable, of } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { b as _VIEW_REPEATER_STRATEGY, _ as _RecycleViewRepeaterStrategy, a as _ViewRepeaterOperation } from './recycle-view-repeater-strategy-c1712813.mjs';\nimport { _ as _DisposeViewRepeaterStrategy } from './dispose-view-repeater-strategy-b11b87ea.mjs';\nimport { D as Directionality } from './directionality-0a678adc.mjs';\nimport { P as Platform } from './platform-610a08ae.mjs';\nimport { V as ViewportRuler, a as ScrollingModule } from './scrolling-module-aa1faac1.mjs';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport './element-08c51fcd.mjs';\nimport './scrolling-61955dd1.mjs';\nimport './bidi-module-56dd006c.mjs';\n\n/**\n * Used to provide a table to some of the sub-components without causing a circular dependency.\n * @docs-private\n */\nconst CDK_TABLE = /*#__PURE__*/new InjectionToken('CDK_TABLE');\n/** Injection token that can be used to specify the text column options. */\nconst TEXT_COLUMN_OPTIONS = /*#__PURE__*/new InjectionToken('text-column-options');\n\n/**\n * Cell definition for a CDK table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nlet CdkCellDef = /*#__PURE__*/(() => {\n class CdkCellDef {\n /** @docs-private */\n template = inject(TemplateRef);\n constructor() {}\n static ɵfac = function CdkCellDef_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkCellDef)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkCellDef,\n selectors: [[\"\", \"cdkCellDef\", \"\"]]\n });\n }\n return CdkCellDef;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Header cell definition for a CDK table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nlet CdkHeaderCellDef = /*#__PURE__*/(() => {\n class CdkHeaderCellDef {\n /** @docs-private */\n template = inject(TemplateRef);\n constructor() {}\n static ɵfac = function CdkHeaderCellDef_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkHeaderCellDef)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkHeaderCellDef,\n selectors: [[\"\", \"cdkHeaderCellDef\", \"\"]]\n });\n }\n return CdkHeaderCellDef;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Footer cell definition for a CDK table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nlet CdkFooterCellDef = /*#__PURE__*/(() => {\n class CdkFooterCellDef {\n /** @docs-private */\n template = inject(TemplateRef);\n constructor() {}\n static ɵfac = function CdkFooterCellDef_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkFooterCellDef)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkFooterCellDef,\n selectors: [[\"\", \"cdkFooterCellDef\", \"\"]]\n });\n }\n return CdkFooterCellDef;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Column definition for the CDK table.\n * Defines a set of cells available for a table column.\n */\nlet CdkColumnDef = /*#__PURE__*/(() => {\n class CdkColumnDef {\n _table = inject(CDK_TABLE, {\n optional: true\n });\n _hasStickyChanged = false;\n /** Unique name for this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._setNameInput(name);\n }\n _name;\n /** Whether the cell is sticky. */\n get sticky() {\n return this._sticky;\n }\n set sticky(value) {\n if (value !== this._sticky) {\n this._sticky = value;\n this._hasStickyChanged = true;\n }\n }\n _sticky = false;\n /**\n * Whether this column should be sticky positioned on the end of the row. Should make sure\n * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value\n * has been changed.\n */\n get stickyEnd() {\n return this._stickyEnd;\n }\n set stickyEnd(value) {\n if (value !== this._stickyEnd) {\n this._stickyEnd = value;\n this._hasStickyChanged = true;\n }\n }\n _stickyEnd = false;\n /** @docs-private */\n cell;\n /** @docs-private */\n headerCell;\n /** @docs-private */\n footerCell;\n /**\n * Transformed version of the column name that can be used as part of a CSS classname. Excludes\n * all non-alphanumeric characters and the special characters '-' and '_'. Any characters that\n * do not match are replaced by the '-' character.\n */\n cssClassFriendlyName;\n /**\n * Class name for cells in this column.\n * @docs-private\n */\n _columnCssClassName;\n constructor() {}\n /** Whether the sticky state has changed. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this.resetStickyChanged();\n return hasStickyChanged;\n }\n /** Resets the sticky changed state. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n _updateColumnCssClassName() {\n this._columnCssClassName = [`cdk-column-${this.cssClassFriendlyName}`];\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setNameInput(value) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n this._updateColumnCssClassName();\n }\n }\n static ɵfac = function CdkColumnDef_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkColumnDef)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkColumnDef,\n selectors: [[\"\", \"cdkColumnDef\", \"\"]],\n contentQueries: function CdkColumnDef_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, CdkCellDef, 5);\n i0.ɵɵcontentQuery(dirIndex, CdkHeaderCellDef, 5);\n i0.ɵɵcontentQuery(dirIndex, CdkFooterCellDef, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cell = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerCell = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerCell = _t.first);\n }\n },\n inputs: {\n name: [0, \"cdkColumnDef\", \"name\"],\n sticky: [2, \"sticky\", \"sticky\", booleanAttribute],\n stickyEnd: [2, \"stickyEnd\", \"stickyEnd\", booleanAttribute]\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: 'MAT_SORT_HEADER_COLUMN_DEF',\n useExisting: CdkColumnDef\n }])]\n });\n }\n return CdkColumnDef;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */\nclass BaseCdkCell {\n constructor(columnDef, elementRef) {\n elementRef.nativeElement.classList.add(...columnDef._columnCssClassName);\n }\n}\n/** Header cell template container that adds the right classes and role. */\nlet CdkHeaderCell = /*#__PURE__*/(() => {\n class CdkHeaderCell extends BaseCdkCell {\n constructor() {\n super(inject(CdkColumnDef), inject(ElementRef));\n }\n static ɵfac = function CdkHeaderCell_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkHeaderCell)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkHeaderCell,\n selectors: [[\"cdk-header-cell\"], [\"th\", \"cdk-header-cell\", \"\"]],\n hostAttrs: [\"role\", \"columnheader\", 1, \"cdk-header-cell\"],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n return CdkHeaderCell;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Footer cell template container that adds the right classes and role. */\nlet CdkFooterCell = /*#__PURE__*/(() => {\n class CdkFooterCell extends BaseCdkCell {\n constructor() {\n const columnDef = inject(CdkColumnDef);\n const elementRef = inject(ElementRef);\n super(columnDef, elementRef);\n const role = columnDef._table?._getCellRole();\n if (role) {\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n static ɵfac = function CdkFooterCell_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkFooterCell)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkFooterCell,\n selectors: [[\"cdk-footer-cell\"], [\"td\", \"cdk-footer-cell\", \"\"]],\n hostAttrs: [1, \"cdk-footer-cell\"],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n return CdkFooterCell;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Cell template container that adds the right classes and role. */\nlet CdkCell = /*#__PURE__*/(() => {\n class CdkCell extends BaseCdkCell {\n constructor() {\n const columnDef = inject(CdkColumnDef);\n const elementRef = inject(ElementRef);\n super(columnDef, elementRef);\n const role = columnDef._table?._getCellRole();\n if (role) {\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n static ɵfac = function CdkCell_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkCell)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkCell,\n selectors: [[\"cdk-cell\"], [\"td\", \"cdk-cell\", \"\"]],\n hostAttrs: [1, \"cdk-cell\"],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n return CdkCell;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @docs-private\n */\nclass _Schedule {\n tasks = [];\n endTasks = [];\n}\n/** Injection token used to provide a coalesced style scheduler. */\nconst _COALESCED_STYLE_SCHEDULER = /*#__PURE__*/new InjectionToken('_COALESCED_STYLE_SCHEDULER');\n/**\n * Allows grouping up CSSDom mutations after the current execution context.\n * This can significantly improve performance when separate consecutive functions are\n * reading from the CSSDom and then mutating it.\n *\n * @docs-private\n */\nlet _CoalescedStyleScheduler = /*#__PURE__*/(() => {\n class _CoalescedStyleScheduler {\n _currentSchedule = null;\n _ngZone = inject(NgZone);\n constructor() {}\n /**\n * Schedules the specified task to run at the end of the current VM turn.\n */\n schedule(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.tasks.push(task);\n }\n /**\n * Schedules the specified task to run after other scheduled tasks at the end of the current\n * VM turn.\n */\n scheduleEnd(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.endTasks.push(task);\n }\n _createScheduleIfNeeded() {\n if (this._currentSchedule) {\n return;\n }\n this._currentSchedule = new _Schedule();\n this._ngZone.runOutsideAngular(() =>\n // TODO(mmalerba): Scheduling this using something that runs less frequently\n // (e.g. requestAnimationFrame, setTimeout, etc.) causes noticeable jank with the column\n // resizer. We should audit the usages of schedule / scheduleEnd in that component and see\n // if we can refactor it so that we don't need to flush the tasks quite so frequently.\n queueMicrotask(() => {\n while (this._currentSchedule.tasks.length || this._currentSchedule.endTasks.length) {\n const schedule = this._currentSchedule;\n // Capture new tasks scheduled by the current set of tasks.\n this._currentSchedule = new _Schedule();\n for (const task of schedule.tasks) {\n task();\n }\n for (const task of schedule.endTasks) {\n task();\n }\n }\n this._currentSchedule = null;\n }));\n }\n static ɵfac = function _CoalescedStyleScheduler_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _CoalescedStyleScheduler)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _CoalescedStyleScheduler,\n factory: _CoalescedStyleScheduler.ɵfac\n });\n }\n return _CoalescedStyleScheduler;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The row template that can be used by the mat-table. Should not be used outside of the\n * material library.\n */\nconst CDK_ROW_TEMPLATE = ``;\n/**\n * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs\n * for changes and notifying the table.\n */\nlet BaseRowDef = /*#__PURE__*/(() => {\n class BaseRowDef {\n template = inject(TemplateRef);\n _differs = inject(IterableDiffers);\n /** The columns to be displayed on this row. */\n columns;\n /** Differ used to check if any changes were made to the columns. */\n _columnsDiffer;\n constructor() {}\n ngOnChanges(changes) {\n // Create a new columns differ if one does not yet exist. Initialize it based on initial value\n // of the columns property or an empty array if none is provided.\n if (!this._columnsDiffer) {\n const columns = changes['columns'] && changes['columns'].currentValue || [];\n this._columnsDiffer = this._differs.find(columns).create();\n this._columnsDiffer.diff(columns);\n }\n }\n /**\n * Returns the difference between the current columns and the columns from the last diff, or null\n * if there is no difference.\n */\n getColumnsDiff() {\n return this._columnsDiffer.diff(this.columns);\n }\n /** Gets this row def's relevant cell template from the provided column def. */\n extractCellTemplate(column) {\n if (this instanceof CdkHeaderRowDef) {\n return column.headerCell.template;\n }\n if (this instanceof CdkFooterRowDef) {\n return column.footerCell.template;\n } else {\n return column.cell.template;\n }\n }\n static ɵfac = function BaseRowDef_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BaseRowDef)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: BaseRowDef,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n return BaseRowDef;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Header row definition for the CDK table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nlet CdkHeaderRowDef = /*#__PURE__*/(() => {\n class CdkHeaderRowDef extends BaseRowDef {\n _table = inject(CDK_TABLE, {\n optional: true\n });\n _hasStickyChanged = false;\n /** Whether the row is sticky. */\n get sticky() {\n return this._sticky;\n }\n set sticky(value) {\n if (value !== this._sticky) {\n this._sticky = value;\n this._hasStickyChanged = true;\n }\n }\n _sticky = false;\n constructor() {\n super(inject(TemplateRef), inject(IterableDiffers));\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n /** Whether the sticky state has changed. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this.resetStickyChanged();\n return hasStickyChanged;\n }\n /** Resets the sticky changed state. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n static ɵfac = function CdkHeaderRowDef_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkHeaderRowDef)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkHeaderRowDef,\n selectors: [[\"\", \"cdkHeaderRowDef\", \"\"]],\n inputs: {\n columns: [0, \"cdkHeaderRowDef\", \"columns\"],\n sticky: [2, \"cdkHeaderRowDefSticky\", \"sticky\", booleanAttribute]\n },\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n return CdkHeaderRowDef;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Footer row definition for the CDK table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nlet CdkFooterRowDef = /*#__PURE__*/(() => {\n class CdkFooterRowDef extends BaseRowDef {\n _table = inject(CDK_TABLE, {\n optional: true\n });\n _hasStickyChanged = false;\n /** Whether the row is sticky. */\n get sticky() {\n return this._sticky;\n }\n set sticky(value) {\n if (value !== this._sticky) {\n this._sticky = value;\n this._hasStickyChanged = true;\n }\n }\n _sticky = false;\n constructor() {\n super(inject(TemplateRef), inject(IterableDiffers));\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n /** Whether the sticky state has changed. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this.resetStickyChanged();\n return hasStickyChanged;\n }\n /** Resets the sticky changed state. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n static ɵfac = function CdkFooterRowDef_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkFooterRowDef)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkFooterRowDef,\n selectors: [[\"\", \"cdkFooterRowDef\", \"\"]],\n inputs: {\n columns: [0, \"cdkFooterRowDef\", \"columns\"],\n sticky: [2, \"cdkFooterRowDefSticky\", \"sticky\", booleanAttribute]\n },\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n return CdkFooterRowDef;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Data row definition for the CDK table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nlet CdkRowDef = /*#__PURE__*/(() => {\n class CdkRowDef extends BaseRowDef {\n _table = inject(CDK_TABLE, {\n optional: true\n });\n /**\n * Function that should return true if this row template should be used for the provided index\n * and row data. If left undefined, this row will be considered the default row template to use\n * when no other when functions return true for the data.\n * For every row, there must be at least one when function that passes or an undefined to default.\n */\n when;\n constructor() {\n // TODO(andrewseguin): Add an input for providing a switch function to determine\n // if this template should be used.\n super(inject(TemplateRef), inject(IterableDiffers));\n }\n static ɵfac = function CdkRowDef_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkRowDef)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkRowDef,\n selectors: [[\"\", \"cdkRowDef\", \"\"]],\n inputs: {\n columns: [0, \"cdkRowDefColumns\", \"columns\"],\n when: [0, \"cdkRowDefWhen\", \"when\"]\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n return CdkRowDef;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Outlet for rendering cells inside of a row or header row.\n * @docs-private\n */\nlet CdkCellOutlet = /*#__PURE__*/(() => {\n class CdkCellOutlet {\n _viewContainer = inject(ViewContainerRef);\n /** The ordered list of cells to render within this outlet's view container */\n cells;\n /** The data context to be provided to each cell */\n context;\n /**\n * Static property containing the latest constructed instance of this class.\n * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using\n * createEmbeddedView. After one of these components are created, this property will provide\n * a handle to provide that component's cells and context. After init, the CdkCellOutlet will\n * construct the cells with the provided context.\n */\n static mostRecentCellOutlet = null;\n constructor() {\n CdkCellOutlet.mostRecentCellOutlet = this;\n }\n ngOnDestroy() {\n // If this was the last outlet being rendered in the view, remove the reference\n // from the static property after it has been destroyed to avoid leaking memory.\n if (CdkCellOutlet.mostRecentCellOutlet === this) {\n CdkCellOutlet.mostRecentCellOutlet = null;\n }\n }\n static ɵfac = function CdkCellOutlet_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkCellOutlet)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkCellOutlet,\n selectors: [[\"\", \"cdkCellOutlet\", \"\"]]\n });\n }\n return CdkCellOutlet;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nlet CdkHeaderRow = /*#__PURE__*/(() => {\n class CdkHeaderRow {\n static ɵfac = function CdkHeaderRow_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkHeaderRow)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CdkHeaderRow,\n selectors: [[\"cdk-header-row\"], [\"tr\", \"cdk-header-row\", \"\"]],\n hostAttrs: [\"role\", \"row\", 1, \"cdk-header-row\"],\n decls: 1,\n vars: 0,\n consts: [[\"cdkCellOutlet\", \"\"]],\n template: function CdkHeaderRow_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 0);\n }\n },\n dependencies: [CdkCellOutlet],\n encapsulation: 2\n });\n }\n return CdkHeaderRow;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nlet CdkFooterRow = /*#__PURE__*/(() => {\n class CdkFooterRow {\n static ɵfac = function CdkFooterRow_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkFooterRow)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CdkFooterRow,\n selectors: [[\"cdk-footer-row\"], [\"tr\", \"cdk-footer-row\", \"\"]],\n hostAttrs: [\"role\", \"row\", 1, \"cdk-footer-row\"],\n decls: 1,\n vars: 0,\n consts: [[\"cdkCellOutlet\", \"\"]],\n template: function CdkFooterRow_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 0);\n }\n },\n dependencies: [CdkCellOutlet],\n encapsulation: 2\n });\n }\n return CdkFooterRow;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nlet CdkRow = /*#__PURE__*/(() => {\n class CdkRow {\n static ɵfac = function CdkRow_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkRow)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CdkRow,\n selectors: [[\"cdk-row\"], [\"tr\", \"cdk-row\", \"\"]],\n hostAttrs: [\"role\", \"row\", 1, \"cdk-row\"],\n decls: 1,\n vars: 0,\n consts: [[\"cdkCellOutlet\", \"\"]],\n template: function CdkRow_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 0);\n }\n },\n dependencies: [CdkCellOutlet],\n encapsulation: 2\n });\n }\n return CdkRow;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Row that can be used to display a message when no data is shown in the table. */\nlet CdkNoDataRow = /*#__PURE__*/(() => {\n class CdkNoDataRow {\n templateRef = inject(TemplateRef);\n _contentClassName = 'cdk-no-data-row';\n constructor() {}\n static ɵfac = function CdkNoDataRow_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkNoDataRow)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkNoDataRow,\n selectors: [[\"ng-template\", \"cdkNoDataRow\", \"\"]]\n });\n }\n return CdkNoDataRow;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Directions that can be used when setting sticky positioning.\n * @docs-private\n */\n/**\n * List of all possible directions that can be used for sticky positioning.\n * @docs-private\n */\nconst STICKY_DIRECTIONS = ['top', 'bottom', 'left', 'right'];\n/**\n * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.\n * @docs-private\n */\nclass StickyStyler {\n _isNativeHtmlTable;\n _stickCellCss;\n direction;\n _coalescedStyleScheduler;\n _isBrowser;\n _needsPositionStickyOnElement;\n _positionListener;\n _tableInjector;\n _elemSizeCache = /*#__PURE__*/new WeakMap();\n _resizeObserver = globalThis?.ResizeObserver ? /*#__PURE__*/new globalThis.ResizeObserver(entries => this._updateCachedSizes(entries)) : null;\n _updatedStickyColumnsParamsToReplay = [];\n _stickyColumnsReplayTimeout = null;\n _cachedCellWidths = [];\n _borderCellCss;\n _destroyed = false;\n /**\n * @param _isNativeHtmlTable Whether the sticky logic should be based on a table\n * that uses the native `` element.\n * @param _stickCellCss The CSS class that will be applied to every row/cell that has\n * sticky positioning applied.\n * @param direction The directionality context of the table (ltr/rtl); affects column positioning\n * by reversing left/right positions.\n * @param _isBrowser Whether the table is currently being rendered on the server or the client.\n * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells\n * using inline styles. If false, it is assumed that position: sticky is included in\n * the component stylesheet for _stickCellCss.\n * @param _positionListener A listener that is notified of changes to sticky rows/columns\n * and their dimensions.\n * @param _tableInjector The table's Injector.\n */\n constructor(_isNativeHtmlTable, _stickCellCss, direction, _coalescedStyleScheduler, _isBrowser = true, _needsPositionStickyOnElement = true, _positionListener, _tableInjector) {\n this._isNativeHtmlTable = _isNativeHtmlTable;\n this._stickCellCss = _stickCellCss;\n this.direction = direction;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._isBrowser = _isBrowser;\n this._needsPositionStickyOnElement = _needsPositionStickyOnElement;\n this._positionListener = _positionListener;\n this._tableInjector = _tableInjector;\n this._borderCellCss = {\n 'top': `${_stickCellCss}-border-elem-top`,\n 'bottom': `${_stickCellCss}-border-elem-bottom`,\n 'left': `${_stickCellCss}-border-elem-left`,\n 'right': `${_stickCellCss}-border-elem-right`\n };\n }\n /**\n * Clears the sticky positioning styles from the row and its cells by resetting the `position`\n * style, setting the zIndex to 0, and unsetting each provided sticky direction.\n * @param rows The list of rows that should be cleared from sticking in the provided directions\n * @param stickyDirections The directions that should no longer be set as sticky on the rows.\n */\n clearStickyPositioning(rows, stickyDirections) {\n if (stickyDirections.includes('left') || stickyDirections.includes('right')) {\n this._removeFromStickyColumnReplayQueue(rows);\n }\n const elementsToClear = [];\n for (const row of rows) {\n // If the row isn't an element (e.g. if it's an `ng-container`),\n // it won't have inline styles or `children` so we skip it.\n if (row.nodeType !== row.ELEMENT_NODE) {\n continue;\n }\n elementsToClear.push(row, ...Array.from(row.children));\n }\n // Coalesce with sticky row/column updates (and potentially other changes like column resize).\n this._afterNextRender({\n write: () => {\n for (const element of elementsToClear) {\n this._removeStickyStyle(element, stickyDirections);\n }\n }\n });\n }\n /**\n * Applies sticky left and right positions to the cells of each row according to the sticky\n * states of the rendered column definitions.\n * @param rows The rows that should have its set of cells stuck according to the sticky states.\n * @param stickyStartStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the start of the row.\n * @param stickyEndStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the end of the row.\n * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each\n * column cell. If `false` cached widths will be used instead.\n * @param replay Whether to enqueue this call for replay after a ResizeObserver update.\n */\n updateStickyColumns(rows, stickyStartStates, stickyEndStates, recalculateCellWidths = true, replay = true) {\n // Don't cache any state if none of the columns are sticky.\n if (!rows.length || !this._isBrowser || !(stickyStartStates.some(state => state) || stickyEndStates.some(state => state))) {\n this._positionListener?.stickyColumnsUpdated({\n sizes: []\n });\n this._positionListener?.stickyEndColumnsUpdated({\n sizes: []\n });\n return;\n }\n // Coalesce with sticky row updates (and potentially other changes like column resize).\n const firstRow = rows[0];\n const numCells = firstRow.children.length;\n const isRtl = this.direction === 'rtl';\n const start = isRtl ? 'right' : 'left';\n const end = isRtl ? 'left' : 'right';\n const lastStickyStart = stickyStartStates.lastIndexOf(true);\n const firstStickyEnd = stickyEndStates.indexOf(true);\n let cellWidths;\n let startPositions;\n let endPositions;\n if (replay) {\n this._updateStickyColumnReplayQueue({\n rows: [...rows],\n stickyStartStates: [...stickyStartStates],\n stickyEndStates: [...stickyEndStates]\n });\n }\n this._afterNextRender({\n earlyRead: () => {\n cellWidths = this._getCellWidths(firstRow, recalculateCellWidths);\n startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);\n endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);\n },\n write: () => {\n for (const row of rows) {\n for (let i = 0; i < numCells; i++) {\n const cell = row.children[i];\n if (stickyStartStates[i]) {\n this._addStickyStyle(cell, start, startPositions[i], i === lastStickyStart);\n }\n if (stickyEndStates[i]) {\n this._addStickyStyle(cell, end, endPositions[i], i === firstStickyEnd);\n }\n }\n }\n if (this._positionListener && cellWidths.some(w => !!w)) {\n this._positionListener.stickyColumnsUpdated({\n sizes: lastStickyStart === -1 ? [] : cellWidths.slice(0, lastStickyStart + 1).map((width, index) => stickyStartStates[index] ? width : null)\n });\n this._positionListener.stickyEndColumnsUpdated({\n sizes: firstStickyEnd === -1 ? [] : cellWidths.slice(firstStickyEnd).map((width, index) => stickyEndStates[index + firstStickyEnd] ? width : null).reverse()\n });\n }\n }\n });\n }\n /**\n * Applies sticky positioning to the row's cells if using the native table layout, and to the\n * row itself otherwise.\n * @param rowsToStick The list of rows that should be stuck according to their corresponding\n * sticky state and to the provided top or bottom position.\n * @param stickyStates A list of boolean states where each state represents whether the row\n * should be stuck in the particular top or bottom position.\n * @param position The position direction in which the row should be stuck if that row should be\n * sticky.\n *\n */\n stickRows(rowsToStick, stickyStates, position) {\n // Since we can't measure the rows on the server, we can't stick the rows properly.\n if (!this._isBrowser) {\n return;\n }\n // If positioning the rows to the bottom, reverse their order when evaluating the sticky\n // position such that the last row stuck will be \"bottom: 0px\" and so on. Note that the\n // sticky states need to be reversed as well.\n const rows = position === 'bottom' ? rowsToStick.slice().reverse() : rowsToStick;\n const states = position === 'bottom' ? stickyStates.slice().reverse() : stickyStates;\n // Measure row heights all at once before adding sticky styles to reduce layout thrashing.\n const stickyOffsets = [];\n const stickyCellHeights = [];\n const elementsToStick = [];\n // Coalesce with other sticky row updates (top/bottom), sticky columns updates\n // (and potentially other changes like column resize).\n this._afterNextRender({\n earlyRead: () => {\n for (let rowIndex = 0, stickyOffset = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n stickyOffsets[rowIndex] = stickyOffset;\n const row = rows[rowIndex];\n elementsToStick[rowIndex] = this._isNativeHtmlTable ? Array.from(row.children) : [row];\n const height = this._retrieveElementSize(row).height;\n stickyOffset += height;\n stickyCellHeights[rowIndex] = height;\n }\n },\n write: () => {\n const borderedRowIndex = states.lastIndexOf(true);\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n const offset = stickyOffsets[rowIndex];\n const isBorderedRowIndex = rowIndex === borderedRowIndex;\n for (const element of elementsToStick[rowIndex]) {\n this._addStickyStyle(element, position, offset, isBorderedRowIndex);\n }\n }\n if (position === 'top') {\n this._positionListener?.stickyHeaderRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick\n });\n } else {\n this._positionListener?.stickyFooterRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick\n });\n }\n }\n });\n }\n /**\n * When using the native table in Safari, sticky footer cells do not stick. The only way to stick\n * footer rows is to apply sticky styling to the tfoot container. This should only be done if\n * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from\n * the tfoot element.\n */\n updateStickyFooterContainer(tableElement, stickyStates) {\n if (!this._isNativeHtmlTable) {\n return;\n }\n // Coalesce with other sticky updates (and potentially other changes like column resize).\n this._afterNextRender({\n write: () => {\n const tfoot = tableElement.querySelector('tfoot');\n if (tfoot) {\n if (stickyStates.some(state => !state)) {\n this._removeStickyStyle(tfoot, ['bottom']);\n } else {\n this._addStickyStyle(tfoot, 'bottom', 0, false);\n }\n }\n }\n });\n }\n /** Triggered by the table's OnDestroy hook. */\n destroy() {\n if (this._stickyColumnsReplayTimeout) {\n clearTimeout(this._stickyColumnsReplayTimeout);\n }\n this._resizeObserver?.disconnect();\n this._destroyed = true;\n }\n /**\n * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating\n * the zIndex, removing each of the provided sticky directions, and removing the\n * sticky position if there are no more directions.\n */\n _removeStickyStyle(element, stickyDirections) {\n if (!element.classList.contains(this._stickCellCss)) {\n return;\n }\n for (const dir of stickyDirections) {\n element.style[dir] = '';\n element.classList.remove(this._borderCellCss[dir]);\n }\n // If the element no longer has any more sticky directions, remove sticky positioning and\n // the sticky CSS class.\n // Short-circuit checking element.style[dir] for stickyDirections as they\n // were already removed above.\n const hasDirection = STICKY_DIRECTIONS.some(dir => stickyDirections.indexOf(dir) === -1 && element.style[dir]);\n if (hasDirection) {\n element.style.zIndex = this._getCalculatedZIndex(element);\n } else {\n // When not hasDirection, _getCalculatedZIndex will always return ''.\n element.style.zIndex = '';\n if (this._needsPositionStickyOnElement) {\n element.style.position = '';\n }\n element.classList.remove(this._stickCellCss);\n }\n }\n /**\n * Adds the sticky styling to the element by adding the sticky style class, changing position\n * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky\n * direction and value.\n */\n _addStickyStyle(element, dir, dirValue, isBorderElement) {\n element.classList.add(this._stickCellCss);\n if (isBorderElement) {\n element.classList.add(this._borderCellCss[dir]);\n }\n element.style[dir] = `${dirValue}px`;\n element.style.zIndex = this._getCalculatedZIndex(element);\n if (this._needsPositionStickyOnElement) {\n element.style.cssText += 'position: -webkit-sticky; position: sticky; ';\n }\n }\n /**\n * Calculate what the z-index should be for the element, depending on what directions (top,\n * bottom, left, right) have been set. It should be true that elements with a top direction\n * should have the highest index since these are elements like a table header. If any of those\n * elements are also sticky in another direction, then they should appear above other elements\n * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements\n * (e.g. footer rows) should then be next in the ordering such that they are below the header\n * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)\n * should minimally increment so that they are above non-sticky elements but below top and bottom\n * elements.\n */\n _getCalculatedZIndex(element) {\n const zIndexIncrements = {\n top: 100,\n bottom: 10,\n left: 1,\n right: 1\n };\n let zIndex = 0;\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n for (const dir of STICKY_DIRECTIONS) {\n if (element.style[dir]) {\n zIndex += zIndexIncrements[dir];\n }\n }\n return zIndex ? `${zIndex}` : '';\n }\n /** Gets the widths for each cell in the provided row. */\n _getCellWidths(row, recalculateCellWidths = true) {\n if (!recalculateCellWidths && this._cachedCellWidths.length) {\n return this._cachedCellWidths;\n }\n const cellWidths = [];\n const firstRowCells = row.children;\n for (let i = 0; i < firstRowCells.length; i++) {\n const cell = firstRowCells[i];\n cellWidths.push(this._retrieveElementSize(cell).width);\n }\n this._cachedCellWidths = cellWidths;\n return cellWidths;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyStartColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = 0; i < widths.length; i++) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyEndColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = widths.length; i > 0; i--) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n /**\n * Retreives the most recently observed size of the specified element from the cache, or\n * meaures it directly if not yet cached.\n */\n _retrieveElementSize(element) {\n const cachedSize = this._elemSizeCache.get(element);\n if (cachedSize) {\n return cachedSize;\n }\n const clientRect = element.getBoundingClientRect();\n const size = {\n width: clientRect.width,\n height: clientRect.height\n };\n if (!this._resizeObserver) {\n return size;\n }\n this._elemSizeCache.set(element, size);\n this._resizeObserver.observe(element, {\n box: 'border-box'\n });\n return size;\n }\n /**\n * Conditionally enqueue the requested sticky update and clear previously queued updates\n * for the same rows.\n */\n _updateStickyColumnReplayQueue(params) {\n this._removeFromStickyColumnReplayQueue(params.rows);\n // No need to replay if a flush is pending.\n if (!this._stickyColumnsReplayTimeout) {\n this._updatedStickyColumnsParamsToReplay.push(params);\n }\n }\n /** Remove updates for the specified rows from the queue. */\n _removeFromStickyColumnReplayQueue(rows) {\n const rowsSet = new Set(rows);\n for (const update of this._updatedStickyColumnsParamsToReplay) {\n update.rows = update.rows.filter(row => !rowsSet.has(row));\n }\n this._updatedStickyColumnsParamsToReplay = this._updatedStickyColumnsParamsToReplay.filter(update => !!update.rows.length);\n }\n /** Update _elemSizeCache with the observed sizes. */\n _updateCachedSizes(entries) {\n let needsColumnUpdate = false;\n for (const entry of entries) {\n const newEntry = entry.borderBoxSize?.length ? {\n width: entry.borderBoxSize[0].inlineSize,\n height: entry.borderBoxSize[0].blockSize\n } : {\n width: entry.contentRect.width,\n height: entry.contentRect.height\n };\n if (newEntry.width !== this._elemSizeCache.get(entry.target)?.width && isCell(entry.target)) {\n needsColumnUpdate = true;\n }\n this._elemSizeCache.set(entry.target, newEntry);\n }\n if (needsColumnUpdate && this._updatedStickyColumnsParamsToReplay.length) {\n if (this._stickyColumnsReplayTimeout) {\n clearTimeout(this._stickyColumnsReplayTimeout);\n }\n this._stickyColumnsReplayTimeout = setTimeout(() => {\n if (this._destroyed) {\n return;\n }\n for (const update of this._updatedStickyColumnsParamsToReplay) {\n this.updateStickyColumns(update.rows, update.stickyStartStates, update.stickyEndStates, true, false);\n }\n this._updatedStickyColumnsParamsToReplay = [];\n this._stickyColumnsReplayTimeout = null;\n }, 0);\n }\n }\n /**\n * Invoke afterNextRender with the table's injector, falling back to CoalescedStyleScheduler\n * if the injector was not provided.\n */\n _afterNextRender(spec) {\n if (this._tableInjector) {\n afterNextRender(spec, {\n injector: this._tableInjector\n });\n } else {\n this._coalescedStyleScheduler.schedule(() => {\n spec.earlyRead?.();\n spec.write();\n });\n }\n }\n}\nfunction isCell(element) {\n return ['cdk-cell', 'cdk-header-cell', 'cdk-footer-cell'].some(klass => element.classList.contains(klass));\n}\n\n/**\n * Returns an error to be thrown when attempting to find an nonexistent column.\n * @param id Id whose lookup failed.\n * @docs-private\n */\nfunction getTableUnknownColumnError(id) {\n return Error(`Could not find column with id \"${id}\".`);\n}\n/**\n * Returns an error to be thrown when two column definitions have the same name.\n * @docs-private\n */\nfunction getTableDuplicateColumnNameError(name) {\n return Error(`Duplicate column definition name provided: \"${name}\".`);\n}\n/**\n * Returns an error to be thrown when there are multiple rows that are missing a when function.\n * @docs-private\n */\nfunction getTableMultipleDefaultRowDefsError() {\n return Error(`There can only be one default row without a when predicate function.`);\n}\n/**\n * Returns an error to be thrown when there are no matching row defs for a particular set of data.\n * @docs-private\n */\nfunction getTableMissingMatchingRowDefError(data) {\n return Error(`Could not find a matching row definition for the` + `provided row data: ${JSON.stringify(data)}`);\n}\n/**\n * Returns an error to be thrown when there is no row definitions present in the content.\n * @docs-private\n */\nfunction getTableMissingRowDefsError() {\n return Error('Missing definitions for header, footer, and row; ' + 'cannot determine which columns should be rendered.');\n}\n/**\n * Returns an error to be thrown when the data source does not match the compatible types.\n * @docs-private\n */\nfunction getTableUnknownDataSourceError() {\n return Error(`Provided data source did not match an array, Observable, or DataSource`);\n}\n/**\n * Returns an error to be thrown when the text column cannot find a parent table to inject.\n * @docs-private\n */\nfunction getTableTextColumnMissingParentTableError() {\n return Error(`Text column could not find a parent table for registration.`);\n}\n/**\n * Returns an error to be thrown when a table text column doesn't have a name.\n * @docs-private\n */\nfunction getTableTextColumnMissingNameError() {\n return Error(`Table text column must have a name.`);\n}\n\n/** The injection token used to specify the StickyPositioningListener. */\nconst STICKY_POSITIONING_LISTENER = /*#__PURE__*/new InjectionToken('CDK_SPL');\n\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nlet CdkRecycleRows = /*#__PURE__*/(() => {\n class CdkRecycleRows {\n static ɵfac = function CdkRecycleRows_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkRecycleRows)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkRecycleRows,\n selectors: [[\"cdk-table\", \"recycleRows\", \"\"], [\"table\", \"cdk-table\", \"\", \"recycleRows\", \"\"]],\n features: [i0.ɵɵProvidersFeature([{\n provide: _VIEW_REPEATER_STRATEGY,\n useClass: _RecycleViewRepeaterStrategy\n }])]\n });\n }\n return CdkRecycleRows;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\nlet DataRowOutlet = /*#__PURE__*/(() => {\n class DataRowOutlet {\n viewContainer = inject(ViewContainerRef);\n elementRef = inject(ElementRef);\n constructor() {\n const table = inject(CDK_TABLE);\n table._rowOutlet = this;\n table._outletAssigned();\n }\n static ɵfac = function DataRowOutlet_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataRowOutlet)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataRowOutlet,\n selectors: [[\"\", \"rowOutlet\", \"\"]]\n });\n }\n return DataRowOutlet;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the header.\n * @docs-private\n */\nlet HeaderRowOutlet = /*#__PURE__*/(() => {\n class HeaderRowOutlet {\n viewContainer = inject(ViewContainerRef);\n elementRef = inject(ElementRef);\n constructor() {\n const table = inject(CDK_TABLE);\n table._headerRowOutlet = this;\n table._outletAssigned();\n }\n static ɵfac = function HeaderRowOutlet_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HeaderRowOutlet)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: HeaderRowOutlet,\n selectors: [[\"\", \"headerRowOutlet\", \"\"]]\n });\n }\n return HeaderRowOutlet;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the footer.\n * @docs-private\n */\nlet FooterRowOutlet = /*#__PURE__*/(() => {\n class FooterRowOutlet {\n viewContainer = inject(ViewContainerRef);\n elementRef = inject(ElementRef);\n constructor() {\n const table = inject(CDK_TABLE);\n table._footerRowOutlet = this;\n table._outletAssigned();\n }\n static ɵfac = function FooterRowOutlet_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FooterRowOutlet)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FooterRowOutlet,\n selectors: [[\"\", \"footerRowOutlet\", \"\"]]\n });\n }\n return FooterRowOutlet;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Provides a handle for the table to grab the view\n * container's ng-container to insert the no data row.\n * @docs-private\n */\nlet NoDataRowOutlet = /*#__PURE__*/(() => {\n class NoDataRowOutlet {\n viewContainer = inject(ViewContainerRef);\n elementRef = inject(ElementRef);\n constructor() {\n const table = inject(CDK_TABLE);\n table._noDataRowOutlet = this;\n table._outletAssigned();\n }\n static ɵfac = function NoDataRowOutlet_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NoDataRowOutlet)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NoDataRowOutlet,\n selectors: [[\"\", \"noDataRowOutlet\", \"\"]]\n });\n }\n return NoDataRowOutlet;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * The table template that can be used by the mat-table. Should not be used outside of the\n * material library.\n * @docs-private\n */\nconst CDK_TABLE_TEMPLATE =\n// Note that according to MDN, the `caption` element has to be projected as the **first**\n// element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n`\n \n \n\n \n @if (_isServer) {\n \n }\n\n @if (_isNativeHtmlTable) {\n \n \n \n \n \n \n \n \n \n \n } @else {\n \n \n \n \n }\n`;\n/**\n * A data table that can render a header row, data rows, and a footer row.\n * Uses the dataSource input to determine the data to be rendered. The data can be provided either\n * as a data array, an Observable stream that emits the data array to render, or a DataSource with a\n * connect function that will return an Observable stream that emits the data array to render.\n */\nlet CdkTable = /*#__PURE__*/(() => {\n class CdkTable {\n _differs = inject(IterableDiffers);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _elementRef = inject(ElementRef);\n _dir = inject(Directionality, {\n optional: true\n });\n _platform = inject(Platform);\n _viewRepeater = inject(_VIEW_REPEATER_STRATEGY);\n _coalescedStyleScheduler = inject(_COALESCED_STYLE_SCHEDULER);\n _viewportRuler = inject(ViewportRuler);\n _stickyPositioningListener = inject(STICKY_POSITIONING_LISTENER, {\n optional: true,\n skipSelf: true\n });\n _document = inject(DOCUMENT);\n /** Latest data provided by the data source. */\n _data;\n /** Subject that emits when the component has been destroyed. */\n _onDestroy = new Subject();\n /** List of the rendered rows as identified by their `RenderRow` object. */\n _renderRows;\n /** Subscription that listens for the data provided by the data source. */\n _renderChangeSubscription;\n /**\n * Map of all the user's defined columns (header, data, and footer cell template) identified by\n * name. Collection populated by the column definitions gathered by `ContentChildren` as well as\n * any custom column definitions added to `_customColumnDefs`.\n */\n _columnDefsByName = new Map();\n /**\n * Set of all row definitions that can be used by this table. Populated by the rows gathered by\n * using `ContentChildren` as well as any custom row definitions added to `_customRowDefs`.\n */\n _rowDefs;\n /**\n * Set of all header row definitions that can be used by this table. Populated by the rows\n * gathered by using `ContentChildren` as well as any custom row definitions added to\n * `_customHeaderRowDefs`.\n */\n _headerRowDefs;\n /**\n * Set of all row definitions that can be used by this table. Populated by the rows gathered by\n * using `ContentChildren` as well as any custom row definitions added to\n * `_customFooterRowDefs`.\n */\n _footerRowDefs;\n /** Differ used to find the changes in the data provided by the data source. */\n _dataDiffer;\n /** Stores the row definition that does not have a when predicate. */\n _defaultRowDef;\n /**\n * Column definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * column definitions as *its* content child.\n */\n _customColumnDefs = new Set();\n /**\n * Data row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in data rows as *its* content child.\n */\n _customRowDefs = new Set();\n /**\n * Header row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in header rows as *its* content child.\n */\n _customHeaderRowDefs = new Set();\n /**\n * Footer row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has a\n * built-in footer row as *its* content child.\n */\n _customFooterRowDefs = new Set();\n /** No data row that was defined outside of the direct content children of the table. */\n _customNoDataRow;\n /**\n * Whether the header row definition has been changed. Triggers an update to the header row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n _headerRowDefChanged = true;\n /**\n * Whether the footer row definition has been changed. Triggers an update to the footer row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n _footerRowDefChanged = true;\n /**\n * Whether the sticky column styles need to be updated. Set to `true` when the visible columns\n * change.\n */\n _stickyColumnStylesNeedReset = true;\n /**\n * Whether the sticky styler should recalculate cell widths when applying sticky styles. If\n * `false`, cached values will be used instead. This is only applicable to tables with\n * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated.\n */\n _forceRecalculateCellWidths = true;\n /**\n * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing\n * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with\n * the cached `RenderRow` objects when possible, the row identity is preserved when the data\n * and row template matches, which allows the `IterableDiffer` to check rows by reference\n * and understand which rows are added/moved/removed.\n *\n * Implemented as a map of maps where the first key is the `data: T` object and the second is the\n * `CdkRowDef` object. With the two keys, the cache points to a `RenderRow` object that\n * contains an array of created pairs. The array is necessary to handle cases where the data\n * array contains multiple duplicate data objects and each instantiated `RenderRow` must be\n * stored.\n */\n _cachedRenderRowsMap = new Map();\n /** Whether the table is applied to a native `
`. */\n _isNativeHtmlTable;\n /**\n * Utility class that is responsible for applying the appropriate sticky positioning styles to\n * the table's rows and cells.\n */\n _stickyStyler;\n /**\n * CSS class added to any row or cell that has sticky positioning applied. May be overridden by\n * table subclasses.\n */\n stickyCssClass = 'cdk-table-sticky';\n /**\n * Whether to manually add position: sticky to all sticky cell elements. Not needed if\n * the position is set in a selector associated with the value of stickyCssClass. May be\n * overridden by table subclasses\n */\n needsPositionStickyOnElement = true;\n /** Whether the component is being rendered on the server. */\n _isServer;\n /** Whether the no data row is currently showing anything. */\n _isShowingNoDataRow = false;\n /** Whether the table has rendered out all the outlets for the first time. */\n _hasAllOutlets = false;\n /** Whether the table is done initializing. */\n _hasInitialized = false;\n /** Aria role to apply to the table's cells based on the table's own role. */\n _getCellRole() {\n // Perform this lazily in case the table's role was updated by a directive after construction.\n if (this._cellRoleInternal === undefined) {\n // Note that we set `role=\"cell\"` even on native `td` elements,\n // because some browsers seem to require it. See #29784.\n const tableRole = this._elementRef.nativeElement.getAttribute('role');\n return tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';\n }\n return this._cellRoleInternal;\n }\n _cellRoleInternal = undefined;\n /**\n * Tracking function that will be used to check the differences in data changes. Used similarly\n * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data\n * relative to the function to know if a row should be added/removed/moved.\n * Accepts a function that takes two parameters, `index` and `item`.\n */\n get trackBy() {\n return this._trackByFn;\n }\n set trackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._trackByFn = fn;\n }\n _trackByFn;\n /**\n * The table's source of data, which can be provided in three ways (in order of complexity):\n * - Simple data array (each object represents one table row)\n * - Stream that emits a data array each time the array changes\n * - `DataSource` object that implements the connect/disconnect interface.\n *\n * If a data array is provided, the table must be notified when the array's objects are\n * added, removed, or moved. This can be done by calling the `renderRows()` function which will\n * render the diff since the last table render. If the data array reference is changed, the table\n * will automatically trigger an update to the rows.\n *\n * When providing an Observable stream, the table will trigger an update automatically when the\n * stream emits a new array of data.\n *\n * Finally, when providing a `DataSource` object, the table will use the Observable stream\n * provided by the connect function and trigger updates when that stream emits new data array\n * values. During the table's ngOnDestroy or when the data source is removed from the table, the\n * table will call the DataSource's `disconnect` function (may be useful for cleaning up any\n * subscriptions registered during the connect process).\n */\n get dataSource() {\n return this._dataSource;\n }\n set dataSource(dataSource) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n _dataSource;\n /**\n * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'\n * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each\n * dataobject will render the first row that evaluates its when predicate to true, in the order\n * defined in the table, or otherwise the default row which does not have a when predicate.\n */\n get multiTemplateDataRows() {\n return this._multiTemplateDataRows;\n }\n set multiTemplateDataRows(value) {\n this._multiTemplateDataRows = value;\n // In Ivy if this value is set via a static attribute (e.g.
),\n // this setter will be invoked before the row outlet has been defined hence the null check.\n if (this._rowOutlet && this._rowOutlet.viewContainer.length) {\n this._forceRenderDataRows();\n this.updateStickyColumnStyles();\n }\n }\n _multiTemplateDataRows = false;\n /**\n * Whether to use a fixed table layout. Enabling this option will enforce consistent column widths\n * and optimize rendering sticky styles for native tables. No-op for flex tables.\n */\n get fixedLayout() {\n return this._fixedLayout;\n }\n set fixedLayout(value) {\n this._fixedLayout = value;\n // Toggling `fixedLayout` may change column widths. Sticky column styles should be recalculated.\n this._forceRecalculateCellWidths = true;\n this._stickyColumnStylesNeedReset = true;\n }\n _fixedLayout = false;\n /**\n * Emits when the table completes rendering a set of data rows based on the latest data from the\n * data source, even if the set of rows is empty.\n */\n contentChanged = new EventEmitter();\n // TODO(andrewseguin): Remove max value as the end index\n // and instead calculate the view on init and scroll.\n /**\n * Stream containing the latest information on what rows are being displayed on screen.\n * Can be used by the data source to as a heuristic of what data should be provided.\n *\n * @docs-private\n */\n viewChange = new BehaviorSubject({\n start: 0,\n end: Number.MAX_VALUE\n });\n // Outlets in the table's template where the header, data rows, and footer will be inserted.\n _rowOutlet;\n _headerRowOutlet;\n _footerRowOutlet;\n _noDataRowOutlet;\n /**\n * The column definitions provided by the user that contain what the header, data, and footer\n * cells should render for each column.\n */\n _contentColumnDefs;\n /** Set of data row definitions that were provided to the table as content children. */\n _contentRowDefs;\n /** Set of header row definitions that were provided to the table as content children. */\n _contentHeaderRowDefs;\n /** Set of footer row definitions that were provided to the table as content children. */\n _contentFooterRowDefs;\n /** Row definition that will only be rendered if there's no data in the table. */\n _noDataRow;\n _injector = inject(Injector);\n constructor() {\n const role = inject(new HostAttributeToken('role'), {\n optional: true\n });\n if (!role) {\n this._elementRef.nativeElement.setAttribute('role', 'table');\n }\n this._isServer = !this._platform.isBrowser;\n this._isNativeHtmlTable = this._elementRef.nativeElement.nodeName === 'TABLE';\n }\n ngOnInit() {\n this._setupStickyStyler();\n // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If\n // the user has provided a custom trackBy, return the result of that function as evaluated\n // with the values of the `RenderRow`'s data and index.\n this._dataDiffer = this._differs.find([]).create((_i, dataRow) => {\n return this.trackBy ? this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;\n });\n this._viewportRuler.change().pipe(takeUntil(this._onDestroy)).subscribe(() => {\n this._forceRecalculateCellWidths = true;\n });\n }\n ngAfterContentInit() {\n this._hasInitialized = true;\n }\n ngAfterContentChecked() {\n // Only start re-rendering in `ngAfterContentChecked` after the first render.\n if (this._canRender()) {\n this._render();\n }\n }\n ngOnDestroy() {\n this._stickyStyler?.destroy();\n [this._rowOutlet?.viewContainer, this._headerRowOutlet?.viewContainer, this._footerRowOutlet?.viewContainer, this._cachedRenderRowsMap, this._customColumnDefs, this._customRowDefs, this._customHeaderRowDefs, this._customFooterRowDefs, this._columnDefsByName].forEach(def => {\n def?.clear();\n });\n this._headerRowDefs = [];\n this._footerRowDefs = [];\n this._defaultRowDef = null;\n this._onDestroy.next();\n this._onDestroy.complete();\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n }\n /**\n * Renders rows based on the table's latest set of data, which was either provided directly as an\n * input or retrieved through an Observable stream (directly or from a DataSource).\n * Checks for differences in the data since the last diff to perform only the necessary\n * changes (add/remove/move rows).\n *\n * If the table's data source is a DataSource or Observable, this will be invoked automatically\n * each time the provided Observable stream emits a new data array. Otherwise if your data is\n * an array, this function will need to be called to render any changes.\n */\n renderRows() {\n this._renderRows = this._getAllRenderRows();\n const changes = this._dataDiffer.diff(this._renderRows);\n if (!changes) {\n this._updateNoDataRow();\n this.contentChanged.next();\n return;\n }\n const viewContainer = this._rowOutlet.viewContainer;\n this._viewRepeater.applyChanges(changes, viewContainer, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record.item, currentIndex), record => record.item.data, change => {\n if (change.operation === _ViewRepeaterOperation.INSERTED && change.context) {\n this._renderCellTemplateForItem(change.record.item.rowDef, change.context);\n }\n });\n // Update the meta context of a row's context data (index, count, first, last, ...)\n this._updateRowIndexContext();\n // Update rows that did not get added/removed/moved but may have had their identity changed,\n // e.g. if trackBy matched data on some property but the actual data reference changed.\n changes.forEachIdentityChange(record => {\n const rowView = viewContainer.get(record.currentIndex);\n rowView.context.$implicit = record.item.data;\n });\n this._updateNoDataRow();\n this.contentChanged.next();\n this.updateStickyColumnStyles();\n }\n /** Adds a column definition that was not included as part of the content children. */\n addColumnDef(columnDef) {\n this._customColumnDefs.add(columnDef);\n }\n /** Removes a column definition that was not included as part of the content children. */\n removeColumnDef(columnDef) {\n this._customColumnDefs.delete(columnDef);\n }\n /** Adds a row definition that was not included as part of the content children. */\n addRowDef(rowDef) {\n this._customRowDefs.add(rowDef);\n }\n /** Removes a row definition that was not included as part of the content children. */\n removeRowDef(rowDef) {\n this._customRowDefs.delete(rowDef);\n }\n /** Adds a header row definition that was not included as part of the content children. */\n addHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.add(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Removes a header row definition that was not included as part of the content children. */\n removeHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.delete(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Adds a footer row definition that was not included as part of the content children. */\n addFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.add(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Removes a footer row definition that was not included as part of the content children. */\n removeFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.delete(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Sets a no data row definition that was not included as a part of the content children. */\n setNoDataRow(noDataRow) {\n this._customNoDataRow = noDataRow;\n }\n /**\n * Updates the header sticky styles. First resets all applied styles with respect to the cells\n * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is\n * automatically called when the header row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyHeaderRowStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n // Hide the thead element if there are no header rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n if (this._isNativeHtmlTable) {\n const thead = closestTableSection(this._headerRowOutlet, 'thead');\n if (thead) {\n thead.style.display = headerRows.length ? '' : 'none';\n }\n }\n const stickyStates = this._headerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(headerRows, ['top']);\n this._stickyStyler.stickRows(headerRows, stickyStates, 'top');\n // Reset the dirty state of the sticky input change since it has been used.\n this._headerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the footer sticky styles. First resets all applied styles with respect to the cells\n * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is\n * automatically called when the footer row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyFooterRowStyles() {\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n // Hide the tfoot element if there are no footer rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n if (this._isNativeHtmlTable) {\n const tfoot = closestTableSection(this._footerRowOutlet, 'tfoot');\n if (tfoot) {\n tfoot.style.display = footerRows.length ? '' : 'none';\n }\n }\n const stickyStates = this._footerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);\n this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');\n this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);\n // Reset the dirty state of the sticky input change since it has been used.\n this._footerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the column sticky styles. First resets all applied styles with respect to the cells\n * sticking to the left and right. Then sticky styles are added for the left and right according\n * to the column definitions for each cell in each row. This is automatically called when\n * the data source provides a new set of data or when a column definition changes its sticky\n * input. May be called manually for cases where the cell content changes outside of these events.\n */\n updateStickyColumnStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const dataRows = this._getRenderedRows(this._rowOutlet);\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n // For tables not using a fixed layout, the column widths may change when new rows are rendered.\n // In a table using a fixed layout, row content won't affect column width, so sticky styles\n // don't need to be cleared unless either the sticky column config changes or one of the row\n // defs change.\n if (this._isNativeHtmlTable && !this._fixedLayout || this._stickyColumnStylesNeedReset) {\n // Clear the left and right positioning from all columns in the table across all rows since\n // sticky columns span across all table sections (header, data, footer)\n this._stickyStyler.clearStickyPositioning([...headerRows, ...dataRows, ...footerRows], ['left', 'right']);\n this._stickyColumnStylesNeedReset = false;\n }\n // Update the sticky styles for each header row depending on the def's sticky state\n headerRows.forEach((headerRow, i) => {\n this._addStickyColumnStyles([headerRow], this._headerRowDefs[i]);\n });\n // Update the sticky styles for each data row depending on its def's sticky state\n this._rowDefs.forEach(rowDef => {\n // Collect all the rows rendered with this row definition.\n const rows = [];\n for (let i = 0; i < dataRows.length; i++) {\n if (this._renderRows[i].rowDef === rowDef) {\n rows.push(dataRows[i]);\n }\n }\n this._addStickyColumnStyles(rows, rowDef);\n });\n // Update the sticky styles for each footer row depending on the def's sticky state\n footerRows.forEach((footerRow, i) => {\n this._addStickyColumnStyles([footerRow], this._footerRowDefs[i]);\n });\n // Reset the dirty state of the sticky input change since it has been used.\n Array.from(this._columnDefsByName.values()).forEach(def => def.resetStickyChanged());\n }\n /** Invoked whenever an outlet is created and has been assigned to the table. */\n _outletAssigned() {\n // Trigger the first render once all outlets have been assigned. We do it this way, as\n // opposed to waiting for the next `ngAfterContentChecked`, because we don't know when\n // the next change detection will happen.\n // Also we can't use queries to resolve the outlets, because they're wrapped in a\n // conditional, so we have to rely on them being assigned via DI.\n if (!this._hasAllOutlets && this._rowOutlet && this._headerRowOutlet && this._footerRowOutlet && this._noDataRowOutlet) {\n this._hasAllOutlets = true;\n // In some setups this may fire before `ngAfterContentInit`\n // so we need a check here. See #28538.\n if (this._canRender()) {\n this._render();\n }\n }\n }\n /** Whether the table has all the information to start rendering. */\n _canRender() {\n return this._hasAllOutlets && this._hasInitialized;\n }\n /** Renders the table if its state has changed. */\n _render() {\n // Cache the row and column definitions gathered by ContentChildren and programmatic injection.\n this._cacheRowDefs();\n this._cacheColumnDefs();\n // Make sure that the user has at least added header, footer, or data row def.\n if (!this._headerRowDefs.length && !this._footerRowDefs.length && !this._rowDefs.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingRowDefsError();\n }\n // Render updates if the list of columns have been changed for the header, row, or footer defs.\n const columnsChanged = this._renderUpdatedColumns();\n const rowDefsChanged = columnsChanged || this._headerRowDefChanged || this._footerRowDefChanged;\n // Ensure sticky column styles are reset if set to `true` elsewhere.\n this._stickyColumnStylesNeedReset = this._stickyColumnStylesNeedReset || rowDefsChanged;\n this._forceRecalculateCellWidths = rowDefsChanged;\n // If the header row definition has been changed, trigger a render to the header row.\n if (this._headerRowDefChanged) {\n this._forceRenderHeaderRows();\n this._headerRowDefChanged = false;\n }\n // If the footer row definition has been changed, trigger a render to the footer row.\n if (this._footerRowDefChanged) {\n this._forceRenderFooterRows();\n this._footerRowDefChanged = false;\n }\n // If there is a data source and row definitions, connect to the data source unless a\n // connection has already been made.\n if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {\n this._observeRenderChanges();\n } else if (this._stickyColumnStylesNeedReset) {\n // In the above case, _observeRenderChanges will result in updateStickyColumnStyles being\n // called when it row data arrives. Otherwise, we need to call it proactively.\n this.updateStickyColumnStyles();\n }\n this._checkStickyStates();\n }\n /**\n * Get the list of RenderRow objects to render according to the current list of data and defined\n * row definitions. If the previous list already contained a particular pair, it should be reused\n * so that the differ equates their references.\n */\n _getAllRenderRows() {\n const renderRows = [];\n // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the\n // new cache while unused ones can be picked up by garbage collection.\n const prevCachedRenderRows = this._cachedRenderRowsMap;\n this._cachedRenderRowsMap = new Map();\n // For each data object, get the list of rows that should be rendered, represented by the\n // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.\n for (let i = 0; i < this._data.length; i++) {\n let data = this._data[i];\n const renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));\n if (!this._cachedRenderRowsMap.has(data)) {\n this._cachedRenderRowsMap.set(data, new WeakMap());\n }\n for (let j = 0; j < renderRowsForData.length; j++) {\n let renderRow = renderRowsForData[j];\n const cache = this._cachedRenderRowsMap.get(renderRow.data);\n if (cache.has(renderRow.rowDef)) {\n cache.get(renderRow.rowDef).push(renderRow);\n } else {\n cache.set(renderRow.rowDef, [renderRow]);\n }\n renderRows.push(renderRow);\n }\n }\n return renderRows;\n }\n /**\n * Gets a list of `RenderRow` for the provided data object and any `CdkRowDef` objects that\n * should be rendered for this data. Reuses the cached RenderRow objects if they match the same\n * `(T, CdkRowDef)` pair.\n */\n _getRenderRowsForData(data, dataIndex, cache) {\n const rowDefs = this._getRowDefs(data, dataIndex);\n return rowDefs.map(rowDef => {\n const cachedRenderRows = cache && cache.has(rowDef) ? cache.get(rowDef) : [];\n if (cachedRenderRows.length) {\n const dataRow = cachedRenderRows.shift();\n dataRow.dataIndex = dataIndex;\n return dataRow;\n } else {\n return {\n data,\n rowDef,\n dataIndex\n };\n }\n });\n }\n /** Update the map containing the content's column definitions. */\n _cacheColumnDefs() {\n this._columnDefsByName.clear();\n const columnDefs = mergeArrayAndSet(this._getOwnDefs(this._contentColumnDefs), this._customColumnDefs);\n columnDefs.forEach(columnDef => {\n if (this._columnDefsByName.has(columnDef.name) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableDuplicateColumnNameError(columnDef.name);\n }\n this._columnDefsByName.set(columnDef.name, columnDef);\n });\n }\n /** Update the list of all available row definitions that can be used. */\n _cacheRowDefs() {\n this._headerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentHeaderRowDefs), this._customHeaderRowDefs);\n this._footerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentFooterRowDefs), this._customFooterRowDefs);\n this._rowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentRowDefs), this._customRowDefs);\n // After all row definitions are determined, find the row definition to be considered default.\n const defaultRowDefs = this._rowDefs.filter(def => !def.when);\n if (!this.multiTemplateDataRows && defaultRowDefs.length > 1 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMultipleDefaultRowDefsError();\n }\n this._defaultRowDef = defaultRowDefs[0];\n }\n /**\n * Check if the header, data, or footer rows have changed what columns they want to display or\n * whether the sticky states have changed for the header or footer. If there is a diff, then\n * re-render that section.\n */\n _renderUpdatedColumns() {\n const columnsDiffReducer = (acc, def) => {\n // The differ should be run for every column, even if `acc` is already\n // true (see #29922)\n const diff = !!def.getColumnsDiff();\n return acc || diff;\n };\n // Force re-render data rows if the list of column definitions have changed.\n const dataColumnsChanged = this._rowDefs.reduce(columnsDiffReducer, false);\n if (dataColumnsChanged) {\n this._forceRenderDataRows();\n }\n // Force re-render header/footer rows if the list of column definitions have changed.\n const headerColumnsChanged = this._headerRowDefs.reduce(columnsDiffReducer, false);\n if (headerColumnsChanged) {\n this._forceRenderHeaderRows();\n }\n const footerColumnsChanged = this._footerRowDefs.reduce(columnsDiffReducer, false);\n if (footerColumnsChanged) {\n this._forceRenderFooterRows();\n }\n return dataColumnsChanged || headerColumnsChanged || footerColumnsChanged;\n }\n /**\n * Switch to the provided data source by resetting the data and unsubscribing from the current\n * render change subscription if one exists. If the data source is null, interpret this by\n * clearing the row outlet. Otherwise start listening for new data.\n */\n _switchDataSource(dataSource) {\n this._data = [];\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n // Stop listening for data from the previous data source.\n if (this._renderChangeSubscription) {\n this._renderChangeSubscription.unsubscribe();\n this._renderChangeSubscription = null;\n }\n if (!dataSource) {\n if (this._dataDiffer) {\n this._dataDiffer.diff([]);\n }\n if (this._rowOutlet) {\n this._rowOutlet.viewContainer.clear();\n }\n }\n this._dataSource = dataSource;\n }\n /** Set up a subscription for the data provided by the data source. */\n _observeRenderChanges() {\n // If no data source has been set, there is nothing to observe for changes.\n if (!this.dataSource) {\n return;\n }\n let dataStream;\n if (isDataSource(this.dataSource)) {\n dataStream = this.dataSource.connect(this);\n } else if (isObservable(this.dataSource)) {\n dataStream = this.dataSource;\n } else if (Array.isArray(this.dataSource)) {\n dataStream = of(this.dataSource);\n }\n if (dataStream === undefined && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownDataSourceError();\n }\n this._renderChangeSubscription = dataStream.pipe(takeUntil(this._onDestroy)).subscribe(data => {\n this._data = data || [];\n this.renderRows();\n });\n }\n /**\n * Clears any existing content in the header row outlet and creates a new embedded view\n * in the outlet using the header row definition.\n */\n _forceRenderHeaderRows() {\n // Clear the header row outlet if any content exists.\n if (this._headerRowOutlet.viewContainer.length > 0) {\n this._headerRowOutlet.viewContainer.clear();\n }\n this._headerRowDefs.forEach((def, i) => this._renderRow(this._headerRowOutlet, def, i));\n this.updateStickyHeaderRowStyles();\n }\n /**\n * Clears any existing content in the footer row outlet and creates a new embedded view\n * in the outlet using the footer row definition.\n */\n _forceRenderFooterRows() {\n // Clear the footer row outlet if any content exists.\n if (this._footerRowOutlet.viewContainer.length > 0) {\n this._footerRowOutlet.viewContainer.clear();\n }\n this._footerRowDefs.forEach((def, i) => this._renderRow(this._footerRowOutlet, def, i));\n this.updateStickyFooterRowStyles();\n }\n /** Adds the sticky column styles for the rows according to the columns' stick states. */\n _addStickyColumnStyles(rows, rowDef) {\n const columnDefs = Array.from(rowDef?.columns || []).map(columnName => {\n const columnDef = this._columnDefsByName.get(columnName);\n if (!columnDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnName);\n }\n return columnDef;\n });\n const stickyStartStates = columnDefs.map(columnDef => columnDef.sticky);\n const stickyEndStates = columnDefs.map(columnDef => columnDef.stickyEnd);\n this._stickyStyler.updateStickyColumns(rows, stickyStartStates, stickyEndStates, !this._fixedLayout || this._forceRecalculateCellWidths);\n }\n /** Gets the list of rows that have been rendered in the row outlet. */\n _getRenderedRows(rowOutlet) {\n const renderedRows = [];\n for (let i = 0; i < rowOutlet.viewContainer.length; i++) {\n const viewRef = rowOutlet.viewContainer.get(i);\n renderedRows.push(viewRef.rootNodes[0]);\n }\n return renderedRows;\n }\n /**\n * Get the matching row definitions that should be used for this row data. If there is only\n * one row definition, it is returned. Otherwise, find the row definitions that has a when\n * predicate that returns true with the data. If none return true, return the default row\n * definition.\n */\n _getRowDefs(data, dataIndex) {\n if (this._rowDefs.length == 1) {\n return [this._rowDefs[0]];\n }\n let rowDefs = [];\n if (this.multiTemplateDataRows) {\n rowDefs = this._rowDefs.filter(def => !def.when || def.when(dataIndex, data));\n } else {\n let rowDef = this._rowDefs.find(def => def.when && def.when(dataIndex, data)) || this._defaultRowDef;\n if (rowDef) {\n rowDefs.push(rowDef);\n }\n }\n if (!rowDefs.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingMatchingRowDefError(data);\n }\n return rowDefs;\n }\n _getEmbeddedViewArgs(renderRow, index) {\n const rowDef = renderRow.rowDef;\n const context = {\n $implicit: renderRow.data\n };\n return {\n templateRef: rowDef.template,\n context,\n index\n };\n }\n /**\n * Creates a new row template in the outlet and fills it with the set of cell templates.\n * Optionally takes a context to provide to the row and cells, as well as an optional index\n * of where to place the new row template in the outlet.\n */\n _renderRow(outlet, rowDef, index, context = {}) {\n // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView\n const view = outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);\n this._renderCellTemplateForItem(rowDef, context);\n return view;\n }\n _renderCellTemplateForItem(rowDef, context) {\n for (let cellTemplate of this._getCellTemplates(rowDef)) {\n if (CdkCellOutlet.mostRecentCellOutlet) {\n CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Updates the index-related context for each row to reflect any changes in the index of the rows,\n * e.g. first/last/even/odd.\n */\n _updateRowIndexContext() {\n const viewContainer = this._rowOutlet.viewContainer;\n for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {\n const viewRef = viewContainer.get(renderIndex);\n const context = viewRef.context;\n context.count = count;\n context.first = renderIndex === 0;\n context.last = renderIndex === count - 1;\n context.even = renderIndex % 2 === 0;\n context.odd = !context.even;\n if (this.multiTemplateDataRows) {\n context.dataIndex = this._renderRows[renderIndex].dataIndex;\n context.renderIndex = renderIndex;\n } else {\n context.index = this._renderRows[renderIndex].dataIndex;\n }\n }\n }\n /** Gets the column definitions for the provided row def. */\n _getCellTemplates(rowDef) {\n if (!rowDef || !rowDef.columns) {\n return [];\n }\n return Array.from(rowDef.columns, columnId => {\n const column = this._columnDefsByName.get(columnId);\n if (!column && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnId);\n }\n return rowDef.extractCellTemplate(column);\n });\n }\n /**\n * Forces a re-render of the data rows. Should be called in cases where there has been an input\n * change that affects the evaluation of which rows should be rendered, e.g. toggling\n * `multiTemplateDataRows` or adding/removing row definitions.\n */\n _forceRenderDataRows() {\n this._dataDiffer.diff([]);\n this._rowOutlet.viewContainer.clear();\n this.renderRows();\n }\n /**\n * Checks if there has been a change in sticky states since last check and applies the correct\n * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once\n * during a change detection and after the inputs are settled (after content check).\n */\n _checkStickyStates() {\n const stickyCheckReducer = (acc, d) => {\n return acc || d.hasStickyChanged();\n };\n // Note that the check needs to occur for every definition since it notifies the definition\n // that it can reset its dirty state. Using another operator like `some` may short-circuit\n // remaining definitions and leave them in an unchecked state.\n if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyHeaderRowStyles();\n }\n if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyFooterRowStyles();\n }\n if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {\n this._stickyColumnStylesNeedReset = true;\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Creates the sticky styler that will be used for sticky rows and columns. Listens\n * for directionality changes and provides the latest direction to the styler. Re-applies column\n * stickiness when directionality changes.\n */\n _setupStickyStyler() {\n const direction = this._dir ? this._dir.value : 'ltr';\n this._stickyStyler = new StickyStyler(this._isNativeHtmlTable, this.stickyCssClass, direction, this._coalescedStyleScheduler, this._platform.isBrowser, this.needsPositionStickyOnElement, this._stickyPositioningListener, this._injector);\n (this._dir ? this._dir.change : of()).pipe(takeUntil(this._onDestroy)).subscribe(value => {\n this._stickyStyler.direction = value;\n this.updateStickyColumnStyles();\n });\n }\n /** Filters definitions that belong to this table from a QueryList. */\n _getOwnDefs(items) {\n return items.filter(item => !item._table || item._table === this);\n }\n /** Creates or removes the no data row, depending on whether any data is being shown. */\n _updateNoDataRow() {\n const noDataRow = this._customNoDataRow || this._noDataRow;\n if (!noDataRow) {\n return;\n }\n const shouldShow = this._rowOutlet.viewContainer.length === 0;\n if (shouldShow === this._isShowingNoDataRow) {\n return;\n }\n const container = this._noDataRowOutlet.viewContainer;\n if (shouldShow) {\n const view = container.createEmbeddedView(noDataRow.templateRef);\n const rootNode = view.rootNodes[0];\n // Only add the attributes if we have a single root node since it's hard\n // to figure out which one to add it to when there are multiple.\n if (view.rootNodes.length === 1 && rootNode?.nodeType === this._document.ELEMENT_NODE) {\n rootNode.setAttribute('role', 'row');\n rootNode.classList.add(noDataRow._contentClassName);\n }\n } else {\n container.clear();\n }\n this._isShowingNoDataRow = shouldShow;\n this._changeDetectorRef.markForCheck();\n }\n static ɵfac = function CdkTable_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkTable)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CdkTable,\n selectors: [[\"cdk-table\"], [\"table\", \"cdk-table\", \"\"]],\n contentQueries: function CdkTable_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, CdkNoDataRow, 5);\n i0.ɵɵcontentQuery(dirIndex, CdkColumnDef, 5);\n i0.ɵɵcontentQuery(dirIndex, CdkRowDef, 5);\n i0.ɵɵcontentQuery(dirIndex, CdkHeaderRowDef, 5);\n i0.ɵɵcontentQuery(dirIndex, CdkFooterRowDef, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._noDataRow = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._contentColumnDefs = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._contentRowDefs = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._contentHeaderRowDefs = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._contentFooterRowDefs = _t);\n }\n },\n hostAttrs: [1, \"cdk-table\"],\n hostVars: 2,\n hostBindings: function CdkTable_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"cdk-table-fixed-layout\", ctx.fixedLayout);\n }\n },\n inputs: {\n trackBy: \"trackBy\",\n dataSource: \"dataSource\",\n multiTemplateDataRows: [2, \"multiTemplateDataRows\", \"multiTemplateDataRows\", booleanAttribute],\n fixedLayout: [2, \"fixedLayout\", \"fixedLayout\", booleanAttribute]\n },\n outputs: {\n contentChanged: \"contentChanged\"\n },\n exportAs: [\"cdkTable\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: CDK_TABLE,\n useExisting: CdkTable\n }, {\n provide: _VIEW_REPEATER_STRATEGY,\n useClass: _DisposeViewRepeaterStrategy\n }, {\n provide: _COALESCED_STYLE_SCHEDULER,\n useClass: _CoalescedStyleScheduler\n },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n {\n provide: STICKY_POSITIONING_LISTENER,\n useValue: null\n }])],\n ngContentSelectors: _c1,\n decls: 5,\n vars: 2,\n consts: [[\"role\", \"rowgroup\"], [\"headerRowOutlet\", \"\"], [\"rowOutlet\", \"\"], [\"noDataRowOutlet\", \"\"], [\"footerRowOutlet\", \"\"]],\n template: function CdkTable_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c0);\n i0.ɵɵprojection(0);\n i0.ɵɵprojection(1, 1);\n i0.ɵɵtemplate(2, CdkTable_Conditional_2_Template, 1, 0)(3, CdkTable_Conditional_3_Template, 7, 0)(4, CdkTable_Conditional_4_Template, 4, 0);\n }\n if (rf & 2) {\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx._isServer ? 2 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx._isNativeHtmlTable ? 3 : 4);\n }\n },\n dependencies: [HeaderRowOutlet, DataRowOutlet, NoDataRowOutlet, FooterRowOutlet],\n styles: [\".cdk-table-fixed-layout{table-layout:fixed}\"],\n encapsulation: 2\n });\n }\n return CdkTable;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Utility function that gets a merged list of the entries in an array and values of a Set. */\nfunction mergeArrayAndSet(array, set) {\n return array.concat(Array.from(set));\n}\n/**\n * Finds the closest table section to an outlet. We can't use `HTMLElement.closest` for this,\n * because the node representing the outlet is a comment.\n */\nfunction closestTableSection(outlet, section) {\n const uppercaseSection = section.toUpperCase();\n let current = outlet.viewContainer.element.nativeElement;\n while (current) {\n // 1 is an element node.\n const nodeName = current.nodeType === 1 ? current.nodeName : null;\n if (nodeName === uppercaseSection) {\n return current;\n } else if (nodeName === 'TABLE') {\n // Stop traversing past the `table` node.\n break;\n }\n current = current.parentNode;\n }\n return null;\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 (`
`).\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 */\nlet CdkTextColumn = /*#__PURE__*/(() => {\n class CdkTextColumn {\n _table = inject(CdkTable, {\n optional: true\n });\n _options = inject(TEXT_COLUMN_OPTIONS, {\n optional: true\n });\n /** Column name that should be used to reference this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncColumnDefName();\n }\n _name;\n /**\n * Text label that should be used for the column header. If this property is not\n * set, the header text will default to the column name with its first letter capitalized.\n */\n headerText;\n /**\n * Accessor function to retrieve the data rendered for each cell. If this\n * property is not set, the data cells will render the value found in the data's property matching\n * the column's name. For example, if the column is named `id`, then the rendered value will be\n * value defined by the data's `id` property.\n */\n dataAccessor;\n /** Alignment of the cell values. */\n justify = 'start';\n /** @docs-private */\n columnDef;\n /**\n * The column cell is provided to the column during `ngOnInit` with a static query.\n * Normally, this will be retrieved by the column using `ContentChild`, but that assumes the\n * column definition was provided in the same view as the table, which is not the case with this\n * component.\n * @docs-private\n */\n cell;\n /**\n * The column headerCell is provided to the column during `ngOnInit` with a static query.\n * Normally, this will be retrieved by the column using `ContentChild`, but that assumes the\n * column definition was provided in the same view as the table, which is not the case with this\n * component.\n * @docs-private\n */\n headerCell;\n constructor() {\n this._options = this._options || {};\n }\n ngOnInit() {\n this._syncColumnDefName();\n if (this.headerText === undefined) {\n this.headerText = this._createDefaultHeaderText();\n }\n if (!this.dataAccessor) {\n this.dataAccessor = this._options.defaultDataAccessor || ((data, name) => data[name]);\n }\n if (this._table) {\n // Provide the cell and headerCell directly to the table with the static `ViewChild` query,\n // since the columnDef will not pick up its content by the time the table finishes checking\n // its content and initializing the rows.\n this.columnDef.cell = this.cell;\n this.columnDef.headerCell = this.headerCell;\n this._table.addColumnDef(this.columnDef);\n } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getTableTextColumnMissingParentTableError();\n }\n }\n ngOnDestroy() {\n if (this._table) {\n this._table.removeColumnDef(this.columnDef);\n }\n }\n /**\n * Creates a default header text. Use the options' header text transformation function if one\n * has been provided. Otherwise simply capitalize the column name.\n */\n _createDefaultHeaderText() {\n const name = this.name;\n if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableTextColumnMissingNameError();\n }\n if (this._options && this._options.defaultHeaderTextTransform) {\n return this._options.defaultHeaderTextTransform(name);\n }\n return name[0].toUpperCase() + name.slice(1);\n }\n /** Synchronizes the column definition name with the text column name. */\n _syncColumnDefName() {\n if (this.columnDef) {\n this.columnDef.name = this.name;\n }\n }\n static ɵfac = function CdkTextColumn_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkTextColumn)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CdkTextColumn,\n selectors: [[\"cdk-text-column\"]],\n viewQuery: function CdkTextColumn_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(CdkColumnDef, 7);\n i0.ɵɵviewQuery(CdkCellDef, 7);\n i0.ɵɵviewQuery(CdkHeaderCellDef, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columnDef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cell = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerCell = _t.first);\n }\n },\n inputs: {\n name: \"name\",\n headerText: \"headerText\",\n dataAccessor: \"dataAccessor\",\n justify: \"justify\"\n },\n decls: 3,\n vars: 0,\n consts: [[\"cdkColumnDef\", \"\"], [\"cdk-header-cell\", \"\", 3, \"text-align\", 4, \"cdkHeaderCellDef\"], [\"cdk-cell\", \"\", 3, \"text-align\", 4, \"cdkCellDef\"], [\"cdk-header-cell\", \"\"], [\"cdk-cell\", \"\"]],\n template: function CdkTextColumn_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0, 0);\n i0.ɵɵtemplate(1, CdkTextColumn_th_1_Template, 2, 3, \"th\", 1)(2, CdkTextColumn_td_2_Template, 2, 3, \"td\", 2);\n i0.ɵɵelementContainerEnd();\n }\n },\n dependencies: [CdkColumnDef, CdkHeaderCellDef, CdkHeaderCell, CdkCellDef, CdkCell],\n encapsulation: 2\n });\n }\n return CdkTextColumn;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst EXPORTED_DECLARATIONS = [CdkTable, CdkRowDef, CdkCellDef, CdkCellOutlet, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDef, CdkCell, CdkRow, CdkHeaderCell, CdkFooterCell, CdkHeaderRow, CdkHeaderRowDef, CdkFooterRow, CdkFooterRowDef, DataRowOutlet, HeaderRowOutlet, FooterRowOutlet, CdkTextColumn, CdkNoDataRow, CdkRecycleRows, NoDataRowOutlet];\nlet CdkTableModule = /*#__PURE__*/(() => {\n class CdkTableModule {\n static ɵfac = function CdkTableModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkTableModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CdkTableModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [ScrollingModule]\n });\n }\n return CdkTableModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Mixin to provide a directive with a function that checks if the sticky input has been\n * changed since the last time the function was called. Essentially adds a dirty-check to the\n * sticky value.\n * @docs-private\n * @deprecated Implement the `CanStick` interface instead.\n * @breaking-change 19.0.0\n */\nfunction mixinHasStickyInput(base) {\n return class extends base {\n /** Whether sticky positioning should be applied. */\n get sticky() {\n return this._sticky;\n }\n set sticky(v) {\n const prevValue = this._sticky;\n this._sticky = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._sticky;\n }\n _sticky = false;\n /** Whether the sticky input has changed since it was last checked. */\n _hasStickyChanged = false;\n /** Whether the sticky value has changed since this was last called. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this._hasStickyChanged = false;\n return hasStickyChanged;\n }\n /** Resets the dirty check for cases where the sticky state has been used without checking. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n constructor(...args) {\n super(...args);\n }\n };\n}\nexport { BaseCdkCell, BaseRowDef, CDK_ROW_TEMPLATE, CDK_TABLE, CDK_TABLE_TEMPLATE, CdkCell, CdkCellDef, CdkCellOutlet, CdkColumnDef, CdkFooterCell, CdkFooterCellDef, CdkFooterRow, CdkFooterRowDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRecycleRows, CdkRow, CdkRowDef, CdkTable, CdkTableModule, CdkTextColumn, DataRowOutlet, FooterRowOutlet, HeaderRowOutlet, NoDataRowOutlet, STICKY_DIRECTIONS, STICKY_POSITIONING_LISTENER, StickyStyler, TEXT_COLUMN_OPTIONS, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, _Schedule, mixinHasStickyInput };\n","import { Component, Input, ViewChild } from '@angular/core'\nimport { InstrumentAndPlanHelper } from '../instrument-and-plan-helper'\nimport { Dictionary } from '../filtering-search-component-base/filtering-search-types'\nimport { expandCollapse, openClose } from '../../animations/open-close-animations'\nimport { NgTemplateOutlet, CurrencyPipe } from '@angular/common'\nimport { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons'\nimport { CdkTableModule } from '@angular/cdk/table'\n\n@Component({\n animations: [\n openClose,\n expandCollapse,\n ],\n selector: 'plan-treatment-unclassified',\n templateUrl: './plan-treatment-unclassified.html',\n imports: [\n CdkTableModule,\n NgxBootstrapIconsModule,\n NgTemplateOutlet,\n CurrencyPipe,\n ]\n})\nexport class PlanTreatmentsUnclassifiedComponent extends InstrumentAndPlanHelper {\n\n @Input() plan_classes_unclassifieds: any\n @Input() situationID: string = ''\n @Input() colsDefn: string = \"col-lg-12 col-xl-6\"\n @Input() showMatches: boolean = false\n\n public isExpanded : Dictionary = {}\n\n}","@if (plan_classes_unclassifieds && plan_classes_unclassifieds.length) {\n
\n

\n PLAN TREATMENT - UNCLASSIFIED\n

\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n Class Name \n {{ class.class_name }}\n Allowed Claims \n \n Recovery\n \n \n @if (isExpanded[class.class_id]) {\n
\n
\n

{{ class.toggle }}

\n \n \n
\n
\n}\n
\n\n}\n\n\n\n @if ((exact + min + max).trim().length === 0) {\n\n N/A\n\n} @else {\n\n @if (exact.length > 0) {\n\n {{ exact | currency }}\n\n} @else {\n\n @if (min.length > 0 && max.length > 0) {\n\n {{ min | currency }} - {{ max | currency }}\n\n} @else {\n\n @if (min.length > 0) {\n\n >{{ min | currency }}\n} @else {\n\n @if (max.length > 0) {\n\n <{{ max | currency }}\n\n}\n\n}\n\n}\n\n}\n\n}\n \n\n @if ((exact + min + max).trim().length === 0) {\n\n N/A\n\n} @else {\n\n @if (exact.length > 0) {\n\n {{ exact }}%\n\n} @else {\n\n @if (min.length > 0 && max.length > 0) {\n\n {{ min }} - {{ max }}%\n\n} @else {\n\n @if (min.length > 0) {\n\n >{{ min }}%\n\n} @else {\n\n @if (max > 0) {\n\n <{{ max }}%\n\n}\n\n}\n\n}\n\n}\n\n}\n \n\n\n @if (class.toggle_treatments.length && treatmentColumnVisibility[class.class_id]) {\n
\n

\n TREATMENTS\n

\n \n \n \n \n \n @if (treatmentColumnVisibility[class.class_id]?.treatment_gift) {\n\n}\n @if (treatmentColumnVisibility[class.class_id]?.linked_instrument_id) {\n\n}\n @if (treatmentColumnVisibility[class.class_id]?.Other) {\n\n}\n @if (treatmentColumnVisibility[class.class_id]['received_dollar'] || treatmentColumnVisibility[class.class_id]['received_percent']) {\n\n}\n @if (treatmentColumnVisibility[class.class_id]['notes'] || treatmentColumnVisibility[class.class_id]['recovery_amount_other']) {\n\n}\n \n \n \n @for (treatmentrow of class.toggle_treatments; track treatmentrow) {\n\n @for (treatmentGroup of treatmentrow.groupedTreatments; track treatmentGroup; let claimIndex = $index) {\n\n @for (treatment of treatmentGroup; track treatment; let treatmentIndex = $index) {\n\n \n @if (claimIndex == 0 && treatmentIndex == 0) {\n\n}\n @if (treatmentIndex == 0) {\n\n}\n \n @if (treatmentColumnVisibility[class.class_id]?.linked_instrument_id) {\n\n}\n @if (treatmentColumnVisibility[class.class_id]?.Other) {\n\n}\n @if (treatmentColumnVisibility[class.class_id]['received_dollar'] || treatmentColumnVisibility[class.class_id]['received_percent']) {\n\n}\n @if (treatmentColumnVisibility[class.class_id]['notes'] || treatmentColumnVisibility[class.class_id]['recovery_amount_other']) {\n\n}\n \n\n}\n\n}\n\n}\n \n
Claim/InterestOption #Recovery ConsiderationPost-petition InstrumentCVRs/Trust Interest/Other Consideration!!%/$ ReceivedNotes
{{ treatmentrow.treatment_name }}{{ treatment.option_number }}{{treatment?.treatment_gift}} \n {{instrumentIDLookup[treatment.linked_instrument_id]}}\n \n \n @if (treatment.received_dollar > 0) {\n{{treatment.received_dollar | currency}}\n}\n @if (treatment.received_percent > 0) {\n{{treatment.received_percent}}%\n}\n
\n
\n}\n
\n\n @if (class.allowed_claims_individual.length) {\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Claim type \n {{claim.claim_type}}\n Pre-petition Instruments \n \n Allowed Claims \n \n
\n
\n}\n
\n","import { Component, Input } from '@angular/core'\nimport { InstrumentAndPlanHelper } from '../instrument-and-plan-helper'\nimport { Dictionary } from '../filtering-search-component-base/filtering-search-types'\nimport { expandCollapse, openClose } from '../../animations/open-close-animations'\nimport { CdkTableModule } from '@angular/cdk/table'\nimport { NgTemplateOutlet, CurrencyPipe } from '@angular/common'\nimport { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons'\n\n@Component({\n animations: [\n openClose,\n expandCollapse,\n ],\n selector: 'plan-treatment-classified',\n templateUrl: './plan-treatment-classified.html',\n imports: [\n NgxBootstrapIconsModule,\n NgTemplateOutlet,\n CdkTableModule,\n CurrencyPipe,\n ]\n})\nexport class PlanTreatmentsClassifiedComponent extends InstrumentAndPlanHelper {\n\n @Input() plan_classes_classified: any\n @Input() situationID: string = ''\n @Input() colsDefn: string = \"col-lg-12 col-xl-6\"\n @Input() showMatches: boolean = false\n\n public isExpanded : Dictionary = {}\n}","@if (plan_classes_classified && plan_classes_classified.length) {\n
\n

\n PLAN TREATMENT - CLASSIFIED\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n @for (aClass of plan_classes_classified; track aClass; let i = $index) {\n\n \n \n \n \n \n \n \n \n \n @if (isExpanded[aClass.class_id]) {\n \n \n \n }\n\n }\n \n
#NameStatusVotingAllowed ClaimsRecovery
\n \n {{aClass.class_number}}\n
{{aClass.class_name}}
\n
{{aClass.impaired_class}}{{aClass.voting_rights}}\n \n \n \n
\n
\n \n @if (aClass.toggle === 'Yes') {\n
\n

\n TOGGLE EVENT\n

\n \n \n @if (aClass.toggle_event_option.length) {\n \n \n \n \n }\n @if (aClass.toggle_event_options_notes.length > 10) {\n \n \n \n \n }\n \n
Toggle Event Option{{ aClass.toggle_event_option }}
Notes
\n
\n }\n \n @if (aClass.release_incentive?.length) {\n
\n

\n THIRD-PARTY RELEASE INCENTIVE\n

\n \n \n \n \n \n \n \n \n \n \n @for (incentive of aClass.release_incentive; track incentive) {\n \n \n \n \n \n \n }\n \n
ReleaseIncentiveFrom ClassNotes
{{ incentive.release_optin_optout }}{{ incentive.incentive }}\n
    \n @for (id of incentive.classes_from; track id) {\n
  • \n {{ classesLookup[id] }}\n
  • \n }\n
\n
\n
\n }\n @if (aClass.deficiency_claims?.length) {\n
\n

\n DEFICIENCY CLAIMS\n

\n @if (aClass.deficiency_claims?.length) {\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Event \n {{claim.classified_waiver}}\n Class \n
    \n @for (id of claim.classes; track id) {\n
  • \n {{ classesLookup[id] }}\n
  • \n }\n
\n
Party \n {{claim.party}}\n Notes \n
\n
\n }\n\n\n
\n }\n @if (aClass.ballot_result?.length) {\n
\n

\n BALLOT RESULTS\n

\n

\n Ballot Result: {{aClass.ballot_result}}\n

\n\n @if (aClass.ballot_results_tabulation?.length) {\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Debtors \n \n Vote Result \n {{result.vote_result}}\n Count Total \n {{result.total_count_number}}\n Count % \n {{result.total_count_percent}}\n $ Total \n {{result.total_dollar_number | currency}}\n % Total \n {{result.total_dollar_percent}}\n
\n }\n
\n }\n
\n @if (aClass.notes.length > 8) {\n\n

NOTES

\n
\n\n }\n
\n
\n}\n\n\n @if (class.allowed_claims_individual.length) {\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Claim type \n {{claim.claim_type}}\n Pre-petition Instruments \n \n Allowed Claims \n \n
\n
\n }\n
\n\n\n @if ((exact + min + max).trim().length === 0) {\n\n N/A\n\n } @else {\n\n @if (exact.length > 0) {\n\n {{ exact | currency }}\n\n } @else {\n\n @if (min.length > 0 && max.length > 0) {\n\n {{ min | currency }} - {{ max | currency }}\n\n } @else {\n\n @if (min.length > 0) {\n\n >{{ min | currency }}\n } @else {\n\n @if (max.length > 0) {\n\n <{{ max | currency }}\n\n }\n\n }\n\n }\n\n }\n\n }\n\n\n @if ((exact + min + max).trim().length === 0) {\n\n N/A\n\n } @else {\n\n @if (exact.length > 0) {\n\n {{ exact }}%\n\n } @else {\n\n @if (min.length > 0 && max.length > 0) {\n\n {{ min }} - {{ max }}%\n\n } @else {\n\n @if (min.length > 0) {\n\n >{{ min }}%\n\n } @else {\n\n @if (max > 0) {\n\n <{{ max }}%\n\n }\n\n }\n\n }\n\n }\n\n }\n\n\n\n @if (class.toggle_treatments.length && treatmentColumnVisibility[class.class_id]) {\n
\n

\n TREATMENTS\n

\n \n \n \n \n \n @if (treatmentColumnVisibility[class.class_id]?.treatment_gift) {\n \n }\n @if (treatmentColumnVisibility[class.class_id]?.linked_instrument_id) {\n \n }\n @if (treatmentColumnVisibility[class.class_id]?.Other) {\n \n }\n @if (treatmentColumnVisibility[class.class_id]['received_dollar'] || treatmentColumnVisibility[class.class_id]['received_percent']) {\n \n }\n @if (treatmentColumnVisibility[class.class_id]['notes'] || treatmentColumnVisibility[class.class_id]['recovery_amount_other']) {\n \n }\n \n \n \n @for (treatmentrow of class.toggle_treatments; track treatmentrow) {\n @for (treatmentGroup of treatmentrow.groupedTreatments; track treatmentGroup; let claimIndex = $index) {\n @for (treatment of treatmentGroup; track treatment; let treatmentIndex = $index) {\n \n @if (claimIndex == 0 && treatmentIndex == 0) {\n \n }\n @if (treatmentIndex == 0) {\n \n }\n \n @if (treatmentColumnVisibility[class.class_id]?.linked_instrument_id) {\n \n }\n @if (treatmentColumnVisibility[class.class_id]?.Other) {\n \n }\n @if (treatmentColumnVisibility[class.class_id]['received_dollar'] || treatmentColumnVisibility[class.class_id]['received_percent']) {\n \n }\n @if (treatmentColumnVisibility[class.class_id]['notes'] || treatmentColumnVisibility[class.class_id]['recovery_amount_other']) {\n \n }\n \n }\n }\n }\n \n
Claim/InterestOption #Recovery ConsiderationPost-petition InstrumentCVRs/Trust Interest/Other Consideration%/$ ReceivedNotes
{{ treatmentrow.treatment_name }}{{ treatment.option_number }}{{treatment?.treatment_gift}} \n {{instrumentIDLookup[treatment.linked_instrument_id]}}\n \n \n @if (treatment.received_dollar > 0) {\n {{treatment.received_dollar | currency}}\n }\n @if (treatment.received_percent > 0) {\n {{treatment.received_percent}}%\n }\n
\n
\n }\n
"],"names":["InstrumentIDService","iid","Subject","iidj$","asObservable","listener","setIID","next","factory","ɵfac","providedIn","InstrumentAndPlanHelper","instrumentIDService","inject","InstrumentIDService","router","Router","instrumentIDLookup","classesLookup","treatmentColumnVisibility","expandAll","extraData","dict","key","value","Object","entries","company","iconNames","IconNamesEnum","createInstrumentIDLookupLookup","capital_structures","structure","values","Array","isArray","length","forEach","element","instrument_id","instrument_name","getNonEmptyColumns","arrayOfObjects","result","columnsToReturn","exactMinMaxRegex","columnLookup","row","keys","matches","match","isNaN","Number","parseFloat","trim","push","filter","col","indexOf","createTreatmentGroups","planClasses","class_id","class_number","class_name","toggle_treatments","treatment","groupedTreatments","count","treatments","t","option_number","openInstrument","event","situationID","iid","preventDefault","listener","setIID","navigate","state","selectors","inputs","decls","vars","template","rf","ctx","encapsulation","_DisposeViewRepeaterStrategy","changes","viewContainerRef","itemContextFactory","itemValueResolver","itemViewChanged","record","adjustedPreviousIndex","currentIndex","view","operation","insertContext","_ViewRepeaterOperation","_c0","_c1","CdkTable_Conditional_2_Template","rf","ctx","ɵɵprojection","CdkTable_Conditional_3_Template","ɵɵelementStart","ɵɵelementContainer","ɵɵelementEnd","CdkTable_Conditional_4_Template","CDK_TABLE","InjectionToken","CdkCellDef","inject","TemplateRef","__ngFactoryType__","ɵɵdefineDirective","CdkHeaderCellDef","CdkFooterCellDef","CdkColumnDef","CDK_TABLE","name","value","hasStickyChanged","rf","ctx","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","booleanAttribute","ɵɵProvidersFeature","BaseCdkCell","columnDef","elementRef","CdkHeaderCell","ElementRef","ɵɵInheritDefinitionFeature","CdkCell","BaseCdkCell","columnDef","inject","CdkColumnDef","elementRef","ElementRef","role","__ngFactoryType__","ɵɵdefineDirective","ɵɵInheritDefinitionFeature","_Schedule","_COALESCED_STYLE_SCHEDULER","InjectionToken","_CoalescedStyleScheduler","NgZone","task","schedule","ɵɵdefineInjectable","BaseRowDef","inject","TemplateRef","IterableDiffers","changes","columns","column","CdkHeaderRowDef","CdkFooterRowDef","__ngFactoryType__","ɵɵdefineDirective","ɵɵNgOnChangesFeature","CDK_TABLE","value","hasStickyChanged","booleanAttribute","ɵɵInheritDefinitionFeature","CdkRowDef","CdkCellOutlet","ViewContainerRef","CdkHeaderRow","ɵɵdefineComponent","rf","ctx","ɵɵelementContainer","CdkRow","__ngFactoryType__","ɵɵdefineComponent","rf","ctx","ɵɵelementContainer","CdkCellOutlet","CdkNoDataRow","inject","TemplateRef","ɵɵdefineDirective","STICKY_DIRECTIONS","StickyStyler","entries","_isNativeHtmlTable","_stickCellCss","direction","_coalescedStyleScheduler","_isBrowser","_needsPositionStickyOnElement","_positionListener","_tableInjector","rows","stickyDirections","elementsToClear","row","element","stickyStartStates","stickyEndStates","recalculateCellWidths","replay","state","firstRow","numCells","isRtl","start","end","lastStickyStart","firstStickyEnd","cellWidths","startPositions","endPositions","i","cell","w","width","index","rowsToStick","stickyStates","position","states","stickyOffsets","stickyCellHeights","elementsToStick","rowIndex","stickyOffset","height","borderedRowIndex","offset","isBorderedRowIndex","tableElement","tfoot","dir","dirValue","isBorderElement","zIndexIncrements","zIndex","firstRowCells","widths","positions","nextPosition","cachedSize","clientRect","size","params","rowsSet","update","needsColumnUpdate","entry","newEntry","isCell","spec","afterNextRender","klass","STICKY_POSITIONING_LISTENER","InjectionToken","CdkRecycleRows","__ngFactoryType__","ɵɵdefineDirective","ɵɵProvidersFeature","_VIEW_REPEATER_STRATEGY","_RecycleViewRepeaterStrategy","DataRowOutlet","inject","ViewContainerRef","ElementRef","table","CDK_TABLE","HeaderRowOutlet","FooterRowOutlet","NoDataRowOutlet","CdkTable","inject","IterableDiffers","ChangeDetectorRef","ElementRef","Directionality","Platform","_VIEW_REPEATER_STRATEGY","_COALESCED_STYLE_SCHEDULER","ViewportRuler","STICKY_POSITIONING_LISTENER","DOCUMENT","Subject","tableRole","fn","dataSource","value","EventEmitter","BehaviorSubject","Injector","HostAttributeToken","_i","dataRow","takeUntil","def","isDataSource","changes","viewContainer","record","_adjustedPreviousIndex","currentIndex","change","_ViewRepeaterOperation","rowView","columnDef","rowDef","headerRowDef","footerRowDef","noDataRow","headerRows","thead","closestTableSection","stickyStates","footerRows","tfoot","dataRows","headerRow","i","rows","footerRow","rowDefsChanged","renderRows","prevCachedRenderRows","data","renderRowsForData","j","renderRow","cache","dataIndex","cachedRenderRows","mergeArrayAndSet","defaultRowDefs","columnsDiffReducer","acc","diff","dataColumnsChanged","headerColumnsChanged","footerColumnsChanged","dataStream","isObservable","of","columnDefs","columnName","stickyStartStates","stickyEndStates","rowOutlet","renderedRows","viewRef","rowDefs","index","context","outlet","view","cellTemplate","CdkCellOutlet","renderIndex","count","columnId","column","stickyCheckReducer","d","direction","StickyStyler","items","item","shouldShow","container","rootNode","__ngFactoryType__","ɵɵdefineComponent","rf","ctx","dirIndex","ɵɵcontentQuery","CdkNoDataRow","CdkColumnDef","CdkRowDef","CdkHeaderRowDef","CdkFooterRowDef","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵclassProp","booleanAttribute","ɵɵProvidersFeature","CDK_TABLE","_DisposeViewRepeaterStrategy","_CoalescedStyleScheduler","_c1","ɵɵprojectionDef","_c0","ɵɵprojection","ɵɵtemplate","CdkTable_Conditional_2_Template","CdkTable_Conditional_3_Template","CdkTable_Conditional_4_Template","ɵɵadvance","ɵɵconditional","HeaderRowOutlet","DataRowOutlet","NoDataRowOutlet","FooterRowOutlet","array","set","section","uppercaseSection","current","nodeName","CdkTableModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","ScrollingModule","ɵɵelement","ɵɵelementStart","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r1","iconNames","ChevronDown","isExpanded","class_r1","class_id","ɵɵtext","ɵɵclassProp","showMatches","class_r3","matched","ɵɵtextInterpolate1","class_name","ɵɵelementContainer","ɵɵtemplate","PlanTreatmentsUnclassifiedComponent_Conditional_0_td_12_ng_container_1_Template","exact_min_max_currency_r5","ɵɵpureFunction3","_c3","class_r4","allowed_claims_exact","allowed_claims_min","allowed_claims_max","PlanTreatmentsUnclassifiedComponent_Conditional_0_td_15_ng_container_1_Template","exact_min_max_percentage_r7","class_r6","estimated_recovery_exact","estimated_recovery_min","estimated_recovery_max","PlanTreatmentsUnclassifiedComponent_Conditional_0_td_17_Conditional_1_ng_container_4_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_td_17_Conditional_1_ng_container_5_Template","undefined","ɵɵtextInterpolate","class_r8","toggle","claims_table_r10","ɵɵpureFunction1","_c4","treatments_table_r9","PlanTreatmentsUnclassifiedComponent_Conditional_0_td_17_Conditional_1_Template","ɵɵconditional","ɵɵlistener","class_r12","ɵɵrestoreView","_r11","$implicit","ɵɵnextContext","ɵɵresetView","class_r13","ɵɵelementContainerStart","PlanTreatmentsUnclassifiedComponent_Conditional_0_th_5_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_td_6_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_th_8_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_td_9_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_th_11_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_td_12_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_th_14_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_td_15_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_td_17_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_tr_18_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_tr_19_Template","PlanTreatmentsUnclassifiedComponent_Conditional_0_tr_20_Template","plan_classes_unclassifieds","getNonEmptyColumns","ɵɵpureFunction0","_c0","_c1","_c2","ɵɵpipeBind1","exact_r14","ɵɵtextInterpolate2","min_r16","max_r17","PlanTreatmentsUnclassifiedComponent_ng_template_1_Conditional_1_Conditional_1_Conditional_1_Conditional_1_Conditional_0_Template","length","PlanTreatmentsUnclassifiedComponent_ng_template_1_Conditional_1_Conditional_1_Conditional_1_Conditional_0_Template","PlanTreatmentsUnclassifiedComponent_ng_template_1_Conditional_1_Conditional_1_Conditional_1_Conditional_1_Template","PlanTreatmentsUnclassifiedComponent_ng_template_1_Conditional_1_Conditional_1_Conditional_0_Template","PlanTreatmentsUnclassifiedComponent_ng_template_1_Conditional_1_Conditional_1_Conditional_1_Template","PlanTreatmentsUnclassifiedComponent_ng_template_1_Conditional_1_Conditional_0_Template","PlanTreatmentsUnclassifiedComponent_ng_template_1_Conditional_1_Conditional_1_Template","PlanTreatmentsUnclassifiedComponent_ng_template_1_Conditional_0_Template","PlanTreatmentsUnclassifiedComponent_ng_template_1_Conditional_1_Template","trim","exact_r18","min_r20","max_r21","PlanTreatmentsUnclassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Conditional_1_Conditional_1_Conditional_0_Template","PlanTreatmentsUnclassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Conditional_1_Conditional_0_Template","PlanTreatmentsUnclassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Conditional_1_Conditional_1_Template","PlanTreatmentsUnclassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Conditional_0_Template","PlanTreatmentsUnclassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Conditional_1_Template","PlanTreatmentsUnclassifiedComponent_ng_template_3_Conditional_1_Conditional_0_Template","PlanTreatmentsUnclassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Template","PlanTreatmentsUnclassifiedComponent_ng_template_3_Conditional_0_Template","PlanTreatmentsUnclassifiedComponent_ng_template_3_Conditional_1_Template","treatmentrow_r22","treatment_name","treatment_r23","option_number","ɵɵpropertyInterpolate2","situationID","linked_instrument_id","ɵɵsanitizeUrl","instrumentIDLookup","Other","ɵɵsanitizeHtml","received_dollar","received_percent","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_For_17_For_1_For_1_Conditional_7_Conditional_1_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_For_17_For_1_For_1_Conditional_7_Conditional_2_Template","notes","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_For_17_For_1_For_1_Conditional_1_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_For_17_For_1_For_1_Conditional_2_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_For_17_For_1_For_1_Conditional_5_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_For_17_For_1_For_1_Conditional_6_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_For_17_For_1_For_1_Conditional_7_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_For_17_For_1_For_1_Conditional_8_Template","ɵ$index_177_r26","ɵ$index_178_r25","treatment_gift","treatmentColumnVisibility","class_r27","ɵɵrepeaterCreate","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_For_17_For_1_For_1_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","treatmentGroup_r24","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_For_17_For_1_Template","groupedTreatments","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_Conditional_10_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_Conditional_11_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_Conditional_12_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_Conditional_13_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_Conditional_14_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_For_17_Template","toggle_treatments","PlanTreatmentsUnclassifiedComponent_ng_template_5_Conditional_0_Template","claim_r28","claim_type","$event","id_r30","_r29","openInstrument","PlanTreatmentsUnclassifiedComponent_ng_template_7_Conditional_0_td_7_For_3_Template","claim_r31","instruments_dips","PlanTreatmentsUnclassifiedComponent_ng_template_7_Conditional_0_td_10_ng_container_1_Template","class_r32","PlanTreatmentsUnclassifiedComponent_ng_template_7_Conditional_0_th_3_Template","PlanTreatmentsUnclassifiedComponent_ng_template_7_Conditional_0_td_4_Template","PlanTreatmentsUnclassifiedComponent_ng_template_7_Conditional_0_th_6_Template","PlanTreatmentsUnclassifiedComponent_ng_template_7_Conditional_0_td_7_Template","PlanTreatmentsUnclassifiedComponent_ng_template_7_Conditional_0_th_9_Template","PlanTreatmentsUnclassifiedComponent_ng_template_7_Conditional_0_td_10_Template","PlanTreatmentsUnclassifiedComponent_ng_template_7_Conditional_0_tr_11_Template","PlanTreatmentsUnclassifiedComponent_ng_template_7_Conditional_0_tr_12_Template","allowed_claims_individual","PlanTreatmentsUnclassifiedComponent_ng_template_7_Conditional_0_Template","PlanTreatmentsUnclassifiedComponent","InstrumentAndPlanHelper","colsDefn","__ngFactoryType__","selectors","inputs","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","PlanTreatmentsUnclassifiedComponent_Conditional_0_Template","PlanTreatmentsUnclassifiedComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","PlanTreatmentsUnclassifiedComponent_ng_template_3_Template","PlanTreatmentsUnclassifiedComponent_ng_template_5_Template","PlanTreatmentsUnclassifiedComponent_ng_template_7_Template","CdkTableModule","CdkTable","CdkRowDef","CdkCellDef","CdkHeaderCellDef","CdkColumnDef","CdkCell","CdkRow","CdkHeaderCell","CdkHeaderRow","CdkHeaderRowDef","CdkRecycleRows","NgxBootstrapIconsModule","NgxBootstrapIconsLibComponent","NgTemplateOutlet","CurrencyPipe","encapsulation","data","animation","openClose","expandCollapse","ɵɵelementContainer","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","aClass_r2","toggle_event_option","ɵɵelement","ɵɵproperty","toggle_event_options_notes","ɵɵsanitizeHtml","ɵɵtemplate","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_4_Conditional_5_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_4_Conditional_6_Template","ɵɵconditional","length","ɵɵtextInterpolate1","ctx_r2","classesLookup","id_r4","ɵɵrepeaterCreate","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_6_For_16_For_8_Template","ɵɵrepeaterTrackByIdentity","incentive_r5","release_optin_optout","incentive","ɵɵrepeater","classes_from","notes","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_6_For_16_Template","release_incentive","claim_r6","classified_waiver","id_r7","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_td_6_For_3_Template","claim_r8","classes","claim_r9","party","claim_r10","ɵɵelementContainerStart","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_th_2_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_td_3_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_th_5_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_td_6_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_th_8_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_td_9_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_th_11_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_td_12_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_tr_13_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_tr_14_Template","deficiency_claims","getNonEmptyColumns","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Conditional_3_Template","ɵɵpropertyInterpolate1","debtor_r11","company_id","ɵɵsanitizeUrl","company_name","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_td_3_For_3_Template","result_r12","debtors","result_r13","vote_result","result_r14","total_count_number","result_r15","total_count_percent","ɵɵpipeBind1","result_r16","total_dollar_number","result_r17","total_dollar_percent","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_th_2_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_td_3_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_th_5_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_td_6_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_th_8_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_td_9_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_th_11_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_td_12_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_th_14_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_td_15_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_th_17_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_td_18_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_tr_19_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_tr_20_Template","ballot_results_tabulation","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Conditional_7_Template","ballot_result","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_ng_container_3_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_4_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_ng_container_5_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_6_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_7_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_8_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Conditional_9_Template","undefined","claims_table_r18","ɵɵpureFunction1","_c1","toggle","treatments_table_r19","ɵɵlistener","ɵɵrestoreView","_r1","$implicit","ɵɵnextContext","ɵɵresetView","isExpanded","class_id","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_ng_container_14_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_ng_container_16_Template","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Conditional_17_Template","iconNames","ChevronDown","class_number","ɵɵclassProp","showMatches","matched","class_name","impaired_class","voting_rights","exact_min_max_currency_r20","ɵɵpureFunction3","_c0","allowed_claims_exact","allowed_claims_min","allowed_claims_max","exact_min_max_percentage_r21","estimated_recovery_exact","estimated_recovery_min","estimated_recovery_max","PlanTreatmentsClassifiedComponent_Conditional_0_For_21_Template","plan_classes_classified","claim_r22","claim_type","$event","id_r24","_r23","openInstrument","situationID","instrumentIDLookup","PlanTreatmentsClassifiedComponent_ng_template_1_Conditional_0_td_7_For_3_Template","claim_r25","instruments_dips","PlanTreatmentsClassifiedComponent_ng_template_1_Conditional_0_td_10_ng_container_1_Template","party_r26","PlanTreatmentsClassifiedComponent_ng_template_1_Conditional_0_th_3_Template","PlanTreatmentsClassifiedComponent_ng_template_1_Conditional_0_td_4_Template","PlanTreatmentsClassifiedComponent_ng_template_1_Conditional_0_th_6_Template","PlanTreatmentsClassifiedComponent_ng_template_1_Conditional_0_td_7_Template","PlanTreatmentsClassifiedComponent_ng_template_1_Conditional_0_th_9_Template","PlanTreatmentsClassifiedComponent_ng_template_1_Conditional_0_td_10_Template","PlanTreatmentsClassifiedComponent_ng_template_1_Conditional_0_tr_11_Template","PlanTreatmentsClassifiedComponent_ng_template_1_Conditional_0_tr_12_Template","class_r27","allowed_claims_individual","PlanTreatmentsClassifiedComponent_ng_template_1_Conditional_0_Template","exact_r28","ɵɵtextInterpolate2","min_r30","max_r31","PlanTreatmentsClassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Conditional_1_Conditional_1_Conditional_0_Template","PlanTreatmentsClassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Conditional_1_Conditional_0_Template","PlanTreatmentsClassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Conditional_1_Conditional_1_Template","PlanTreatmentsClassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Conditional_0_Template","PlanTreatmentsClassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Conditional_1_Template","PlanTreatmentsClassifiedComponent_ng_template_3_Conditional_1_Conditional_0_Template","PlanTreatmentsClassifiedComponent_ng_template_3_Conditional_1_Conditional_1_Template","PlanTreatmentsClassifiedComponent_ng_template_3_Conditional_0_Template","PlanTreatmentsClassifiedComponent_ng_template_3_Conditional_1_Template","trim","exact_r32","min_r34","max_r35","PlanTreatmentsClassifiedComponent_ng_template_5_Conditional_1_Conditional_1_Conditional_1_Conditional_1_Conditional_0_Template","PlanTreatmentsClassifiedComponent_ng_template_5_Conditional_1_Conditional_1_Conditional_1_Conditional_0_Template","PlanTreatmentsClassifiedComponent_ng_template_5_Conditional_1_Conditional_1_Conditional_1_Conditional_1_Template","PlanTreatmentsClassifiedComponent_ng_template_5_Conditional_1_Conditional_1_Conditional_0_Template","PlanTreatmentsClassifiedComponent_ng_template_5_Conditional_1_Conditional_1_Conditional_1_Template","PlanTreatmentsClassifiedComponent_ng_template_5_Conditional_1_Conditional_0_Template","PlanTreatmentsClassifiedComponent_ng_template_5_Conditional_1_Conditional_1_Template","PlanTreatmentsClassifiedComponent_ng_template_5_Conditional_0_Template","PlanTreatmentsClassifiedComponent_ng_template_5_Conditional_1_Template","treatmentrow_r36","treatment_name","treatment_r37","option_number","_r39","linked_instrument_id","Other","received_dollar","received_percent","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_For_17_For_1_For_1_Conditional_7_Conditional_1_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_For_17_For_1_For_1_Conditional_7_Conditional_2_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_For_17_For_1_For_1_Conditional_1_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_For_17_For_1_For_1_Conditional_2_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_For_17_For_1_For_1_Conditional_5_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_For_17_For_1_For_1_Conditional_6_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_For_17_For_1_For_1_Conditional_7_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_For_17_For_1_For_1_Conditional_8_Template","ɵ$index_478_r41","ɵ$index_479_r40","treatment_gift","treatmentColumnVisibility","class_r42","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_For_17_For_1_For_1_Template","treatmentGroup_r38","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_For_17_For_1_Template","groupedTreatments","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_Conditional_10_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_Conditional_11_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_Conditional_12_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_Conditional_13_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_Conditional_14_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_For_17_Template","toggle_treatments","PlanTreatmentsClassifiedComponent_ng_template_7_Conditional_0_Template","PlanTreatmentsClassifiedComponent","InstrumentAndPlanHelper","colsDefn","__ngFactoryType__","selectors","inputs","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","PlanTreatmentsClassifiedComponent_Conditional_0_Template","PlanTreatmentsClassifiedComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","PlanTreatmentsClassifiedComponent_ng_template_3_Template","PlanTreatmentsClassifiedComponent_ng_template_5_Template","PlanTreatmentsClassifiedComponent_ng_template_7_Template","NgxBootstrapIconsModule","NgxBootstrapIconsLibComponent","NgTemplateOutlet","CdkTableModule","CdkTable","CdkRowDef","CdkCellDef","CdkHeaderCellDef","CdkColumnDef","CdkCell","CdkRow","CdkHeaderCell","CdkHeaderRow","CdkHeaderRowDef","CdkRecycleRows","CurrencyPipe","encapsulation","data","animation","openClose","expandCollapse"],"mappings":"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","debug_id":"8697b1d5-db76-532f-9819-88e197565082"}